ca_pool_test.go 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package cert
  2. import (
  3. "testing"
  4. "github.com/stretchr/testify/assert"
  5. )
  6. func TestNewCAPoolFromBytes(t *testing.T) {
  7. noNewLines := `
  8. # Current provisional, Remove once everything moves over to the real root.
  9. -----BEGIN NEBULA CERTIFICATE-----
  10. CkAKDm5lYnVsYSByb290IGNhKJfap9AFMJfg1+YGOiCUQGByMuNRhIlQBOyzXWbL
  11. vcKBwDhov900phEfJ5DN3kABEkDCq5R8qBiu8sl54yVfgRcQXEDt3cHr8UTSLszv
  12. bzBEr00kERQxxTzTsH8cpYEgRoipvmExvg8WP8NdAJEYJosB
  13. -----END NEBULA CERTIFICATE-----
  14. # root-ca01
  15. -----BEGIN NEBULA CERTIFICATE-----
  16. CkMKEW5lYnVsYSByb290IGNhIDAxKJL2u9EFMJL86+cGOiDPXMH4oU6HZTk/CqTG
  17. BVG+oJpAoqokUBbI4U0N8CSfpUABEkB/Pm5A2xyH/nc8mg/wvGUWG3pZ7nHzaDMf
  18. 8/phAUt+FLzqTECzQKisYswKvE3pl9mbEYKbOdIHrxdIp95mo4sF
  19. -----END NEBULA CERTIFICATE-----
  20. `
  21. withNewLines := `
  22. # Current provisional, Remove once everything moves over to the real root.
  23. -----BEGIN NEBULA CERTIFICATE-----
  24. CkAKDm5lYnVsYSByb290IGNhKJfap9AFMJfg1+YGOiCUQGByMuNRhIlQBOyzXWbL
  25. vcKBwDhov900phEfJ5DN3kABEkDCq5R8qBiu8sl54yVfgRcQXEDt3cHr8UTSLszv
  26. bzBEr00kERQxxTzTsH8cpYEgRoipvmExvg8WP8NdAJEYJosB
  27. -----END NEBULA CERTIFICATE-----
  28. # root-ca01
  29. -----BEGIN NEBULA CERTIFICATE-----
  30. CkMKEW5lYnVsYSByb290IGNhIDAxKJL2u9EFMJL86+cGOiDPXMH4oU6HZTk/CqTG
  31. BVG+oJpAoqokUBbI4U0N8CSfpUABEkB/Pm5A2xyH/nc8mg/wvGUWG3pZ7nHzaDMf
  32. 8/phAUt+FLzqTECzQKisYswKvE3pl9mbEYKbOdIHrxdIp95mo4sF
  33. -----END NEBULA CERTIFICATE-----
  34. `
  35. expired := `
  36. # expired certificate
  37. -----BEGIN NEBULA CERTIFICATE-----
  38. CjkKB2V4cGlyZWQouPmWjQYwufmWjQY6ILCRaoCkJlqHgv5jfDN4lzLHBvDzaQm4
  39. vZxfu144hmgjQAESQG4qlnZi8DncvD/LDZnLgJHOaX1DWCHHEh59epVsC+BNgTie
  40. WH1M9n4O7cFtGlM6sJJOS+rCVVEJ3ABS7+MPdQs=
  41. -----END NEBULA CERTIFICATE-----
  42. `
  43. p256 := `
  44. # p256 certificate
  45. -----BEGIN NEBULA CERTIFICATE-----
  46. CmYKEG5lYnVsYSBQMjU2IHRlc3Qo4s+7mgYw4tXrsAc6QQRkaW2jFmllYvN4+/k2
  47. 6tctO9sPT3jOx8ES6M1nIqOhpTmZeabF/4rELDqPV4aH5jfJut798DUXql0FlF8H
  48. 76gvQAGgBgESRzBFAiEAib0/te6eMiZOKD8gdDeloMTS0wGuX2t0C7TFdUhAQzgC
  49. IBNWYMep3ysx9zCgknfG5dKtwGTaqF++BWKDYdyl34KX
  50. -----END NEBULA CERTIFICATE-----
  51. `
  52. rootCA := certificateV1{
  53. details: detailsV1{
  54. Name: "nebula root ca",
  55. },
  56. }
  57. rootCA01 := certificateV1{
  58. details: detailsV1{
  59. Name: "nebula root ca 01",
  60. },
  61. }
  62. rootCAP256 := certificateV1{
  63. details: detailsV1{
  64. Name: "nebula P256 test",
  65. },
  66. }
  67. p, err := NewCAPoolFromPEM([]byte(noNewLines))
  68. assert.Nil(t, err)
  69. assert.Equal(t, p.CAs[string("c9bfaf7ce8e84b2eeda2e27b469f4b9617bde192efd214b68891ecda6ed49522")].Certificate.Name(), rootCA.details.Name)
  70. assert.Equal(t, p.CAs[string("5c9c3f23e7ee7fe97637cbd3a0a5b854154d1d9aaaf7b566a51f4a88f76b64cd")].Certificate.Name(), rootCA01.details.Name)
  71. pp, err := NewCAPoolFromPEM([]byte(withNewLines))
  72. assert.Nil(t, err)
  73. assert.Equal(t, pp.CAs[string("c9bfaf7ce8e84b2eeda2e27b469f4b9617bde192efd214b68891ecda6ed49522")].Certificate.Name(), rootCA.details.Name)
  74. assert.Equal(t, pp.CAs[string("5c9c3f23e7ee7fe97637cbd3a0a5b854154d1d9aaaf7b566a51f4a88f76b64cd")].Certificate.Name(), rootCA01.details.Name)
  75. // expired cert, no valid certs
  76. ppp, err := NewCAPoolFromPEM([]byte(expired))
  77. assert.Equal(t, ErrExpired, err)
  78. assert.Equal(t, ppp.CAs[string("152070be6bb19bc9e3bde4c2f0e7d8f4ff5448b4c9856b8eccb314fade0229b0")].Certificate.Name(), "expired")
  79. // expired cert, with valid certs
  80. pppp, err := NewCAPoolFromPEM(append([]byte(expired), noNewLines...))
  81. assert.Equal(t, ErrExpired, err)
  82. assert.Equal(t, pppp.CAs[string("c9bfaf7ce8e84b2eeda2e27b469f4b9617bde192efd214b68891ecda6ed49522")].Certificate.Name(), rootCA.details.Name)
  83. assert.Equal(t, pppp.CAs[string("5c9c3f23e7ee7fe97637cbd3a0a5b854154d1d9aaaf7b566a51f4a88f76b64cd")].Certificate.Name(), rootCA01.details.Name)
  84. assert.Equal(t, pppp.CAs[string("152070be6bb19bc9e3bde4c2f0e7d8f4ff5448b4c9856b8eccb314fade0229b0")].Certificate.Name(), "expired")
  85. assert.Equal(t, len(pppp.CAs), 3)
  86. ppppp, err := NewCAPoolFromPEM([]byte(p256))
  87. assert.Nil(t, err)
  88. assert.Equal(t, ppppp.CAs[string("a7938893ec8c4ef769b06d7f425e5e46f7a7f5ffa49c3bcf4a86b608caba9159")].Certificate.Name(), rootCAP256.details.Name)
  89. assert.Equal(t, len(ppppp.CAs), 1)
  90. }