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  }