stupidgcm: create private copy of the key
Relieves the caller from worrying about whether they can overwrite the key.
This commit is contained in:
parent
18f6c6106c
commit
72ddbae1e6
@ -86,13 +86,7 @@ func New(key []byte, aeadType AEADTypeEnum, IVBitLen int, useHKDF bool, forceDec
|
|||||||
if IVLen != 16 {
|
if IVLen != 16 {
|
||||||
log.Panic("stupidgcm only supports 128-bit IVs")
|
log.Panic("stupidgcm only supports 128-bit IVs")
|
||||||
}
|
}
|
||||||
// stupidgcm does not create a private copy of the key, so things
|
aeadCipher = stupidgcm.New(gcmKey, forceDecode)
|
||||||
// break when initFuseFrontend() overwrites it with zeros. Create
|
|
||||||
// a copy here. This is unnecessary when useHKDF == true, but
|
|
||||||
// does no harm.
|
|
||||||
var stupidgcmKey []byte
|
|
||||||
stupidgcmKey = append(stupidgcmKey, gcmKey...)
|
|
||||||
aeadCipher = stupidgcm.New(stupidgcmKey, forceDecode)
|
|
||||||
case BackendGoGCM:
|
case BackendGoGCM:
|
||||||
goGcmBlockCipher, err := aes.NewCipher(gcmKey)
|
goGcmBlockCipher, err := aes.NewCipher(gcmKey)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -33,10 +33,12 @@ type StupidGCM struct {
|
|||||||
var _ cipher.AEAD = &StupidGCM{}
|
var _ cipher.AEAD = &StupidGCM{}
|
||||||
|
|
||||||
// New returns a new cipher.AEAD implementation..
|
// New returns a new cipher.AEAD implementation..
|
||||||
func New(key []byte, forceDecode bool) cipher.AEAD {
|
func New(keyIn []byte, forceDecode bool) cipher.AEAD {
|
||||||
if len(key) != keyLen {
|
if len(keyIn) != keyLen {
|
||||||
log.Panicf("Only %d-byte keys are supported", keyLen)
|
log.Panicf("Only %d-byte keys are supported", keyLen)
|
||||||
}
|
}
|
||||||
|
// Create a private copy of the key
|
||||||
|
key := append([]byte{}, keyIn...)
|
||||||
return &StupidGCM{key: key, forceDecode: forceDecode}
|
return &StupidGCM{key: key, forceDecode: forceDecode}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user