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 }