reverse: add panics against API abuse
These should help prevent later programming errors.
This commit is contained in:
parent
f754c8a200
commit
d3b78fea95
@ -72,6 +72,10 @@ func New(key []byte, backend BackendTypeEnum, IVBitLen int) *CryptoCore {
|
|||||||
case BackendGoGCM:
|
case BackendGoGCM:
|
||||||
aeadCipher, err = goGCMWrapper(blockCipher, IVLen)
|
aeadCipher, err = goGCMWrapper(blockCipher, IVLen)
|
||||||
case BackendAESSIV:
|
case BackendAESSIV:
|
||||||
|
if IVLen != 16 {
|
||||||
|
// SIV supports any nonce size, but we only use 16.
|
||||||
|
panic("AES-SIV must use 16-byte nonces")
|
||||||
|
}
|
||||||
// AES-SIV uses 1/2 of the key for authentication, 1/2 for
|
// AES-SIV uses 1/2 of the key for authentication, 1/2 for
|
||||||
// encryption, so we need a 64-bytes key for AES-256. Derive it from
|
// encryption, so we need a 64-bytes key for AES-256. Derive it from
|
||||||
// the master key by hashing it with SHA-512.
|
// the master key by hashing it with SHA-512.
|
||||||
|
@ -46,10 +46,14 @@ type reverseFS struct {
|
|||||||
|
|
||||||
var _ pathfs.FileSystem = &reverseFS{}
|
var _ pathfs.FileSystem = &reverseFS{}
|
||||||
|
|
||||||
// NewFS returns an encrypted FUSE overlay filesystem
|
// NewFS returns an encrypted FUSE overlay filesystem.
|
||||||
|
// In this case (reverse mode) the backing directory is plain-text and
|
||||||
|
// reverseFS provides an encrypted view.
|
||||||
func NewFS(args fusefrontend.Args) pathfs.FileSystem {
|
func NewFS(args fusefrontend.Args) pathfs.FileSystem {
|
||||||
|
if args.CryptoBackend != cryptocore.BackendAESSIV {
|
||||||
|
panic("reverse mode must use AES-SIV, everything else is insecure")
|
||||||
|
}
|
||||||
initLongnameCache()
|
initLongnameCache()
|
||||||
|
|
||||||
cryptoCore := cryptocore.New(args.Masterkey, args.CryptoBackend, contentenc.DefaultIVBits)
|
cryptoCore := cryptocore.New(args.Masterkey, args.CryptoBackend, contentenc.DefaultIVBits)
|
||||||
contentEnc := contentenc.New(cryptoCore, contentenc.DefaultBS)
|
contentEnc := contentenc.New(cryptoCore, contentenc.DefaultBS)
|
||||||
nameTransform := nametransform.New(cryptoCore, args.LongNames)
|
nameTransform := nametransform.New(cryptoCore, args.LongNames)
|
||||||
|
Loading…
Reference in New Issue
Block a user