github.com/crewjam/saml@v0.4.14/xmlenc/encrypt_test.go (about) 1 package xmlenc 2 3 import ( 4 "crypto/x509" 5 "encoding/pem" 6 "math/rand" 7 "testing" 8 9 "github.com/beevik/etree" 10 "gotest.tools/assert" 11 "gotest.tools/golden" 12 ) 13 14 func TestCanEncryptOAEP(t *testing.T) { 15 t.Run("CBC", func(t *testing.T) { 16 17 RandReader = rand.New(rand.NewSource(0)) //nolint:gosec // deterministic random numbers for tests 18 19 pemBlock, _ := pem.Decode(golden.Get(t, "cert.pem")) 20 certificate, err := x509.ParseCertificate(pemBlock.Bytes) 21 assert.Check(t, err) 22 23 e := OAEP() 24 e.BlockCipher = AES128CBC 25 e.DigestMethod = &SHA1 26 27 el, err := e.Encrypt(certificate, golden.Get(t, "plaintext.xml"), nil) 28 assert.Check(t, err) 29 30 doc := etree.NewDocument() 31 doc.SetRoot(el) 32 doc.IndentTabs() 33 ciphertext, _ := doc.WriteToString() 34 35 golden.Assert(t, ciphertext, "ciphertext.xml") 36 }) 37 38 t.Run("GCM", func(t *testing.T) { 39 RandReader = rand.New(rand.NewSource(0)) //nolint:gosec // deterministic random numbers for tests 40 41 cert := golden.Get(t, "cert.cert") 42 b, _ := pem.Decode(cert) 43 certificate, err := x509.ParseCertificate(b.Bytes) 44 assert.Check(t, err) 45 46 e := OAEP() 47 e.BlockCipher = AES128GCM 48 e.DigestMethod = &SHA1 49 50 el, err := e.Encrypt(certificate, golden.Get(t, "plaintext_gcm.xml"), []byte("1234567890AZ")) 51 assert.Check(t, err) 52 53 doc := etree.NewDocument() 54 doc.SetRoot(el) 55 doc.Indent(4) 56 ciphertext, _ := doc.WriteToString() 57 golden.Assert(t, ciphertext, "ciphertext_gcm.xml") 58 }) 59 }