argon2/encoder/options.go

56 lines
1.1 KiB
Go
Raw Normal View History

2024-07-24 19:42:25 +02:00
package encoder
import "errors"
type Options struct {
Memory uint32
Iterations uint32
Parallelism uint8
SaltLength uint32
KeyLength uint32
}
var (
ErrInvalidHash = errors.New("the encoded hash is not in the correct format")
ErrIncompatibleVersion = errors.New("incompatible version of argon2")
defaultOptions = Options{
Memory: 64 * 1024,
Iterations: 3,
Parallelism: 2,
SaltLength: 16,
KeyLength: 32,
}
)
type OptFunc func(*Options)
func SetMemory(memory uint32) OptFunc {
return func(options *Options) {
options.Memory = memory
}
}
func SetIterations(iterations uint32) OptFunc {
return func(options *Options) {
options.Iterations = iterations
}
}
func SetParallelism(parallelism uint8) OptFunc {
return func(options *Options) {
options.Parallelism = parallelism
}
}
func SetSaltLength(saltLength uint32) OptFunc {
return func(options *Options) {
options.SaltLength = saltLength
}
}
func SetKeyLength(keyLength uint32) OptFunc {
return func(options *Options) {
options.KeyLength = keyLength
}
}