Cryptosystem_test.go 2.7 KB

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