AES: Add guard for data length to prevent panicking

This commit is contained in:
Paul van Santen
2020-06-15 08:51:22 +02:00
parent 6d244841d5
commit 14d135a0ee

View File

@@ -62,6 +62,10 @@ func (c *AES) Marshal(v interface{}) ([]byte, error) {
// Unmarshal unmarshals the given encrypted byte array to the given type
func (c *AES) Unmarshal(data []byte, v interface{}) error {
nonceSize := c.aesGCM.NonceSize()
if len(data) < nonceSize {
return fmt.Errorf("not enough data for aes decryption (%d < %d)", len(data), nonceSize)
}
decrypted, err := c.aesGCM.Open(nil, data[:nonceSize], data[nonceSize:], nil)
if err != nil {
return fmt.Errorf("error decrypting data: %w", err)