diff options
Diffstat (limited to 'internal/contentenc/offsets.go')
-rw-r--r-- | internal/contentenc/offsets.go | 48 |
1 files changed, 25 insertions, 23 deletions
diff --git a/internal/contentenc/offsets.go b/internal/contentenc/offsets.go index 61939a9..97d7116 100644 --- a/internal/contentenc/offsets.go +++ b/internal/contentenc/offsets.go @@ -8,43 +8,43 @@ import ( // Contentenc methods that translate offsets between ciphertext and plaintext -// get the block number at plain-text offset +// PlainOffToBlockNo converts a plaintext offset to the ciphertext block number. func (be *ContentEnc) PlainOffToBlockNo(plainOffset uint64) uint64 { return plainOffset / be.plainBS } -// get the block number at cipher-text offset +// CipherOffToBlockNo converts the ciphertext offset to the plaintext block number. func (be *ContentEnc) CipherOffToBlockNo(cipherOffset uint64) uint64 { - if cipherOffset < HEADER_LEN { + if cipherOffset < HeaderLen { log.Panicf("BUG: offset %d is inside the file header", cipherOffset) } - return (cipherOffset - HEADER_LEN) / be.cipherBS + return (cipherOffset - HeaderLen) / be.cipherBS } -// get ciphertext offset of block "blockNo" +// BlockNoToCipherOff gets the ciphertext offset of block "blockNo" func (be *ContentEnc) BlockNoToCipherOff(blockNo uint64) uint64 { - return HEADER_LEN + blockNo*be.cipherBS + return HeaderLen + blockNo*be.cipherBS } -// get plaintext offset of block "blockNo" +// BlockNoToPlainOff gets the plaintext offset of block "blockNo" func (be *ContentEnc) BlockNoToPlainOff(blockNo uint64) uint64 { return blockNo * be.plainBS } -// PlainSize - calculate plaintext size from ciphertext size +// CipherSizeToPlainSize calculates the plaintext size from a ciphertext size func (be *ContentEnc) CipherSizeToPlainSize(cipherSize uint64) uint64 { // Zero-sized files stay zero-sized if cipherSize == 0 { return 0 } - if cipherSize == HEADER_LEN { + if cipherSize == HeaderLen { tlog.Warn.Printf("cipherSize %d == header size: interrupted write?\n", cipherSize) return 0 } - if cipherSize < HEADER_LEN { - tlog.Warn.Printf("cipherSize %d < header size %d: corrupt file\n", cipherSize, HEADER_LEN) + if cipherSize < HeaderLen { + tlog.Warn.Printf("cipherSize %d < header size %d: corrupt file\n", cipherSize, HeaderLen) return 0 } @@ -52,12 +52,12 @@ func (be *ContentEnc) CipherSizeToPlainSize(cipherSize uint64) uint64 { blockNo := be.CipherOffToBlockNo(cipherSize - 1) blockCount := blockNo + 1 - overhead := be.BlockOverhead()*blockCount + HEADER_LEN + overhead := be.BlockOverhead()*blockCount + HeaderLen return cipherSize - overhead } -// CipherSize - calculate ciphertext size from plaintext size +// PlainSizeToCipherSize calculates the ciphertext size from a plaintext size func (be *ContentEnc) PlainSizeToCipherSize(plainSize uint64) uint64 { // Zero-sized files stay zero-sized if plainSize == 0 { @@ -68,16 +68,16 @@ func (be *ContentEnc) PlainSizeToCipherSize(plainSize uint64) uint64 { blockNo := be.PlainOffToBlockNo(plainSize - 1) blockCount := blockNo + 1 - overhead := be.BlockOverhead()*blockCount + HEADER_LEN + overhead := be.BlockOverhead()*blockCount + HeaderLen return plainSize + overhead } -// Split a plaintext byte range into (possibly partial) blocks +// ExplodePlainRange splits a plaintext byte range into (possibly partial) blocks // Returns an empty slice if length == 0. -func (be *ContentEnc) ExplodePlainRange(offset uint64, length uint64) []intraBlock { - var blocks []intraBlock - var nextBlock intraBlock +func (be *ContentEnc) ExplodePlainRange(offset uint64, length uint64) []IntraBlock { + var blocks []IntraBlock + var nextBlock IntraBlock nextBlock.fs = be for length > 0 { @@ -94,11 +94,11 @@ func (be *ContentEnc) ExplodePlainRange(offset uint64, length uint64) []intraBlo return blocks } -// Split a ciphertext byte range into (possibly partial) blocks -// This is used in reverse mode when reading files -func (be *ContentEnc) ExplodeCipherRange(offset uint64, length uint64) []intraBlock { - var blocks []intraBlock - var nextBlock intraBlock +// ExplodeCipherRange splits a ciphertext byte range into (possibly partial) +// blocks This is used in reverse mode when reading files +func (be *ContentEnc) ExplodeCipherRange(offset uint64, length uint64) []IntraBlock { + var blocks []IntraBlock + var nextBlock IntraBlock nextBlock.fs = be for length > 0 { @@ -120,10 +120,12 @@ func (be *ContentEnc) ExplodeCipherRange(offset uint64, length uint64) []intraBl return blocks } +// BlockOverhead returns the per-block overhead. func (be *ContentEnc) BlockOverhead() uint64 { return be.cipherBS - be.plainBS } +// MinUint64 returns the minimum of two uint64 values. func MinUint64(x uint64, y uint64) uint64 { if x < y { return x |