Skip to content

Commit 00a4963

Browse files
committed
to be merged: cache cipher in TransparentEncryptionInfo
1 parent 7398261 commit 00a4963

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

aes.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,15 @@ func aesCtrStep(offset int64, enc *TransparentEncryptionInfo, b []byte) ([]byte,
4646
return nil, err
4747
}
4848

49-
block, err := aes.NewCipher(enc.key)
50-
if err != nil {
51-
return nil, err
49+
if enc.cipher == nil {
50+
cipher, err := aes.NewCipher(enc.key)
51+
if err != nil {
52+
return nil, err
53+
}
54+
enc.cipher = cipher
5255
}
53-
stream := cipher.NewCTR(block, iv)
56+
57+
stream := cipher.NewCTR(enc.cipher, iv)
5458

5559
padding := offset % aes.BlockSize
5660
if padding > 0 {

file_reader.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package hdfs
22

33
import (
4+
"crypto/cipher"
45
"crypto/md5"
56
"errors"
67
"fmt"
@@ -36,8 +37,9 @@ type FileReader struct {
3637

3738
// A TransparentEncryptionInfo is a key and iv to encrypt or decrypt file data
3839
type TransparentEncryptionInfo struct {
39-
key []byte
40-
iv []byte
40+
key []byte
41+
iv []byte
42+
cipher cipher.Block
4143
}
4244

4345
// Open returns an FileReader which can be used for reading.

0 commit comments

Comments
 (0)