INNER CODE UNIT · Go
EncryptKey
aead/minisign · private.go:182
func EncryptKey(password string, privateKey PrivateKey) ([]byte, error) {
var privateKeyBytes [72]byte
binary.LittleEndian.PutUint64(privateKeyBytes[:], privateKey.ID())
copy(privateKeyBytes[8:], privateKey.bytes[:])
var salt [32]byte
if _, err := io.ReadFull(rand.Reader, salt[:]); err != nil {
return nil, err
}
var bytes [privateKeySize]byte
binary.LittleEndian.PutUint16(bytes[0:], EdDSA)
binary.LittleEndian.PutUint16(bytes[2:], algorithmScrypt)
binary.LittleEndian.PutUint16(bytes[4:], algorithmBlake2b)
const ( // TODO(aead): Callers may want to customize the cost parameters
defaultOps = 33554432 // libsodium OPS_LIMIT_SENSITIVE
defaultMem = 1073741824 // libsodium MEM_LIMIT_SENSITIVE