encrypt_test.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. package aead
  2. import (
  3. "bytes"
  4. "fmt"
  5. "io"
  6. "testing"
  7. "github.com/stretchr/testify/assert"
  8. )
  9. func TestOpenVMessAEADHeader(t *testing.T) {
  10. TestHeader := []byte("Test Header")
  11. key := KDF16([]byte("Demo Key for Auth ID Test"), "Demo Path for Auth ID Test")
  12. var keyw [16]byte
  13. copy(keyw[:], key)
  14. sealed := SealVMessAEADHeader(keyw, TestHeader)
  15. AEADR := bytes.NewReader(sealed)
  16. var authid [16]byte
  17. io.ReadFull(AEADR, authid[:])
  18. out, _, _, err := OpenVMessAEADHeader(keyw, authid, AEADR)
  19. fmt.Println(string(out))
  20. fmt.Println(err)
  21. }
  22. func TestOpenVMessAEADHeader2(t *testing.T) {
  23. TestHeader := []byte("Test Header")
  24. key := KDF16([]byte("Demo Key for Auth ID Test"), "Demo Path for Auth ID Test")
  25. var keyw [16]byte
  26. copy(keyw[:], key)
  27. sealed := SealVMessAEADHeader(keyw, TestHeader)
  28. AEADR := bytes.NewReader(sealed)
  29. var authid [16]byte
  30. io.ReadFull(AEADR, authid[:])
  31. out, _, readen, err := OpenVMessAEADHeader(keyw, authid, AEADR)
  32. assert.Equal(t, len(sealed)-16-AEADR.Len(), readen)
  33. assert.Equal(t, string(TestHeader), string(out))
  34. assert.Nil(t, err)
  35. }
  36. func TestOpenVMessAEADHeader4(t *testing.T) {
  37. for i := 0; i <= 60; i++ {
  38. TestHeader := []byte("Test Header")
  39. key := KDF16([]byte("Demo Key for Auth ID Test"), "Demo Path for Auth ID Test")
  40. var keyw [16]byte
  41. copy(keyw[:], key)
  42. sealed := SealVMessAEADHeader(keyw, TestHeader)
  43. var sealedm [16]byte
  44. copy(sealedm[:], sealed)
  45. sealed[i] ^= 0xff
  46. AEADR := bytes.NewReader(sealed)
  47. var authid [16]byte
  48. io.ReadFull(AEADR, authid[:])
  49. out, drain, readen, err := OpenVMessAEADHeader(keyw, authid, AEADR)
  50. assert.Equal(t, len(sealed)-16-AEADR.Len(), readen)
  51. assert.Equal(t, true, drain)
  52. assert.NotNil(t, err)
  53. if err == nil {
  54. fmt.Println(">")
  55. }
  56. assert.Nil(t, out)
  57. }
  58. }
  59. func TestOpenVMessAEADHeader4Massive(t *testing.T) {
  60. for j := 0; j < 1000; j++ {
  61. for i := 0; i <= 60; i++ {
  62. TestHeader := []byte("Test Header")
  63. key := KDF16([]byte("Demo Key for Auth ID Test"), "Demo Path for Auth ID Test")
  64. var keyw [16]byte
  65. copy(keyw[:], key)
  66. sealed := SealVMessAEADHeader(keyw, TestHeader)
  67. var sealedm [16]byte
  68. copy(sealedm[:], sealed)
  69. sealed[i] ^= 0xff
  70. AEADR := bytes.NewReader(sealed)
  71. var authid [16]byte
  72. io.ReadFull(AEADR, authid[:])
  73. out, drain, readen, err := OpenVMessAEADHeader(keyw, authid, AEADR)
  74. assert.Equal(t, len(sealed)-16-AEADR.Len(), readen)
  75. assert.Equal(t, true, drain)
  76. assert.NotNil(t, err)
  77. if err == nil {
  78. fmt.Println(">")
  79. }
  80. assert.Nil(t, out)
  81. }
  82. }
  83. }