crypto: Fix nonce test, make it faster

This commit is contained in:
Alexander Neumann 2017-11-01 09:34:00 +01:00
parent 931e6ed2ac
commit ba43c8bab5
2 changed files with 30 additions and 3 deletions

View file

@ -237,9 +237,9 @@ var ErrInvalidCiphertext = errors.New("invalid ciphertext, same slice used for p
// validNonce checks that nonce is not all zero.
func validNonce(nonce []byte) bool {
sum := 0
for b := range nonce {
sum += b
var sum byte
for _, b := range nonce {
sum |= b
}
return sum > 0
}

View file

@ -163,3 +163,30 @@ func TestCrypto(t *testing.T) {
}
}
}
func TestNonceVadlid(t *testing.T) {
nonce := make([]byte, ivSize)
if validNonce(nonce) {
t.Error("null nonce detected as valid")
}
for i := 0; i < 100; i++ {
nonce = NewRandomNonce()
if !validNonce(nonce) {
t.Errorf("random nonce not detected as valid: %02x", nonce)
}
}
}
func BenchmarkNonceValid(b *testing.B) {
nonce := NewRandomNonce()
b.ResetTimer()
for i := 0; i < b.N; i++ {
if !validNonce(nonce) {
b.Fatal("nonce is invalid")
}
}
}