mirror of
https://github.com/golang/go
synced 2024-11-20 03:04:40 -07:00
crypto/cipher: panic on invalid IV length
Give better user feedback when invalid IV is used to construct a cipher. Fixes #3411 R=golang-dev, agl CC=golang-dev https://golang.org/cl/6652053
This commit is contained in:
parent
561561fc2d
commit
fcd5fd2ad4
@ -33,6 +33,9 @@ type cbcEncrypter cbc
|
||||
// mode, using the given Block. The length of iv must be the same as the
|
||||
// Block's block size.
|
||||
func NewCBCEncrypter(b Block, iv []byte) BlockMode {
|
||||
if len(iv) != b.BlockSize() {
|
||||
panic("cipher.NewCBCEncrypter: IV length must equal block size")
|
||||
}
|
||||
return (*cbcEncrypter)(newCBC(b, iv))
|
||||
}
|
||||
|
||||
@ -58,6 +61,9 @@ type cbcDecrypter cbc
|
||||
// mode, using the given Block. The length of iv must be the same as the
|
||||
// Block's block size and must match the iv used to encrypt the data.
|
||||
func NewCBCDecrypter(b Block, iv []byte) BlockMode {
|
||||
if len(iv) != b.BlockSize() {
|
||||
panic("cipher.NewCBCDecrypter: IV length must equal block size")
|
||||
}
|
||||
return (*cbcDecrypter)(newCBC(b, iv))
|
||||
}
|
||||
|
||||
|
@ -17,6 +17,9 @@ type cfb struct {
|
||||
// using the given Block. The iv must be the same length as the Block's block
|
||||
// size.
|
||||
func NewCFBEncrypter(block Block, iv []byte) Stream {
|
||||
if len(iv) != block.BlockSize() {
|
||||
panic("cipher.NewCBFEncrypter: IV length must equal block size")
|
||||
}
|
||||
return newCFB(block, iv, false)
|
||||
}
|
||||
|
||||
@ -24,6 +27,9 @@ func NewCFBEncrypter(block Block, iv []byte) Stream {
|
||||
// using the given Block. The iv must be the same length as the Block's block
|
||||
// size.
|
||||
func NewCFBDecrypter(block Block, iv []byte) Stream {
|
||||
if len(iv) != block.BlockSize() {
|
||||
panic("cipher.NewCBFEncrypter: IV length must equal block size")
|
||||
}
|
||||
return newCFB(block, iv, true)
|
||||
}
|
||||
|
||||
|
@ -23,7 +23,7 @@ type ctr struct {
|
||||
// counter mode. The length of iv must be the same as the Block's block size.
|
||||
func NewCTR(block Block, iv []byte) Stream {
|
||||
if len(iv) != block.BlockSize() {
|
||||
panic("cipher.NewCTR: iv length must equal block size")
|
||||
panic("cipher.NewCTR: IV length must equal block size")
|
||||
}
|
||||
|
||||
return &ctr{
|
||||
|
Loading…
Reference in New Issue
Block a user