}
}
+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
}
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 {