Cryptosystem_test.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. package types
  2. import (
  3. "encoding/hex"
  4. "testing"
  5. "github.com/stretchr/testify/assert"
  6. "gopkg.in/jcmturner/gokrb5.v6/iana"
  7. "gopkg.in/jcmturner/gokrb5.v6/testdata"
  8. )
  9. func TestUnmarshalEncryptedData(t *testing.T) {
  10. t.Parallel()
  11. var a EncryptedData
  12. v := "encode_krb5_enc_data"
  13. b, err := hex.DecodeString(testdata.TestVectors[v])
  14. if err != nil {
  15. t.Fatalf("Test vector read error of %s: %v\n", v, err)
  16. }
  17. err = a.Unmarshal(b)
  18. if err != nil {
  19. t.Fatalf("Unmarshal error of %s: %v\n", v, err)
  20. }
  21. assert.Equal(t, testdata.TEST_ETYPE, a.EType, "Encrypted data Etype not as expected")
  22. assert.Equal(t, iana.PVNO, a.KVNO, "Encrypted data KVNO not as expected")
  23. assert.Equal(t, []byte(testdata.TEST_CIPHERTEXT), a.Cipher, "Ecrypted data ciphertext not as expected")
  24. }
  25. func TestUnmarshalEncryptedData_MSBsetkvno(t *testing.T) {
  26. t.Parallel()
  27. var a EncryptedData
  28. v := "encode_krb5_enc_data(MSB-setkvno)"
  29. b, err := hex.DecodeString(testdata.TestVectors[v])
  30. if err != nil {
  31. t.Fatalf("Test vector read error of %s: %v\n", v, err)
  32. }
  33. err = a.Unmarshal(b)
  34. if err != nil {
  35. t.Fatalf("Unmarshal error of %s: %v\n", v, err)
  36. }
  37. assert.Equal(t, testdata.TEST_ETYPE, a.EType, "Encrypted data Etype not as expected")
  38. assert.Equal(t, -16777216, a.KVNO, "Encrypted data KVNO not as expected")
  39. assert.Equal(t, []byte(testdata.TEST_CIPHERTEXT), a.Cipher, "Ecrypted data ciphertext not as expected")
  40. }
  41. func TestUnmarshalEncryptedData_kvno_neg1(t *testing.T) {
  42. t.Parallel()
  43. var a EncryptedData
  44. v := "encode_krb5_enc_data(kvno= -1)"
  45. b, err := hex.DecodeString(testdata.TestVectors[v])
  46. if err != nil {
  47. t.Fatalf("Test vector read error of %s: %v\n", v, err)
  48. }
  49. err = a.Unmarshal(b)
  50. if err != nil {
  51. t.Fatalf("Unmarshal error of %s: %v\n", v, err)
  52. }
  53. assert.Equal(t, testdata.TEST_ETYPE, a.EType, "Encrypted data Etype not as expected")
  54. assert.Equal(t, -1, a.KVNO, "Encrypted data KVNO not as expected")
  55. assert.Equal(t, []byte(testdata.TEST_CIPHERTEXT), a.Cipher, "Ecrypted data ciphertext not as expected")
  56. }
  57. func TestUnmarshalEncryptionKey(t *testing.T) {
  58. t.Parallel()
  59. var a EncryptionKey
  60. v := "encode_krb5_keyblock"
  61. b, err := hex.DecodeString(testdata.TestVectors[v])
  62. if err != nil {
  63. t.Fatalf("Test vector read error of %s: %v\n", v, err)
  64. }
  65. err = a.Unmarshal(b)
  66. if err != nil {
  67. t.Fatalf("Unmarshal error of %s: %v\n", v, err)
  68. }
  69. assert.Equal(t, int32(1), a.KeyType, "Key type not as expected")
  70. assert.Equal(t, []byte("12345678"), a.KeyValue, "Key value not as expected")
  71. }
  72. func TestMarshalEncryptedData(t *testing.T) {
  73. t.Parallel()
  74. var a EncryptedData
  75. v := "encode_krb5_enc_data"
  76. b, err := hex.DecodeString(testdata.TestVectors[v])
  77. if err != nil {
  78. t.Fatalf("Test vector read error of %s: %v\n", v, err)
  79. }
  80. err = a.Unmarshal(b)
  81. if err != nil {
  82. t.Fatalf("Unmarshal error of %s: %v\n", v, err)
  83. }
  84. mb, err := a.Marshal()
  85. if err != nil {
  86. t.Fatalf("Marshal of ticket errored: %v", err)
  87. }
  88. assert.Equal(t, b, mb, "Marshal bytes of Encrypted Data not as expected")
  89. }