go-peer/pkg/crypto/keybuilder/keybuilder.go
2025-04-30 22:39:03 +07:00

34 lines
511 B
Go

package keybuilder
import (
"crypto/sha512"
"golang.org/x/crypto/pbkdf2"
)
var (
_ IKeyBuilder = &sKeyBuilder{}
)
type sKeyBuilder struct {
fIterN uint64
fSalt []byte
}
func NewKeyBuilder(pIterN uint64, pSalt []byte) IKeyBuilder {
return &sKeyBuilder{
fIterN: pIterN,
fSalt: pSalt,
}
}
func (p *sKeyBuilder) Build(pPassword string, pKeyLen uint64) []byte {
return pbkdf2.Key(
[]byte(pPassword),
p.fSalt,
int(p.fIterN), //nolint:gosec
int(pKeyLen), //nolint:gosec
sha512.New,
)
}