aboutsummaryrefslogtreecommitdiff
path: root/src/crypto/cipher
diff options
context:
space:
mode:
authorFilippo Valsorda <hi@filippo.io>2017-02-27 18:15:02 +0530
committerIan Lance Taylor <iant@golang.org>2017-09-01 00:13:43 +0000
commit44e86bef06397cb64f158c3561544100b70d525a (patch)
tree1da2bfdd04928ead0ca62514611eaef2f03ae073 /src/crypto/cipher
parente236b6721c03033a2d475bdb6e3a0123213ac6e9 (diff)
downloadgo-44e86bef06397cb64f158c3561544100b70d525a.tar.xz
crypto/cipher: extend the docs of BlockMode and Stream
Change-Id: Iebb5b67c8defec22edd482d587edaf399a7ba82a Reviewed-on: https://go-review.googlesource.com/37418 Reviewed-by: Adam Langley <agl@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src/crypto/cipher')
-rw-r--r--src/crypto/cipher/cipher.go13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/crypto/cipher/cipher.go b/src/crypto/cipher/cipher.go
index 531ecad9ac..0950ea9e80 100644
--- a/src/crypto/cipher/cipher.go
+++ b/src/crypto/cipher/cipher.go
@@ -29,9 +29,14 @@ type Block interface {
type Stream interface {
// XORKeyStream XORs each byte in the given slice with a byte from the
// cipher's key stream. Dst and src may point to the same memory.
+ //
// If len(dst) < len(src), XORKeyStream should panic. It is acceptable
// to pass a dst bigger than src, and in that case, XORKeyStream will
// only update dst[:len(src)] and will not touch the rest of dst.
+ //
+ // Multiple calls to XORKeyStream behave as if the concatenation of
+ // the src buffers was passed in a single run. That is, Stream
+ // maintains state and does not reset at each XORKeyStream call.
XORKeyStream(dst, src []byte)
}
@@ -44,6 +49,14 @@ type BlockMode interface {
// CryptBlocks encrypts or decrypts a number of blocks. The length of
// src must be a multiple of the block size. Dst and src may point to
// the same memory.
+ //
+ // If len(dst) < len(src), CryptBlocks should panic. It is acceptable
+ // to pass a dst bigger than src, and in that case, CryptBlocks will
+ // only update dst[:len(src)] and will not touch the rest of dst.
+ //
+ // Multiple calls to CryptBlocks behave as if the concatenation of
+ // the src buffers was passed in a single run. That is, BlockMode
+ // maintains state and does not reset at each CryptBlocks call.
CryptBlocks(dst, src []byte)
}