diff options
author | Viktor TrĂ³n <viktor.tron@gmail.com> | 2018-09-11 17:39:02 +0800 |
---|---|---|
committer | Balint Gabor <balint.g@gmail.com> | 2018-09-11 17:39:02 +0800 |
commit | 6dd87483d4ded2a5ab76d19e0acaa5c6b06312a9 (patch) | |
tree | 80c450335b3ad5b26214ecb7e145bdcdd58ac528 /swarm/api | |
parent | 10bac3664702f31228eafedecf31e9bf115f6c29 (diff) | |
download | dexon-6dd87483d4ded2a5ab76d19e0acaa5c6b06312a9.tar.gz dexon-6dd87483d4ded2a5ab76d19e0acaa5c6b06312a9.tar.zst dexon-6dd87483d4ded2a5ab76d19e0acaa5c6b06312a9.zip |
Encryption async api (#17603)
* swarm/storage/encryption: async segmentwise encryption/decryption
* swarm/storage: adapt hasherstore to encryption API change
* swarm/api: adapt RefEncryption for AC to new Encryption API
* swarm/storage/encryption: address review comments
Diffstat (limited to 'swarm/api')
-rw-r--r-- | swarm/api/encrypt.go | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/swarm/api/encrypt.go b/swarm/api/encrypt.go index 9a2e36914..ffe6c16d2 100644 --- a/swarm/api/encrypt.go +++ b/swarm/api/encrypt.go @@ -25,27 +25,27 @@ import ( ) type RefEncryption struct { - spanEncryption encryption.Encryption - dataEncryption encryption.Encryption - span []byte + refSize int + span []byte } func NewRefEncryption(refSize int) *RefEncryption { span := make([]byte, 8) binary.LittleEndian.PutUint64(span, uint64(refSize)) return &RefEncryption{ - spanEncryption: encryption.New(0, uint32(refSize/32), sha3.NewKeccak256), - dataEncryption: encryption.New(refSize, 0, sha3.NewKeccak256), - span: span, + refSize: refSize, + span: span, } } func (re *RefEncryption) Encrypt(ref []byte, key []byte) ([]byte, error) { - encryptedSpan, err := re.spanEncryption.Encrypt(re.span, key) + spanEncryption := encryption.New(key, 0, uint32(re.refSize/32), sha3.NewKeccak256) + encryptedSpan, err := spanEncryption.Encrypt(re.span) if err != nil { return nil, err } - encryptedData, err := re.dataEncryption.Encrypt(ref, key) + dataEncryption := encryption.New(key, re.refSize, 0, sha3.NewKeccak256) + encryptedData, err := dataEncryption.Encrypt(ref) if err != nil { return nil, err } @@ -57,7 +57,8 @@ func (re *RefEncryption) Encrypt(ref []byte, key []byte) ([]byte, error) { } func (re *RefEncryption) Decrypt(ref []byte, key []byte) ([]byte, error) { - decryptedSpan, err := re.spanEncryption.Decrypt(ref[:8], key) + spanEncryption := encryption.New(key, 0, uint32(re.refSize/32), sha3.NewKeccak256) + decryptedSpan, err := spanEncryption.Decrypt(ref[:8]) if err != nil { return nil, err } @@ -67,7 +68,8 @@ func (re *RefEncryption) Decrypt(ref []byte, key []byte) ([]byte, error) { return nil, errors.New("invalid span in encrypted reference") } - decryptedRef, err := re.dataEncryption.Decrypt(ref[8:], key) + dataEncryption := encryption.New(key, re.refSize, 0, sha3.NewKeccak256) + decryptedRef, err := dataEncryption.Decrypt(ref[8:]) if err != nil { return nil, err } |