diff options
Diffstat (limited to 'internal/siv_aead/siv_aead.go')
-rw-r--r-- | internal/siv_aead/siv_aead.go | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/internal/siv_aead/siv_aead.go b/internal/siv_aead/siv_aead.go index 6cfa937..d5df4ac 100644 --- a/internal/siv_aead/siv_aead.go +++ b/internal/siv_aead/siv_aead.go @@ -15,8 +15,22 @@ type sivAead struct { var _ cipher.AEAD = &sivAead{} +const ( + KeyLen = 64 +) + // New returns a new cipher.AEAD implementation. func New(key []byte) cipher.AEAD { + if len(key) != KeyLen { + // SIV supports more 32, 48 or 64-byte keys, but in gocryptfs we + // exclusively use 64. + log.Panicf("Key must be %d byte long (you passed %d)", KeyLen, len(key)) + } + return new2(key) +} + +// Same as "New" without the 64-byte restriction. +func new2(key []byte) cipher.AEAD { return &sivAead{ key: key, } |