From 8c34c4cbb3780c433148966a004f5a51aace0f64 Mon Sep 17 00:00:00 2001 From: Mathias Hall-Andersen Date: Fri, 4 Aug 2017 16:15:53 +0200 Subject: First set of code review patches --- src/noise_types.go | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) (limited to 'src/noise_types.go') diff --git a/src/noise_types.go b/src/noise_types.go index 5ebc130..1a944df 100644 --- a/src/noise_types.go +++ b/src/noise_types.go @@ -1,6 +1,7 @@ package main import ( + "crypto/subtle" "encoding/hex" "errors" "golang.org/x/crypto/chacha20poly1305" @@ -31,12 +32,12 @@ func loadExactHex(dst []byte, src string) error { } func (key NoisePrivateKey) IsZero() bool { - for _, b := range key[:] { - if b != 0 { - return false - } - } - return true + var zero NoisePrivateKey + return key.Equals(zero) +} + +func (key NoisePrivateKey) Equals(tar NoisePrivateKey) bool { + return subtle.ConstantTimeCompare(key[:], tar[:]) == 1 } func (key *NoisePrivateKey) FromHex(src string) error { @@ -55,6 +56,15 @@ func (key NoisePublicKey) ToHex() string { return hex.EncodeToString(key[:]) } +func (key NoisePublicKey) IsZero() bool { + var zero NoisePublicKey + return key.Equals(zero) +} + +func (key NoisePublicKey) Equals(tar NoisePublicKey) bool { + return subtle.ConstantTimeCompare(key[:], tar[:]) == 1 +} + func (key *NoiseSymmetricKey) FromHex(src string) error { return loadExactHex(key[:], src) } -- cgit v1.2.3-59-g8ed1b