Documentation
¶
Index ¶
- Constants
- Variables
- func NewHash(hashType string) hash.Hash
- func ReadLastBytes(reader storage.ExternalFileReader, numBytes int64) ([]byte, error)
- type CryptoReader
- type CryptoStore
- func (c *CryptoStore) Close()
- func (c *CryptoStore) Create(ctx context.Context, path string, option *storage.WriterOption) (storage.ExternalFileWriter, error)
- func (c *CryptoStore) FormatHeaderName(name string) string
- func (c *CryptoStore) NewHash() hash.Hash
- func (c *CryptoStore) Open(ctx context.Context, name string, opt *storage.ReaderOption) (storage.ExternalFileReader, error)
- func (c *CryptoStore) ReadFile(ctx context.Context, name string) ([]byte, error)
- func (c *CryptoStore) Rename(ctx context.Context, src, dst string) error
- func (c *CryptoStore) WriteFile(ctx context.Context, name string, data []byte) error
- type CryptoStoreOption
- type CryptoWriter
- type Header
- func NewHeader(key, encKey, iv []byte, hashType string) (*Header, error)
- func NewRandHeader(publicData []byte, hashType string) (*Header, error)
- func ParseHeaderV1(data storage.ExternalFileReader) (header *Header, err error)
- func ReadHeaderV1(headerReader storage.ExternalFileReader) (*Header, error)
- func ReadHeaderV2(headerReader storage.ExternalFileReader) (*Header, error)
- type IoWriter
Constants ¶
View Source
const ( MaxHashSize = 64 // aka: 512bit. md5: 128bit, sha256: 256bit, sha1: 160bit, sum32: 32 bit MaxEncKeySize = 1 << 16 MaxIVSize = 1 << 8 KeySize = 16 // aka: 128bit HeaderLenSize = 1 + 2 + 1 // hashSize: 1bit, encKeySize: 2bit, ivSize: 1bit MagicKeyV1 = "Encrypted&Hashed" MagicKeyV2 = "EncryptVersion-2" )
Variables ¶
View Source
var DefaultCryptoStoreOption = &CryptoStoreOption{
Suffix: "crypto",
HashType: "md5",
}
Functions ¶
func ReadLastBytes ¶
func ReadLastBytes(reader storage.ExternalFileReader, numBytes int64) ([]byte, error)
Types ¶
type CryptoReader ¶
type CryptoReader struct { storage.ExternalFileReader // contains filtered or unexported fields }
func NewCryptoReader ¶
func NewCryptoReader(dataReader storage.ExternalFileReader, privateData []byte, header *Header) (*CryptoReader, error)
func (*CryptoReader) CheckSum ¶
func (r *CryptoReader) CheckSum() error
func (*CryptoReader) Close ¶
func (r *CryptoReader) Close() error
func (*CryptoReader) Header ¶
func (r *CryptoReader) Header() *Header
type CryptoStore ¶
type CryptoStore struct { storage.ExternalStorage // contains filtered or unexported fields }
func NewCryptoStore ¶
func NewCryptoStore(storageOption *storage.BackendOptions, path string, cryptoOption *CryptoStoreOption) (*CryptoStore, error)
func (*CryptoStore) Close ¶
func (c *CryptoStore) Close()
func (*CryptoStore) Create ¶
func (c *CryptoStore) Create(ctx context.Context, path string, option *storage.WriterOption) (storage.ExternalFileWriter, error)
func (*CryptoStore) FormatHeaderName ¶
func (c *CryptoStore) FormatHeaderName(name string) string
func (*CryptoStore) NewHash ¶
func (c *CryptoStore) NewHash() hash.Hash
func (*CryptoStore) Open ¶
func (c *CryptoStore) Open(ctx context.Context, name string, opt *storage.ReaderOption) (storage.ExternalFileReader, error)
type CryptoStoreOption ¶
type CryptoStoreOption struct { PrivateData []byte // 只有Reader接口才需要私钥,如果只需要上传数据,可以不设置 PublicData []byte // 只有Writer接口才需要公钥,如果只需要下载数据,可以不设置 Suffix string // 文件后缀,默认是crypto HashType string // 哈希类型,默认是md5 }
func NewCryptoStoreOption ¶
type CryptoWriter ¶
type CryptoWriter struct {
// contains filtered or unexported fields
}
func NewCryptoWriter ¶
func NewCryptoWriter(publicData []byte, hashType string, dataWriter, headerWriter storage.ExternalFileWriter) (nw *CryptoWriter, err error)
NewCryptoWriter : 创建加密写入器, 只需要公钥即可
func (*CryptoWriter) WriteHeaderJson ¶
func (c *CryptoWriter) WriteHeaderJson(ctx context.Context) error
func (*CryptoWriter) WriteHeaderV1 ¶
func (c *CryptoWriter) WriteHeaderV1(ctx context.Context) error
type Header ¶
type Header struct { Hash []byte `json:"hash"` HashType string `json:"hash_type"` EncKey []byte `json:"enc_key"` IV []byte `json:"iv"` // contains filtered or unexported fields }
func ParseHeaderV1 ¶
func ParseHeaderV1(data storage.ExternalFileReader) (header *Header, err error)
func ReadHeaderV1 ¶
func ReadHeaderV1(headerReader storage.ExternalFileReader) (*Header, error)
func ReadHeaderV2 ¶
func ReadHeaderV2(headerReader storage.ExternalFileReader) (*Header, error)
Click to show internal directories.
Click to hide internal directories.