fuzz.go 1.4 KB

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