diff options
author | Jakob Unterwurzacher | 2017-06-07 22:06:28 +0200 |
---|---|---|
committer | Jakob Unterwurzacher | 2017-06-07 22:09:15 +0200 |
commit | 294628b38435698ec63f2b13044ec993af1563f1 (patch) | |
tree | 5f381c763fa49a9c992df7c860110809e0e3306f /internal | |
parent | 71978ec88a2aa8ec92df080a4a6becf623957c81 (diff) |
contentenc: move EncryptBlocks() loop into its own functions
This allows easy parallelization in the future.
Diffstat (limited to 'internal')
-rw-r--r-- | internal/contentenc/content.go | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/internal/contentenc/content.go b/internal/contentenc/content.go index 80bcf54..3643f56 100644 --- a/internal/contentenc/content.go +++ b/internal/contentenc/content.go @@ -151,11 +151,9 @@ func (be *ContentEnc) DecryptBlock(ciphertext []byte, blockNo uint64, fileID []b // EncryptBlocks is like EncryptBlock but takes multiple plaintext blocks. func (be *ContentEnc) EncryptBlocks(plaintextBlocks [][]byte, firstBlockNo uint64, fileID []byte) []byte { - // Encrypt piecewise. + // Encrypt piecewise. This allows easy parallization in the future. ciphertextBlocks := make([][]byte, len(plaintextBlocks)) - for i, v := range plaintextBlocks { - ciphertextBlocks[i] = be.EncryptBlock(v, firstBlockNo+uint64(i), fileID) - } + be.doEncryptBlocks(plaintextBlocks, ciphertextBlocks, firstBlockNo, fileID) // Concatenate ciphertext into a single byte array. // Size the output buffer for the maximum possible size (all blocks complete) // to allocations in out.Write() @@ -167,6 +165,13 @@ func (be *ContentEnc) EncryptBlocks(plaintextBlocks [][]byte, firstBlockNo uint6 return out.Bytes() } +// doEncryptBlocks is called by EncryptBlocks to do the actual encryption work +func (be *ContentEnc) doEncryptBlocks(in [][]byte, out [][]byte, firstBlockNo uint64, fileID []byte) { + for i, v := range in { + out[i] = be.EncryptBlock(v, firstBlockNo+uint64(i), fileID) + } +} + // EncryptBlock - Encrypt plaintext using a random nonce. // blockNo and fileID are used as associated data. // The output is nonce + ciphertext + tag. |