OLD | NEW |
1 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | 1 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 import datetime, logging, re, subprocess, os | 5 import datetime, logging, re, subprocess, os |
6 | 6 |
7 # These certificate trees are for testing only in sealed containers | 7 # These certificate trees are for testing only in sealed containers |
8 # so it is okay that we have them checked into a GIT repository. | 8 # so it is okay that we have them checked into a GIT repository. |
9 # Nobody will ever use this information on the open air. | 9 # Nobody will ever use this information on the open air. |
10 | 10 |
11 cert_info = { | 11 cert_info = { |
12 'cert1': { | 12 'cert1': { |
13 'router': { | 13 'router': { |
14 'ca_cert': | 14 'ca_cert': |
15 """-----BEGIN CERTIFICATE----- | 15 """-----BEGIN CERTIFICATE----- |
16 MIIDMTCCApqgAwIBAgIJANAMhNy2leWKMA0GCSqGSIb3DQEBBQUAMG8xCzAJBgNV | 16 MIIDMTCCApqgAwIBAgIJANAMhNy2leWKMA0GCSqGSIb3DQEBBQUAMG8xCzAJBgNV |
17 BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBW | 17 BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBW |
18 aWV3MTMwMQYDVQQDEypjaHJvbWVsYWItd2lmaS10ZXN0YmVkLXJvb3QubXR2Lmdv | 18 aWV3MTMwMQYDVQQDEypjaHJvbWVsYWItd2lmaS10ZXN0YmVkLXJvb3QubXR2Lmdv |
19 b2dsZS5jb20wHhcNMTAwODExMDAyODI3WhcNMjAwODA4MDAyODI3WjBvMQswCQYD | 19 b2dsZS5jb20wHhcNMTAwODExMDAyODI3WhcNMjAwODA4MDAyODI3WjBvMQswCQYD |
20 VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4g | 20 VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4g |
21 VmlldzEzMDEGA1UEAxMqY2hyb21lbGFiLXdpZmktdGVzdGJlZC1yb290Lm10di5n | 21 VmlldzEzMDEGA1UEAxMqY2hyb21lbGFiLXdpZmktdGVzdGJlZC1yb290Lm10di5n |
22 b29nbGUuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDKzIZQXJjjtuQO | 22 b29nbGUuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDKzIZQXJjjtuQO |
23 hQvHUa436mSOSo7PTP4cM39Ip7dlSRqTL+lHdQN9d0dgrYQFvlHwaG5CBVYhtFtQ | 23 hQvHUa436mSOSo7PTP4cM39Ip7dlSRqTL+lHdQN9d0dgrYQFvlHwaG5CBVYhtFtQ |
24 JMy2ozauwTwtD5oHHL0DyhhgNA9H4zrTpM/t5euHpZwrOik7lnw87JBdKto/wy5X | 24 JMy2ozauwTwtD5oHHL0DyhhgNA9H4zrTpM/t5euHpZwrOik7lnw87JBdKto/wy5X |
25 bhKOwvrRSsJIVLc2j5bD0225EPff6wIDAQABo4HUMIHRMB0GA1UdDgQWBBRw5Wl2 | 25 bhKOwvrRSsJIVLc2j5bD0225EPff6wIDAQABo4HUMIHRMB0GA1UdDgQWBBRw5Wl2 |
26 YFf67mTeir0yYaF/jUS9QTCBoQYDVR0jBIGZMIGWgBRw5Wl2YFf67mTeir0yYaF/ | 26 YFf67mTeir0yYaF/jUS9QTCBoQYDVR0jBIGZMIGWgBRw5Wl2YFf67mTeir0yYaF/ |
27 jUS9QaFzpHEwbzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAU | 27 jUS9QaFzpHEwbzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAU |
28 BgNVBAcTDU1vdW50YWluIFZpZXcxMzAxBgNVBAMTKmNocm9tZWxhYi13aWZpLXRl | 28 BgNVBAcTDU1vdW50YWluIFZpZXcxMzAxBgNVBAMTKmNocm9tZWxhYi13aWZpLXRl |
29 c3RiZWQtcm9vdC5tdHYuZ29vZ2xlLmNvbYIJANAMhNy2leWKMAwGA1UdEwQFMAMB | 29 c3RiZWQtcm9vdC5tdHYuZ29vZ2xlLmNvbYIJANAMhNy2leWKMAwGA1UdEwQFMAMB |
30 Af8wDQYJKoZIhvcNAQEFBQADgYEAZAiBupvbckbb9ICASaz0a1uE4VNSqAZhhBXm | 30 Af8wDQYJKoZIhvcNAQEFBQADgYEAZAiBupvbckbb9ICASaz0a1uE4VNSqAZhhBXm |
31 AmrjmwnYU+yFkGgscyoq6wLzA+VbbfeBo088GT1LTyzUFqnsLNk7NrT1dtuCPijS | 31 AmrjmwnYU+yFkGgscyoq6wLzA+VbbfeBo088GT1LTyzUFqnsLNk7NrT1dtuCPijS |
32 p8gKkMu03kpkoKO0H9OB7HMRcdB7O87c5S1de4PLqdTwooF0f+yT6dqivUHgP5KF | 32 p8gKkMu03kpkoKO0H9OB7HMRcdB7O87c5S1de4PLqdTwooF0f+yT6dqivUHgP5KF |
33 K3F2V44= | 33 K3F2V44= |
34 -----END CERTIFICATE-----""", | 34 -----END CERTIFICATE-----""", |
35 'server_cert': | 35 'server_cert': |
36 """-----BEGIN CERTIFICATE----- | 36 """-----BEGIN CERTIFICATE----- |
37 MIIDPTCCAqagAwIBAgIDEAABMA0GCSqGSIb3DQEBBAUAMG8xCzAJBgNVBAYTAlVT | 37 MIIDPTCCAqagAwIBAgIDEAABMA0GCSqGSIb3DQEBBAUAMG8xCzAJBgNVBAYTAlVT |
38 MRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MTMw | 38 MRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MTMw |
39 MQYDVQQDEypjaHJvbWVsYWItd2lmaS10ZXN0YmVkLXJvb3QubXR2Lmdvb2dsZS5j | 39 MQYDVQQDEypjaHJvbWVsYWItd2lmaS10ZXN0YmVkLXJvb3QubXR2Lmdvb2dsZS5j |
40 b20wHhcNMTAwODExMDAyODI3WhcNMTEwODExMDAyODI3WjBxMQswCQYDVQQGEwJV | 40 b20wHhcNMTAwODExMDAyODI3WhcNMTEwODExMDAyODI3WjBxMQswCQYDVQQGEwJV |
41 UzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzE1 | 41 UzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzE1 |
42 MDMGA1UEAxMsY2hyb21lbGFiLXdpZmktdGVzdGJlZC1zZXJ2ZXIubXR2Lmdvb2ds | 42 MDMGA1UEAxMsY2hyb21lbGFiLXdpZmktdGVzdGJlZC1zZXJ2ZXIubXR2Lmdvb2ds |
43 ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAPn4bKRL1o6E0V9346pa | 43 ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAPn4bKRL1o6E0V9346pa |
44 ZNmeVujp8L6gIxk1z5cFDcs07K7XV4ML/M2GPaYuHFGYgs5PO29Bju/oG246kI/o | 44 ZNmeVujp8L6gIxk1z5cFDcs07K7XV4ML/M2GPaYuHFGYgs5PO29Bju/oG246kI/o |
45 n7uEEcVedXWYOuQL+W3QI7c6NYsAiQmMSpLRlqX9q0QCAMXs/Hipm0oKGYA5Tsdo | 45 n7uEEcVedXWYOuQL+W3QI7c6NYsAiQmMSpLRlqX9q0QCAMXs/Hipm0oKGYA5Tsdo |
(...skipping 19 matching lines...) Expand all Loading... |
65 ncjrqB0ebQJBAPqe+jk97pazkSKqIyXogpApZ1EbJHHJblS4HU/FAq0wZHMqvDmy | 65 ncjrqB0ebQJBAPqe+jk97pazkSKqIyXogpApZ1EbJHHJblS4HU/FAq0wZHMqvDmy |
66 8sQR+B7RZ96MnuIGsVIbKz0BveuD+wn7+H8CQHl9k32JxVGsIiPVznVqGskmI8w6 | 66 8sQR+B7RZ96MnuIGsVIbKz0BveuD+wn7+H8CQHl9k32JxVGsIiPVznVqGskmI8w6 |
67 4+n+Y0hazRFKGw+uVfru8joiG1J4HZ+TDXRuHZpnDfCHft7DqyHLaw2XpVUCQCGW | 67 4+n+Y0hazRFKGw+uVfru8joiG1J4HZ+TDXRuHZpnDfCHft7DqyHLaw2XpVUCQCGW |
68 UrR/L011DTtXD9TRv0Wwts7w00aIl0e1UQBSx9QMCzo//O/CorRSMC15JPF3aQej | 68 UrR/L011DTtXD9TRv0Wwts7w00aIl0e1UQBSx9QMCzo//O/CorRSMC15JPF3aQej |
69 m/oD+Bx58kjw7CDfauMCQGV7dPtWmA6DbparS8Z59Fx25XpN6+asw+Krrq3iGqpf | 69 m/oD+Bx58kjw7CDfauMCQGV7dPtWmA6DbparS8Z59Fx25XpN6+asw+Krrq3iGqpf |
70 /E8LtHSUdiUZztQN0oUUCEh8C//2NRDUK5M2Y7kjF+Y= | 70 /E8LtHSUdiUZztQN0oUUCEh8C//2NRDUK5M2Y7kjF+Y= |
71 -----END RSA PRIVATE KEY-----""", | 71 -----END RSA PRIVATE KEY-----""", |
72 'eap_user_file': '* TLS' | 72 'eap_user_file': '* TLS' |
73 }, | 73 }, |
74 'client': { | 74 'client': { |
75 'client_cert': | 75 'client_cert': |
76 """-----BEGIN CERTIFICATE----- | 76 """-----BEGIN CERTIFICATE----- |
77 MIIDKjCCApOgAwIBAgIDEAACMA0GCSqGSIb3DQEBBAUAMG8xCzAJBgNVBAYTAlVT | 77 MIIDKjCCApOgAwIBAgIDEAACMA0GCSqGSIb3DQEBBAUAMG8xCzAJBgNVBAYTAlVT |
78 MRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MTMw | 78 MRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MTMw |
79 MQYDVQQDEypjaHJvbWVsYWItd2lmaS10ZXN0YmVkLXJvb3QubXR2Lmdvb2dsZS5j | 79 MQYDVQQDEypjaHJvbWVsYWItd2lmaS10ZXN0YmVkLXJvb3QubXR2Lmdvb2dsZS5j |
80 b20wHhcNMTAwODExMDAyODMwWhcNMTEwODExMDAyODMwWjBxMQswCQYDVQQGEwJV | 80 b20wHhcNMTAwODExMDAyODMwWhcNMTEwODExMDAyODMwWjBxMQswCQYDVQQGEwJV |
81 UzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzE1 | 81 UzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzE1 |
82 MDMGA1UEAxMsY2hyb21lbGFiLXdpZmktdGVzdGJlZC1jbGllbnQubXR2Lmdvb2ds | 82 MDMGA1UEAxMsY2hyb21lbGFiLXdpZmktdGVzdGJlZC1jbGllbnQubXR2Lmdvb2ds |
83 ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJu8uIlc6Ags6KS2bwqO | 83 ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJu8uIlc6Ags6KS2bwqO |
84 flfILS//9YHJ/ch5GIC6PjA9HCUFlQSVuUb+igZ/CLZ+mTEiC76xVUD5GgZdJdHb | 84 flfILS//9YHJ/ch5GIC6PjA9HCUFlQSVuUb+igZ/CLZ+mTEiC76xVUD5GgZdJdHb |
85 lX0uTC6dI1N42pOklBNl3S3uXXyNGk1Ztg+6Lom/VKw1srlIKHIT/iMVYtzbt3+q | 85 lX0uTC6dI1N42pOklBNl3S3uXXyNGk1Ztg+6Lom/VKw1srlIKHIT/iMVYtzbt3+q |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
126 while content_lines and buflen + len(content_lines[0]) < 200: | 126 while content_lines and buflen + len(content_lines[0]) < 200: |
127 line = content_lines.pop(0) | 127 line = content_lines.pop(0) |
128 buflen += len(line) + 1 | 128 buflen += len(line) + 1 |
129 buflist.append(line) | 129 buflist.append(line) |
130 | 130 |
131 if not buflist: | 131 if not buflist: |
132 raise error.TestFail('Cert profile: line too long: %s' % | 132 raise error.TestFail('Cert profile: line too long: %s' % |
133 content_lines[0]) | 133 content_lines[0]) |
134 host.run('cat <<EOF >>%s\n%s\nEOF\n' % | 134 host.run('cat <<EOF >>%s\n%s\nEOF\n' % |
135 (filename, '\n'.join(buflist))) | 135 (filename, '\n'.join(buflist))) |
136 | 136 |
137 def router_config(router, cert): | 137 def router_config(router, cert): |
138 """ | 138 """ |
139 Configure a router, and return the added config parameters | 139 Configure a router, and return the added config parameters |
140 """ | 140 """ |
141 conf = {} | 141 conf = {} |
142 # Make sure time-of-day is correct on router | 142 # Make sure time-of-day is correct on router |
143 router.run('date -us %s' % | 143 router.run('date -us %s' % |
144 datetime.datetime.utcnow().strftime('%Y%m%d%H%M.%S')) | 144 datetime.datetime.utcnow().strftime('%Y%m%d%H%M.%S')) |
145 | 145 |
146 if cert not in cert_info: | 146 if cert not in cert_info: |
147 raise error.TestFail('Cert profile %s not in the configuration' % cert) | 147 raise error.TestFail('Cert profile %s not in the configuration' % cert) |
148 | 148 |
149 for k, v in cert_info[cert]['router'].iteritems(): | 149 for k, v in cert_info[cert]['router'].iteritems(): |
150 filename = "/tmp/hostap_%s" % k | 150 filename = "/tmp/hostap_%s" % k |
151 insert_conf_file(router, filename, v) | 151 insert_conf_file(router, filename, v) |
152 conf[k] = filename | 152 conf[k] = filename |
153 | 153 |
154 conf['eap_server'] = '1' | 154 conf['eap_server'] = '1' |
155 return conf | 155 return conf |
156 | 156 |
157 def client_config(client, cert): | 157 def client_config(client, cert): |
158 """ | 158 """ |
159 Configure a client, and return the added config parameters | 159 Configure a client, and return the added config parameters |
160 """ | 160 """ |
161 if cert not in cert_info: | 161 if cert not in cert_info: |
162 raise error.TestFail("Cert profile %s not in the configuration" % cert) | 162 raise error.TestFail("Cert profile %s not in the configuration" % cert) |
163 | 163 |
164 client_pkg = '/tmp/pkg-client.pem' | 164 client_pkg = '/tmp/pkg-client.pem' |
165 info = cert_info[cert]['client'] | 165 info = cert_info[cert]['client'] |
166 insert_conf_file(client, client_pkg, | 166 insert_conf_file(client, client_pkg, |
167 '\n'.join([info['client_cert'], info['private_key']])) | 167 '\n'.join([info['client_cert'], info['private_key']])) |
168 return { 'psk': ':'.join(['chromeos', client_pkg]) } | 168 return { 'psk': ':'.join(['chromeos', client_pkg]) } |
OLD | NEW |