]> git.ipfire.org Git - thirdparty/wireguard-go.git/commitdiff
noise: store clamped key instead of raw key
authorJason A. Donenfeld <Jason@zx2c4.com>
Sun, 3 Feb 2019 21:00:36 +0000 (22:00 +0100)
committerJason A. Donenfeld <Jason@zx2c4.com>
Tue, 5 Feb 2019 11:59:42 +0000 (12:59 +0100)
noise-helpers.go
noise-types.go

index 1b2746c2575eb6614ff5788bf07c75142ae76322..af11f0995f41261a569d7bccf008523017abd921 100644 (file)
@@ -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
 }
 
index df6ee77149c2441ec4b6beb8af08d645072ccaec..902905e640f81e8d362176d57570470365deb2a8 100644 (file)
@@ -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 {