github.com/crewjam/saml@v0.4.14/xmlenc/fuzz.go (about)

     1  package xmlenc
     2  
     3  import (
     4  	"crypto/rsa"
     5  	"crypto/x509"
     6  	"encoding/pem"
     7  
     8  	"github.com/beevik/etree"
     9  )
    10  
    11  var testKey = func() *rsa.PrivateKey {
    12  	const keyStr = `-----BEGIN RSA PRIVATE KEY-----
    13  MIICXQIBAAKBgQDkXTUsWzRVpUHjbDpWCfYDfXmQ/q4LkaioZoTpu4ut1Q3eQC5t
    14  gD14agJhgT8yzeY5S/YNlwCyuVkjuFyoyTHFX2IOPpz7jnh4KnQ+B1IH9fY/+kmk
    15  zHJgxSUDJsdUMPgGpKt5hnEn7ziXAWXLc2udFbnHwhi9TXXwRHGi9wZ4YwIDAQAB
    16  AoGBALNTnlXeqRI4W61DZ+v4ln/XIIeD9xiOoWrcVrNU2zL+g41ryQmkEqFkXcpD
    17  vGUg2xFTXTz+v0WZ1y39sIW6uKFRYUfaNsF6iVfGAyx1VWK/jgtPnCWDQy26Eby0
    18  BqpbZRy1a6MLYVEG/5bvZE01CDV4XttpTrNX91WWcYGduJxBAkEA6ED1ZOqIzBpu
    19  c2KAo+bWmroCH8+cSDk0gVq6bnRB+EEhRCmo/VgvndWLxfexdGmDIOAIisB06N5a
    20  GzBSCaEY/QJBAPu2cNvuuBNLwrlxPCwOEpIHYT4gJq8UMtg6O6N+u++nYCGhK6uo
    21  VCmrKY+UewyNIcsLZF0jsNI2qJjiU1vQxN8CQQDfQJnigMQwlfO3/Ga1po6Buu2R
    22  0IpkroB3G1R8GkrTrR+iGv2zUdKrwHsUOC2fPlFrB4+OeMOomRw6aG9jjDStAkB1
    23  ztiZhuvuVAoKIv5HnDqC0CNqIUAZtzlozDB3f+xT6SFr+/Plfn4Nlod4JMVGhZNo
    24  ZaeOlBLBAEX+cAcVtOs/AkBicZOAPv84ABmFfyhXhYaAuacaJLq//jg+t+URUOg+
    25  XZS9naRmawEQxOkZQVoMeKgvu05+V4MniFqdQBINIkr5
    26  -----END RSA PRIVATE KEY-----`
    27  	b, _ := pem.Decode([]byte(keyStr))
    28  	k, err := x509.ParsePKCS1PrivateKey(b.Bytes)
    29  	if err != nil {
    30  		panic(err)
    31  	}
    32  	return k
    33  }()
    34  
    35  // Fuzz is the go-fuzz fuzzing function
    36  func Fuzz(data []byte) int {
    37  	doc := etree.NewDocument()
    38  	if err := doc.ReadFromBytes(data); err != nil {
    39  		return 0
    40  	}
    41  	if doc.Root() == nil {
    42  		return 0
    43  	}
    44  
    45  	if _, err := Decrypt(testKey, doc.Root()); err != nil {
    46  		return 0
    47  	}
    48  	return 1
    49  }