910ccdb092
Bumps [github.com/hashicorp/terraform-plugin-sdk/v2](https://github.com/hashicorp/terraform-plugin-sdk) from 2.26.1 to 2.27.0. - [Release notes](https://github.com/hashicorp/terraform-plugin-sdk/releases) - [Changelog](https://github.com/hashicorp/terraform-plugin-sdk/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/terraform-plugin-sdk/compare/v2.26.1...v2.27.0) --- updated-dependencies: - dependency-name: github.com/hashicorp/terraform-plugin-sdk/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
66 lines
1.2 KiB
Go
66 lines
1.2 KiB
Go
// Copyright (C) 2019 ProtonTech AG
|
|
|
|
package algorithm
|
|
|
|
import (
|
|
"crypto/cipher"
|
|
"github.com/ProtonMail/go-crypto/eax"
|
|
"github.com/ProtonMail/go-crypto/ocb"
|
|
)
|
|
|
|
// AEADMode defines the Authenticated Encryption with Associated Data mode of
|
|
// operation.
|
|
type AEADMode uint8
|
|
|
|
// Supported modes of operation (see RFC4880bis [EAX] and RFC7253)
|
|
const (
|
|
AEADModeEAX = AEADMode(1)
|
|
AEADModeOCB = AEADMode(2)
|
|
AEADModeGCM = AEADMode(3)
|
|
)
|
|
|
|
// TagLength returns the length in bytes of authentication tags.
|
|
func (mode AEADMode) TagLength() int {
|
|
switch mode {
|
|
case AEADModeEAX:
|
|
return 16
|
|
case AEADModeOCB:
|
|
return 16
|
|
case AEADModeGCM:
|
|
return 16
|
|
default:
|
|
return 0
|
|
}
|
|
}
|
|
|
|
// NonceLength returns the length in bytes of nonces.
|
|
func (mode AEADMode) NonceLength() int {
|
|
switch mode {
|
|
case AEADModeEAX:
|
|
return 16
|
|
case AEADModeOCB:
|
|
return 15
|
|
case AEADModeGCM:
|
|
return 12
|
|
default:
|
|
return 0
|
|
}
|
|
}
|
|
|
|
// New returns a fresh instance of the given mode
|
|
func (mode AEADMode) New(block cipher.Block) (alg cipher.AEAD) {
|
|
var err error
|
|
switch mode {
|
|
case AEADModeEAX:
|
|
alg, err = eax.NewEAX(block)
|
|
case AEADModeOCB:
|
|
alg, err = ocb.NewOCB(block)
|
|
case AEADModeGCM:
|
|
alg, err = cipher.NewGCM(block)
|
|
}
|
|
if err != nil {
|
|
panic(err.Error())
|
|
}
|
|
return alg
|
|
}
|