tlsutils_test.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package common
  2. import (
  3. "crypto/tls"
  4. "io/ioutil"
  5. "os"
  6. "path/filepath"
  7. "testing"
  8. "github.com/stretchr/testify/assert"
  9. )
  10. const (
  11. httpsCert = `-----BEGIN CERTIFICATE-----
  12. MIICHTCCAaKgAwIBAgIUHnqw7QnB1Bj9oUsNpdb+ZkFPOxMwCgYIKoZIzj0EAwIw
  13. RTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGElu
  14. dGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yMDAyMDQwOTUzMDRaFw0zMDAyMDEw
  15. OTUzMDRaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYD
  16. VQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwdjAQBgcqhkjOPQIBBgUrgQQA
  17. IgNiAARCjRMqJ85rzMC998X5z761nJ+xL3bkmGVqWvrJ51t5OxV0v25NsOgR82CA
  18. NXUgvhVYs7vNFN+jxtb2aj6Xg+/2G/BNxkaFspIVCzgWkxiz7XE4lgUwX44FCXZM
  19. 3+JeUbKjUzBRMB0GA1UdDgQWBBRhLw+/o3+Z02MI/d4tmaMui9W16jAfBgNVHSME
  20. GDAWgBRhLw+/o3+Z02MI/d4tmaMui9W16jAPBgNVHRMBAf8EBTADAQH/MAoGCCqG
  21. SM49BAMCA2kAMGYCMQDqLt2lm8mE+tGgtjDmtFgdOcI72HSbRQ74D5rYTzgST1rY
  22. /8wTi5xl8TiFUyLMUsICMQC5ViVxdXbhuG7gX6yEqSkMKZICHpO8hqFwOD/uaFVI
  23. dV4vKmHUzwK/eIx+8Ay3neE=
  24. -----END CERTIFICATE-----`
  25. httpsKey = `-----BEGIN EC PARAMETERS-----
  26. BgUrgQQAIg==
  27. -----END EC PARAMETERS-----
  28. -----BEGIN EC PRIVATE KEY-----
  29. MIGkAgEBBDCfMNsN6miEE3rVyUPwElfiJSWaR5huPCzUenZOfJT04GAcQdWvEju3
  30. UM2lmBLIXpGgBwYFK4EEACKhZANiAARCjRMqJ85rzMC998X5z761nJ+xL3bkmGVq
  31. WvrJ51t5OxV0v25NsOgR82CANXUgvhVYs7vNFN+jxtb2aj6Xg+/2G/BNxkaFspIV
  32. CzgWkxiz7XE4lgUwX44FCXZM3+JeUbI=
  33. -----END EC PRIVATE KEY-----`
  34. )
  35. func TestLoadCertificate(t *testing.T) {
  36. certPath := filepath.Join(os.TempDir(), "test.crt")
  37. keyPath := filepath.Join(os.TempDir(), "test.key")
  38. err := ioutil.WriteFile(certPath, []byte(httpsCert), os.ModePerm)
  39. assert.NoError(t, err)
  40. err = ioutil.WriteFile(keyPath, []byte(httpsKey), os.ModePerm)
  41. assert.NoError(t, err)
  42. certManager, err := NewCertManager(certPath, keyPath, logSenderTest)
  43. assert.NoError(t, err)
  44. certFunc := certManager.GetCertificateFunc()
  45. if assert.NotNil(t, certFunc) {
  46. hello := &tls.ClientHelloInfo{
  47. ServerName: "localhost",
  48. CipherSuites: []uint16{tls.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305},
  49. }
  50. cert, err := certFunc(hello)
  51. assert.NoError(t, err)
  52. assert.Equal(t, certManager.cert, cert)
  53. }
  54. err = os.Remove(certPath)
  55. assert.NoError(t, err)
  56. err = os.Remove(keyPath)
  57. assert.NoError(t, err)
  58. }
  59. func TestLoadInvalidCert(t *testing.T) {
  60. certManager, err := NewCertManager("test.crt", "test.key", logSenderTest)
  61. assert.Error(t, err)
  62. assert.Nil(t, certManager)
  63. }