~artmello/ubuntu-push/ubuntu-push-fix_1611848

« back to all changes in this revision

Viewing changes to testing/tls.go

  • Committer: CI Train Bot
  • Author(s): Ricardo Salveti de Araujo
  • Date: 2015-04-30 15:08:54 UTC
  • mfrom: (145.1.2 ubuntu-push)
  • Revision ID: ci-train-bot@canonical.com-20150430150854-2u38lu0oi8rtomo1
[ Samuele Pedroni ]
* switch poller to use killswitch state for WLAN instead of misleading NM property (LP: #1446584)
* don't have goroutines from a previous test overlap with the next, races gets detected otherwise
* have the TestDialWorksDirect* tests quickly timeout, go1.3 wants a ServerName set in the tls config for them to work
* fix flaky test
* support sha384/512 certs, some exercizing of that
* let send a build number with acceptanceclient
* add helper to get int out of ConnectMsg Info
Approved by: Samuele Pedroni

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
import (
20
20
        "crypto/tls"
21
21
        "crypto/x509"
 
22
        "io/ioutil"
22
23
)
23
24
 
24
25
// key&cert generated with go run /usr/lib/go/src/pkg/crypto/tls/generate_cert.go -ca -host push-delivery -rsa-bits 512 -duration 87600h
43
44
DQEBBQNBABtWCdMFkhIO8+oM3vugOWle9WJZ1FCRWD+cMl76mI1lhmNF4lvEZG47
44
45
xUjekA1+heU39WpOEzZSybrOdiEaGbI=
45
46
-----END CERTIFICATE-----`)
46
 
)
47
 
 
48
 
// test tls server & client config
49
 
var TestTLSServerConfig, TestTLSClientConfig *tls.Config
 
47
 
 
48
        // key&cert generated with openssl req -x509 -nodes -newkey rsa:2048
 
49
        // -multivalue-rdn -sha512 -days 3650 -keyout testing.key -out
 
50
        // testing.cert -subj "/O=Acme Co/CN=push-delivery/"
 
51
        TestKeyPEMBlock512 = []byte(`-----BEGIN PRIVATE KEY-----
 
52
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC4ySO/avJFWps8
 
53
AygUZ0dcylNr1UxZb4QPHuO93OXAkYX5ngw7TjnWIGHjvoLzLzPZCxlrGl7e+M1H
 
54
GNZqFT3kFv/XYexp9Cx3MCDy0ZWkK9BAVDTAxMkjSR8ZwRjByQqniilDA/kr92NQ
 
55
yaL0GlajsxpmcGMjDM0Dp5QF+inQM48ADJpJl0xlfFwE8CwfVVGM8G/ZtQpBJ3AN
 
56
RelEG1iF8tsT9nVlWF37Zp9Wp/CxDDVTuzboZx9pkryOeJmm0l93x1aoSy6DTVyg
 
57
zjdAOjKFjSsjY7we7x7GgpHuUtXymVH7OHdc0ji5+2O+yf9VEDxuym0fJJEgVLfX
 
58
ungSHFxJAgMBAAECggEAeC2gyTqF7KM7+LDY3UQ6Plf8H1KvAC+txKPDXFURO8ep
 
59
SaoHrH540RFoeNULl5uobc1xL54L+5n27/lwYbgE85YduHegaVx7mty7YRD78LTq
 
60
ERxy3rhdVEyXJInYTxgwjLwnj8VCxdx0RDOPfpCurnKqhdssLryBjZHsjGKh1RzH
 
61
bv5fNrqMhU0uH82cOKXy20uzyVo5zuLwWA+PxCEeOTMumpWgN4PmtMrjUot2t2/q
 
62
jVoEkrB3B5Xs/s8OrEv10t90nNQPcKT89Kts/jdmgDNNg/dtILogiD4JshTG8fIB
 
63
STUArRDCE0NXOmB0XuXRxk8YlZyBj2AsIUQcFRrOgQKBgQDrAkE77wIZcCJRYGxK
 
64
KkB5zE5Lei44dKEHU5zIueOflsWFC+RZGWVn1+hTQw9Sk1kqm5atrDbfMZDOk62U
 
65
bNcQLT+QqDRo3iSYLo9Q5hFNNxMGUm6RMHApr5iIZeoBFDZ7b4+zCEEFNtYukvjY
 
66
DWyeTgUqftoOTDebHbHrk9w/0QKBgQDJSnnestarqjLXyF4RWzcFTsDjFgRv53Cq
 
67
WrpiQUkk5JLlKliwoTAGTxzH2skJofT6OAQjrc5489mc5Gt6TVwWB49l+OzzG4H/
 
68
QSe5X9I5BEEcdD27wDwsaO/NsusM9jZ4IjauTKR5XqGoepbrWrm7+lBgEe1DvBWx
 
69
C71U7Eoq+QKBgQDNJT2+zMf/XrSGZu6A21tHN0KNfo2EeMLsu19clXCPKjUoDBZ8
 
70
dL/ho0bKD/r7MWcf24vv9So9MW5f9egLbeta0rTvWPXPKUO2mMZAb2VhCxePaDve
 
71
f/MZYJB9WMGpyXQ50kwVk7n2jETxiRiyuR09H4xA6VT+MChGPujGZV9ZUQKBgH7i
 
72
06/uTCQqRaKAS8vlE+nkmvKLDoD8A6lfR95oCROYgoCzEPVGpl9Tv3C8Gb5YuXSB
 
73
mxpilaTpEmQ0GQwfd8zrNxmwsK0OygN9ruzL2ljWtbSaEdAofcYA4Clqf4DMM8nG
 
74
x3FYHtXjMURjAn+Z0TsNr1zf8BCin4nbPJ4r1RUBAoGBALFHLtEWwVxpm3MN4f08
 
75
GtH2Phd289H0s5SaX/NaWYy44T+Q/d7LuYk72LWX1jZB/2V3OhiFzih0uK44PBM4
 
76
Gaiu8c/vl+M1hixeOenTrapE4ORaYt76INIEC8JpqEvGi0DYkUH1D4F8zzAiejgF
 
77
t+nz90UBRCRA8vtZ8fiwz8O0
 
78
-----END PRIVATE KEY-----`)
 
79
 
 
80
        TestCertPEMBlock512 = []byte(`-----BEGIN CERTIFICATE-----
 
81
MIIDJzCCAg+gAwIBAgIJAP9ScfFaKlalMA0GCSqGSIb3DQEBDQUAMCoxEDAOBgNV
 
82
BAoMB0FjbWUgQ28xFjAUBgNVBAMMDXB1c2gtZGVsaXZlcnkwHhcNMTUwNDE1MTYx
 
83
MDM1WhcNMjUwNDEyMTYxMDM1WjAqMRAwDgYDVQQKDAdBY21lIENvMRYwFAYDVQQD
 
84
DA1wdXNoLWRlbGl2ZXJ5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
 
85
uMkjv2ryRVqbPAMoFGdHXMpTa9VMWW+EDx7jvdzlwJGF+Z4MO0451iBh476C8y8z
 
86
2QsZaxpe3vjNRxjWahU95Bb/12HsafQsdzAg8tGVpCvQQFQ0wMTJI0kfGcEYwckK
 
87
p4opQwP5K/djUMmi9BpWo7MaZnBjIwzNA6eUBfop0DOPAAyaSZdMZXxcBPAsH1VR
 
88
jPBv2bUKQSdwDUXpRBtYhfLbE/Z1ZVhd+2afVqfwsQw1U7s26GcfaZK8jniZptJf
 
89
d8dWqEsug01coM43QDoyhY0rI2O8Hu8exoKR7lLV8plR+zh3XNI4uftjvsn/VRA8
 
90
bsptHySRIFS317p4EhxcSQIDAQABo1AwTjAdBgNVHQ4EFgQUG2Qk9GbWWfSPXRTE
 
91
+cfOZMljydAwHwYDVR0jBBgwFoAUG2Qk9GbWWfSPXRTE+cfOZMljydAwDAYDVR0T
 
92
BAUwAwEB/zANBgkqhkiG9w0BAQ0FAAOCAQEAUw36s8n8a39ECYUmSS5o+PdjmF1v
 
93
6K6ld5n7IlFVwCtA1Rkz2L2AUrko/ao1/ZgKhHsIBFQ7mm5fkvuNd14ZEJ0F8LyI
 
94
55Et63IYWYOPHl0oNmzTHex0WRL9nmNvxbQ5UytzGTE5amv/sZTOYH9qnpEes68O
 
95
TPP+C3OoM+U6hjOXNGG73zb54JHQUZ4arMg2gbVzxNXU2ReoKYKrYexGGuqIlHcE
 
96
XdOQp93oJfqWAj111YS6tIn63ccjx7bKzFzaufuVvCIsk0WrXG2rpuqx+0OYzRKc
 
97
deU3hnONgWVXjCQdNysBzUXLeOWcv1KuqScETvGZe7D1UIk7HWsAgnQnYQ==
 
98
-----END CERTIFICATE-----`)
 
99
 
 
100
        // key&cert, same as server/acceptance/ssl/testing.*
 
101
        TestKeyPEMBlockAcceptance []byte
 
102
 
 
103
        TestCertPEMBlockAcceptance []byte
 
104
)
 
105
 
 
106
// test tls server & client configs
 
107
var (
 
108
        TestTLSServerConfigs                     = map[string]*tls.Config{}
 
109
        TestTLSClientConfigs                     = map[string]*tls.Config{}
 
110
        TestTLSServerConfig, TestTLSClientConfig *tls.Config
 
111
)
50
112
 
51
113
func init() {
52
 
        cert, err := tls.X509KeyPair(TestCertPEMBlock, TestKeyPEMBlock)
53
 
        if err != nil {
54
 
                panic(err)
55
 
        }
56
 
        TestTLSServerConfig = &tls.Config{
57
 
                Certificates: []tls.Certificate{cert},
58
 
        }
59
 
        cp := x509.NewCertPool()
60
 
        ok := cp.AppendCertsFromPEM(TestCertPEMBlock)
61
 
        if !ok {
62
 
                panic("failed to parse test cert")
63
 
        }
64
 
        TestTLSClientConfig = &tls.Config{
65
 
                RootCAs:    cp,
66
 
                ServerName: "push-delivery",
67
 
        }
 
114
        var err error
 
115
        TestKeyPEMBlockAcceptance, err = ioutil.ReadFile(SourceRelative("../server/acceptance/ssl/testing.key"))
 
116
        if err != nil {
 
117
                panic(err)
 
118
        }
 
119
 
 
120
        TestCertPEMBlockAcceptance, err = ioutil.ReadFile(SourceRelative("../server/acceptance/ssl/testing.cert"))
 
121
        if err != nil {
 
122
                panic(err)
 
123
        }
 
124
 
 
125
        for _, cfgBits := range []struct {
 
126
                label string
 
127
                key   []byte
 
128
                cert  []byte
 
129
        }{
 
130
                {"sha1", TestKeyPEMBlock, TestCertPEMBlock},
 
131
                {"sha512", TestKeyPEMBlock512, TestCertPEMBlock512},
 
132
                {"acceptance", TestKeyPEMBlockAcceptance, TestCertPEMBlockAcceptance},
 
133
        } {
 
134
                cert, err := tls.X509KeyPair(cfgBits.cert, cfgBits.key)
 
135
                if err != nil {
 
136
                        panic(err)
 
137
                }
 
138
                tlsServerConfig := &tls.Config{
 
139
                        Certificates: []tls.Certificate{cert},
 
140
                }
 
141
                cp := x509.NewCertPool()
 
142
                ok := cp.AppendCertsFromPEM(cfgBits.cert)
 
143
                if !ok {
 
144
                        panic("failed to parse test cert")
 
145
                }
 
146
                tlsClientConfig := &tls.Config{
 
147
                        RootCAs:    cp,
 
148
                        ServerName: "push-delivery",
 
149
                }
 
150
                TestTLSClientConfigs[cfgBits.label] = tlsClientConfig
 
151
                TestTLSServerConfigs[cfgBits.label] = tlsServerConfig
 
152
        }
 
153
        TestTLSClientConfig = TestTLSClientConfigs["sha1"]
 
154
        TestTLSServerConfig = TestTLSServerConfigs["sha1"]
68
155
}