fips140_test.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. //go:build fips140v1.0
  2. // +build fips140v1.0
  3. package noiseutil
  4. import (
  5. "crypto/fips140"
  6. "encoding/hex"
  7. "log"
  8. "testing"
  9. "github.com/stretchr/testify/assert"
  10. )
  11. func TestEncryptLockNeeded(t *testing.T) {
  12. assert.True(t, EncryptLockNeeded)
  13. }
  14. // Ensure NewAESGCM validates the nonce is non-repeating
  15. func TestNewAESGCM(t *testing.T) {
  16. assert.True(t, fips140.Enabled())
  17. key, _ := hex.DecodeString("feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308")
  18. iv, _ := hex.DecodeString("00000000facedbaddecaf888")
  19. plaintext, _ := hex.DecodeString("d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39")
  20. aad, _ := hex.DecodeString("feedfacedeadbeeffeedfacedeadbeefabaddad2")
  21. expected, _ := hex.DecodeString("72ce2ea385f88c20d856e9d1248c2ca08562bbe8a61459ffae06ec393540518e9b6b4c40a146053f26a3df83c5384a48d273148b15aba64d970107432b2892741359275676441c1572c3fa9e")
  22. var keyArray [32]byte
  23. copy(keyArray[:], key)
  24. c := CipherAESGCM.Cipher(keyArray)
  25. aead := c.(aeadCipher).AEAD
  26. dst := aead.Seal([]byte{}, iv, plaintext, aad)
  27. log.Printf("%x", dst)
  28. assert.Equal(t, expected, dst)
  29. // We expect this to fail since we are re-encrypting with a repeat IV
  30. assert.PanicsWithValue(t, "crypto/cipher: counter decreased", func() {
  31. dst = aead.Seal([]byte{}, iv, plaintext, aad)
  32. })
  33. }