github.com/xushiwei/go@v0.0.0-20130601165731-2b9d83f45bc9/src/pkg/crypto/tls/handshake_client_test.go (about)

     1  // Copyright 2010 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package tls
     6  
     7  import (
     8  	"bytes"
     9  	"flag"
    10  	"io"
    11  	"net"
    12  	"os"
    13  	"testing"
    14  )
    15  
    16  func testClientScript(t *testing.T, name string, clientScript [][]byte, config *Config) {
    17  	c, s := net.Pipe()
    18  	cli := Client(c, config)
    19  	go func() {
    20  		cli.Write([]byte("hello\n"))
    21  		cli.Close()
    22  		c.Close()
    23  	}()
    24  
    25  	defer c.Close()
    26  	for i, b := range clientScript {
    27  		if i%2 == 1 {
    28  			s.Write(b)
    29  			continue
    30  		}
    31  		bb := make([]byte, len(b))
    32  		_, err := io.ReadFull(s, bb)
    33  		if err != nil {
    34  			t.Fatalf("%s #%d: %s", name, i, err)
    35  		}
    36  		if !bytes.Equal(b, bb) {
    37  			t.Fatalf("%s #%d: mismatch on read: got:%x want:%x", name, i, bb, b)
    38  		}
    39  	}
    40  }
    41  
    42  func TestHandshakeClientRC4(t *testing.T) {
    43  	var config = *testConfig
    44  	config.CipherSuites = []uint16{TLS_RSA_WITH_RC4_128_SHA}
    45  	testClientScript(t, "RC4", rc4ClientScript, &config)
    46  }
    47  
    48  func TestHandshakeClientECDHEAES(t *testing.T) {
    49  	var config = *testConfig
    50  	config.CipherSuites = []uint16{TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA}
    51  	testClientScript(t, "ECDHE-AES", ecdheAESClientScript, &config)
    52  }
    53  
    54  var connect = flag.Bool("connect", false, "connect to a TLS server on :10443")
    55  
    56  func TestRunClient(t *testing.T) {
    57  	if !*connect {
    58  		return
    59  	}
    60  
    61  	tcpConn, err := net.Dial("tcp", "127.0.0.1:10443")
    62  	if err != nil {
    63  		t.Fatal(err)
    64  	}
    65  
    66  	record := &recordingConn{
    67  		Conn: tcpConn,
    68  	}
    69  
    70  	config := GetTestConfig()
    71  	conn := Client(record, config)
    72  	if err := conn.Handshake(); err != nil {
    73  		t.Fatalf("error from TLS handshake: %s", err)
    74  	}
    75  
    76  	conn.Write([]byte("hello\n"))
    77  	conn.Close()
    78  
    79  	record.WriteTo(os.Stdout)
    80  }
    81  
    82  // Script of interaction with gnutls implementation.
    83  // The values for this test are obtained by building and running in client mode:
    84  //   % go test -test.run "TestRunClient" -connect
    85  // The recorded bytes are written to stdout.
    86  //
    87  // The server private key is:
    88  // -----BEGIN RSA PRIVATE KEY-----
    89  // MIIBPAIBAAJBAJ+zw4Qnlf8SMVIPFe9GEcStgOY2Ww/dgNdhjeD8ckUJNP5VZkVD
    90  // TGiXav6ooKXfX3j/7tdkuD8Ey2//Kv7+ue0CAwEAAQJAN6W31vDEP2DjdqhzCDDu
    91  // OA4NACqoiFqyblo7yc2tM4h4xMbC3Yx5UKMN9ZkCtX0gzrz6DyF47bdKcWBzNWCj
    92  // gQIhANEoojVt7hq+SQ6MCN6FTAysGgQf56Q3TYoJMoWvdiXVAiEAw3e3rc+VJpOz
    93  // rHuDo6bgpjUAAXM+v3fcpsfZSNO6V7kCIQCtbVjanpUwvZkMI9by02oUk9taki3b
    94  // PzPfAfNPYAbCJQIhAJXNQDWyqwn/lGmR11cqY2y9nZ1+5w3yHGatLrcDnQHxAiEA
    95  // vnlEGo8K85u+KwIOimM48ZG8oTk7iFdkqLJR1utT3aU=
    96  // -----END RSA PRIVATE KEY-----
    97  //
    98  // and certificate is:
    99  // -----BEGIN CERTIFICATE-----
   100  // MIICKzCCAdWgAwIBAgIJALE1E2URIMWSMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV
   101  // BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX
   102  // aWRnaXRzIFB0eSBMdGQwHhcNMTIwNDA2MTcxMDEzWhcNMTUwNDA2MTcxMDEzWjBF
   103  // MQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50
   104  // ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJ+z
   105  // w4Qnlf8SMVIPFe9GEcStgOY2Ww/dgNdhjeD8ckUJNP5VZkVDTGiXav6ooKXfX3j/
   106  // 7tdkuD8Ey2//Kv7+ue0CAwEAAaOBpzCBpDAdBgNVHQ4EFgQUeKaXmmO1xaGlM7oi
   107  // fCNuWxt6zCswdQYDVR0jBG4wbIAUeKaXmmO1xaGlM7oifCNuWxt6zCuhSaRHMEUx
   108  // CzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRl
   109  // cm5ldCBXaWRnaXRzIFB0eSBMdGSCCQCxNRNlESDFkjAMBgNVHRMEBTADAQH/MA0G
   110  // CSqGSIb3DQEBBQUAA0EAhTZAc8G7GtrUWZ8tonAxRnTsg26oyDxRrzms7EC86CJG
   111  // HZnWRiok1IsFCEv7NRFukrt3uuQSu/TIXpyBqJdgTA==
   112  // -----END CERTIFICATE-----
   113  var rc4ClientScript = [][]byte{
   114  	{
   115  		0x16, 0x03, 0x01, 0x00, 0x4a, 0x01, 0x00, 0x00,
   116  		0x46, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
   117  		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   118  		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   119  		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   120  		0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x05,
   121  		0x01, 0x00, 0x00, 0x1b, 0x00, 0x05, 0x00, 0x05,
   122  		0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00,
   123  		0x08, 0x00, 0x06, 0x00, 0x17, 0x00, 0x18, 0x00,
   124  		0x19, 0x00, 0x0b, 0x00, 0x02, 0x01, 0x00,
   125  	},
   126  
   127  	{
   128  		0x16, 0x03, 0x01, 0x00, 0x4a, 0x02, 0x00, 0x00,
   129  		0x46, 0x03, 0x01, 0x4d, 0x0a, 0x56, 0x16, 0xb5,
   130  		0x91, 0xd1, 0xcb, 0x80, 0x4d, 0xc7, 0x46, 0xf3,
   131  		0x37, 0x0c, 0xef, 0xea, 0x64, 0x11, 0x14, 0x56,
   132  		0x97, 0x9b, 0xc5, 0x67, 0x08, 0xb7, 0x13, 0xea,
   133  		0xf8, 0xc9, 0xb3, 0x20, 0xe2, 0xfc, 0x41, 0xf6,
   134  		0x96, 0x90, 0x9d, 0x43, 0x9b, 0xe9, 0x6e, 0xf8,
   135  		0x41, 0x16, 0xcc, 0xf3, 0xc7, 0xde, 0xda, 0x5a,
   136  		0xa1, 0x33, 0x69, 0xe2, 0xde, 0x5b, 0xaf, 0x2a,
   137  		0x92, 0xe7, 0xd4, 0xa0, 0x00, 0x05, 0x00, 0x16,
   138  		0x03, 0x01, 0x01, 0xf7, 0x0b, 0x00, 0x01, 0xf3,
   139  		0x00, 0x01, 0xf0, 0x00, 0x01, 0xed, 0x30, 0x82,
   140  		0x01, 0xe9, 0x30, 0x82, 0x01, 0x52, 0x02, 0x01,
   141  		0x06, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48,
   142  		0x86, 0xf7, 0x0d, 0x01, 0x01, 0x04, 0x05, 0x00,
   143  		0x30, 0x5b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03,
   144  		0x55, 0x04, 0x06, 0x13, 0x02, 0x41, 0x55, 0x31,
   145  		0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08,
   146  		0x13, 0x0a, 0x51, 0x75, 0x65, 0x65, 0x6e, 0x73,
   147  		0x6c, 0x61, 0x6e, 0x64, 0x31, 0x1a, 0x30, 0x18,
   148  		0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x11, 0x43,
   149  		0x72, 0x79, 0x70, 0x74, 0x53, 0x6f, 0x66, 0x74,
   150  		0x20, 0x50, 0x74, 0x79, 0x20, 0x4c, 0x74, 0x64,
   151  		0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04,
   152  		0x03, 0x13, 0x12, 0x54, 0x65, 0x73, 0x74, 0x20,
   153  		0x43, 0x41, 0x20, 0x28, 0x31, 0x30, 0x32, 0x34,
   154  		0x20, 0x62, 0x69, 0x74, 0x29, 0x30, 0x1e, 0x17,
   155  		0x0d, 0x30, 0x30, 0x31, 0x30, 0x31, 0x36, 0x32,
   156  		0x32, 0x33, 0x31, 0x30, 0x33, 0x5a, 0x17, 0x0d,
   157  		0x30, 0x33, 0x30, 0x31, 0x31, 0x34, 0x32, 0x32,
   158  		0x33, 0x31, 0x30, 0x33, 0x5a, 0x30, 0x63, 0x31,
   159  		0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
   160  		0x13, 0x02, 0x41, 0x55, 0x31, 0x13, 0x30, 0x11,
   161  		0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x51,
   162  		0x75, 0x65, 0x65, 0x6e, 0x73, 0x6c, 0x61, 0x6e,
   163  		0x64, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55,
   164  		0x04, 0x0a, 0x13, 0x11, 0x43, 0x72, 0x79, 0x70,
   165  		0x74, 0x53, 0x6f, 0x66, 0x74, 0x20, 0x50, 0x74,
   166  		0x79, 0x20, 0x4c, 0x74, 0x64, 0x31, 0x23, 0x30,
   167  		0x21, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1a,
   168  		0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x74,
   169  		0x65, 0x73, 0x74, 0x20, 0x63, 0x65, 0x72, 0x74,
   170  		0x20, 0x28, 0x35, 0x31, 0x32, 0x20, 0x62, 0x69,
   171  		0x74, 0x29, 0x30, 0x5c, 0x30, 0x0d, 0x06, 0x09,
   172  		0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
   173  		0x01, 0x05, 0x00, 0x03, 0x4b, 0x00, 0x30, 0x48,
   174  		0x02, 0x41, 0x00, 0x9f, 0xb3, 0xc3, 0x84, 0x27,
   175  		0x95, 0xff, 0x12, 0x31, 0x52, 0x0f, 0x15, 0xef,
   176  		0x46, 0x11, 0xc4, 0xad, 0x80, 0xe6, 0x36, 0x5b,
   177  		0x0f, 0xdd, 0x80, 0xd7, 0x61, 0x8d, 0xe0, 0xfc,
   178  		0x72, 0x45, 0x09, 0x34, 0xfe, 0x55, 0x66, 0x45,
   179  		0x43, 0x4c, 0x68, 0x97, 0x6a, 0xfe, 0xa8, 0xa0,
   180  		0xa5, 0xdf, 0x5f, 0x78, 0xff, 0xee, 0xd7, 0x64,
   181  		0xb8, 0x3f, 0x04, 0xcb, 0x6f, 0xff, 0x2a, 0xfe,
   182  		0xfe, 0xb9, 0xed, 0x02, 0x03, 0x01, 0x00, 0x01,
   183  		0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
   184  		0xf7, 0x0d, 0x01, 0x01, 0x04, 0x05, 0x00, 0x03,
   185  		0x81, 0x81, 0x00, 0x93, 0xd2, 0x0a, 0xc5, 0x41,
   186  		0xe6, 0x5a, 0xa9, 0x86, 0xf9, 0x11, 0x87, 0xe4,
   187  		0xdb, 0x45, 0xe2, 0xc5, 0x95, 0x78, 0x1a, 0x6c,
   188  		0x80, 0x6d, 0x73, 0x1f, 0xb4, 0x6d, 0x44, 0xa3,
   189  		0xba, 0x86, 0x88, 0xc8, 0x58, 0xcd, 0x1c, 0x06,
   190  		0x35, 0x6c, 0x44, 0x62, 0x88, 0xdf, 0xe4, 0xf6,
   191  		0x64, 0x61, 0x95, 0xef, 0x4a, 0xa6, 0x7f, 0x65,
   192  		0x71, 0xd7, 0x6b, 0x88, 0x39, 0xf6, 0x32, 0xbf,
   193  		0xac, 0x93, 0x67, 0x69, 0x51, 0x8c, 0x93, 0xec,
   194  		0x48, 0x5f, 0xc9, 0xb1, 0x42, 0xf9, 0x55, 0xd2,
   195  		0x7e, 0x4e, 0xf4, 0xf2, 0x21, 0x6b, 0x90, 0x57,
   196  		0xe6, 0xd7, 0x99, 0x9e, 0x41, 0xca, 0x80, 0xbf,
   197  		0x1a, 0x28, 0xa2, 0xca, 0x5b, 0x50, 0x4a, 0xed,
   198  		0x84, 0xe7, 0x82, 0xc7, 0xd2, 0xcf, 0x36, 0x9e,
   199  		0x6a, 0x67, 0xb9, 0x88, 0xa7, 0xf3, 0x8a, 0xd0,
   200  		0x04, 0xf8, 0xe8, 0xc6, 0x17, 0xe3, 0xc5, 0x29,
   201  		0xbc, 0x17, 0xf1, 0x16, 0x03, 0x01, 0x00, 0x04,
   202  		0x0e, 0x00, 0x00, 0x00,
   203  	},
   204  
   205  	{
   206  		0x16, 0x03, 0x01, 0x00, 0x46, 0x10, 0x00, 0x00,
   207  		0x42, 0x00, 0x40, 0x87, 0xa1, 0x1f, 0x14, 0xe1,
   208  		0xfb, 0x91, 0xac, 0x58, 0x2e, 0xf3, 0x71, 0xce,
   209  		0x01, 0x85, 0x2c, 0xc7, 0xfe, 0x84, 0x87, 0x82,
   210  		0xb7, 0x57, 0xdb, 0x37, 0x4d, 0x46, 0x83, 0x67,
   211  		0x52, 0x82, 0x51, 0x01, 0x95, 0x23, 0x68, 0x69,
   212  		0x6b, 0xd0, 0xa7, 0xa7, 0xe5, 0x88, 0xd0, 0x47,
   213  		0x71, 0xb8, 0xd2, 0x03, 0x05, 0x25, 0x56, 0x5c,
   214  		0x10, 0x08, 0xc6, 0x9b, 0xd4, 0x67, 0xcd, 0x28,
   215  		0xbe, 0x9c, 0x48, 0x14, 0x03, 0x01, 0x00, 0x01,
   216  		0x01, 0x16, 0x03, 0x01, 0x00, 0x24, 0xc1, 0xb8,
   217  		0xd3, 0x7f, 0xc5, 0xc2, 0x5a, 0x1d, 0x6d, 0x5b,
   218  		0x2d, 0x5c, 0x82, 0x87, 0xc2, 0x6f, 0x0d, 0x63,
   219  		0x7b, 0x72, 0x2b, 0xda, 0x69, 0xc4, 0xfe, 0x3c,
   220  		0x84, 0xa1, 0x5a, 0x62, 0x38, 0x37, 0xc6, 0x54,
   221  		0x25, 0x2a,
   222  	},
   223  
   224  	{
   225  		0x14, 0x03, 0x01, 0x00, 0x01, 0x01, 0x16, 0x03,
   226  		0x01, 0x00, 0x24, 0xea, 0x88, 0x9c, 0x00, 0xf6,
   227  		0x35, 0xb8, 0x42, 0x7f, 0x15, 0x17, 0x76, 0x5e,
   228  		0x4b, 0x24, 0xcb, 0x7e, 0xa0, 0x7b, 0xc3, 0x70,
   229  		0x52, 0x0a, 0x88, 0x2a, 0x7a, 0x45, 0x59, 0x90,
   230  		0x59, 0xac, 0xc6, 0xb5, 0x56, 0x55, 0x96,
   231  	},
   232  }
   233  
   234  var ecdheAESClientScript = [][]byte{
   235  	{
   236  		0x16, 0x03, 0x01, 0x00, 0x4a, 0x01, 0x00, 0x00,
   237  		0x46, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
   238  		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   239  		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   240  		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   241  		0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xc0, 0x13,
   242  		0x01, 0x00, 0x00, 0x1b, 0x00, 0x05, 0x00, 0x05,
   243  		0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00,
   244  		0x08, 0x00, 0x06, 0x00, 0x17, 0x00, 0x18, 0x00,
   245  		0x19, 0x00, 0x0b, 0x00, 0x02, 0x01, 0x00,
   246  	},
   247  	{
   248  		0x16, 0x03, 0x01, 0x00, 0x52, 0x02, 0x00, 0x00,
   249  		0x4e, 0x03, 0x01, 0x50, 0xad, 0x72, 0xb1, 0x14,
   250  		0x45, 0xce, 0x0a, 0x95, 0xf9, 0x63, 0xef, 0xa8,
   251  		0xe5, 0x07, 0x34, 0x04, 0xe9, 0x08, 0x0f, 0x38,
   252  		0xe4, 0x28, 0x27, 0x91, 0x07, 0x03, 0xe2, 0xfe,
   253  		0xe3, 0x25, 0xf7, 0x20, 0x08, 0x42, 0xa2, 0x01,
   254  		0x69, 0x53, 0xf0, 0xd9, 0x4c, 0xfa, 0x01, 0xa1,
   255  		0xce, 0x4b, 0xf8, 0x28, 0x21, 0xad, 0x06, 0xbe,
   256  		0xe0, 0x1b, 0x3b, 0xf7, 0xec, 0xd2, 0x52, 0xae,
   257  		0x2a, 0x57, 0xb7, 0xa8, 0xc0, 0x13, 0x00, 0x00,
   258  		0x06, 0x00, 0x0b, 0x00, 0x02, 0x01, 0x00, 0x16,
   259  		0x03, 0x01, 0x02, 0x39, 0x0b, 0x00, 0x02, 0x35,
   260  		0x00, 0x02, 0x32, 0x00, 0x02, 0x2f, 0x30, 0x82,
   261  		0x02, 0x2b, 0x30, 0x82, 0x01, 0xd5, 0xa0, 0x03,
   262  		0x02, 0x01, 0x02, 0x02, 0x09, 0x00, 0xb1, 0x35,
   263  		0x13, 0x65, 0x11, 0x20, 0xc5, 0x92, 0x30, 0x0d,
   264  		0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
   265  		0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x45, 0x31,
   266  		0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
   267  		0x13, 0x02, 0x41, 0x55, 0x31, 0x13, 0x30, 0x11,
   268  		0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x53,
   269  		0x6f, 0x6d, 0x65, 0x2d, 0x53, 0x74, 0x61, 0x74,
   270  		0x65, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55,
   271  		0x04, 0x0a, 0x13, 0x18, 0x49, 0x6e, 0x74, 0x65,
   272  		0x72, 0x6e, 0x65, 0x74, 0x20, 0x57, 0x69, 0x64,
   273  		0x67, 0x69, 0x74, 0x73, 0x20, 0x50, 0x74, 0x79,
   274  		0x20, 0x4c, 0x74, 0x64, 0x30, 0x1e, 0x17, 0x0d,
   275  		0x31, 0x32, 0x30, 0x34, 0x30, 0x36, 0x31, 0x37,
   276  		0x31, 0x30, 0x31, 0x33, 0x5a, 0x17, 0x0d, 0x31,
   277  		0x35, 0x30, 0x34, 0x30, 0x36, 0x31, 0x37, 0x31,
   278  		0x30, 0x31, 0x33, 0x5a, 0x30, 0x45, 0x31, 0x0b,
   279  		0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
   280  		0x02, 0x41, 0x55, 0x31, 0x13, 0x30, 0x11, 0x06,
   281  		0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x53, 0x6f,
   282  		0x6d, 0x65, 0x2d, 0x53, 0x74, 0x61, 0x74, 0x65,
   283  		0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04,
   284  		0x0a, 0x13, 0x18, 0x49, 0x6e, 0x74, 0x65, 0x72,
   285  		0x6e, 0x65, 0x74, 0x20, 0x57, 0x69, 0x64, 0x67,
   286  		0x69, 0x74, 0x73, 0x20, 0x50, 0x74, 0x79, 0x20,
   287  		0x4c, 0x74, 0x64, 0x30, 0x5c, 0x30, 0x0d, 0x06,
   288  		0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
   289  		0x01, 0x01, 0x05, 0x00, 0x03, 0x4b, 0x00, 0x30,
   290  		0x48, 0x02, 0x41, 0x00, 0x9f, 0xb3, 0xc3, 0x84,
   291  		0x27, 0x95, 0xff, 0x12, 0x31, 0x52, 0x0f, 0x15,
   292  		0xef, 0x46, 0x11, 0xc4, 0xad, 0x80, 0xe6, 0x36,
   293  		0x5b, 0x0f, 0xdd, 0x80, 0xd7, 0x61, 0x8d, 0xe0,
   294  		0xfc, 0x72, 0x45, 0x09, 0x34, 0xfe, 0x55, 0x66,
   295  		0x45, 0x43, 0x4c, 0x68, 0x97, 0x6a, 0xfe, 0xa8,
   296  		0xa0, 0xa5, 0xdf, 0x5f, 0x78, 0xff, 0xee, 0xd7,
   297  		0x64, 0xb8, 0x3f, 0x04, 0xcb, 0x6f, 0xff, 0x2a,
   298  		0xfe, 0xfe, 0xb9, 0xed, 0x02, 0x03, 0x01, 0x00,
   299  		0x01, 0xa3, 0x81, 0xa7, 0x30, 0x81, 0xa4, 0x30,
   300  		0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16,
   301  		0x04, 0x14, 0x78, 0xa6, 0x97, 0x9a, 0x63, 0xb5,
   302  		0xc5, 0xa1, 0xa5, 0x33, 0xba, 0x22, 0x7c, 0x23,
   303  		0x6e, 0x5b, 0x1b, 0x7a, 0xcc, 0x2b, 0x30, 0x75,
   304  		0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x6e, 0x30,
   305  		0x6c, 0x80, 0x14, 0x78, 0xa6, 0x97, 0x9a, 0x63,
   306  		0xb5, 0xc5, 0xa1, 0xa5, 0x33, 0xba, 0x22, 0x7c,
   307  		0x23, 0x6e, 0x5b, 0x1b, 0x7a, 0xcc, 0x2b, 0xa1,
   308  		0x49, 0xa4, 0x47, 0x30, 0x45, 0x31, 0x0b, 0x30,
   309  		0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
   310  		0x41, 0x55, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03,
   311  		0x55, 0x04, 0x08, 0x13, 0x0a, 0x53, 0x6f, 0x6d,
   312  		0x65, 0x2d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x31,
   313  		0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0a,
   314  		0x13, 0x18, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e,
   315  		0x65, 0x74, 0x20, 0x57, 0x69, 0x64, 0x67, 0x69,
   316  		0x74, 0x73, 0x20, 0x50, 0x74, 0x79, 0x20, 0x4c,
   317  		0x74, 0x64, 0x82, 0x09, 0x00, 0xb1, 0x35, 0x13,
   318  		0x65, 0x11, 0x20, 0xc5, 0x92, 0x30, 0x0c, 0x06,
   319  		0x03, 0x55, 0x1d, 0x13, 0x04, 0x05, 0x30, 0x03,
   320  		0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a,
   321  		0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05,
   322  		0x05, 0x00, 0x03, 0x41, 0x00, 0x85, 0x36, 0x40,
   323  		0x73, 0xc1, 0xbb, 0x1a, 0xda, 0xd4, 0x59, 0x9f,
   324  		0x2d, 0xa2, 0x70, 0x31, 0x46, 0x74, 0xec, 0x83,
   325  		0x6e, 0xa8, 0xc8, 0x3c, 0x51, 0xaf, 0x39, 0xac,
   326  		0xec, 0x40, 0xbc, 0xe8, 0x22, 0x46, 0x1d, 0x99,
   327  		0xd6, 0x46, 0x2a, 0x24, 0xd4, 0x8b, 0x05, 0x08,
   328  		0x4b, 0xfb, 0x35, 0x11, 0x6e, 0x92, 0xbb, 0x77,
   329  		0xba, 0xe4, 0x12, 0xbb, 0xf4, 0xc8, 0x5e, 0x9c,
   330  		0x81, 0xa8, 0x97, 0x60, 0x4c, 0x16, 0x03, 0x01,
   331  		0x00, 0x8b, 0x0c, 0x00, 0x00, 0x87, 0x03, 0x00,
   332  		0x17, 0x41, 0x04, 0x1c, 0x8f, 0x9c, 0x6d, 0xe7,
   333  		0xab, 0x3e, 0xf8, 0x0a, 0x5d, 0xe1, 0x86, 0xb4,
   334  		0xe2, 0x8e, 0xb2, 0x1c, 0x3b, 0xd9, 0xb6, 0x08,
   335  		0x80, 0x58, 0x21, 0xe9, 0x0e, 0xc6, 0x66, 0x67,
   336  		0x97, 0xcb, 0xb9, 0x92, 0x07, 0x00, 0xc4, 0xe5,
   337  		0xec, 0x5f, 0xb4, 0xe2, 0x20, 0xa9, 0xc9, 0x62,
   338  		0xd0, 0x98, 0xd5, 0xe3, 0x53, 0xff, 0xd0, 0x0a,
   339  		0x6e, 0x29, 0x69, 0x39, 0x2a, 0x4b, 0x5c, 0xd8,
   340  		0x6c, 0xf5, 0xfe, 0x00, 0x40, 0x35, 0xa7, 0x26,
   341  		0x2e, 0xc2, 0x48, 0x93, 0x32, 0xf7, 0x7d, 0x0f,
   342  		0x0d, 0x77, 0x56, 0x9a, 0x85, 0x0c, 0xa6, 0x74,
   343  		0x06, 0xb8, 0x3d, 0x90, 0x56, 0x12, 0x63, 0xff,
   344  		0x00, 0x5e, 0x0f, 0xf7, 0x24, 0xf7, 0xdb, 0x48,
   345  		0x71, 0xe9, 0x2e, 0x03, 0xd3, 0xfa, 0x3a, 0xae,
   346  		0xa0, 0xc1, 0x77, 0x3c, 0x4c, 0x59, 0xce, 0x33,
   347  		0x1a, 0xd2, 0x47, 0x83, 0xfa, 0xea, 0xd8, 0x1e,
   348  		0x06, 0xe7, 0x7d, 0xa0, 0x9b, 0x16, 0x03, 0x01,
   349  		0x00, 0x04, 0x0e, 0x00, 0x00, 0x00,
   350  	},
   351  	{
   352  		0x16, 0x03, 0x01, 0x00, 0x46, 0x10, 0x00, 0x00,
   353  		0x42, 0x41, 0x04, 0x1e, 0x18, 0x37, 0xef, 0x0d,
   354  		0x19, 0x51, 0x88, 0x35, 0x75, 0x71, 0xb5, 0xe5,
   355  		0x54, 0x5b, 0x12, 0x2e, 0x8f, 0x09, 0x67, 0xfd,
   356  		0xa7, 0x24, 0x20, 0x3e, 0xb2, 0x56, 0x1c, 0xce,
   357  		0x97, 0x28, 0x5e, 0xf8, 0x2b, 0x2d, 0x4f, 0x9e,
   358  		0xf1, 0x07, 0x9f, 0x6c, 0x4b, 0x5b, 0x83, 0x56,
   359  		0xe2, 0x32, 0x42, 0xe9, 0x58, 0xb6, 0xd7, 0x49,
   360  		0xa6, 0xb5, 0x68, 0x1a, 0x41, 0x03, 0x56, 0x6b,
   361  		0xdc, 0x5a, 0x89, 0x14, 0x03, 0x01, 0x00, 0x01,
   362  		0x01, 0x16, 0x03, 0x01, 0x00, 0x30, 0xd9, 0xa7,
   363  		0x80, 0x56, 0x3f, 0xa3, 0x8f, 0x96, 0x72, 0x4e,
   364  		0x4e, 0x6e, 0x23, 0x41, 0x8f, 0xda, 0x91, 0xb2,
   365  		0x9e, 0x63, 0x23, 0x82, 0x64, 0xcd, 0x07, 0x24,
   366  		0xd3, 0x40, 0x20, 0x22, 0x4c, 0xe3, 0xff, 0x38,
   367  		0xbb, 0x43, 0x9d, 0x57, 0x11, 0xd5, 0x46, 0xa5,
   368  		0x05, 0x29, 0x92, 0x02, 0xce, 0xdf,
   369  	},
   370  	{
   371  		0x14, 0x03, 0x01, 0x00, 0x01, 0x01, 0x16, 0x03,
   372  		0x01, 0x00, 0x90, 0xe7, 0xba, 0x0e, 0xb1, 0xda,
   373  		0x92, 0xb5, 0x77, 0x56, 0x38, 0xa6, 0x22, 0xc1,
   374  		0x72, 0xeb, 0x8a, 0x68, 0x09, 0xb6, 0x74, 0xad,
   375  		0xb3, 0x4a, 0xf2, 0xdd, 0x09, 0x9b, 0xc9, 0x4f,
   376  		0x84, 0x73, 0x8b, 0xd6, 0x97, 0x50, 0x23, 0x1c,
   377  		0xa0, 0xc2, 0x0c, 0x25, 0x18, 0xdd, 0x5e, 0x15,
   378  		0x4d, 0xd9, 0xef, 0x4f, 0x6a, 0x43, 0x61, 0x9c,
   379  		0x95, 0xde, 0x3c, 0x66, 0xc4, 0xc1, 0x33, 0x56,
   380  		0xdd, 0x2f, 0x90, 0xaf, 0x68, 0x5c, 0x9c, 0xa4,
   381  		0x90, 0x6d, 0xbf, 0x51, 0x1d, 0x68, 0xcb, 0x81,
   382  		0x77, 0x52, 0xa0, 0x93, 0x2a, 0xf8, 0xc7, 0x61,
   383  		0x87, 0x76, 0xca, 0x93, 0x9e, 0xd6, 0xee, 0x6f,
   384  		0x3f, 0xeb, 0x7d, 0x06, 0xdd, 0x73, 0x4e, 0x27,
   385  		0x16, 0x63, 0x92, 0xe4, 0xb2, 0x3f, 0x91, 0x23,
   386  		0x21, 0x97, 0x90, 0xce, 0x53, 0xb8, 0xb0, 0x9d,
   387  		0xbd, 0xbd, 0x33, 0x84, 0xad, 0x6b, 0x2e, 0x7b,
   388  		0xf5, 0xeb, 0x1d, 0x64, 0x37, 0x2e, 0x29, 0x4e,
   389  		0xb0, 0x93, 0xdb, 0x92, 0xc7, 0xaa, 0x94, 0xa5,
   390  		0x3b, 0x64, 0xd0,
   391  	},
   392  	{
   393  		0x17, 0x03, 0x01, 0x00, 0x20, 0x11, 0xd8, 0x6b,
   394  		0x3c, 0xf6, 0xbe, 0xf4, 0x54, 0x87, 0xec, 0x75,
   395  		0x0c, 0x44, 0xdb, 0x92, 0xfc, 0xde, 0x7e, 0x0f,
   396  		0x9f, 0x87, 0x87, 0x9c, 0x03, 0xd5, 0x07, 0x84,
   397  		0xe0, 0x3a, 0xf8, 0xae, 0x14, 0x17, 0x03, 0x01,
   398  		0x00, 0x20, 0xba, 0x54, 0xef, 0x5b, 0xce, 0xfd,
   399  		0x47, 0x76, 0x6d, 0xa1, 0x8b, 0xfd, 0x48, 0xde,
   400  		0x6e, 0x26, 0xc1, 0x0c, 0x9d, 0x54, 0xbf, 0x98,
   401  		0xf6, 0x1c, 0x80, 0xb9, 0xca, 0x93, 0x81, 0x0a,
   402  		0x2e, 0x06, 0x15, 0x03, 0x01, 0x00, 0x20, 0x93,
   403  		0x3e, 0x38, 0x17, 0xc9, 0x0a, 0xc3, 0xea, 0xd3,
   404  		0x92, 0x75, 0xa6, 0x53, 0x37, 0x4d, 0x74, 0x94,
   405  		0xbe, 0x01, 0xdc, 0x5c, 0x5a, 0x0f, 0x09, 0xf6,
   406  		0x57, 0x33, 0xc3, 0xbc, 0x3f, 0x7a, 0x4d,
   407  	},
   408  }