From: Jason A. Donenfeld Date: Sun, 3 Feb 2019 21:00:36 +0000 (+0100) Subject: noise: store clamped key instead of raw key X-Git-Tag: 0.0.20190409~122 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3af9aa88a310f7c2b86bae1ebb3ed3843424ce9e;p=thirdparty%2Fwireguard-go.git noise: store clamped key instead of raw key --- 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 {