]> git.saurik.com Git - apple/security.git/blame - libsecurity_ssl/regressions/ssl-41-clientauth.c
Security-55471.14.18.tar.gz
[apple/security.git] / libsecurity_ssl / regressions / ssl-41-clientauth.c
CommitLineData
427c49bc
A
1/*
2 * ssl-40-clientauth.c
3 * Security
4 *
5 * Copyright (c) 2008-2010 Apple Inc. All Rights Reserved.
6 *
7 */
8
9#include <CoreFoundation/CoreFoundation.h>
10#include <Security/SecCertificatePriv.h>
11#include <Security/SecIdentityPriv.h>
12#include <Security/SecureTransport.h>
13#include <utilities/array_size.h>
14#include <stdlib.h>
15#include <unistd.h>
16
17#if TARGET_OS_IPHONE
18#include <Security/SecRSAKey.h>
19#endif
20
21#include "ssl_regressions.h"
22
23#define CFReleaseSafe(CF) { CFTypeRef _cf = (CF); if (_cf) { CFRelease(_cf); } }
24#define CFReleaseNull(CF) { CFTypeRef _cf = (CF); if (_cf) { (CF) = NULL; CFRelease(_cf); } }
25
26/*
27 Bag Attributes
28friendlyName: uranusLeaf
29localKeyID: 46 E0 8A 05 63 4D 17 3F CA A4 AA B6 5A DA CF BA 84 22 7C 23
30subject=/CN=uranusLeaf/emailAddress=uranus@uranus.com
31issuer=/CN=plutoCA/emailAddress=pluto@pluto.com
32 */
33static const uint8_t _c1[] = {
34 0x30, 0x82, 0x02, 0xe0, 0x30, 0x82, 0x01, 0xc8,
35 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x01, 0x02,
36 0x30, 0x0b, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
37 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x30, 0x32, 0x31,
38 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x03,
39 0x0c, 0x07, 0x70, 0x6c, 0x75, 0x74, 0x6f, 0x43,
40 0x41, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x09, 0x2a,
41 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01,
42 0x0c, 0x0f, 0x70, 0x6c, 0x75, 0x74, 0x6f, 0x40,
43 0x70, 0x6c, 0x75, 0x74, 0x6f, 0x2e, 0x63, 0x6f,
44 0x6d, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x35, 0x31,
45 0x32, 0x31, 0x37, 0x30, 0x30, 0x30, 0x34, 0x32,
46 0x35, 0x5a, 0x17, 0x0d, 0x30, 0x36, 0x31, 0x32,
47 0x31, 0x37, 0x30, 0x30, 0x30, 0x34, 0x32, 0x35,
48 0x5a, 0x30, 0x37, 0x31, 0x13, 0x30, 0x11, 0x06,
49 0x03, 0x55, 0x04, 0x03, 0x0c, 0x0a, 0x75, 0x72,
50 0x61, 0x6e, 0x75, 0x73, 0x4c, 0x65, 0x61, 0x66,
51 0x31, 0x20, 0x30, 0x1e, 0x06, 0x09, 0x2a, 0x86,
52 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01, 0x0c,
53 0x11, 0x75, 0x72, 0x61, 0x6e, 0x75, 0x73, 0x40,
54 0x75, 0x72, 0x61, 0x6e, 0x75, 0x73, 0x2e, 0x63,
55 0x6f, 0x6d, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d,
56 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
57 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01,
58 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82,
59 0x01, 0x01, 0x00, 0xa6, 0x82, 0x8e, 0xc6, 0x7e,
60 0xc9, 0x8c, 0x99, 0x6f, 0xb0, 0x62, 0x32, 0x35,
61 0xe7, 0xdb, 0xff, 0x34, 0x84, 0xdc, 0x72, 0xa8,
62 0xef, 0x22, 0x6f, 0x93, 0x63, 0x64, 0x80, 0x80,
63 0x5d, 0x50, 0x7e, 0xb4, 0x2e, 0x1b, 0x93, 0x93,
64 0x49, 0xca, 0xae, 0xcd, 0x34, 0x44, 0x4b, 0xd7,
65 0xfa, 0x9f, 0x3c, 0xfc, 0x9e, 0x65, 0xa9, 0xfb,
66 0x5e, 0x5d, 0x18, 0xa3, 0xf8, 0xb0, 0x08, 0xac,
67 0x8f, 0xfd, 0x03, 0xcb, 0xbd, 0x7f, 0xa0, 0x2a,
68 0xa6, 0xea, 0xca, 0xa3, 0x24, 0xef, 0x7c, 0xc3,
69 0xeb, 0x95, 0xcb, 0x90, 0x3f, 0x5e, 0xde, 0x78,
70 0xf2, 0x3d, 0x32, 0x72, 0xdb, 0x33, 0x6e, 0x9b,
71 0x52, 0x9f, 0x0c, 0x60, 0x4a, 0x24, 0xa1, 0xf6,
72 0x3b, 0x80, 0xbd, 0xa1, 0xdc, 0x40, 0x03, 0xe7,
73 0xa0, 0x59, 0x1f, 0xdb, 0xb4, 0xed, 0x57, 0xdc,
74 0x74, 0x0d, 0x99, 0x5a, 0x12, 0x74, 0x64, 0xaa,
75 0xb6, 0xa5, 0x96, 0x75, 0xf9, 0x42, 0x43, 0xe2,
76 0x52, 0xc2, 0x57, 0x23, 0x75, 0xd7, 0xa9, 0x4f,
77 0x07, 0x32, 0x99, 0xbd, 0x3d, 0x44, 0xbd, 0x04,
78 0x62, 0xe5, 0xb7, 0x2c, 0x0c, 0x11, 0xc5, 0xb2,
79 0x2e, 0xc4, 0x12, 0x1d, 0x7f, 0x42, 0x1e, 0x71,
80 0xaf, 0x39, 0x2b, 0x78, 0x47, 0x92, 0x23, 0x44,
81 0xef, 0xe3, 0xc1, 0x47, 0x69, 0x5a, 0xf1, 0x48,
82 0xaa, 0x37, 0xa4, 0x94, 0x6b, 0x96, 0xe5, 0x4b,
83 0xfd, 0x05, 0xc7, 0x9c, 0xcc, 0x38, 0xd1, 0x47,
84 0x85, 0x60, 0x7f, 0xef, 0xe9, 0x2e, 0x25, 0x08,
85 0xf8, 0x7d, 0x98, 0xdd, 0x6c, 0xeb, 0x4a, 0x32,
86 0x33, 0x44, 0x0b, 0x61, 0xb3, 0xf9, 0xae, 0x26,
87 0x41, 0xb5, 0x38, 0xdb, 0xcf, 0x13, 0x72, 0x23,
88 0x5b, 0x66, 0x20, 0x86, 0x4d, 0x24, 0xc2, 0xd4,
89 0x94, 0xde, 0xe3, 0x24, 0xb7, 0xcd, 0x75, 0x9e,
90 0x1d, 0x9f, 0xbc, 0xd0, 0x60, 0x34, 0x7d, 0xf8,
91 0xcb, 0x41, 0x39, 0x02, 0x03, 0x01, 0x00, 0x01,
92 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
93 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03,
94 0x82, 0x01, 0x01, 0x00, 0x17, 0xa5, 0x22, 0xed,
95 0xb8, 0x3e, 0x1f, 0x11, 0x99, 0xc5, 0xba, 0x28,
96 0x3e, 0x7e, 0xa6, 0xeb, 0x02, 0x81, 0x06, 0xa1,
97 0xc6, 0x80, 0xb9, 0x7e, 0x5c, 0x5a, 0x63, 0xe0,
98 0x8d, 0xeb, 0xd0, 0xec, 0x9c, 0x3a, 0x94, 0x64,
99 0x7c, 0x13, 0x54, 0x0d, 0xd6, 0xe3, 0x27, 0x88,
100 0xa6, 0xd2, 0x4b, 0x36, 0xdd, 0x2e, 0xfa, 0x94,
101 0xe5, 0x03, 0x27, 0xc9, 0xa6, 0x31, 0x02, 0xea,
102 0x40, 0x77, 0x2e, 0x93, 0xc4, 0x4d, 0xe2, 0x70,
103 0xe2, 0x67, 0x1c, 0xa8, 0x0d, 0xcd, 0x1a, 0x72,
104 0x86, 0x2c, 0xea, 0xdc, 0x7f, 0x8c, 0x49, 0x2c,
105 0xe7, 0x99, 0x13, 0xda, 0x3f, 0x58, 0x9e, 0xf5,
106 0x4d, 0x3c, 0x8c, 0x1c, 0xed, 0x85, 0xa7, 0xe2,
107 0xae, 0xda, 0x5f, 0xbe, 0x36, 0x1c, 0x9f, 0x5a,
108 0xa0, 0xdc, 0x2a, 0xc0, 0xee, 0x71, 0x07, 0x26,
109 0x8b, 0xe8, 0x8a, 0xf8, 0x2d, 0x36, 0x78, 0xc9,
110 0x79, 0xfa, 0xbe, 0x98, 0x59, 0x95, 0x12, 0x24,
111 0xf1, 0xda, 0x20, 0xc7, 0x78, 0xf9, 0x7c, 0x6a,
112 0x24, 0x43, 0x82, 0xa8, 0x0f, 0xb1, 0x7d, 0x94,
113 0xaa, 0x30, 0x35, 0xe5, 0x69, 0xdc, 0x0a, 0x0e,
114 0xaf, 0x10, 0x5e, 0x1a, 0x81, 0x50, 0x5c, 0x7e,
115 0x24, 0xb3, 0x07, 0x65, 0x4b, 0xc1, 0x7e, 0xc6,
116 0x38, 0xdb, 0xd3, 0x6a, 0xf0, 0xd8, 0x85, 0x61,
117 0x9a, 0x9f, 0xfe, 0x02, 0x46, 0x29, 0xb2, 0x9a,
118 0xe2, 0x04, 0xe7, 0x72, 0xcc, 0x87, 0x46, 0xba,
119 0x7d, 0xa8, 0xf9, 0xd0, 0x0f, 0x29, 0xfc, 0xfd,
120 0xd1, 0xd0, 0x7f, 0x36, 0xc1, 0xd8, 0x7d, 0x88,
121 0x03, 0x62, 0xf5, 0x8c, 0x00, 0xb5, 0xc2, 0x81,
122 0x44, 0x67, 0x58, 0x11, 0xb4, 0x3a, 0xbb, 0xd1,
123 0x8c, 0x94, 0x20, 0x60, 0xea, 0xa0, 0xac, 0xc1,
124 0xf1, 0x08, 0x54, 0xb8, 0xf6, 0x5e, 0xac, 0xf1,
125 0xec, 0x78, 0x69, 0x9d, 0x7e, 0x4d, 0x06, 0x3b,
126 0x9b, 0x78, 0x78, 0x10
127};
128
129/*
130 Bag Attributes
131friendlyName: uranusLeaf
132localKeyID: 46 E0 8A 05 63 4D 17 3F CA A4 AA B6 5A DA CF BA 84 22 7C 23
133Key Attributes: <No Attributes>
134 */
135static const uint8_t _k1[] = {
136 0x30, 0x82, 0x04, 0xa4, 0x02, 0x01, 0x00, 0x02,
137 0x82, 0x01, 0x01, 0x00, 0xa6, 0x82, 0x8e, 0xc6,
138 0x7e, 0xc9, 0x8c, 0x99, 0x6f, 0xb0, 0x62, 0x32,
139 0x35, 0xe7, 0xdb, 0xff, 0x34, 0x84, 0xdc, 0x72,
140 0xa8, 0xef, 0x22, 0x6f, 0x93, 0x63, 0x64, 0x80,
141 0x80, 0x5d, 0x50, 0x7e, 0xb4, 0x2e, 0x1b, 0x93,
142 0x93, 0x49, 0xca, 0xae, 0xcd, 0x34, 0x44, 0x4b,
143 0xd7, 0xfa, 0x9f, 0x3c, 0xfc, 0x9e, 0x65, 0xa9,
144 0xfb, 0x5e, 0x5d, 0x18, 0xa3, 0xf8, 0xb0, 0x08,
145 0xac, 0x8f, 0xfd, 0x03, 0xcb, 0xbd, 0x7f, 0xa0,
146 0x2a, 0xa6, 0xea, 0xca, 0xa3, 0x24, 0xef, 0x7c,
147 0xc3, 0xeb, 0x95, 0xcb, 0x90, 0x3f, 0x5e, 0xde,
148 0x78, 0xf2, 0x3d, 0x32, 0x72, 0xdb, 0x33, 0x6e,
149 0x9b, 0x52, 0x9f, 0x0c, 0x60, 0x4a, 0x24, 0xa1,
150 0xf6, 0x3b, 0x80, 0xbd, 0xa1, 0xdc, 0x40, 0x03,
151 0xe7, 0xa0, 0x59, 0x1f, 0xdb, 0xb4, 0xed, 0x57,
152 0xdc, 0x74, 0x0d, 0x99, 0x5a, 0x12, 0x74, 0x64,
153 0xaa, 0xb6, 0xa5, 0x96, 0x75, 0xf9, 0x42, 0x43,
154 0xe2, 0x52, 0xc2, 0x57, 0x23, 0x75, 0xd7, 0xa9,
155 0x4f, 0x07, 0x32, 0x99, 0xbd, 0x3d, 0x44, 0xbd,
156 0x04, 0x62, 0xe5, 0xb7, 0x2c, 0x0c, 0x11, 0xc5,
157 0xb2, 0x2e, 0xc4, 0x12, 0x1d, 0x7f, 0x42, 0x1e,
158 0x71, 0xaf, 0x39, 0x2b, 0x78, 0x47, 0x92, 0x23,
159 0x44, 0xef, 0xe3, 0xc1, 0x47, 0x69, 0x5a, 0xf1,
160 0x48, 0xaa, 0x37, 0xa4, 0x94, 0x6b, 0x96, 0xe5,
161 0x4b, 0xfd, 0x05, 0xc7, 0x9c, 0xcc, 0x38, 0xd1,
162 0x47, 0x85, 0x60, 0x7f, 0xef, 0xe9, 0x2e, 0x25,
163 0x08, 0xf8, 0x7d, 0x98, 0xdd, 0x6c, 0xeb, 0x4a,
164 0x32, 0x33, 0x44, 0x0b, 0x61, 0xb3, 0xf9, 0xae,
165 0x26, 0x41, 0xb5, 0x38, 0xdb, 0xcf, 0x13, 0x72,
166 0x23, 0x5b, 0x66, 0x20, 0x86, 0x4d, 0x24, 0xc2,
167 0xd4, 0x94, 0xde, 0xe3, 0x24, 0xb7, 0xcd, 0x75,
168 0x9e, 0x1d, 0x9f, 0xbc, 0xd0, 0x60, 0x34, 0x7d,
169 0xf8, 0xcb, 0x41, 0x39, 0x02, 0x03, 0x01, 0x00,
170 0x01, 0x02, 0x82, 0x01, 0x00, 0x4d, 0x27, 0xf2,
171 0x40, 0xc8, 0x3f, 0x5c, 0x87, 0x3c, 0xd9, 0xde,
172 0xa6, 0xa5, 0x93, 0xea, 0xbd, 0x36, 0xf8, 0xd9,
173 0xad, 0xc7, 0xda, 0x07, 0x7a, 0xec, 0x31, 0x02,
174 0x41, 0x09, 0x3a, 0x34, 0x32, 0x82, 0x0b, 0x5b,
175 0x7b, 0xe6, 0xa4, 0x2a, 0xe7, 0x14, 0xef, 0x43,
176 0x36, 0x61, 0xbe, 0x20, 0x4b, 0x82, 0x43, 0x63,
177 0x98, 0x80, 0x82, 0x19, 0x61, 0x71, 0x99, 0xaa,
178 0xf8, 0x59, 0xfd, 0xde, 0xa0, 0x03, 0xa8, 0xab,
179 0x9a, 0xec, 0x28, 0xac, 0x63, 0x79, 0x75, 0x84,
180 0x03, 0xac, 0x45, 0x5e, 0x04, 0x15, 0xb3, 0x47,
181 0xa2, 0x8f, 0x28, 0xb0, 0x72, 0xd0, 0x06, 0x02,
182 0xaf, 0x1e, 0x0a, 0x0a, 0xe9, 0x11, 0x35, 0x4a,
183 0x04, 0x42, 0xb5, 0x0f, 0xd2, 0xcf, 0x4d, 0xdf,
184 0xdb, 0xef, 0x58, 0xbd, 0xf3, 0xa5, 0x3b, 0x11,
185 0x3f, 0xc5, 0x47, 0x81, 0x85, 0xad, 0xd7, 0x1f,
186 0x58, 0x06, 0x42, 0xdc, 0x37, 0x3c, 0xdb, 0x98,
187 0x33, 0xa1, 0xc6, 0x80, 0x07, 0xe0, 0x2b, 0xc5,
188 0xf5, 0x60, 0x35, 0x6a, 0xa2, 0x06, 0x40, 0x4a,
189 0xac, 0x64, 0x02, 0x58, 0x4d, 0x07, 0xe3, 0x69,
190 0xd7, 0xe0, 0x8f, 0xb5, 0xf4, 0xbc, 0xfa, 0xab,
191 0x1a, 0xb0, 0xfa, 0x29, 0xf8, 0xca, 0xde, 0x78,
192 0xf0, 0x89, 0xe2, 0xf9, 0xb7, 0x68, 0x5b, 0x0e,
193 0xdc, 0x4e, 0x8a, 0x56, 0x8d, 0x33, 0x20, 0x2e,
194 0xed, 0x2e, 0xab, 0x6f, 0xba, 0x77, 0xef, 0xe6,
195 0x12, 0x62, 0x49, 0x9e, 0x87, 0x76, 0x1c, 0x1e,
196 0xf4, 0x0e, 0x9e, 0x78, 0x98, 0x91, 0x1a, 0xe3,
197 0xb4, 0x51, 0x4b, 0x8c, 0x2f, 0x08, 0x97, 0x8f,
198 0xf9, 0x68, 0x61, 0x40, 0xcd, 0xb6, 0x10, 0xb4,
199 0xfb, 0x75, 0xb4, 0x20, 0xc1, 0x5a, 0xda, 0x64,
200 0xfd, 0x51, 0x06, 0x85, 0x9a, 0x9e, 0x5d, 0x82,
201 0x14, 0xd4, 0x41, 0x4e, 0x75, 0x10, 0xb5, 0x7b,
202 0xd0, 0x4c, 0xd1, 0x00, 0x01, 0x02, 0x81, 0x81,
203 0x00, 0xcf, 0x8e, 0x68, 0x04, 0x67, 0x09, 0xa9,
204 0x6e, 0xff, 0x11, 0x8c, 0xe5, 0xe4, 0x16, 0xdd,
205 0xb6, 0xa6, 0x55, 0xca, 0x4b, 0x0b, 0xbb, 0xb7,
206 0xf5, 0xe5, 0x73, 0xf3, 0x24, 0x84, 0x29, 0xb2,
207 0xc3, 0xbc, 0x7f, 0x2b, 0x4a, 0xc7, 0xdf, 0x46,
208 0x8e, 0xe1, 0x35, 0x69, 0x1b, 0x8e, 0x9f, 0x6b,
209 0x4d, 0xf3, 0x65, 0xae, 0x3d, 0x87, 0x2b, 0xc9,
210 0xf0, 0x8c, 0xf2, 0x88, 0x2f, 0x1b, 0x79, 0x80,
211 0xd2, 0xb2, 0x64, 0x0a, 0xcc, 0x66, 0x69, 0x4c,
212 0xa1, 0x85, 0xc4, 0x6a, 0x94, 0x46, 0x70, 0x69,
213 0xbc, 0x8c, 0x1c, 0x62, 0x65, 0x4d, 0x68, 0xcc,
214 0xe3, 0x3c, 0x6c, 0xe7, 0xd1, 0x09, 0xed, 0xdd,
215 0x42, 0x10, 0x11, 0x6b, 0xdd, 0x7c, 0xe3, 0xe1,
216 0x3b, 0x3b, 0x0d, 0x01, 0x6d, 0xca, 0x2f, 0x4b,
217 0x45, 0x5e, 0x76, 0x5d, 0x5c, 0x6f, 0x53, 0xa4,
218 0x38, 0x74, 0x75, 0x94, 0x2c, 0xda, 0xf8, 0xa6,
219 0x01, 0x02, 0x81, 0x81, 0x00, 0xcd, 0x5f, 0x9d,
220 0x6c, 0x94, 0xf6, 0x44, 0x37, 0x72, 0xfe, 0xcf,
221 0xbe, 0x82, 0x96, 0x24, 0x22, 0x12, 0x07, 0x6f,
222 0xd1, 0x57, 0x7b, 0xc7, 0x63, 0x20, 0xf5, 0x93,
223 0x79, 0x70, 0x0b, 0xe4, 0x38, 0x19, 0x62, 0x7b,
224 0x89, 0x3e, 0x45, 0xdf, 0xd6, 0xae, 0x9d, 0x0d,
225 0xa8, 0x76, 0xc1, 0xbd, 0x04, 0x2b, 0xaa, 0x30,
226 0x6a, 0xac, 0x65, 0x91, 0x61, 0xf0, 0xf8, 0x5d,
227 0xa3, 0x53, 0xa4, 0xfb, 0x99, 0xac, 0x46, 0x7a,
228 0x12, 0x4b, 0xf7, 0xa7, 0x48, 0x41, 0x61, 0x48,
229 0x26, 0x5c, 0x68, 0x2f, 0x73, 0x91, 0xe4, 0x74,
230 0xcd, 0xc9, 0x8b, 0xe7, 0x26, 0xe4, 0x35, 0xde,
231 0x32, 0x6b, 0x24, 0x49, 0xf2, 0x04, 0x67, 0x3d,
232 0x31, 0x8f, 0x22, 0xe5, 0x49, 0xae, 0x49, 0x94,
233 0xb3, 0x45, 0x2b, 0xed, 0x6f, 0x9c, 0xc7, 0x80,
234 0xf0, 0x42, 0xd5, 0x8f, 0x27, 0xd6, 0xd6, 0x49,
235 0xf2, 0x16, 0xcc, 0x4b, 0x39, 0x02, 0x81, 0x81,
236 0x00, 0xbb, 0xb7, 0xd7, 0x59, 0xcb, 0xfb, 0x10,
237 0x13, 0xc4, 0x7b, 0x92, 0x0c, 0x45, 0xcb, 0x6c,
238 0x81, 0x0a, 0x55, 0x63, 0x1d, 0x96, 0xa2, 0x13,
239 0xd2, 0x40, 0xd1, 0x2a, 0xa1, 0xe7, 0x2a, 0x73,
240 0x74, 0xd6, 0x61, 0xc9, 0xbc, 0xdb, 0xa2, 0x93,
241 0x85, 0x1c, 0x28, 0x9b, 0x44, 0x82, 0x2c, 0xaa,
242 0xf7, 0x18, 0x60, 0xe9, 0x42, 0xda, 0xa2, 0xff,
243 0x04, 0x21, 0xe6, 0x24, 0xc7, 0x3e, 0x39, 0x19,
244 0x0a, 0xf6, 0xae, 0xc6, 0x99, 0x71, 0x32, 0x61,
245 0x4d, 0x60, 0xd7, 0x71, 0x71, 0x63, 0x77, 0xbe,
246 0x19, 0xfa, 0x3a, 0x9d, 0xbf, 0x73, 0x50, 0x8a,
247 0xa6, 0x26, 0x7b, 0x74, 0xfa, 0x39, 0xd9, 0xb9,
248 0x18, 0x4b, 0xc2, 0x05, 0xe5, 0x8f, 0x53, 0xe6,
249 0xdc, 0x14, 0x1f, 0x42, 0x20, 0x93, 0x11, 0x4d,
250 0x29, 0x93, 0x32, 0xc8, 0x63, 0x96, 0x88, 0x76,
251 0x69, 0x5c, 0xe3, 0x0e, 0xbd, 0xb6, 0xd9, 0xd6,
252 0x01, 0x02, 0x81, 0x80, 0x62, 0xa2, 0xed, 0x84,
253 0xdc, 0xf6, 0x7a, 0x44, 0xf7, 0x62, 0x12, 0x7c,
254 0xb9, 0x53, 0x4a, 0xff, 0x62, 0x11, 0x58, 0x4e,
255 0xfe, 0xe9, 0x60, 0x15, 0xe8, 0x1a, 0x8a, 0x3d,
256 0xe4, 0xe6, 0x91, 0x31, 0xb0, 0x5f, 0x70, 0x5d,
257 0xb6, 0x1e, 0xf1, 0x26, 0xb6, 0xae, 0x8f, 0x84,
258 0xbd, 0xa4, 0xc7, 0x17, 0x5d, 0xb1, 0x5b, 0x97,
259 0xa0, 0x3d, 0x17, 0xda, 0x26, 0x55, 0xe3, 0x03,
260 0x32, 0x85, 0x26, 0xa1, 0xe3, 0xef, 0xe5, 0x69,
261 0x2c, 0x3b, 0x41, 0x88, 0x9e, 0x7e, 0x0e, 0x9c,
262 0xfd, 0xfc, 0xbb, 0xed, 0x91, 0xc0, 0x5b, 0xa9,
263 0x0a, 0x87, 0xba, 0xf9, 0x1e, 0xda, 0x10, 0x61,
264 0xbe, 0xbb, 0xab, 0x18, 0x25, 0xad, 0x3f, 0xe2,
265 0xb1, 0x90, 0x5c, 0xf7, 0x4a, 0x51, 0xe4, 0xad,
266 0x45, 0x27, 0x97, 0xdd, 0xe7, 0x3a, 0x9a, 0x5e,
267 0xca, 0x7a, 0xaf, 0x4a, 0xbf, 0x10, 0x24, 0x6b,
268 0xb5, 0x2f, 0x61, 0x61, 0x02, 0x81, 0x81, 0x00,
269 0x85, 0x7c, 0x78, 0xa5, 0x11, 0xdf, 0xc3, 0x6a,
270 0x38, 0x48, 0xfa, 0x7e, 0x48, 0xf0, 0x5a, 0x58,
271 0xe2, 0xc5, 0x83, 0x4e, 0x38, 0x3f, 0x4a, 0x2b,
272 0x07, 0x57, 0x31, 0xe7, 0xbe, 0x50, 0xb1, 0xbb,
273 0x24, 0xf3, 0x3d, 0x8b, 0x53, 0xb7, 0xd1, 0x47,
274 0x72, 0x5e, 0xd5, 0xd6, 0x4c, 0xce, 0x2c, 0x46,
275 0x61, 0x9a, 0xaa, 0xc3, 0x0e, 0xd4, 0x23, 0x2c,
276 0xdd, 0xf5, 0xb7, 0xad, 0x38, 0x52, 0x17, 0xc4,
277 0x16, 0xbb, 0xda, 0x1c, 0x61, 0xb1, 0xca, 0x8d,
278 0xb2, 0xa0, 0xbe, 0x4f, 0x3d, 0x19, 0x0e, 0xe0,
279 0x0e, 0x52, 0xad, 0xf3, 0xaf, 0xd9, 0xcc, 0x78,
280 0xc2, 0xb1, 0x5e, 0x05, 0x5e, 0xf2, 0x27, 0x84,
281 0x15, 0xe4, 0x8f, 0xca, 0xc5, 0x92, 0x43, 0xe0,
282 0x24, 0x8d, 0xf2, 0x5d, 0x55, 0xcc, 0x9d, 0x2f,
283 0xa9, 0xf6, 0x9b, 0x67, 0x6a, 0x87, 0x74, 0x36,
284 0x34, 0x7c, 0xd4, 0x9d, 0xff, 0xad, 0xee, 0x69
285};
286
287static const uint8_t _k1_digest[] = {
288 0x46, 0xE0, 0x8A, 0x05, 0x63, 0x4D, 0x17, 0x3F,
289 0xCA, 0xA4, 0xAA, 0xB6, 0x5A, 0xDA, 0xCF, 0xBA,
290 0x84, 0x22, 0x7C, 0x23
291};
292
293/* Create and identity and try to retrieve it. */
294static void tests(void)
295{
296 SecCertificateRef cert = NULL, cert2 = NULL;
297 SecKeyRef privKey = NULL;
298 SecIdentityRef identity = NULL;
299 CFArrayRef trust_chain = NULL;
300 SSLContextRef ctx = NULL;
301
302 isnt(cert = SecCertificateCreateWithBytes(NULL, _c1, sizeof(_c1)),
303 NULL, "create certificate");
304 isnt(cert2 = SecCertificateCreateWithBytes(NULL, _c1, sizeof(_c1)),
305 NULL, "create certificate2");
306#if TARGET_OS_IPHONE
307 privKey = SecKeyCreateRSAPrivateKey(NULL, _k1, sizeof(_k1),
308 kSecKeyEncodingPkcs1);
309#else
310 privKey = NULL; /* TODO */
311#endif
312 isnt(privKey, NULL, "create private key");
313
314 ok(identity = SecIdentityCreate(kCFAllocatorDefault, cert, privKey), "SecIdentityCreate");
315 CFReleaseSafe(cert);
316 CFReleaseSafe(privKey);
317 const void *values[] = { identity, cert2 };
318 ok(trust_chain = CFArrayCreate(kCFAllocatorDefault, values,
319 array_size(values), &kCFTypeArrayCallBacks), "CFArrayCreate");
320 CFReleaseSafe(identity);
321 CFReleaseSafe(cert2);
322
323 is(CFGetRetainCount(trust_chain), 1, "trust_chain rc = 1");
324 is(CFGetRetainCount(identity), 1, "identity rc = 1");
325 is(CFGetRetainCount(cert), 1, "cert rc = 1");
326 is(CFGetRetainCount(cert2), 1, "cert2 rc = 1");
327 is(CFGetRetainCount(privKey), 1, "privKey rc = 1");
328
329 ok(ctx=SSLCreateContext(NULL, kSSLClientSide, kSSLStreamType), "SSLNewContext");
330 ok_status(SSLSetCertificate(ctx, trust_chain), "SSLSetCertificate");
331 CFReleaseSafe(ctx);
332
333 is(CFGetRetainCount(trust_chain), 1, "trust_chain rc = 1");
334 is(CFGetRetainCount(identity), 1, "identity rc = 1");
335 is(CFGetRetainCount(cert), 1, "cert rc = 1");
336 is(CFGetRetainCount(cert2), 1, "cert2 rc = 1");
337 is(CFGetRetainCount(privKey), 1, "privKey rc = 1");
338
339 ok(ctx=SSLCreateContext(NULL, kSSLClientSide, kSSLStreamType), "SSLCreateContext");
340 ok_status(SSLSetCertificate(ctx, trust_chain), "SSLSetCertificate");
341 CFReleaseSafe(ctx);
342
343 is(CFGetRetainCount(trust_chain), 1, "trust_chain rc = 1");
344 is(CFGetRetainCount(identity), 1, "identity rc = 1");
345 is(CFGetRetainCount(cert), 1, "cert rc = 1");
346 is(CFGetRetainCount(cert2), 1, "cert2 rc = 1");
347 is(CFGetRetainCount(privKey), 1, "privKey rc = 1");
348
349 ok(ctx=SSLCreateContext(NULL, kSSLClientSide, kSSLStreamType), "SSLCreateContext");
350 ok_status(SSLSetCertificate(ctx, trust_chain), "SSLSetCertificate");
351 ok_status(SSLSetCertificate(ctx, trust_chain), "SSLSetCertificate");
352 CFReleaseSafe(ctx);
353
354 is(CFGetRetainCount(trust_chain), 1, "trust_chain rc = 1");
355 is(CFGetRetainCount(identity), 1, "identity rc = 1");
356 is(CFGetRetainCount(cert), 1, "cert rc = 1");
357 is(CFGetRetainCount(cert2), 1, "cert2 rc = 1");
358 is(CFGetRetainCount(privKey), 1, "privKey rc = 1");
359
360 CFReleaseNull(trust_chain);
361}
362
363int ssl_41_clientauth(int argc, char *const *argv)
364{
365 plan_tests(32);
366
367
368 tests();
369
370 return 0;
371}