@@ -28,6 +28,7 @@ func TestMarshalTBSCertificate(t *testing.T) {
2828 }
2929
3030 var tests = []struct {
31+ version VersionConfig
3132 issuer TrustAnchorID
3233 serial int
3334 entry * EntryConfig
@@ -36,20 +37,22 @@ func TestMarshalTBSCertificate(t *testing.T) {
3637 }{
3738 // A minimal TBSCertificate
3839 {
39- issuer : issuer ,
40- serial : 1234 ,
40+ version : VersionDavidben10 ,
41+ issuer : issuer ,
42+ serial : 1234 ,
4143 entry : & EntryConfig {
4244 PublicKey : publicKey ,
4345 NotBefore : time .Unix (1577836800 , 0 ), // 2020-01-01 00:00:00
4446 NotAfter : time .Unix (1609459199 , 0 ), // 2020-12-31 23:59:59
4547 },
4648 expectedTBSHex : "3081afa003020102020204d2300c060a2b0601040182da4b2f00301931173015060a2b0601040182da4b2f010c0733323437332e31301e170d3230303130313030303030305a170d3230313233313233353935395a30003059301306072a8648ce3d020106082a8648ce3d03010703420004e62b69e2bf659f97be2f1e0d948a4cd5976bb7a91e0d46fbdda9a91e9ddcba5a01e7d697a80a18f9c3c4a31e56e27c8348db161a1cf51d7ef1942d4bcf7222c1" ,
47- expectedLogEntryHex : "00013064a003020102301931173015060a2b0601040182da4b2f010c0733323437332e31301e170d3230303130313030303030305a170d3230313233313233353935395a30000420b3aea0f0a50538874f2b4c912f2676bd25ccc3dae700e20dcad42d3d5c074ca5 " ,
49+ expectedLogEntryHex : "0001a003020102301931173015060a2b0601040182da4b2f010c0733323437332e31301e170d3230303130313030303030305a170d3230313233313233353935395a30000420b3aea0f0a50538874f2b4c912f2676bd25ccc3dae700e20dcad42d3d5c074ca5 " ,
4850 },
4951 // Fill in a bit of everything.
5052 {
51- issuer : issuer ,
52- serial : 1234 ,
53+ version : VersionDavidben10 ,
54+ issuer : issuer ,
55+ serial : 1234 ,
5356 entry : & EntryConfig {
5457 Subject : SubjectConfig {
5558 CommonName : "example.com" ,
@@ -62,13 +65,14 @@ func TestMarshalTBSCertificate(t *testing.T) {
6265 ExtKeyUsage : []ExtKeyUsageConfig {ExtKeyUsageConfig (oidServerAuth )},
6366 },
6467 expectedTBSHex : "30820124a003020102020204d2300c060a2b0601040182da4b2f00301931173015060a2b0601040182da4b2f010c0733323437332e31301e170d3230303130313030303030305a170d3230313233313233353935395a3016311430120603550403130b6578616d706c652e636f6d3059301306072a8648ce3d020106082a8648ce3d03010703420004e62b69e2bf659f97be2f1e0d948a4cd5976bb7a91e0d46fbdda9a91e9ddcba5a01e7d697a80a18f9c3c4a31e56e27c8348db161a1cf51d7ef1942d4bcf7222c1a35d305b300e0603551d0f0101ff04040302078030160603551d250101ff040c300a06082b0601050507030130310603551d110101ff04273025820b6578616d706c652e636f6d8209612e6578616d706c65820b2a2e622e6578616d706c65" ,
65- expectedLogEntryHex : "00013081d9a003020102301931173015060a2b0601040182da4b2f010c0733323437332e31301e170d3230303130313030303030305a170d3230313233313233353935395a3016311430120603550403130b6578616d706c652e636f6d0420b3aea0f0a50538874f2b4c912f2676bd25ccc3dae700e20dcad42d3d5c074ca5a35d305b300e0603551d0f0101ff04040302078030160603551d250101ff040c300a06082b0601050507030130310603551d110101ff04273025820b6578616d706c652e636f6d8209612e6578616d706c65820b2a2e622e6578616d706c65 " ,
68+ expectedLogEntryHex : "0001a003020102301931173015060a2b0601040182da4b2f010c0733323437332e31301e170d3230303130313030303030305a170d3230313233313233353935395a3016311430120603550403130b6578616d706c652e636f6d0420b3aea0f0a50538874f2b4c912f2676bd25ccc3dae700e20dcad42d3d5c074ca5a35d305b300e0603551d0f0101ff04040302078030160603551d250101ff040c300a06082b0601050507030130310603551d110101ff04273025820b6578616d706c652e636f6d8209612e6578616d706c65820b2a2e622e6578616d706c65 " ,
6669 },
6770 // Generate a CA too, even though it's a little questionable. See
6871 // https://github.com/davidben/merkle-tree-certs/issues/146
6972 {
70- issuer : issuer ,
71- serial : 1234 ,
73+ version : VersionDavidben10 ,
74+ issuer : issuer ,
75+ serial : 1234 ,
7276 entry : & EntryConfig {
7377 Subject : SubjectConfig {
7478 CommonName : "A CA?" ,
@@ -81,7 +85,20 @@ func TestMarshalTBSCertificate(t *testing.T) {
8185 MaxPathLen : ptrOf (int64 (5 )),
8286 },
8387 expectedTBSHex : "3081e7a003020102020204d2300c060a2b0601040182da4b2f00301931173015060a2b0601040182da4b2f010c0733323437332e31301e170d3230303130313030303030305a170d3230313233313233353935395a3010310e300c06035504031305412043413f3059301306072a8648ce3d020106082a8648ce3d03010703420004e62b69e2bf659f97be2f1e0d948a4cd5976bb7a91e0d46fbdda9a91e9ddcba5a01e7d697a80a18f9c3c4a31e56e27c8348db161a1cf51d7ef1942d4bcf7222c1a3263024300e0603551d0f0101ff04040302020430120603551d130101ff040830060101ff020105" ,
84- expectedLogEntryHex : "000130819ca003020102301931173015060a2b0601040182da4b2f010c0733323437332e31301e170d3230303130313030303030305a170d3230313233313233353935395a3010310e300c06035504031305412043413f0420b3aea0f0a50538874f2b4c912f2676bd25ccc3dae700e20dcad42d3d5c074ca5a3263024300e0603551d0f0101ff04040302020430120603551d130101ff040830060101ff020105" ,
88+ expectedLogEntryHex : "0001a003020102301931173015060a2b0601040182da4b2f010c0733323437332e31301e170d3230303130313030303030305a170d3230313233313233353935395a3010310e300c06035504031305412043413f0420b3aea0f0a50538874f2b4c912f2676bd25ccc3dae700e20dcad42d3d5c074ca5a3263024300e0603551d0f0101ff04040302020430120603551d130101ff040830060101ff020105" ,
89+ },
90+ // draft-davidben-09 included a TBSCertificate wrapper TLV.
91+ {
92+ version : VersionDavidben09 ,
93+ issuer : issuer ,
94+ serial : 1234 ,
95+ entry : & EntryConfig {
96+ PublicKey : publicKey ,
97+ NotBefore : time .Unix (1577836800 , 0 ), // 2020-01-01 00:00:00
98+ NotAfter : time .Unix (1609459199 , 0 ), // 2020-12-31 23:59:59
99+ },
100+ expectedTBSHex : "3081afa003020102020204d2300c060a2b0601040182da4b2f00301931173015060a2b0601040182da4b2f010c0733323437332e31301e170d3230303130313030303030305a170d3230313233313233353935395a30003059301306072a8648ce3d020106082a8648ce3d03010703420004e62b69e2bf659f97be2f1e0d948a4cd5976bb7a91e0d46fbdda9a91e9ddcba5a01e7d697a80a18f9c3c4a31e56e27c8348db161a1cf51d7ef1942d4bcf7222c1" ,
101+ expectedLogEntryHex : "00013064a003020102301931173015060a2b0601040182da4b2f010c0733323437332e31301e170d3230303130313030303030305a170d3230313233313233353935395a30000420b3aea0f0a50538874f2b4c912f2676bd25ccc3dae700e20dcad42d3d5c074ca5" ,
85102 },
86103 }
87104 for i , tt := range tests {
@@ -94,7 +111,7 @@ func TestMarshalTBSCertificate(t *testing.T) {
94111 t .Errorf ("%d. AddTBSCertificate() gave %s, wanted %s" , i , got , tt .expectedTBSHex )
95112 }
96113
97- log , err := MarshalTBSCertificateLogEntry (tt .issuer , tt .entry )
114+ log , err := MarshalTBSCertificateLogEntry (tt .version , tt . issuer , tt .entry )
98115 if err != nil {
99116 t .Errorf ("%d. MarshalTBSCertificateLogEntry() failed: %s" , i , err )
100117 } else if got := hex .EncodeToString (log ); got != tt .expectedLogEntryHex {
0 commit comments