Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(401)

Delta Between Two Patch Sets: src/pkg/crypto/tls/handshake_server_test.go

Issue 5448093: crypto/tls: Make TLS Client Authentication work according to the spec (Closed)
Left Patch Set: diff -r 85e087089edf https://go.googlecode.com/hg/ Created 12 years, 4 months ago
Right Patch Set: diff -r 7ec969250bfc https://go.googlecode.com/hg/ Created 12 years, 2 months ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
Right: Side by side diff | Download
« no previous file with change/comment | « src/pkg/crypto/tls/handshake_server.go ('k') | src/pkg/crypto/tls/tls.go » ('j') | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
(no file at all)
1 // Copyright 2009 The Go Authors. All rights reserved. 1 // Copyright 2009 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style 2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file. 3 // license that can be found in the LICENSE file.
4 4
5 package tls 5 package tls
6 6
7 import ( 7 import (
8 "bytes" 8 "bytes"
9 "crypto/rsa" 9 "crypto/rsa"
10 "crypto/x509"
10 "encoding/hex" 11 "encoding/hex"
12 "encoding/pem"
11 "flag" 13 "flag"
12 "io" 14 "io"
15 "log"
13 "math/big" 16 "math/big"
14 "net" 17 "net"
15 "strconv" 18 "strconv"
16 "strings" 19 "strings"
17 "testing" 20 "testing"
18 "time" 21 "time"
19 ) 22 )
20 23
21 type zeroSource struct{} 24 type zeroSource struct{}
22 25
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 c, s := net.Pipe() 105 c, s := net.Pipe()
103 go c.Close() 106 go c.Close()
104 107
105 err := Server(s, testConfig).Handshake() 108 err := Server(s, testConfig).Handshake()
106 s.Close() 109 s.Close()
107 if err != io.EOF { 110 if err != io.EOF {
108 t.Errorf("Got error: %s; expected: %s", err, io.EOF) 111 t.Errorf("Got error: %s; expected: %s", err, io.EOF)
109 } 112 }
110 } 113 }
111 114
112 func testServerScript(t *testing.T, name string, serverScript [][]byte, config * Config) { 115 func testServerScript(t *testing.T, name string, serverScript [][]byte, config * Config, peers []*x509.Certificate) {
113 c, s := net.Pipe() 116 c, s := net.Pipe()
114 srv := Server(s, config) 117 srv := Server(s, config)
118 pchan := make(chan []*x509.Certificate, 1)
115 go func() { 119 go func() {
116 srv.Write([]byte("hello, world\n")) 120 srv.Write([]byte("hello, world\n"))
117 srv.Close() 121 srv.Close()
118 s.Close() 122 s.Close()
123 st := srv.ConnectionState()
124 pchan <- st.PeerCertificates
119 }() 125 }()
120 126
121 defer c.Close()
122 for i, b := range serverScript { 127 for i, b := range serverScript {
123 if i%2 == 0 { 128 if i%2 == 0 {
124 c.Write(b) 129 c.Write(b)
125 continue 130 continue
126 } 131 }
127 bb := make([]byte, len(b)) 132 bb := make([]byte, len(b))
128 n, err := io.ReadFull(c, bb) 133 n, err := io.ReadFull(c, bb)
129 if err != nil { 134 if err != nil {
130 t.Fatalf("%s #%d: %s\nRead %d, wanted %d, got %x, wanted %x\n", name, i, err, n, len(bb), bb[:n], b) 135 t.Fatalf("%s #%d: %s\nRead %d, wanted %d, got %x, wanted %x\n", name, i, err, n, len(bb), bb[:n], b)
131 } 136 }
132 if !bytes.Equal(b, bb) { 137 if !bytes.Equal(b, bb) {
133 t.Fatalf("%s #%d: mismatch on read: got:%x want:%x", nam e, i, bb, b) 138 t.Fatalf("%s #%d: mismatch on read: got:%x want:%x", nam e, i, bb, b)
134 } 139 }
135 } 140 }
141 c.Close()
142
143 if peers != nil {
144 gotpeers := <-pchan
145 if len(peers) == len(gotpeers) {
146 for i, _ := range peers {
147 if !peers[i].Equal(gotpeers[i]) {
148 t.Fatalf("%s: mismatch on peer cert %d", name, i)
149 }
150 }
151 } else {
152 t.Fatalf("%s: mismatch on peer list length: %d (wanted) != %d (got)", name, len(peers), len(gotpeers))
153 }
154 }
136 } 155 }
137 156
138 func TestHandshakeServerRC4(t *testing.T) { 157 func TestHandshakeServerRC4(t *testing.T) {
139 » testServerScript(t, "RC4", rc4ServerScript, testConfig) 158 » testServerScript(t, "RC4", rc4ServerScript, testConfig, nil)
140 } 159 }
141 160
142 func TestHandshakeServer3DES(t *testing.T) { 161 func TestHandshakeServer3DES(t *testing.T) {
143 des3Config := new(Config) 162 des3Config := new(Config)
144 *des3Config = *testConfig 163 *des3Config = *testConfig
145 des3Config.CipherSuites = []uint16{TLS_RSA_WITH_3DES_EDE_CBC_SHA} 164 des3Config.CipherSuites = []uint16{TLS_RSA_WITH_3DES_EDE_CBC_SHA}
146 » testServerScript(t, "3DES", des3ServerScript, des3Config) 165 » testServerScript(t, "3DES", des3ServerScript, des3Config, nil)
147 } 166 }
148 167
149 func TestHandshakeServerAES(t *testing.T) { 168 func TestHandshakeServerAES(t *testing.T) {
150 aesConfig := new(Config) 169 aesConfig := new(Config)
151 *aesConfig = *testConfig 170 *aesConfig = *testConfig
152 aesConfig.CipherSuites = []uint16{TLS_RSA_WITH_AES_128_CBC_SHA} 171 aesConfig.CipherSuites = []uint16{TLS_RSA_WITH_AES_128_CBC_SHA}
153 » testServerScript(t, "AES", aesServerScript, aesConfig) 172 » testServerScript(t, "AES", aesServerScript, aesConfig, nil)
154 } 173 }
155 174
156 func TestHandshakeServerSSLv3(t *testing.T) { 175 func TestHandshakeServerSSLv3(t *testing.T) {
157 » testServerScript(t, "SSLv3", sslv3ServerScript, testConfig) 176 » testServerScript(t, "SSLv3", sslv3ServerScript, testConfig, nil)
177 }
178
179 type clientauthTest struct {
180 » name string
181 » clientauth ClientAuthType
182 » peers []*x509.Certificate
183 » script [][]byte
184 }
185
186 func TestClientAuth(t *testing.T) {
187 » for _, cat := range clientauthTests {
188 » » t.Log("running", cat.name)
189 » » cfg := new(Config)
190 » » *cfg = *testConfig
191 » » cfg.ClientAuth = cat.clientauth
192 » » testServerScript(t, cat.name, cat.script, cfg, cat.peers)
193 » }
158 } 194 }
159 195
160 var serve = flag.Bool("serve", false, "run a TLS server on :10443") 196 var serve = flag.Bool("serve", false, "run a TLS server on :10443")
161 var testCipherSuites = flag.String("ciphersuites", 197 var testCipherSuites = flag.String("ciphersuites",
162 "0x"+strconv.FormatInt(int64(TLS_RSA_WITH_RC4_128_SHA), 16), 198 "0x"+strconv.FormatInt(int64(TLS_RSA_WITH_RC4_128_SHA), 16),
163 "cipher suites to accept in serving mode") 199 "cipher suites to accept in serving mode")
200 var testClientAuth = flag.Int("clientauth", 0, "value for tls.Config.ClientAuth" )
164 201
165 func TestRunServer(t *testing.T) { 202 func TestRunServer(t *testing.T) {
166 if !*serve { 203 if !*serve {
167 return 204 return
168 } 205 }
169 206
170 suites := strings.Split(*testCipherSuites, ",") 207 suites := strings.Split(*testCipherSuites, ",")
171 testConfig.CipherSuites = make([]uint16, len(suites)) 208 testConfig.CipherSuites = make([]uint16, len(suites))
172 for i := range suites { 209 for i := range suites {
173 suite, err := strconv.ParseUint(suites[i], 0, 64) 210 suite, err := strconv.ParseUint(suites[i], 0, 64)
174 if err != nil { 211 if err != nil {
175 panic(err) 212 panic(err)
176 } 213 }
177 testConfig.CipherSuites[i] = uint16(suite) 214 testConfig.CipherSuites[i] = uint16(suite)
178 } 215 }
179 216
217 testConfig.ClientAuth = ClientAuthType(*testClientAuth)
218
180 l, err := Listen("tcp", ":10443", testConfig) 219 l, err := Listen("tcp", ":10443", testConfig)
181 if err != nil { 220 if err != nil {
182 t.Fatal(err) 221 t.Fatal(err)
183 } 222 }
184 223
185 for { 224 for {
186 c, err := l.Accept() 225 c, err := l.Accept()
187 if err != nil { 226 if err != nil {
188 break 227 break
189 } 228 }
229
190 _, err = c.Write([]byte("hello, world\n")) 230 _, err = c.Write([]byte("hello, world\n"))
191 if err != nil { 231 if err != nil {
192 t.Errorf("error from TLS: %s", err) 232 t.Errorf("error from TLS: %s", err)
193 » » » break 233 » » » continue
194 } 234 }
235
236 st := c.(*Conn).ConnectionState()
237 if len(st.PeerCertificates) > 0 {
238 log.Print("Handling request from client ", st.PeerCertif icates[0].Subject.CommonName)
239 } else {
240 log.Print("Handling request from anon client")
241 }
242
195 c.Close() 243 c.Close()
196 } 244 }
197 } 245 }
198 246
199 func bigFromString(s string) *big.Int { 247 func bigFromString(s string) *big.Int {
200 ret := new(big.Int) 248 ret := new(big.Int)
201 ret.SetString(s, 10) 249 ret.SetString(s, 10)
202 return ret 250 return ret
203 } 251 }
204 252
205 func fromHex(s string) []byte { 253 func fromHex(s string) []byte {
206 b, _ := hex.DecodeString(s) 254 b, _ := hex.DecodeString(s)
207 return b 255 return b
208 } 256 }
209 257
210 var testCertificate = fromHex("308202b030820219a00302010202090085b0bba48a7fb8ca3 00d06092a864886f70d01010505003045310b3009060355040613024155311330110603550408130 a536f6d652d53746174653121301f060355040a1318496e7465726e6574205769646769747320507 479204c7464301e170d3130303432343039303933385a170d3131303432343039303933385a30453 10b3009060355040613024155311330110603550408130a536f6d652d53746174653121301f06035 5040a1318496e7465726e6574205769646769747320507479204c746430819f300d06092a864886f 70d010101050003818d0030818902818100bb79d6f517b5e5bf4610d0dc69bee62b07435ad0032d8 a7a4385b71452e7a5654c2c78b8238cb5b482e5de1f953b7e62a52ca533d6fe125c7a56fcf506bff a587b263fb5cd04d3d0c921964ac7f4549f5abfef427100fe1899077f7e887d7df10439c4a22edb5 1c97ce3c04c3b326601cfafb11db8719a1ddbdb896baeda2d790203010001a381a73081a4301d060 3551d0e04160414b1ade2855acfcb28db69ce2369ded3268e18883930750603551d23046e306c801 4b1ade2855acfcb28db69ce2369ded3268e188839a149a4473045310b30090603550406130241553 11330110603550408130a536f6d652d53746174653121301f060355040a1318496e7465726e65742 05769646769747320507479204c746482090085b0bba48a7fb8ca300c0603551d13040530030101f f300d06092a864886f70d010105050003818100086c4524c76bb159ab0c52ccf2b014d7879d7a647 5b55a9566e4c52b8eae12661feb4f38b36e60d392fdf74108b52513b1187a24fb301dbaed98b917e ce7d73159db95d31d78ea50565cd5825a2d5a5f33c4b6d8c97590968c0f5298b5cd981f89205ff2a 01ca31b9694dda9fd57e970e8266d71999b266e3850296c90a7bdd9") 258 var testCertificate = fromHex("308202b030820219a00302010202090085b0bba48a7fb8ca3 00d06092a864886f70d01010505003045310b3009060355040613024155311330110603550408130 a536f6d652d53746174653121301f060355040a1318496e7465726e6574205769646769747320507 479204c7464301e170d3130303432343039303933385a170d3131303432343039303933385a30453 10b3009060355040613024155311330110603550408130a536f6d652d53746174653121301f06035 5040a1318496e7465726e6574205769646769747320507479204c746430819f300d06092a864886f 70d010101050003818d0030818902818100bb79d6f517b5e5bf4610d0dc69bee62b07435ad0032d8 a7a4385b71452e7a5654c2c78b8238cb5b482e5de1f953b7e62a52ca533d6fe125c7a56fcf506bff a587b263fb5cd04d3d0c921964ac7f4549f5abfef427100fe1899077f7e887d7df10439c4a22edb5 1c97ce3c04c3b326601cfafb11db8719a1ddbdb896baeda2d790203010001a381a73081a4301d060 3551d0e04160414b1ade2855acfcb28db69ce2369ded3268e18883930750603551d23046e306c801 4b1ade2855acfcb28db69ce2369ded3268e188839a149a4473045310b30090603550406130241553 11330110603550408130a536f6d652d53746174653121301f060355040a1318496e7465726e65742 05769646769747320507479204c746482090085b0bba48a7fb8ca300c0603551d13040530030101f f300d06092a864886f70d010105050003818100086c4524c76bb159ab0c52ccf2b014d7879d7a647 5b55a9566e4c52b8eae12661feb4f38b36e60d392fdf74108b52513b1187a24fb301dbaed98b917e ce7d73159db95d31d78ea50565cd5825a2d5a5f33c4b6d8c97590968c0f5298b5cd981f89205ff2a 01ca31b9694dda9fd57e970e8266d71999b266e3850296c90a7bdd9")
211 259
212 var testPrivateKey = &rsa.PrivateKey{ 260 var testPrivateKey = &rsa.PrivateKey{
213 PublicKey: rsa.PublicKey{ 261 PublicKey: rsa.PublicKey{
214 N: bigFromString("1316500795037760010337938778854990013346642493 54723305978524647182322416328664556247316495448366990052837680518067798333412266 67381337089570211894439808159878982883744755260307784800102061164054722168707214 25372024281027908184519013955968825880634278542253304367406477152029719731451511 61964464812406232198521"), 262 N: bigFromString("1316500795037760010337938778854990013346642493 54723305978524647182322416328664556247316495448366990052837680518067798333412266 67381337089570211894439808159878982883744755260307784800102061164054722168707214 25372024281027908184519013955968825880634278542253304367406477152029719731451511 61964464812406232198521"),
215 E: 65537, 263 E: 65537,
216 }, 264 },
217 D: bigFromString("293544503378042739690072773782870272747218926075433979 31919078829901848876371746653677097639302788129485893852488285045793268732234230 87567168262408241399617743158673417166325865746223732030061085024418631688005524 30996405445183180935440572131903208370949581649739591230583374750525108339164910 60913053867729"), 265 D: bigFromString("293544503378042739690072773782870272747218926075433979 31919078829901848876371746653677097639302788129485893852488285045793268732234230 87567168262408241399617743158673417166325865746223732030061085024418631688005524 30996405445183180935440572131903208370949581649739591230583374750525108339164910 60913053867729"),
218 Primes: []*big.Int{ 266 Primes: []*big.Int{
219 bigFromString("1196927778231180016656204770837938072013696198771 31783806704226714267596501271506884261778290774947552007942970553161631557558358 13760102405344560929062149"), 267 bigFromString("1196927778231180016656204770837938072013696198771 31783806704226714267596501271506884261778290774947552007942970553161631557558358 13760102405344560929062149"),
220 bigFromString("1099899942988444139189918261641819249290507305368 46570759749352184616865238701255218227565797923152155430922555160938407288907838 87287417039645833477273829"), 268 bigFromString("1099899942988444139189918261641819249290507305368 46570759749352184616865238701255218227565797923152155430922555160938407288907838 87287417039645833477273829"),
221 }, 269 },
270 }
271
272 func loadPEMCert(in string) *x509.Certificate {
273 block, _ := pem.Decode([]byte(in))
274 if block.Type == "CERTIFICATE" && len(block.Headers) == 0 {
275 cert, err := x509.ParseCertificate(block.Bytes)
276 if err == nil {
277 return cert
278 }
279 panic("error parsing cert")
280 }
281 panic("error parsing PEM")
222 } 282 }
223 283
224 // Script of interaction with gnutls implementation. 284 // Script of interaction with gnutls implementation.
225 // The values for this test are obtained by building and running in server mode: 285 // The values for this test are obtained by building and running in server mode:
226 // % gotest -test.run "TestRunServer" -serve 286 // % gotest -test.run "TestRunServer" -serve
227 // and then: 287 // and then:
228 // % gnutls-cli --insecure --debug 100 -p 10443 localhost > /tmp/log 2>&1 288 // % gnutls-cli --insecure --debug 100 -p 10443 localhost > /tmp/log 2>&1
229 // % python parse-gnutls-cli-debug-log.py < /tmp/log 289 // % python parse-gnutls-cli-debug-log.py < /tmp/log
230 var rc4ServerScript = [][]byte{ 290 var rc4ServerScript = [][]byte{
231 { 291 {
232 » » 0x16, 0x03, 0x02, 0x00, 0x7f, 0x01, 0x00, 0x00, 292 » » 0x16, 0x03, 0x02, 0x00, 0x7a, 0x01, 0x00, 0x00,
233 » » 0x7b, 0x03, 0x02, 0x4d, 0x08, 0x1f, 0x5a, 0x7a, 293 » » 0x76, 0x03, 0x02, 0x4e, 0xdd, 0xe6, 0xa5, 0xf7,
234 » » 0x0a, 0x92, 0x2f, 0xf0, 0x73, 0x16, 0x3a, 0x88, 294 » » 0x00, 0x36, 0xf7, 0x83, 0xec, 0x93, 0x7c, 0xd2,
235 » » 0x14, 0x85, 0x4c, 0x98, 0x15, 0x7b, 0x65, 0xe0, 295 » » 0x4d, 0xe7, 0x7b, 0xf5, 0x4c, 0xf7, 0xe3, 0x86,
236 » » 0x78, 0xd0, 0xed, 0xd0, 0xf3, 0x65, 0x20, 0xeb, 296 » » 0xe8, 0xec, 0x3b, 0xbd, 0x2c, 0x9a, 0x3f, 0x57,
237 » » 0x80, 0xd1, 0x0b, 0x00, 0x00, 0x34, 0x00, 0x33, 297 » » 0xf0, 0xa4, 0xd4, 0x00, 0x00, 0x34, 0x00, 0x33,
238 0x00, 0x45, 0x00, 0x39, 0x00, 0x88, 0x00, 0x16, 298 0x00, 0x45, 0x00, 0x39, 0x00, 0x88, 0x00, 0x16,
239 0x00, 0x32, 0x00, 0x44, 0x00, 0x38, 0x00, 0x87, 299 0x00, 0x32, 0x00, 0x44, 0x00, 0x38, 0x00, 0x87,
240 0x00, 0x13, 0x00, 0x66, 0x00, 0x90, 0x00, 0x91, 300 0x00, 0x13, 0x00, 0x66, 0x00, 0x90, 0x00, 0x91,
241 0x00, 0x8f, 0x00, 0x8e, 0x00, 0x2f, 0x00, 0x41, 301 0x00, 0x8f, 0x00, 0x8e, 0x00, 0x2f, 0x00, 0x41,
242 0x00, 0x35, 0x00, 0x84, 0x00, 0x0a, 0x00, 0x05, 302 0x00, 0x35, 0x00, 0x84, 0x00, 0x0a, 0x00, 0x05,
243 0x00, 0x04, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x8b, 303 0x00, 0x04, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x8b,
244 » » 0x00, 0x8a, 0x01, 0x00, 0x00, 0x1e, 0x00, 0x09, 304 » » 0x00, 0x8a, 0x01, 0x00, 0x00, 0x19, 0x00, 0x09,
245 0x00, 0x03, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 305 0x00, 0x03, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00,
246 0x0e, 0x00, 0x0c, 0x00, 0x00, 0x09, 0x6c, 0x6f, 306 0x0e, 0x00, 0x0c, 0x00, 0x00, 0x09, 0x6c, 0x6f,
247 » » 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0xff, 307 » » 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74,
248 » » 0x01, 0x00, 0x01, 0x00,
249 }, 308 },
250 309
251 { 310 {
252 0x16, 0x03, 0x01, 0x00, 0x2a, 0x02, 0x00, 0x00, 311 0x16, 0x03, 0x01, 0x00, 0x2a, 0x02, 0x00, 0x00,
253 0x26, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 312 0x26, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
254 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 313 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
255 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 314 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
256 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 315 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
257 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x16, 316 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x16,
258 0x03, 0x01, 0x02, 0xbe, 0x0b, 0x00, 0x02, 0xba, 317 0x03, 0x01, 0x02, 0xbe, 0x0b, 0x00, 0x02, 0xba,
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 0x98, 0x1f, 0x89, 0x20, 0x5f, 0xf2, 0xa0, 0x1c, 401 0x98, 0x1f, 0x89, 0x20, 0x5f, 0xf2, 0xa0, 0x1c,
343 0xa3, 0x1b, 0x96, 0x94, 0xdd, 0xa9, 0xfd, 0x57, 402 0xa3, 0x1b, 0x96, 0x94, 0xdd, 0xa9, 0xfd, 0x57,
344 0xe9, 0x70, 0xe8, 0x26, 0x6d, 0x71, 0x99, 0x9b, 403 0xe9, 0x70, 0xe8, 0x26, 0x6d, 0x71, 0x99, 0x9b,
345 0x26, 0x6e, 0x38, 0x50, 0x29, 0x6c, 0x90, 0xa7, 404 0x26, 0x6e, 0x38, 0x50, 0x29, 0x6c, 0x90, 0xa7,
346 0xbd, 0xd9, 0x16, 0x03, 0x01, 0x00, 0x04, 0x0e, 405 0xbd, 0xd9, 0x16, 0x03, 0x01, 0x00, 0x04, 0x0e,
347 0x00, 0x00, 0x00, 406 0x00, 0x00, 0x00,
348 }, 407 },
349 408
350 { 409 {
351 0x16, 0x03, 0x01, 0x00, 0x86, 0x10, 0x00, 0x00, 410 0x16, 0x03, 0x01, 0x00, 0x86, 0x10, 0x00, 0x00,
352 » » 0x82, 0x00, 0x80, 0x3c, 0x13, 0xd7, 0x12, 0xc1, 411 » » 0x82, 0x00, 0x80, 0x39, 0xe2, 0x0f, 0x49, 0xa0,
353 » » 0x6a, 0xf0, 0x3f, 0x8c, 0xa1, 0x35, 0x5d, 0xc5, 412 » » 0xe6, 0xe4, 0x3b, 0x0c, 0x5f, 0xce, 0x39, 0x97,
354 » » 0x89, 0x1e, 0x9e, 0xcd, 0x32, 0xc7, 0x9e, 0xe6, 413 » » 0x6c, 0xb6, 0x41, 0xd9, 0xe1, 0x52, 0x8f, 0x43,
355 » » 0xae, 0xd5, 0xf1, 0xbf, 0x70, 0xd7, 0xa9, 0xef, 414 » » 0xb3, 0xc6, 0x4f, 0x9a, 0xe2, 0x1e, 0xb9, 0x3b,
356 » » 0x2c, 0x4c, 0xf4, 0x22, 0xbc, 0x17, 0x17, 0xaa, 415 » » 0xe3, 0x72, 0x17, 0x68, 0xb2, 0x0d, 0x7b, 0x71,
357 » » 0x05, 0xf3, 0x9f, 0x80, 0xf2, 0xe9, 0x82, 0x2f, 416 » » 0x33, 0x96, 0x5c, 0xf9, 0xfe, 0x18, 0x8f, 0x2f,
358 » » 0x2a, 0x15, 0x54, 0x0d, 0x16, 0x0e, 0x77, 0x4c, 417 » » 0x2b, 0x82, 0xec, 0x03, 0xf2, 0x16, 0xa8, 0xf8,
359 » » 0x28, 0x3c, 0x03, 0x2d, 0x2d, 0xd7, 0xc8, 0x64, 418 » » 0x39, 0xf9, 0xbb, 0x5a, 0xd3, 0x0c, 0xc1, 0x2a,
360 » » 0xd9, 0x59, 0x4b, 0x1c, 0xf4, 0xde, 0xff, 0x2f, 419 » » 0x52, 0xa1, 0x90, 0x20, 0x6b, 0x24, 0xc9, 0x55,
361 » » 0xbc, 0x94, 0xaf, 0x18, 0x26, 0x37, 0xce, 0x4f, 420 » » 0xee, 0x05, 0xd8, 0xb3, 0x43, 0x58, 0xf6, 0x7f,
362 » » 0x84, 0x74, 0x2e, 0x45, 0x66, 0x7c, 0x0c, 0x54, 421 » » 0x68, 0x2d, 0xb3, 0xd1, 0x1b, 0x30, 0xaa, 0xdf,
363 » » 0x46, 0x36, 0x5f, 0x65, 0x21, 0x7b, 0x83, 0x8c, 422 » » 0xfc, 0x85, 0xf1, 0xab, 0x14, 0x51, 0x91, 0x78,
364 » » 0x6d, 0x76, 0xcd, 0x0d, 0x9f, 0xda, 0x1c, 0xa4, 423 » » 0x29, 0x35, 0x65, 0xe0, 0x9c, 0xf6, 0xb7, 0x35,
365 » » 0x6e, 0xfe, 0xb1, 0xf7, 0x09, 0x0d, 0xfb, 0x74, 424 » » 0x33, 0xdb, 0x28, 0x93, 0x4d, 0x86, 0xbc, 0xfe,
366 » » 0x66, 0x34, 0x99, 0x89, 0x7f, 0x5f, 0x77, 0x87, 425 » » 0xaa, 0xd1, 0xc0, 0x2e, 0x4d, 0xec, 0xa2, 0x98,
367 » » 0x4a, 0x66, 0x4b, 0xa9, 0x59, 0x57, 0xe3, 0x56, 426 » » 0xca, 0x08, 0xb2, 0x91, 0x14, 0xde, 0x97, 0x3a,
368 » » 0x0d, 0xdd, 0xd8, 0x14, 0x03, 0x01, 0x00, 0x01, 427 » » 0xc4, 0x6b, 0x49, 0x14, 0x03, 0x01, 0x00, 0x01,
369 » » 0x01, 0x16, 0x03, 0x01, 0x00, 0x24, 0xc0, 0x4e, 428 » » 0x01, 0x16, 0x03, 0x01, 0x00, 0x24, 0x7a, 0xcb,
370 » » 0xd3, 0x0f, 0xb5, 0xc0, 0x57, 0xa6, 0x18, 0x80, 429 » » 0x3b, 0x0e, 0xbb, 0x7a, 0x56, 0x39, 0xaf, 0x83,
371 » » 0x80, 0x6b, 0x49, 0xfe, 0xbd, 0x3a, 0x7a, 0x2c, 430 » » 0xae, 0xfd, 0x25, 0xfd, 0x64, 0xb4, 0x0c, 0x0c,
372 » » 0xef, 0x70, 0xb5, 0x1c, 0xd2, 0xdf, 0x5f, 0x78, 431 » » 0x17, 0x46, 0x54, 0x2c, 0x6a, 0x07, 0x83, 0xc6,
373 » » 0x5a, 0xd8, 0x4f, 0xa0, 0x95, 0xb4, 0xb3, 0xb5, 432 » » 0x46, 0x08, 0x0b, 0xcd, 0x15, 0x53, 0xef, 0x40,
374 » » 0xaa, 0x3b, 433 » » 0x4e, 0x56,
375 }, 434 },
376 435
377 { 436 {
378 0x14, 0x03, 0x01, 0x00, 0x01, 0x01, 0x16, 0x03, 437 0x14, 0x03, 0x01, 0x00, 0x01, 0x01, 0x16, 0x03,
379 » » 0x01, 0x00, 0x24, 0x9d, 0xc9, 0xda, 0xdf, 0xeb, 438 » » 0x01, 0x00, 0x24, 0xd3, 0x72, 0xeb, 0x29, 0xb9,
380 » » 0xc8, 0xdb, 0xf8, 0x94, 0xa5, 0xef, 0xd5, 0xfc, 439 » » 0x15, 0x29, 0xb5, 0xe5, 0xb7, 0xef, 0x5c, 0xb2,
381 » » 0x89, 0x01, 0x64, 0x30, 0x77, 0x5a, 0x18, 0x4b, 440 » » 0x9d, 0xf6, 0xc8, 0x47, 0xd6, 0xa0, 0x84, 0xf0,
382 » » 0x16, 0x79, 0x9c, 0xf6, 0xf5, 0x09, 0x22, 0x12, 441 » » 0x8c, 0xcb, 0xe6, 0xbe, 0xbc, 0xfb, 0x38, 0x90,
383 » » 0x4c, 0x3e, 0xa8, 0x8e, 0x91, 0xa5, 0x24, 442 » » 0x89, 0x60, 0xa2, 0xe8, 0xaa, 0xb3, 0x12, 0x17,
443 » » 0x03, 0x01, 0x00, 0x21, 0x67, 0x4a, 0x3d, 0x31,
444 » » 0x6c, 0x5a, 0x1c, 0xf9, 0x6e, 0xf1, 0xd8, 0x12,
445 » » 0x0e, 0xb9, 0xfd, 0xfc, 0x66, 0x91, 0xd1, 0x1d,
446 » » 0x6e, 0xe4, 0x55, 0xdd, 0x11, 0xb9, 0xb8, 0xa2,
447 » » 0x65, 0xa1, 0x95, 0x64, 0x1c, 0x15, 0x03, 0x01,
448 » » 0x00, 0x16, 0x9b, 0xa0, 0x24, 0xe3, 0xcb, 0xae,
449 » » 0xad, 0x51, 0xb3, 0x63, 0x59, 0x78, 0x49, 0x24,
450 » » 0x06, 0x6e, 0xee, 0x7a, 0xd7, 0x74, 0x53, 0x04,
384 }, 451 },
385 } 452 }
386 453
387 var des3ServerScript = [][]byte{ 454 var des3ServerScript = [][]byte{
388 { 455 {
389 0x16, 0x03, 0x02, 0x00, 0x7a, 0x01, 0x00, 0x00, 456 0x16, 0x03, 0x02, 0x00, 0x7a, 0x01, 0x00, 0x00,
390 0x76, 0x03, 0x02, 0x4e, 0x84, 0xf4, 0x3c, 0xe4, 457 0x76, 0x03, 0x02, 0x4e, 0x84, 0xf4, 0x3c, 0xe4,
391 0xb8, 0xc7, 0xa0, 0x30, 0x55, 0x2a, 0xbc, 0xb7, 458 0xb8, 0xc7, 0xa0, 0x30, 0x55, 0x2a, 0xbc, 0xb7,
392 0x04, 0x6b, 0x6f, 0x87, 0x93, 0x96, 0xbd, 0x1a, 459 0x04, 0x6b, 0x6f, 0x87, 0x93, 0x96, 0xbd, 0x1a,
393 0x7a, 0x1e, 0xce, 0xd2, 0x0d, 0xf3, 0x01, 0x03, 460 0x7a, 0x1e, 0xce, 0xd2, 0x0d, 0xf3, 0x01, 0x03,
(...skipping 477 matching lines...) Expand 10 before | Expand all | Expand 10 after
871 0x03, 0x00, 0x00, 0x21, 0xee, 0x44, 0xf3, 0xa6, 938 0x03, 0x00, 0x00, 0x21, 0xee, 0x44, 0xf3, 0xa6,
872 0x88, 0x9d, 0x78, 0x44, 0xde, 0xdf, 0xeb, 0xc5, 939 0x88, 0x9d, 0x78, 0x44, 0xde, 0xdf, 0xeb, 0xc5,
873 0xad, 0xc4, 0xcc, 0x56, 0x5c, 0x54, 0x96, 0x52, 940 0xad, 0xc4, 0xcc, 0x56, 0x5c, 0x54, 0x96, 0x52,
874 0x3f, 0xd9, 0x40, 0x6e, 0x79, 0xd8, 0x58, 0x78, 941 0x3f, 0xd9, 0x40, 0x6e, 0x79, 0xd8, 0x58, 0x78,
875 0x4f, 0x5a, 0xe9, 0x06, 0xef, 0x15, 0x03, 0x00, 942 0x4f, 0x5a, 0xe9, 0x06, 0xef, 0x15, 0x03, 0x00,
876 0x00, 0x16, 0xd3, 0xc2, 0x52, 0x99, 0x2a, 0x84, 943 0x00, 0x16, 0xd3, 0xc2, 0x52, 0x99, 0x2a, 0x84,
877 0xc4, 0x52, 0x5f, 0x3b, 0x19, 0xe7, 0xfc, 0x65, 944 0xc4, 0x52, 0x5f, 0x3b, 0x19, 0xe7, 0xfc, 0x65,
878 0xaf, 0xd3, 0xb7, 0xa3, 0xcc, 0x4a, 0x1d, 0x2e, 945 0xaf, 0xd3, 0xb7, 0xa3, 0xcc, 0x4a, 0x1d, 0x2e,
879 }, 946 },
880 } 947 }
948
949 var clientauthTests = []clientauthTest{
950 // Server doesn't asks for cert
951 // gotest -test.run "TestRunServer" -serve -clientauth 0
952 // gnutls-cli --insecure --debug 100 -p 10443 localhost 2>&1 |
953 // python parse-gnutls-cli-debug-log.py
954 {"NoClientCert", NoClientCert, nil,
955 [][]byte{{
956 0x16, 0x03, 0x02, 0x00, 0x7a, 0x01, 0x00, 0x00,
957 0x76, 0x03, 0x02, 0x4e, 0xe0, 0x92, 0x5d, 0xcd,
958 0xfe, 0x0c, 0x69, 0xd4, 0x7d, 0x8e, 0xa6, 0x88,
959 0xde, 0x72, 0x04, 0x29, 0x6a, 0x4a, 0x16, 0x23,
960 0xd7, 0x8f, 0xbc, 0xfa, 0x80, 0x73, 0x2e, 0x12,
961 0xb7, 0x0b, 0x39, 0x00, 0x00, 0x34, 0x00, 0x33,
962 0x00, 0x45, 0x00, 0x39, 0x00, 0x88, 0x00, 0x16,
963 0x00, 0x32, 0x00, 0x44, 0x00, 0x38, 0x00, 0x87,
964 0x00, 0x13, 0x00, 0x66, 0x00, 0x90, 0x00, 0x91,
965 0x00, 0x8f, 0x00, 0x8e, 0x00, 0x2f, 0x00, 0x41,
966 0x00, 0x35, 0x00, 0x84, 0x00, 0x0a, 0x00, 0x05,
967 0x00, 0x04, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x8b,
968 0x00, 0x8a, 0x01, 0x00, 0x00, 0x19, 0x00, 0x09,
969 0x00, 0x03, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00,
970 0x0e, 0x00, 0x0c, 0x00, 0x00, 0x09, 0x6c, 0x6f,
971 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74,
972 },
973
974 {
975 0x16, 0x03, 0x01, 0x00, 0x2a, 0x02, 0x00, 0x00,
976 0x26, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
977 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
978 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
979 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
980 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x16,
981 0x03, 0x01, 0x02, 0xbe, 0x0b, 0x00, 0x02, 0xba,
982 0x00, 0x02, 0xb7, 0x00, 0x02, 0xb4, 0x30, 0x82,
983 0x02, 0xb0, 0x30, 0x82, 0x02, 0x19, 0xa0, 0x03,
984 0x02, 0x01, 0x02, 0x02, 0x09, 0x00, 0x85, 0xb0,
985 0xbb, 0xa4, 0x8a, 0x7f, 0xb8, 0xca, 0x30, 0x0d,
986 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
987 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x45, 0x31,
988 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
989 0x13, 0x02, 0x41, 0x55, 0x31, 0x13, 0x30, 0x11,
990 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x53,
991 0x6f, 0x6d, 0x65, 0x2d, 0x53, 0x74, 0x61, 0x74,
992 0x65, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55,
993 0x04, 0x0a, 0x13, 0x18, 0x49, 0x6e, 0x74, 0x65,
994 0x72, 0x6e, 0x65, 0x74, 0x20, 0x57, 0x69, 0x64,
995 0x67, 0x69, 0x74, 0x73, 0x20, 0x50, 0x74, 0x79,
996 0x20, 0x4c, 0x74, 0x64, 0x30, 0x1e, 0x17, 0x0d,
997 0x31, 0x30, 0x30, 0x34, 0x32, 0x34, 0x30, 0x39,
998 0x30, 0x39, 0x33, 0x38, 0x5a, 0x17, 0x0d, 0x31,
999 0x31, 0x30, 0x34, 0x32, 0x34, 0x30, 0x39, 0x30,
1000 0x39, 0x33, 0x38, 0x5a, 0x30, 0x45, 0x31, 0x0b,
1001 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
1002 0x02, 0x41, 0x55, 0x31, 0x13, 0x30, 0x11, 0x06,
1003 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x53, 0x6f,
1004 0x6d, 0x65, 0x2d, 0x53, 0x74, 0x61, 0x74, 0x65,
1005 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04,
1006 0x0a, 0x13, 0x18, 0x49, 0x6e, 0x74, 0x65, 0x72,
1007 0x6e, 0x65, 0x74, 0x20, 0x57, 0x69, 0x64, 0x67,
1008 0x69, 0x74, 0x73, 0x20, 0x50, 0x74, 0x79, 0x20,
1009 0x4c, 0x74, 0x64, 0x30, 0x81, 0x9f, 0x30, 0x0d,
1010 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
1011 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8d,
1012 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00,
1013 0xbb, 0x79, 0xd6, 0xf5, 0x17, 0xb5, 0xe5, 0xbf,
1014 0x46, 0x10, 0xd0, 0xdc, 0x69, 0xbe, 0xe6, 0x2b,
1015 0x07, 0x43, 0x5a, 0xd0, 0x03, 0x2d, 0x8a, 0x7a,
1016 0x43, 0x85, 0xb7, 0x14, 0x52, 0xe7, 0xa5, 0x65,
1017 0x4c, 0x2c, 0x78, 0xb8, 0x23, 0x8c, 0xb5, 0xb4,
1018 0x82, 0xe5, 0xde, 0x1f, 0x95, 0x3b, 0x7e, 0x62,
1019 0xa5, 0x2c, 0xa5, 0x33, 0xd6, 0xfe, 0x12, 0x5c,
1020 0x7a, 0x56, 0xfc, 0xf5, 0x06, 0xbf, 0xfa, 0x58,
1021 0x7b, 0x26, 0x3f, 0xb5, 0xcd, 0x04, 0xd3, 0xd0,
1022 0xc9, 0x21, 0x96, 0x4a, 0xc7, 0xf4, 0x54, 0x9f,
1023 0x5a, 0xbf, 0xef, 0x42, 0x71, 0x00, 0xfe, 0x18,
1024 0x99, 0x07, 0x7f, 0x7e, 0x88, 0x7d, 0x7d, 0xf1,
1025 0x04, 0x39, 0xc4, 0xa2, 0x2e, 0xdb, 0x51, 0xc9,
1026 0x7c, 0xe3, 0xc0, 0x4c, 0x3b, 0x32, 0x66, 0x01,
1027 0xcf, 0xaf, 0xb1, 0x1d, 0xb8, 0x71, 0x9a, 0x1d,
1028 0xdb, 0xdb, 0x89, 0x6b, 0xae, 0xda, 0x2d, 0x79,
1029 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x81, 0xa7,
1030 0x30, 0x81, 0xa4, 0x30, 0x1d, 0x06, 0x03, 0x55,
1031 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xb1, 0xad,
1032 0xe2, 0x85, 0x5a, 0xcf, 0xcb, 0x28, 0xdb, 0x69,
1033 0xce, 0x23, 0x69, 0xde, 0xd3, 0x26, 0x8e, 0x18,
1034 0x88, 0x39, 0x30, 0x75, 0x06, 0x03, 0x55, 0x1d,
1035 0x23, 0x04, 0x6e, 0x30, 0x6c, 0x80, 0x14, 0xb1,
1036 0xad, 0xe2, 0x85, 0x5a, 0xcf, 0xcb, 0x28, 0xdb,
1037 0x69, 0xce, 0x23, 0x69, 0xde, 0xd3, 0x26, 0x8e,
1038 0x18, 0x88, 0x39, 0xa1, 0x49, 0xa4, 0x47, 0x30,
1039 0x45, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55,
1040 0x04, 0x06, 0x13, 0x02, 0x41, 0x55, 0x31, 0x13,
1041 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13,
1042 0x0a, 0x53, 0x6f, 0x6d, 0x65, 0x2d, 0x53, 0x74,
1043 0x61, 0x74, 0x65, 0x31, 0x21, 0x30, 0x1f, 0x06,
1044 0x03, 0x55, 0x04, 0x0a, 0x13, 0x18, 0x49, 0x6e,
1045 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x20, 0x57,
1046 0x69, 0x64, 0x67, 0x69, 0x74, 0x73, 0x20, 0x50,
1047 0x74, 0x79, 0x20, 0x4c, 0x74, 0x64, 0x82, 0x09,
1048 0x00, 0x85, 0xb0, 0xbb, 0xa4, 0x8a, 0x7f, 0xb8,
1049 0xca, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x1d, 0x13,
1050 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30,
1051 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
1052 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81,
1053 0x81, 0x00, 0x08, 0x6c, 0x45, 0x24, 0xc7, 0x6b,
1054 0xb1, 0x59, 0xab, 0x0c, 0x52, 0xcc, 0xf2, 0xb0,
1055 0x14, 0xd7, 0x87, 0x9d, 0x7a, 0x64, 0x75, 0xb5,
1056 0x5a, 0x95, 0x66, 0xe4, 0xc5, 0x2b, 0x8e, 0xae,
1057 0x12, 0x66, 0x1f, 0xeb, 0x4f, 0x38, 0xb3, 0x6e,
1058 0x60, 0xd3, 0x92, 0xfd, 0xf7, 0x41, 0x08, 0xb5,
1059 0x25, 0x13, 0xb1, 0x18, 0x7a, 0x24, 0xfb, 0x30,
1060 0x1d, 0xba, 0xed, 0x98, 0xb9, 0x17, 0xec, 0xe7,
1061 0xd7, 0x31, 0x59, 0xdb, 0x95, 0xd3, 0x1d, 0x78,
1062 0xea, 0x50, 0x56, 0x5c, 0xd5, 0x82, 0x5a, 0x2d,
1063 0x5a, 0x5f, 0x33, 0xc4, 0xb6, 0xd8, 0xc9, 0x75,
1064 0x90, 0x96, 0x8c, 0x0f, 0x52, 0x98, 0xb5, 0xcd,
1065 0x98, 0x1f, 0x89, 0x20, 0x5f, 0xf2, 0xa0, 0x1c,
1066 0xa3, 0x1b, 0x96, 0x94, 0xdd, 0xa9, 0xfd, 0x57,
1067 0xe9, 0x70, 0xe8, 0x26, 0x6d, 0x71, 0x99, 0x9b,
1068 0x26, 0x6e, 0x38, 0x50, 0x29, 0x6c, 0x90, 0xa7,
1069 0xbd, 0xd9, 0x16, 0x03, 0x01, 0x00, 0x04, 0x0e,
1070 0x00, 0x00, 0x00,
1071 },
1072
1073 {
1074 0x16, 0x03, 0x01, 0x00, 0x86, 0x10, 0x00, 0x00,
1075 0x82, 0x00, 0x80, 0x10, 0xe1, 0x00, 0x3d, 0x0a,
1076 0x6b, 0x02, 0x7f, 0x97, 0xde, 0xfb, 0x65, 0x46,
1077 0x1a, 0x50, 0x4e, 0x34, 0x9a, 0xae, 0x14, 0x7e,
1078 0xec, 0xef, 0x85, 0x15, 0x3b, 0x39, 0xc2, 0x45,
1079 0x04, 0x40, 0x92, 0x71, 0xd6, 0x7e, 0xf6, 0xfd,
1080 0x4d, 0x84, 0xf7, 0xc4, 0x77, 0x99, 0x3d, 0xe2,
1081 0xc3, 0x8d, 0xb0, 0x4c, 0x74, 0xc8, 0x51, 0xec,
1082 0xb2, 0xe8, 0x6b, 0xa1, 0xd2, 0x4d, 0xd8, 0x61,
1083 0x92, 0x7a, 0x24, 0x57, 0x44, 0x4f, 0xa2, 0x1e,
1084 0x74, 0x0b, 0x06, 0x4b, 0x80, 0x34, 0x8b, 0xfe,
1085 0xc2, 0x0e, 0xc1, 0xcd, 0xab, 0x0c, 0x3f, 0x54,
1086 0xe2, 0x44, 0xe9, 0x6c, 0x2b, 0xba, 0x7b, 0x64,
1087 0xf1, 0x93, 0x65, 0x75, 0xf2, 0x35, 0xff, 0x27,
1088 0x03, 0xd5, 0x64, 0xe6, 0x8e, 0xe7, 0x7b, 0x56,
1089 0xb6, 0x61, 0x73, 0xeb, 0xa2, 0xdc, 0xa4, 0x6e,
1090 0x52, 0xac, 0xbc, 0xba, 0x11, 0xa3, 0xd2, 0x61,
1091 0x4a, 0xe0, 0xbb, 0x14, 0x03, 0x01, 0x00, 0x01,
1092 0x01, 0x16, 0x03, 0x01, 0x00, 0x24, 0xd2, 0x5a,
1093 0x0c, 0x2a, 0x27, 0x96, 0xba, 0xa9, 0x67, 0xd2,
1094 0x51, 0x68, 0x32, 0x68, 0x22, 0x1f, 0xb9, 0x27,
1095 0x79, 0x59, 0x28, 0xdf, 0x38, 0x1f, 0x92, 0x21,
1096 0x5d, 0x0f, 0xf4, 0xc0, 0xee, 0xb7, 0x10, 0x5a,
1097 0xa9, 0x45,
1098 },
1099
1100 {
1101 0x14, 0x03, 0x01, 0x00, 0x01, 0x01, 0x16, 0x03,
1102 0x01, 0x00, 0x24, 0x13, 0x6f, 0x6c, 0x71, 0x83,
1103 0x59, 0xcf, 0x32, 0x72, 0xe9, 0xce, 0xcc, 0x7a,
1104 0x6c, 0xf0, 0x72, 0x39, 0x16, 0xae, 0x40, 0x61,
1105 0xfa, 0x92, 0x4c, 0xe7, 0xf2, 0x1a, 0xd7, 0x0c,
1106 0x84, 0x76, 0x6c, 0xe9, 0x11, 0x43, 0x19, 0x17,
1107 0x03, 0x01, 0x00, 0x21, 0xc0, 0xa2, 0x13, 0x28,
1108 0x94, 0x8c, 0x5c, 0xd6, 0x79, 0xb9, 0xfe, 0xae,
1109 0x45, 0x4b, 0xc0, 0x7c, 0xae, 0x2d, 0xb4, 0x0d,
1110 0x31, 0xc4, 0xad, 0x22, 0xd7, 0x1e, 0x99, 0x1c,
1111 0x4c, 0x69, 0xab, 0x42, 0x61, 0x15, 0x03, 0x01,
1112 0x00, 0x16, 0xe1, 0x0c, 0x67, 0xf3, 0xf4, 0xb9,
1113 0x8e, 0x81, 0x8e, 0x01, 0xb8, 0xa0, 0x69, 0x8c,
1114 0x03, 0x11, 0x43, 0x3e, 0xee, 0xb7, 0x4d, 0x69,
1115 }}},
1116 // Server asks for cert with empty CA list, client doesn't give it.
1117 // gotest -test.run "TestRunServer" -serve -clientauth 1
1118 // gnutls-cli --insecure --debug 100 -p 10443 localhost
1119 {"RequestClientCert, none given", RequestClientCert, nil,
1120 [][]byte{{
1121 0x16, 0x03, 0x02, 0x00, 0x7a, 0x01, 0x00, 0x00,
1122 0x76, 0x03, 0x02, 0x4e, 0xe0, 0x93, 0xe2, 0x47,
1123 0x06, 0xa0, 0x61, 0x0c, 0x51, 0xdd, 0xf0, 0xef,
1124 0xf4, 0x30, 0x72, 0xe1, 0xa6, 0x50, 0x68, 0x82,
1125 0x3c, 0xfb, 0xcb, 0x72, 0x5e, 0x73, 0x9d, 0xda,
1126 0x27, 0x35, 0x72, 0x00, 0x00, 0x34, 0x00, 0x33,
1127 0x00, 0x45, 0x00, 0x39, 0x00, 0x88, 0x00, 0x16,
1128 0x00, 0x32, 0x00, 0x44, 0x00, 0x38, 0x00, 0x87,
1129 0x00, 0x13, 0x00, 0x66, 0x00, 0x90, 0x00, 0x91,
1130 0x00, 0x8f, 0x00, 0x8e, 0x00, 0x2f, 0x00, 0x41,
1131 0x00, 0x35, 0x00, 0x84, 0x00, 0x0a, 0x00, 0x05,
1132 0x00, 0x04, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x8b,
1133 0x00, 0x8a, 0x01, 0x00, 0x00, 0x19, 0x00, 0x09,
1134 0x00, 0x03, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00,
1135 0x0e, 0x00, 0x0c, 0x00, 0x00, 0x09, 0x6c, 0x6f,
1136 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74,
1137 },
1138
1139 {
1140 0x16, 0x03, 0x01, 0x00, 0x2a, 0x02, 0x00, 0x00,
1141 0x26, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
1142 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1143 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1144 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1145 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x16,
1146 0x03, 0x01, 0x02, 0xbe, 0x0b, 0x00, 0x02, 0xba,
1147 0x00, 0x02, 0xb7, 0x00, 0x02, 0xb4, 0x30, 0x82,
1148 0x02, 0xb0, 0x30, 0x82, 0x02, 0x19, 0xa0, 0x03,
1149 0x02, 0x01, 0x02, 0x02, 0x09, 0x00, 0x85, 0xb0,
1150 0xbb, 0xa4, 0x8a, 0x7f, 0xb8, 0xca, 0x30, 0x0d,
1151 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
1152 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x45, 0x31,
1153 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
1154 0x13, 0x02, 0x41, 0x55, 0x31, 0x13, 0x30, 0x11,
1155 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x53,
1156 0x6f, 0x6d, 0x65, 0x2d, 0x53, 0x74, 0x61, 0x74,
1157 0x65, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55,
1158 0x04, 0x0a, 0x13, 0x18, 0x49, 0x6e, 0x74, 0x65,
1159 0x72, 0x6e, 0x65, 0x74, 0x20, 0x57, 0x69, 0x64,
1160 0x67, 0x69, 0x74, 0x73, 0x20, 0x50, 0x74, 0x79,
1161 0x20, 0x4c, 0x74, 0x64, 0x30, 0x1e, 0x17, 0x0d,
1162 0x31, 0x30, 0x30, 0x34, 0x32, 0x34, 0x30, 0x39,
1163 0x30, 0x39, 0x33, 0x38, 0x5a, 0x17, 0x0d, 0x31,
1164 0x31, 0x30, 0x34, 0x32, 0x34, 0x30, 0x39, 0x30,
1165 0x39, 0x33, 0x38, 0x5a, 0x30, 0x45, 0x31, 0x0b,
1166 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
1167 0x02, 0x41, 0x55, 0x31, 0x13, 0x30, 0x11, 0x06,
1168 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x53, 0x6f,
1169 0x6d, 0x65, 0x2d, 0x53, 0x74, 0x61, 0x74, 0x65,
1170 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04,
1171 0x0a, 0x13, 0x18, 0x49, 0x6e, 0x74, 0x65, 0x72,
1172 0x6e, 0x65, 0x74, 0x20, 0x57, 0x69, 0x64, 0x67,
1173 0x69, 0x74, 0x73, 0x20, 0x50, 0x74, 0x79, 0x20,
1174 0x4c, 0x74, 0x64, 0x30, 0x81, 0x9f, 0x30, 0x0d,
1175 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
1176 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8d,
1177 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00,
1178 0xbb, 0x79, 0xd6, 0xf5, 0x17, 0xb5, 0xe5, 0xbf,
1179 0x46, 0x10, 0xd0, 0xdc, 0x69, 0xbe, 0xe6, 0x2b,
1180 0x07, 0x43, 0x5a, 0xd0, 0x03, 0x2d, 0x8a, 0x7a,
1181 0x43, 0x85, 0xb7, 0x14, 0x52, 0xe7, 0xa5, 0x65,
1182 0x4c, 0x2c, 0x78, 0xb8, 0x23, 0x8c, 0xb5, 0xb4,
1183 0x82, 0xe5, 0xde, 0x1f, 0x95, 0x3b, 0x7e, 0x62,
1184 0xa5, 0x2c, 0xa5, 0x33, 0xd6, 0xfe, 0x12, 0x5c,
1185 0x7a, 0x56, 0xfc, 0xf5, 0x06, 0xbf, 0xfa, 0x58,
1186 0x7b, 0x26, 0x3f, 0xb5, 0xcd, 0x04, 0xd3, 0xd0,
1187 0xc9, 0x21, 0x96, 0x4a, 0xc7, 0xf4, 0x54, 0x9f,
1188 0x5a, 0xbf, 0xef, 0x42, 0x71, 0x00, 0xfe, 0x18,
1189 0x99, 0x07, 0x7f, 0x7e, 0x88, 0x7d, 0x7d, 0xf1,
1190 0x04, 0x39, 0xc4, 0xa2, 0x2e, 0xdb, 0x51, 0xc9,
1191 0x7c, 0xe3, 0xc0, 0x4c, 0x3b, 0x32, 0x66, 0x01,
1192 0xcf, 0xaf, 0xb1, 0x1d, 0xb8, 0x71, 0x9a, 0x1d,
1193 0xdb, 0xdb, 0x89, 0x6b, 0xae, 0xda, 0x2d, 0x79,
1194 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x81, 0xa7,
1195 0x30, 0x81, 0xa4, 0x30, 0x1d, 0x06, 0x03, 0x55,
1196 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xb1, 0xad,
1197 0xe2, 0x85, 0x5a, 0xcf, 0xcb, 0x28, 0xdb, 0x69,
1198 0xce, 0x23, 0x69, 0xde, 0xd3, 0x26, 0x8e, 0x18,
1199 0x88, 0x39, 0x30, 0x75, 0x06, 0x03, 0x55, 0x1d,
1200 0x23, 0x04, 0x6e, 0x30, 0x6c, 0x80, 0x14, 0xb1,
1201 0xad, 0xe2, 0x85, 0x5a, 0xcf, 0xcb, 0x28, 0xdb,
1202 0x69, 0xce, 0x23, 0x69, 0xde, 0xd3, 0x26, 0x8e,
1203 0x18, 0x88, 0x39, 0xa1, 0x49, 0xa4, 0x47, 0x30,
1204 0x45, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55,
1205 0x04, 0x06, 0x13, 0x02, 0x41, 0x55, 0x31, 0x13,
1206 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13,
1207 0x0a, 0x53, 0x6f, 0x6d, 0x65, 0x2d, 0x53, 0x74,
1208 0x61, 0x74, 0x65, 0x31, 0x21, 0x30, 0x1f, 0x06,
1209 0x03, 0x55, 0x04, 0x0a, 0x13, 0x18, 0x49, 0x6e,
1210 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x20, 0x57,
1211 0x69, 0x64, 0x67, 0x69, 0x74, 0x73, 0x20, 0x50,
1212 0x74, 0x79, 0x20, 0x4c, 0x74, 0x64, 0x82, 0x09,
1213 0x00, 0x85, 0xb0, 0xbb, 0xa4, 0x8a, 0x7f, 0xb8,
1214 0xca, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x1d, 0x13,
1215 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30,
1216 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
1217 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81,
1218 0x81, 0x00, 0x08, 0x6c, 0x45, 0x24, 0xc7, 0x6b,
1219 0xb1, 0x59, 0xab, 0x0c, 0x52, 0xcc, 0xf2, 0xb0,
1220 0x14, 0xd7, 0x87, 0x9d, 0x7a, 0x64, 0x75, 0xb5,
1221 0x5a, 0x95, 0x66, 0xe4, 0xc5, 0x2b, 0x8e, 0xae,
1222 0x12, 0x66, 0x1f, 0xeb, 0x4f, 0x38, 0xb3, 0x6e,
1223 0x60, 0xd3, 0x92, 0xfd, 0xf7, 0x41, 0x08, 0xb5,
1224 0x25, 0x13, 0xb1, 0x18, 0x7a, 0x24, 0xfb, 0x30,
1225 0x1d, 0xba, 0xed, 0x98, 0xb9, 0x17, 0xec, 0xe7,
1226 0xd7, 0x31, 0x59, 0xdb, 0x95, 0xd3, 0x1d, 0x78,
1227 0xea, 0x50, 0x56, 0x5c, 0xd5, 0x82, 0x5a, 0x2d,
1228 0x5a, 0x5f, 0x33, 0xc4, 0xb6, 0xd8, 0xc9, 0x75,
1229 0x90, 0x96, 0x8c, 0x0f, 0x52, 0x98, 0xb5, 0xcd,
1230 0x98, 0x1f, 0x89, 0x20, 0x5f, 0xf2, 0xa0, 0x1c,
1231 0xa3, 0x1b, 0x96, 0x94, 0xdd, 0xa9, 0xfd, 0x57,
1232 0xe9, 0x70, 0xe8, 0x26, 0x6d, 0x71, 0x99, 0x9b,
1233 0x26, 0x6e, 0x38, 0x50, 0x29, 0x6c, 0x90, 0xa7,
1234 0xbd, 0xd9, 0x16, 0x03, 0x01, 0x00, 0x08, 0x0d,
1235 0x00, 0x00, 0x04, 0x01, 0x01, 0x00, 0x00, 0x16,
1236 0x03, 0x01, 0x00, 0x04, 0x0e, 0x00, 0x00, 0x00,
1237 },
1238
1239 {
1240 0x16, 0x03, 0x01, 0x00, 0x07, 0x0b, 0x00, 0x00,
1241 0x03, 0x00, 0x00, 0x00, 0x16, 0x03, 0x01, 0x00,
1242 0x86, 0x10, 0x00, 0x00, 0x82, 0x00, 0x80, 0x64,
1243 0x28, 0xb9, 0x3f, 0x48, 0xaf, 0x06, 0x22, 0x39,
1244 0x56, 0xd8, 0x6f, 0x63, 0x5d, 0x03, 0x48, 0x63,
1245 0x01, 0x13, 0xa2, 0xd6, 0x76, 0xc0, 0xab, 0xda,
1246 0x25, 0x30, 0x75, 0x6c, 0xaa, 0xb4, 0xdc, 0x35,
1247 0x72, 0xdc, 0xf2, 0x43, 0xe4, 0x1d, 0x82, 0xfb,
1248 0x6c, 0x64, 0xe2, 0xa7, 0x8f, 0x32, 0x67, 0x6b,
1249 0xcd, 0xd2, 0xb2, 0x36, 0x94, 0xbc, 0x6f, 0x46,
1250 0x79, 0x29, 0x42, 0xe3, 0x1a, 0xbf, 0xfb, 0x41,
1251 0xd5, 0xe3, 0xb4, 0x2a, 0xf6, 0x95, 0x6f, 0x0c,
1252 0x87, 0xb9, 0x03, 0x18, 0xa1, 0xea, 0x4a, 0xe2,
1253 0x2e, 0x0f, 0x50, 0x00, 0xc1, 0xe8, 0x8c, 0xc8,
1254 0xa2, 0xf6, 0xa4, 0x05, 0xf4, 0x38, 0x3e, 0xd9,
1255 0x6e, 0x63, 0x96, 0x0c, 0x34, 0x73, 0x90, 0x03,
1256 0x55, 0xa6, 0x34, 0xb0, 0x5e, 0x8c, 0x48, 0x40,
1257 0x25, 0x45, 0x84, 0xa6, 0x21, 0x3f, 0x81, 0x97,
1258 0xa7, 0x11, 0x09, 0x14, 0x95, 0xa5, 0xe5, 0x14,
1259 0x03, 0x01, 0x00, 0x01, 0x01, 0x16, 0x03, 0x01,
1260 0x00, 0x24, 0x16, 0xaa, 0x01, 0x2c, 0xa8, 0xc1,
1261 0x28, 0xaf, 0x35, 0xc1, 0xc1, 0xf3, 0x0a, 0x25,
1262 0x66, 0x6e, 0x27, 0x11, 0xa3, 0xa4, 0xd9, 0xe9,
1263 0xea, 0x15, 0x09, 0x9d, 0x28, 0xe3, 0x5b, 0x2b,
1264 0xa6, 0x25, 0xa7, 0x14, 0x24, 0x3a,
1265 },
1266
1267 {
1268 0x14, 0x03, 0x01, 0x00, 0x01, 0x01, 0x16, 0x03,
1269 0x01, 0x00, 0x24, 0x9a, 0xa8, 0xd6, 0x77, 0x46,
1270 0x45, 0x68, 0x9d, 0x5d, 0xa9, 0x68, 0x03, 0xe5,
1271 0xaf, 0xe8, 0xc8, 0x21, 0xc5, 0xc6, 0xc1, 0x50,
1272 0xe0, 0xd8, 0x52, 0xce, 0xa3, 0x4f, 0x2d, 0xf4,
1273 0xe3, 0xa7, 0x7d, 0x35, 0x80, 0x84, 0x12, 0x17,
1274 0x03, 0x01, 0x00, 0x21, 0x8a, 0x82, 0x0c, 0x54,
1275 0x1b, 0xeb, 0x77, 0x90, 0x2c, 0x3e, 0xbc, 0xf0,
1276 0x23, 0xcc, 0xa8, 0x9f, 0x25, 0x08, 0x12, 0xed,
1277 0x43, 0xf1, 0xf9, 0x06, 0xad, 0xa9, 0x4b, 0x97,
1278 0x82, 0xb7, 0xc4, 0x0b, 0x4c, 0x15, 0x03, 0x01,
1279 0x00, 0x16, 0x05, 0x2d, 0x9d, 0x45, 0x03, 0xb7,
1280 0xc2, 0xd1, 0xb5, 0x1a, 0x43, 0xcf, 0x1a, 0x37,
1281 0xf4, 0x70, 0xcc, 0xb4, 0xed, 0x07, 0x76, 0x3a,
1282 }}},
1283 // Server asks for cert with empty CA list, client gives one
1284 // gotest -test.run "TestRunServer" -serve -clientauth 1
1285 // gnutls-cli --insecure --debug 100 -p 10443 localhost
1286 {"RequestClientCert, client gives it", RequestClientCert,
1287 []*x509.Certificate{clicert},
1288 [][]byte{{
1289 0x16, 0x03, 0x02, 0x00, 0x7a, 0x01, 0x00, 0x00,
1290 0x76, 0x03, 0x02, 0x4e, 0xe7, 0x44, 0xda, 0x58,
1291 0x7d, 0x46, 0x4a, 0x48, 0x97, 0x9f, 0xe5, 0x91,
1292 0x11, 0x64, 0xa7, 0x1e, 0x4d, 0xb7, 0xfe, 0x9b,
1293 0xc6, 0x63, 0xf8, 0xa4, 0xb5, 0x0b, 0x18, 0xb5,
1294 0xbd, 0x19, 0xb3, 0x00, 0x00, 0x34, 0x00, 0x33,
1295 0x00, 0x45, 0x00, 0x39, 0x00, 0x88, 0x00, 0x16,
1296 0x00, 0x32, 0x00, 0x44, 0x00, 0x38, 0x00, 0x87,
1297 0x00, 0x13, 0x00, 0x66, 0x00, 0x90, 0x00, 0x91,
1298 0x00, 0x8f, 0x00, 0x8e, 0x00, 0x2f, 0x00, 0x41,
1299 0x00, 0x35, 0x00, 0x84, 0x00, 0x0a, 0x00, 0x05,
1300 0x00, 0x04, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x8b,
1301 0x00, 0x8a, 0x01, 0x00, 0x00, 0x19, 0x00, 0x09,
1302 0x00, 0x03, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00,
1303 0x0e, 0x00, 0x0c, 0x00, 0x00, 0x09, 0x6c, 0x6f,
1304 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74,
1305 },
1306
1307 {
1308 0x16, 0x03, 0x01, 0x00, 0x2a, 0x02, 0x00, 0x00,
1309 0x26, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
1310 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1311 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1312 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1313 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x16,
1314 0x03, 0x01, 0x02, 0xbe, 0x0b, 0x00, 0x02, 0xba,
1315 0x00, 0x02, 0xb7, 0x00, 0x02, 0xb4, 0x30, 0x82,
1316 0x02, 0xb0, 0x30, 0x82, 0x02, 0x19, 0xa0, 0x03,
1317 0x02, 0x01, 0x02, 0x02, 0x09, 0x00, 0x85, 0xb0,
1318 0xbb, 0xa4, 0x8a, 0x7f, 0xb8, 0xca, 0x30, 0x0d,
1319 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
1320 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x45, 0x31,
1321 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
1322 0x13, 0x02, 0x41, 0x55, 0x31, 0x13, 0x30, 0x11,
1323 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x53,
1324 0x6f, 0x6d, 0x65, 0x2d, 0x53, 0x74, 0x61, 0x74,
1325 0x65, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55,
1326 0x04, 0x0a, 0x13, 0x18, 0x49, 0x6e, 0x74, 0x65,
1327 0x72, 0x6e, 0x65, 0x74, 0x20, 0x57, 0x69, 0x64,
1328 0x67, 0x69, 0x74, 0x73, 0x20, 0x50, 0x74, 0x79,
1329 0x20, 0x4c, 0x74, 0x64, 0x30, 0x1e, 0x17, 0x0d,
1330 0x31, 0x30, 0x30, 0x34, 0x32, 0x34, 0x30, 0x39,
1331 0x30, 0x39, 0x33, 0x38, 0x5a, 0x17, 0x0d, 0x31,
1332 0x31, 0x30, 0x34, 0x32, 0x34, 0x30, 0x39, 0x30,
1333 0x39, 0x33, 0x38, 0x5a, 0x30, 0x45, 0x31, 0x0b,
1334 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
1335 0x02, 0x41, 0x55, 0x31, 0x13, 0x30, 0x11, 0x06,
1336 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x53, 0x6f,
1337 0x6d, 0x65, 0x2d, 0x53, 0x74, 0x61, 0x74, 0x65,
1338 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04,
1339 0x0a, 0x13, 0x18, 0x49, 0x6e, 0x74, 0x65, 0x72,
1340 0x6e, 0x65, 0x74, 0x20, 0x57, 0x69, 0x64, 0x67,
1341 0x69, 0x74, 0x73, 0x20, 0x50, 0x74, 0x79, 0x20,
1342 0x4c, 0x74, 0x64, 0x30, 0x81, 0x9f, 0x30, 0x0d,
1343 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
1344 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8d,
1345 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00,
1346 0xbb, 0x79, 0xd6, 0xf5, 0x17, 0xb5, 0xe5, 0xbf,
1347 0x46, 0x10, 0xd0, 0xdc, 0x69, 0xbe, 0xe6, 0x2b,
1348 0x07, 0x43, 0x5a, 0xd0, 0x03, 0x2d, 0x8a, 0x7a,
1349 0x43, 0x85, 0xb7, 0x14, 0x52, 0xe7, 0xa5, 0x65,
1350 0x4c, 0x2c, 0x78, 0xb8, 0x23, 0x8c, 0xb5, 0xb4,
1351 0x82, 0xe5, 0xde, 0x1f, 0x95, 0x3b, 0x7e, 0x62,
1352 0xa5, 0x2c, 0xa5, 0x33, 0xd6, 0xfe, 0x12, 0x5c,
1353 0x7a, 0x56, 0xfc, 0xf5, 0x06, 0xbf, 0xfa, 0x58,
1354 0x7b, 0x26, 0x3f, 0xb5, 0xcd, 0x04, 0xd3, 0xd0,
1355 0xc9, 0x21, 0x96, 0x4a, 0xc7, 0xf4, 0x54, 0x9f,
1356 0x5a, 0xbf, 0xef, 0x42, 0x71, 0x00, 0xfe, 0x18,
1357 0x99, 0x07, 0x7f, 0x7e, 0x88, 0x7d, 0x7d, 0xf1,
1358 0x04, 0x39, 0xc4, 0xa2, 0x2e, 0xdb, 0x51, 0xc9,
1359 0x7c, 0xe3, 0xc0, 0x4c, 0x3b, 0x32, 0x66, 0x01,
1360 0xcf, 0xaf, 0xb1, 0x1d, 0xb8, 0x71, 0x9a, 0x1d,
1361 0xdb, 0xdb, 0x89, 0x6b, 0xae, 0xda, 0x2d, 0x79,
1362 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x81, 0xa7,
1363 0x30, 0x81, 0xa4, 0x30, 0x1d, 0x06, 0x03, 0x55,
1364 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xb1, 0xad,
1365 0xe2, 0x85, 0x5a, 0xcf, 0xcb, 0x28, 0xdb, 0x69,
1366 0xce, 0x23, 0x69, 0xde, 0xd3, 0x26, 0x8e, 0x18,
1367 0x88, 0x39, 0x30, 0x75, 0x06, 0x03, 0x55, 0x1d,
1368 0x23, 0x04, 0x6e, 0x30, 0x6c, 0x80, 0x14, 0xb1,
1369 0xad, 0xe2, 0x85, 0x5a, 0xcf, 0xcb, 0x28, 0xdb,
1370 0x69, 0xce, 0x23, 0x69, 0xde, 0xd3, 0x26, 0x8e,
1371 0x18, 0x88, 0x39, 0xa1, 0x49, 0xa4, 0x47, 0x30,
1372 0x45, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55,
1373 0x04, 0x06, 0x13, 0x02, 0x41, 0x55, 0x31, 0x13,
1374 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13,
1375 0x0a, 0x53, 0x6f, 0x6d, 0x65, 0x2d, 0x53, 0x74,
1376 0x61, 0x74, 0x65, 0x31, 0x21, 0x30, 0x1f, 0x06,
1377 0x03, 0x55, 0x04, 0x0a, 0x13, 0x18, 0x49, 0x6e,
1378 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x20, 0x57,
1379 0x69, 0x64, 0x67, 0x69, 0x74, 0x73, 0x20, 0x50,
1380 0x74, 0x79, 0x20, 0x4c, 0x74, 0x64, 0x82, 0x09,
1381 0x00, 0x85, 0xb0, 0xbb, 0xa4, 0x8a, 0x7f, 0xb8,
1382 0xca, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x1d, 0x13,
1383 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30,
1384 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
1385 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81,
1386 0x81, 0x00, 0x08, 0x6c, 0x45, 0x24, 0xc7, 0x6b,
1387 0xb1, 0x59, 0xab, 0x0c, 0x52, 0xcc, 0xf2, 0xb0,
1388 0x14, 0xd7, 0x87, 0x9d, 0x7a, 0x64, 0x75, 0xb5,
1389 0x5a, 0x95, 0x66, 0xe4, 0xc5, 0x2b, 0x8e, 0xae,
1390 0x12, 0x66, 0x1f, 0xeb, 0x4f, 0x38, 0xb3, 0x6e,
1391 0x60, 0xd3, 0x92, 0xfd, 0xf7, 0x41, 0x08, 0xb5,
1392 0x25, 0x13, 0xb1, 0x18, 0x7a, 0x24, 0xfb, 0x30,
1393 0x1d, 0xba, 0xed, 0x98, 0xb9, 0x17, 0xec, 0xe7,
1394 0xd7, 0x31, 0x59, 0xdb, 0x95, 0xd3, 0x1d, 0x78,
1395 0xea, 0x50, 0x56, 0x5c, 0xd5, 0x82, 0x5a, 0x2d,
1396 0x5a, 0x5f, 0x33, 0xc4, 0xb6, 0xd8, 0xc9, 0x75,
1397 0x90, 0x96, 0x8c, 0x0f, 0x52, 0x98, 0xb5, 0xcd,
1398 0x98, 0x1f, 0x89, 0x20, 0x5f, 0xf2, 0xa0, 0x1c,
1399 0xa3, 0x1b, 0x96, 0x94, 0xdd, 0xa9, 0xfd, 0x57,
1400 0xe9, 0x70, 0xe8, 0x26, 0x6d, 0x71, 0x99, 0x9b,
1401 0x26, 0x6e, 0x38, 0x50, 0x29, 0x6c, 0x90, 0xa7,
1402 0xbd, 0xd9, 0x16, 0x03, 0x01, 0x00, 0x08, 0x0d,
1403 0x00, 0x00, 0x04, 0x01, 0x01, 0x00, 0x00, 0x16,
1404 0x03, 0x01, 0x00, 0x04, 0x0e, 0x00, 0x00, 0x00,
1405 },
1406
1407 {
1408 0x16, 0x03, 0x01, 0x01, 0xfb, 0x0b, 0x00, 0x01,
1409 0xf7, 0x00, 0x01, 0xf4, 0x00, 0x01, 0xf1, 0x30,
1410 0x82, 0x01, 0xed, 0x30, 0x82, 0x01, 0x58, 0xa0,
1411 0x03, 0x02, 0x01, 0x02, 0x02, 0x01, 0x00, 0x30,
1412 0x0b, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
1413 0x0d, 0x01, 0x01, 0x05, 0x30, 0x26, 0x31, 0x10,
1414 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
1415 0x07, 0x41, 0x63, 0x6d, 0x65, 0x20, 0x43, 0x6f,
1416 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04,
1417 0x03, 0x13, 0x09, 0x31, 0x32, 0x37, 0x2e, 0x30,
1418 0x2e, 0x30, 0x2e, 0x31, 0x30, 0x1e, 0x17, 0x0d,
1419 0x31, 0x31, 0x31, 0x32, 0x30, 0x38, 0x30, 0x37,
1420 0x35, 0x35, 0x31, 0x32, 0x5a, 0x17, 0x0d, 0x31,
1421 0x32, 0x31, 0x32, 0x30, 0x37, 0x30, 0x38, 0x30,
1422 0x30, 0x31, 0x32, 0x5a, 0x30, 0x26, 0x31, 0x10,
1423 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
1424 0x07, 0x41, 0x63, 0x6d, 0x65, 0x20, 0x43, 0x6f,
1425 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04,
1426 0x03, 0x13, 0x09, 0x31, 0x32, 0x37, 0x2e, 0x30,
1427 0x2e, 0x30, 0x2e, 0x31, 0x30, 0x81, 0x9c, 0x30,
1428 0x0b, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
1429 0x0d, 0x01, 0x01, 0x01, 0x03, 0x81, 0x8c, 0x00,
1430 0x30, 0x81, 0x88, 0x02, 0x81, 0x80, 0x4e, 0xd0,
1431 0x7b, 0x31, 0xe3, 0x82, 0x64, 0xd9, 0x59, 0xc0,
1432 0xc2, 0x87, 0xa4, 0x5e, 0x1e, 0x8b, 0x73, 0x33,
1433 0xc7, 0x63, 0x53, 0xdf, 0x66, 0x92, 0x06, 0x84,
1434 0xf6, 0x64, 0xd5, 0x8f, 0xe4, 0x36, 0xa7, 0x1d,
1435 0x2b, 0xe8, 0xb3, 0x20, 0x36, 0x45, 0x23, 0xb5,
1436 0xe3, 0x95, 0xae, 0xed, 0xe0, 0xf5, 0x20, 0x9c,
1437 0x8d, 0x95, 0xdf, 0x7f, 0x5a, 0x12, 0xef, 0x87,
1438 0xe4, 0x5b, 0x68, 0xe4, 0xe9, 0x0e, 0x74, 0xec,
1439 0x04, 0x8a, 0x7f, 0xde, 0x93, 0x27, 0xc4, 0x01,
1440 0x19, 0x7a, 0xbd, 0xf2, 0xdc, 0x3d, 0x14, 0xab,
1441 0xd0, 0x54, 0xca, 0x21, 0x0c, 0xd0, 0x4d, 0x6e,
1442 0x87, 0x2e, 0x5c, 0xc5, 0xd2, 0xbb, 0x4d, 0x4b,
1443 0x4f, 0xce, 0xb6, 0x2c, 0xf7, 0x7e, 0x88, 0xec,
1444 0x7c, 0xd7, 0x02, 0x91, 0x74, 0xa6, 0x1e, 0x0c,
1445 0x1a, 0xda, 0xe3, 0x4a, 0x5a, 0x2e, 0xde, 0x13,
1446 0x9c, 0x4c, 0x40, 0x88, 0x59, 0x93, 0x02, 0x03,
1447 0x01, 0x00, 0x01, 0xa3, 0x32, 0x30, 0x30, 0x30,
1448 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01,
1449 0xff, 0x04, 0x04, 0x03, 0x02, 0x00, 0xa0, 0x30,
1450 0x0d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x06,
1451 0x04, 0x04, 0x01, 0x02, 0x03, 0x04, 0x30, 0x0f,
1452 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x08, 0x30,
1453 0x06, 0x80, 0x04, 0x01, 0x02, 0x03, 0x04, 0x30,
1454 0x0b, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
1455 0x0d, 0x01, 0x01, 0x05, 0x03, 0x81, 0x81, 0x00,
1456 0x36, 0x1f, 0xb3, 0x7a, 0x0c, 0x75, 0xc9, 0x6e,
1457 0x37, 0x46, 0x61, 0x2b, 0xd5, 0xbd, 0xc0, 0xa7,
1458 0x4b, 0xcc, 0x46, 0x9a, 0x81, 0x58, 0x7c, 0x85,
1459 0x79, 0x29, 0xc8, 0xc8, 0xc6, 0x67, 0xdd, 0x32,
1460 0x56, 0x45, 0x2b, 0x75, 0xb6, 0xe9, 0x24, 0xa9,
1461 0x50, 0x9a, 0xbe, 0x1f, 0x5a, 0xfa, 0x1a, 0x15,
1462 0xd9, 0xcc, 0x55, 0x95, 0x72, 0x16, 0x83, 0xb9,
1463 0xc2, 0xb6, 0x8f, 0xfd, 0x88, 0x8c, 0x38, 0x84,
1464 0x1d, 0xab, 0x5d, 0x92, 0x31, 0x13, 0x4f, 0xfd,
1465 0x83, 0x3b, 0xc6, 0x9d, 0xf1, 0x11, 0x62, 0xb6,
1466 0x8b, 0xec, 0xab, 0x67, 0xbe, 0xc8, 0x64, 0xb0,
1467 0x11, 0x50, 0x46, 0x58, 0x17, 0x6b, 0x99, 0x1c,
1468 0xd3, 0x1d, 0xfc, 0x06, 0xf1, 0x0e, 0xe5, 0x96,
1469 0xa8, 0x0c, 0xf9, 0x78, 0x20, 0xb7, 0x44, 0x18,
1470 0x51, 0x8d, 0x10, 0x7e, 0x4f, 0x94, 0x67, 0xdf,
1471 0xa3, 0x4e, 0x70, 0x73, 0x8e, 0x90, 0x91, 0x85,
1472 0x16, 0x03, 0x01, 0x00, 0x86, 0x10, 0x00, 0x00,
1473 0x82, 0x00, 0x80, 0xa7, 0x2f, 0xed, 0xfa, 0xc2,
1474 0xbd, 0x46, 0xa1, 0xf2, 0x69, 0xc5, 0x1d, 0xa1,
1475 0x34, 0xd6, 0xd0, 0x84, 0xf5, 0x5d, 0x8c, 0x82,
1476 0x8d, 0x98, 0x82, 0x9c, 0xd9, 0x07, 0xe0, 0xf7,
1477 0x55, 0x49, 0x4d, 0xa1, 0x48, 0x59, 0x02, 0xd3,
1478 0x84, 0x37, 0xaf, 0x01, 0xb3, 0x3a, 0xf4, 0xed,
1479 0x99, 0xbe, 0x67, 0x36, 0x19, 0x55, 0xf3, 0xf9,
1480 0xcb, 0x94, 0xe5, 0x7b, 0x8b, 0x77, 0xf2, 0x5f,
1481 0x4c, 0xfe, 0x01, 0x1f, 0x7b, 0xd7, 0x23, 0x49,
1482 0x0c, 0xcb, 0x6c, 0xb0, 0xe7, 0x77, 0xd6, 0xcf,
1483 0xa8, 0x7d, 0xdb, 0xa7, 0x14, 0xe2, 0xf5, 0xf3,
1484 0xff, 0xba, 0x23, 0xd2, 0x9a, 0x36, 0x14, 0x60,
1485 0x2a, 0x91, 0x5d, 0x2b, 0x35, 0x3b, 0xb6, 0xdd,
1486 0xcb, 0x6b, 0xdc, 0x18, 0xdc, 0x33, 0xb8, 0xb3,
1487 0xc7, 0x27, 0x7e, 0xfc, 0xd2, 0xf7, 0x97, 0x90,
1488 0x5e, 0x17, 0xac, 0x14, 0x8e, 0x0f, 0xca, 0xb5,
1489 0x6f, 0xc9, 0x2d, 0x16, 0x03, 0x01, 0x00, 0x86,
1490 0x0f, 0x00, 0x00, 0x82, 0x00, 0x80, 0x44, 0x7f,
1491 0xa2, 0x59, 0x60, 0x0b, 0x5a, 0xc4, 0xaf, 0x1e,
1492 0x60, 0xa5, 0x24, 0xea, 0xc1, 0xc3, 0x22, 0x21,
1493 0x6b, 0x22, 0x8b, 0x2a, 0x11, 0x82, 0x68, 0x7d,
1494 0xb9, 0xdd, 0x9c, 0x27, 0x4c, 0xc2, 0xc8, 0xa2,
1495 0x8b, 0x6b, 0x77, 0x8d, 0x3a, 0x2b, 0x8d, 0x2f,
1496 0x6a, 0x2b, 0x43, 0xd2, 0xd1, 0xc6, 0x41, 0x79,
1497 0xa2, 0x4f, 0x2b, 0xc2, 0xf7, 0xb2, 0x10, 0xad,
1498 0xa6, 0x01, 0x51, 0x51, 0x25, 0xe7, 0x58, 0x7a,
1499 0xcf, 0x3b, 0xc4, 0x29, 0xb5, 0xe5, 0xa7, 0x83,
1500 0xe6, 0xcb, 0x1e, 0xf3, 0x02, 0x0f, 0x53, 0x3b,
1501 0xb5, 0x39, 0xef, 0x9c, 0x42, 0xe0, 0xa6, 0x9b,
1502 0x2b, 0xdd, 0x60, 0xae, 0x0a, 0x73, 0x35, 0xbe,
1503 0x26, 0x10, 0x1b, 0xe9, 0xe9, 0x61, 0xab, 0x20,
1504 0xa5, 0x48, 0xc6, 0x60, 0xa6, 0x50, 0x3c, 0xfb,
1505 0xa7, 0xca, 0xb0, 0x80, 0x95, 0x1e, 0xce, 0xc7,
1506 0xbb, 0x68, 0x44, 0xdc, 0x0e, 0x0e, 0x14, 0x03,
1507 0x01, 0x00, 0x01, 0x01, 0x16, 0x03, 0x01, 0x00,
1508 0x24, 0xb6, 0xcd, 0x0c, 0x78, 0xfd, 0xd6, 0xff,
1509 0xbe, 0x97, 0xd5, 0x0a, 0x7d, 0x4f, 0xa1, 0x03,
1510 0x78, 0xc8, 0x61, 0x6f, 0xf2, 0x4b, 0xa8, 0x56,
1511 0x4f, 0x3c, 0xa2, 0xd9, 0xd0, 0x20, 0x13, 0x1b,
1512 0x8b, 0x36, 0xb7, 0x33, 0x9c,
1513 },
1514
1515 {
1516 0x14, 0x03, 0x01, 0x00, 0x01, 0x01, 0x16, 0x03,
1517 0x01, 0x00, 0x24, 0xa3, 0x43, 0x94, 0xe7, 0xdf,
1518 0xb6, 0xc3, 0x03, 0x9f, 0xc1, 0x59, 0x0c, 0xc3,
1519 0x13, 0xae, 0xed, 0xcf, 0xff, 0xf1, 0x80, 0xf3,
1520 0x13, 0x63, 0x1c, 0xf0, 0xca, 0xad, 0x9e, 0x71,
1521 0x46, 0x5f, 0x6b, 0xeb, 0x10, 0x3f, 0xe3, 0x17,
1522 0x03, 0x01, 0x00, 0x21, 0xe9, 0x80, 0x95, 0x6e,
1523 0x05, 0x55, 0x2f, 0xed, 0x4d, 0xde, 0x17, 0x3a,
1524 0x32, 0x9b, 0x2a, 0x74, 0x30, 0x4f, 0xe0, 0x9f,
1525 0x4e, 0xd3, 0x06, 0xbd, 0x3a, 0x43, 0x75, 0x8b,
1526 0x5b, 0x9a, 0xd8, 0x2e, 0x56, 0x15, 0x03, 0x01,
1527 0x00, 0x16, 0x53, 0xf5, 0xff, 0xe0, 0xa1, 0x6c,
1528 0x33, 0xf4, 0x4e, 0x89, 0x68, 0xe1, 0xf7, 0x61,
1529 0x13, 0xb3, 0x12, 0xa1, 0x8e, 0x5a, 0x7a, 0x02,
1530 }}},
1531 }
1532
1533 // cert.pem and key.pem were generated with generate_cert.go
1534 // Thus, they have no ExtKeyUsage fields and trigger an error
1535 // when verification is turned on.
1536
1537 var clicert = loadPEMCert(`
1538 -----BEGIN CERTIFICATE-----
1539 MIIB7TCCAVigAwIBAgIBADALBgkqhkiG9w0BAQUwJjEQMA4GA1UEChMHQWNtZSBD
1540 bzESMBAGA1UEAxMJMTI3LjAuMC4xMB4XDTExMTIwODA3NTUxMloXDTEyMTIwNzA4
1541 MDAxMlowJjEQMA4GA1UEChMHQWNtZSBDbzESMBAGA1UEAxMJMTI3LjAuMC4xMIGc
1542 MAsGCSqGSIb3DQEBAQOBjAAwgYgCgYBO0Hsx44Jk2VnAwoekXh6LczPHY1PfZpIG
1543 hPZk1Y/kNqcdK+izIDZFI7Xjla7t4PUgnI2V339aEu+H5Fto5OkOdOwEin/ekyfE
1544 ARl6vfLcPRSr0FTKIQzQTW6HLlzF0rtNS0/Otiz3fojsfNcCkXSmHgwa2uNKWi7e
1545 E5xMQIhZkwIDAQABozIwMDAOBgNVHQ8BAf8EBAMCAKAwDQYDVR0OBAYEBAECAwQw
1546 DwYDVR0jBAgwBoAEAQIDBDALBgkqhkiG9w0BAQUDgYEANh+zegx1yW43RmEr1b3A
1547 p0vMRpqBWHyFeSnIyMZn3TJWRSt1tukkqVCavh9a+hoV2cxVlXIWg7nCto/9iIw4
1548 hB2rXZIxE0/9gzvGnfERYraL7KtnvshksBFQRlgXa5kc0x38BvEO5ZaoDPl4ILdE
1549 GFGNEH5PlGffo05wc46QkYU=
1550 -----END CERTIFICATE-----
1551 `)
1552
1553 /* corresponding key.pem for cert.pem is:
1554 -----BEGIN RSA PRIVATE KEY-----
1555 MIICXAIBAAKBgE7QezHjgmTZWcDCh6ReHotzM8djU99mkgaE9mTVj+Q2px0r6LMg
1556 NkUjteOVru3g9SCcjZXff1oS74fkW2jk6Q507ASKf96TJ8QBGXq98tw9FKvQVMoh
1557 DNBNbocuXMXSu01LT862LPd+iOx81wKRdKYeDBra40paLt4TnExAiFmTAgMBAAEC
1558 gYBxvXd8yNteFTns8A/2yomEMC4yeosJJSpp1CsN3BJ7g8/qTnrVPxBy+RU+qr63
1559 t2WquaOu/cr5P8iEsa6lk20tf8pjKLNXeX0b1RTzK8rJLbS7nGzP3tvOhL096VtQ
1560 dAo4ROEaro0TzYpHmpciSvxVIeEIAAdFDObDJPKqcJAxyQJBAJizfYgK8Gzx9fsx
1561 hxp+VteCbVPg2euASH5Yv3K5LukRdKoSzHE2grUVQgN/LafC0eZibRanxHegYSr7
1562 7qaswKUCQQCEIWor/X4XTMdVj3Oj+vpiw75y/S9gh682+myZL+d/02IEkwnB098P
1563 RkKVpenBHyrGg0oeN5La7URILWKj7CPXAkBKo6F+d+phNjwIFoN1Xb/RA32w/D1I
1564 saG9sF+UEhRt9AxUfW/U/tIQ9V0ZHHcSg1XaCM5Nvp934brdKdvTOKnJAkBD5h/3
1565 Rybatlvg/fzBEaJFyq09zhngkxlZOUtBVTqzl17RVvY2orgH02U4HbCHy4phxOn7
1566 qTdQRYlHRftgnWK1AkANibn9PRYJ7mJyJ9Dyj2QeNcSkSTzrt0tPvUMf4+meJymN
1567 1Ntu5+S1DLLzfxlaljWG6ylW6DNxujCyuXIV2rvAMAA=
1568 -----END RSA PRIVATE KEY-----
1569 */
LEFTRIGHT

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b