86e2789960
* update github.com/PuerkitoBio/goquery * update github.com/alecthomas/chroma * update github.com/blevesearch/bleve/v2 * update github.com/caddyserver/certmagic * update github.com/go-enry/go-enry/v2 * update github.com/go-git/go-billy/v5 * update github.com/go-git/go-git/v5 * update github.com/go-redis/redis/v8 * update github.com/go-testfixtures/testfixtures/v3 * update github.com/jaytaylor/html2text * update github.com/json-iterator/go * update github.com/klauspost/compress * update github.com/markbates/goth * update github.com/mattn/go-isatty * update github.com/mholt/archiver/v3 * update github.com/microcosm-cc/bluemonday * update github.com/minio/minio-go/v7 * update github.com/prometheus/client_golang * update github.com/unrolled/render * update github.com/xanzy/go-gitlab * update github.com/yuin/goldmark * update github.com/yuin/goldmark-highlighting Co-authored-by: techknowlogick <techknowlogick@gitea.io>
65 lines
1.2 KiB
Go
Vendored
65 lines
1.2 KiB
Go
Vendored
// 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(100)
|
|
)
|
|
|
|
// 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
|
|
}
|