forked from TrueCloudLab/restic
crypto: Fix nonce test, make it faster
This commit is contained in:
parent
931e6ed2ac
commit
ba43c8bab5
2 changed files with 30 additions and 3 deletions
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue