github.com/crewjam/saml@v0.4.14/xmlenc/xmlenc_test.go (about) 1 package xmlenc 2 3 import ( 4 "math/rand" 5 "os" 6 "testing" 7 8 "github.com/beevik/etree" 9 "gotest.tools/assert" 10 is "gotest.tools/assert/cmp" 11 ) 12 13 func TestDataAES128(t *testing.T) { 14 t.Run("CBC", func(t *testing.T) { 15 RandReader = rand.New(rand.NewSource(0)) //nolint:gosec // deterministic random numbers for tests 16 plaintext, err := os.ReadFile("testdata/encrypt-data-aes128-cbc.data") 17 assert.Check(t, err) 18 19 var ciphertext string 20 { 21 encrypter := AES128CBC 22 cipherEl, encErr := encrypter.Encrypt([]byte("abcdefghijklmnop"), plaintext, nil) 23 assert.Check(t, encErr) 24 25 doc := etree.NewDocument() 26 doc.SetRoot(cipherEl) 27 doc.IndentTabs() 28 ciphertext, err = doc.WriteToString() 29 assert.Check(t, err) 30 } 31 32 { 33 decrypter := AES128CBC 34 doc := etree.NewDocument() 35 err = doc.ReadFromString(ciphertext) 36 assert.Check(t, err) 37 38 actualPlaintext, err := decrypter.Decrypt( 39 []byte("abcdefghijklmnop"), doc.Root()) 40 assert.Check(t, err) 41 assert.Check(t, is.DeepEqual(plaintext, actualPlaintext)) 42 } 43 44 { 45 decrypter := AES128CBC 46 doc := etree.NewDocument() 47 err := doc.ReadFromFile("testdata/encrypt-data-aes128-cbc.xml") 48 assert.Check(t, err) 49 50 actualPlaintext, err := decrypter.Decrypt([]byte("abcdefghijklmnop"), doc.Root()) 51 assert.Check(t, err) 52 assert.Check(t, is.DeepEqual(plaintext, actualPlaintext)) 53 } 54 }) 55 56 t.Run("GCM", func(t *testing.T) { 57 RandReader = rand.New(rand.NewSource(0)) //nolint:gosec // deterministic random numbers for tests 58 plaintext := "top secret message to use with gcm" 59 60 { 61 encrypter := AES128GCM 62 cipherEl, encErr := encrypter.Encrypt([]byte("abcdefghijklmnop"), []byte(plaintext), []byte("1234567890AZ")) 63 assert.Check(t, encErr) 64 65 doc := etree.NewDocument() 66 doc.SetRoot(cipherEl) 67 doc.IndentTabs() 68 _, err := doc.WriteToString() 69 assert.Check(t, err) 70 } 71 }) 72 } 73 74 /* 75 func TestAES256CBC(t *testing.T) { 76 RandReader = rand.New(rand.NewSource(0)) // deterministic random numbers for tests 77 doc := etree.NewDocument() 78 err := doc.ReadFromFile("testdata/plaintext.xml") 79 assert.NoError(t, err) 80 81 el := doc.FindElement("//PaymentInfo") 82 assert.NotNil(t, el) 83 84 tmpDoc := etree.NewDocument() 85 tmpDoc.SetRoot(el.Copy()) 86 tmpBuf, _ := tmpDoc.WriteToString() 87 88 encrypter := AES256CBC 89 cipherEl, err := encrypter.Encrypt( 90 []byte("abcdefghijklmnopqrstuvwxyz012345"), []byte(tmpBuf)) 91 assert.NoError(t, err) 92 93 el.Child = nil 94 el.AddChild(cipherEl) 95 96 doc.IndentTabs() 97 s, _ := doc.WriteToString() 98 fmt.Println(s) 99 } 100 */