1 package rocsp_config
2
3 import (
4 "encoding/hex"
5 "strings"
6 "testing"
7
8 "github.com/letsencrypt/boulder/test"
9 "golang.org/x/crypto/ocsp"
10 )
11
12 func TestLoadIssuers(t *testing.T) {
13 input := map[string]int{
14 "../../test/hierarchy/int-e1.cert.pem": 23,
15 "../../test/hierarchy/int-r3.cert.pem": 99,
16 }
17 output, err := LoadIssuers(input)
18 if err != nil {
19 t.Fatal(err)
20 }
21
22 var e1 *ShortIDIssuer
23 var r3 *ShortIDIssuer
24
25 for i, v := range output {
26 if strings.Contains(v.Certificate.Subject.String(), "E1") {
27 e1 = &output[i]
28 }
29 if strings.Contains(v.Certificate.Subject.String(), "R3") {
30 r3 = &output[i]
31 }
32 }
33
34 test.AssertEquals(t, e1.Subject.String(), "CN=(TEST) Elegant Elephant E1,O=Boulder Test,C=XX")
35 test.AssertEquals(t, r3.Subject.String(), "CN=(TEST) Radical Rhino R3,O=Boulder Test,C=XX")
36 test.AssertEquals(t, e1.shortID, uint8(23))
37 test.AssertEquals(t, r3.shortID, uint8(99))
38 }
39
40 func TestFindIssuerByName(t *testing.T) {
41 input := map[string]int{
42 "../../test/hierarchy/int-e1.cert.pem": 23,
43 "../../test/hierarchy/int-r3.cert.pem": 99,
44 }
45 issuers, err := LoadIssuers(input)
46 if err != nil {
47 t.Fatal(err)
48 }
49
50 elephant, err := hex.DecodeString("3049310b300906035504061302585831153013060355040a130c426f756c6465722054657374312330210603550403131a28544553542920456c6567616e7420456c657068616e74204531")
51 if err != nil {
52 t.Fatal(err)
53 }
54 rhino, err := hex.DecodeString("3046310b300906035504061302585831153013060355040a130c426f756c64657220546573743120301e06035504031317285445535429205261646963616c205268696e6f205233")
55 if err != nil {
56 t.Fatal(err)
57 }
58
59 ocspResp := &ocsp.Response{
60 RawResponderName: elephant,
61 }
62
63 issuer, err := FindIssuerByName(ocspResp, issuers)
64 if err != nil {
65 t.Fatalf("couldn't find issuer: %s", err)
66 }
67
68 test.AssertEquals(t, issuer.shortID, uint8(23))
69
70 ocspResp = &ocsp.Response{
71 RawResponderName: rhino,
72 }
73
74 issuer, err = FindIssuerByName(ocspResp, issuers)
75 if err != nil {
76 t.Fatalf("couldn't find issuer: %s", err)
77 }
78
79 test.AssertEquals(t, issuer.shortID, uint8(99))
80 }
81
82 func TestFindIssuerByID(t *testing.T) {
83 input := map[string]int{
84 "../../test/hierarchy/int-e1.cert.pem": 23,
85 "../../test/hierarchy/int-r3.cert.pem": 99,
86 }
87 issuers, err := LoadIssuers(input)
88 if err != nil {
89 t.Fatal(err)
90 }
91
92
93 issuer, err := FindIssuerByID(66283756913588288, issuers)
94 if err != nil {
95 t.Fatalf("couldn't find issuer: %s", err)
96 }
97 test.AssertEquals(t, issuer.shortID, uint8(23))
98
99
100 issuer, err = FindIssuerByID(2823400738, issuers)
101 if err != nil {
102 t.Fatalf("couldn't find issuer: %s", err)
103 }
104 test.AssertEquals(t, issuer.shortID, uint8(23))
105
106
107 issuer, err = FindIssuerByID(58923463773186183, issuers)
108 if err != nil {
109 t.Fatalf("couldn't find issuer: %s", err)
110 }
111 test.AssertEquals(t, issuer.shortID, uint8(99))
112
113
114 issuer, err = FindIssuerByID(2890189813, issuers)
115 if err != nil {
116 t.Fatalf("couldn't find issuer: %s", err)
117 }
118 test.AssertEquals(t, issuer.shortID, uint8(99))
119 }
120
View as plain text