diff options
-rw-r--r-- | noise-helpers.go | 10 | ||||
-rw-r--r-- | noise-types.go | 6 |
2 files changed, 10 insertions, 6 deletions
diff --git a/noise-helpers.go b/noise-helpers.go index 1b2746c..af11f09 100644 --- a/noise-helpers.go +++ b/noise-helpers.go @@ -78,12 +78,14 @@ func setZero(arr []byte) { } } +func (sk *NoisePrivateKey) clamp() { + sk[0] &= 248 + sk[31] = (sk[31] & 127) | 64 +} + func newPrivateKey() (sk NoisePrivateKey, err error) { - // clamping: https://cr.yp.to/ecdh.html _, err = rand.Read(sk[:]) - sk[0] &= 248 - sk[31] &= 127 - sk[31] |= 64 + sk.clamp() return } diff --git a/noise-types.go b/noise-types.go index df6ee77..902905e 100644 --- a/noise-types.go +++ b/noise-types.go @@ -45,8 +45,10 @@ func (key NoisePrivateKey) Equals(tar NoisePrivateKey) bool { return subtle.ConstantTimeCompare(key[:], tar[:]) == 1 } -func (key *NoisePrivateKey) FromHex(src string) error { - return loadExactHex(key[:], src) +func (key *NoisePrivateKey) FromHex(src string) (err error) { + err = loadExactHex(key[:], src) + key.clamp() + return } func (key NoisePrivateKey) ToHex() string { |