mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-09-09 13:21:06 +02:00
* 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>
56 lines
1.4 KiB
Go
Vendored
56 lines
1.4 KiB
Go
Vendored
// Copyright (C) 2019 ProtonTech AG
|
|
|
|
package packet
|
|
|
|
import "math/bits"
|
|
|
|
// AEADConfig collects a number of AEAD parameters along with sensible defaults.
|
|
// A nil AEADConfig is valid and results in all default values.
|
|
type AEADConfig struct {
|
|
// The AEAD mode of operation.
|
|
DefaultMode AEADMode
|
|
// Amount of octets in each chunk of data
|
|
ChunkSize uint64
|
|
}
|
|
|
|
// Mode returns the AEAD mode of operation.
|
|
func (conf *AEADConfig) Mode() AEADMode {
|
|
if conf == nil || conf.DefaultMode == 0 {
|
|
return AEADModeEAX
|
|
}
|
|
mode := conf.DefaultMode
|
|
if mode != AEADModeEAX && mode != AEADModeOCB &&
|
|
mode != AEADModeExperimentalGCM {
|
|
panic("AEAD mode unsupported")
|
|
}
|
|
return mode
|
|
}
|
|
|
|
// ChunkSizeByte returns the byte indicating the chunk size. The effective
|
|
// chunk size is computed with the formula uint64(1) << (chunkSizeByte + 6)
|
|
func (conf *AEADConfig) ChunkSizeByte() byte {
|
|
if conf == nil || conf.ChunkSize == 0 {
|
|
return 12 // 1 << (12 + 6) == 262144 bytes
|
|
}
|
|
|
|
chunkSize := conf.ChunkSize
|
|
exponent := bits.Len64(chunkSize) - 1
|
|
switch {
|
|
case exponent < 6:
|
|
exponent = 6
|
|
case exponent > 27:
|
|
exponent = 27
|
|
}
|
|
|
|
return byte(exponent - 6)
|
|
}
|
|
|
|
// decodeAEADChunkSize returns the effective chunk size. In 32-bit systems, the
|
|
// maximum returned value is 1 << 30.
|
|
func decodeAEADChunkSize(c byte) int {
|
|
size := uint64(1 << (c + 6))
|
|
if size != uint64(int(size)) {
|
|
return 1 << 30
|
|
}
|
|
return int(size)
|
|
}
|