]>
git.saurik.com Git - apple/security.git/blob - Security/libsecurity_ssl/regressions/ssl-41-clientauth.c
5 * Copyright (c) 2008-2010,2012-2014 Apple Inc. All Rights Reserved.
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>
18 #include <Security/SecRSAKey.h>
21 #include "ssl_regressions.h"
23 #define CFReleaseSafe(CF) { CFTypeRef _cf = (CF); if (_cf) { CFRelease(_cf); } }
24 #define CFReleaseNull(CF) { CFTypeRef _cf = (CF); if (_cf) { (CF) = NULL; CFRelease(_cf); } }
28 friendlyName: uranusLeaf
29 localKeyID: 46 E0 8A 05 63 4D 17 3F CA A4 AA B6 5A DA CF BA 84 22 7C 23
30 subject=/CN=uranusLeaf/emailAddress=uranus@uranus.com
31 issuer=/CN=plutoCA/emailAddress=pluto@pluto.com
33 static 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
131 friendlyName: uranusLeaf
132 localKeyID: 46 E0 8A 05 63 4D 17 3F CA A4 AA B6 5A DA CF BA 84 22 7C 23
133 Key Attributes: <No Attributes>
137 /* we use _k1 on iPhone */
138 static const uint8_t _k1
[] = {
139 0x30, 0x82, 0x04, 0xa4, 0x02, 0x01, 0x00, 0x02,
140 0x82, 0x01, 0x01, 0x00, 0xa6, 0x82, 0x8e, 0xc6,
141 0x7e, 0xc9, 0x8c, 0x99, 0x6f, 0xb0, 0x62, 0x32,
142 0x35, 0xe7, 0xdb, 0xff, 0x34, 0x84, 0xdc, 0x72,
143 0xa8, 0xef, 0x22, 0x6f, 0x93, 0x63, 0x64, 0x80,
144 0x80, 0x5d, 0x50, 0x7e, 0xb4, 0x2e, 0x1b, 0x93,
145 0x93, 0x49, 0xca, 0xae, 0xcd, 0x34, 0x44, 0x4b,
146 0xd7, 0xfa, 0x9f, 0x3c, 0xfc, 0x9e, 0x65, 0xa9,
147 0xfb, 0x5e, 0x5d, 0x18, 0xa3, 0xf8, 0xb0, 0x08,
148 0xac, 0x8f, 0xfd, 0x03, 0xcb, 0xbd, 0x7f, 0xa0,
149 0x2a, 0xa6, 0xea, 0xca, 0xa3, 0x24, 0xef, 0x7c,
150 0xc3, 0xeb, 0x95, 0xcb, 0x90, 0x3f, 0x5e, 0xde,
151 0x78, 0xf2, 0x3d, 0x32, 0x72, 0xdb, 0x33, 0x6e,
152 0x9b, 0x52, 0x9f, 0x0c, 0x60, 0x4a, 0x24, 0xa1,
153 0xf6, 0x3b, 0x80, 0xbd, 0xa1, 0xdc, 0x40, 0x03,
154 0xe7, 0xa0, 0x59, 0x1f, 0xdb, 0xb4, 0xed, 0x57,
155 0xdc, 0x74, 0x0d, 0x99, 0x5a, 0x12, 0x74, 0x64,
156 0xaa, 0xb6, 0xa5, 0x96, 0x75, 0xf9, 0x42, 0x43,
157 0xe2, 0x52, 0xc2, 0x57, 0x23, 0x75, 0xd7, 0xa9,
158 0x4f, 0x07, 0x32, 0x99, 0xbd, 0x3d, 0x44, 0xbd,
159 0x04, 0x62, 0xe5, 0xb7, 0x2c, 0x0c, 0x11, 0xc5,
160 0xb2, 0x2e, 0xc4, 0x12, 0x1d, 0x7f, 0x42, 0x1e,
161 0x71, 0xaf, 0x39, 0x2b, 0x78, 0x47, 0x92, 0x23,
162 0x44, 0xef, 0xe3, 0xc1, 0x47, 0x69, 0x5a, 0xf1,
163 0x48, 0xaa, 0x37, 0xa4, 0x94, 0x6b, 0x96, 0xe5,
164 0x4b, 0xfd, 0x05, 0xc7, 0x9c, 0xcc, 0x38, 0xd1,
165 0x47, 0x85, 0x60, 0x7f, 0xef, 0xe9, 0x2e, 0x25,
166 0x08, 0xf8, 0x7d, 0x98, 0xdd, 0x6c, 0xeb, 0x4a,
167 0x32, 0x33, 0x44, 0x0b, 0x61, 0xb3, 0xf9, 0xae,
168 0x26, 0x41, 0xb5, 0x38, 0xdb, 0xcf, 0x13, 0x72,
169 0x23, 0x5b, 0x66, 0x20, 0x86, 0x4d, 0x24, 0xc2,
170 0xd4, 0x94, 0xde, 0xe3, 0x24, 0xb7, 0xcd, 0x75,
171 0x9e, 0x1d, 0x9f, 0xbc, 0xd0, 0x60, 0x34, 0x7d,
172 0xf8, 0xcb, 0x41, 0x39, 0x02, 0x03, 0x01, 0x00,
173 0x01, 0x02, 0x82, 0x01, 0x00, 0x4d, 0x27, 0xf2,
174 0x40, 0xc8, 0x3f, 0x5c, 0x87, 0x3c, 0xd9, 0xde,
175 0xa6, 0xa5, 0x93, 0xea, 0xbd, 0x36, 0xf8, 0xd9,
176 0xad, 0xc7, 0xda, 0x07, 0x7a, 0xec, 0x31, 0x02,
177 0x41, 0x09, 0x3a, 0x34, 0x32, 0x82, 0x0b, 0x5b,
178 0x7b, 0xe6, 0xa4, 0x2a, 0xe7, 0x14, 0xef, 0x43,
179 0x36, 0x61, 0xbe, 0x20, 0x4b, 0x82, 0x43, 0x63,
180 0x98, 0x80, 0x82, 0x19, 0x61, 0x71, 0x99, 0xaa,
181 0xf8, 0x59, 0xfd, 0xde, 0xa0, 0x03, 0xa8, 0xab,
182 0x9a, 0xec, 0x28, 0xac, 0x63, 0x79, 0x75, 0x84,
183 0x03, 0xac, 0x45, 0x5e, 0x04, 0x15, 0xb3, 0x47,
184 0xa2, 0x8f, 0x28, 0xb0, 0x72, 0xd0, 0x06, 0x02,
185 0xaf, 0x1e, 0x0a, 0x0a, 0xe9, 0x11, 0x35, 0x4a,
186 0x04, 0x42, 0xb5, 0x0f, 0xd2, 0xcf, 0x4d, 0xdf,
187 0xdb, 0xef, 0x58, 0xbd, 0xf3, 0xa5, 0x3b, 0x11,
188 0x3f, 0xc5, 0x47, 0x81, 0x85, 0xad, 0xd7, 0x1f,
189 0x58, 0x06, 0x42, 0xdc, 0x37, 0x3c, 0xdb, 0x98,
190 0x33, 0xa1, 0xc6, 0x80, 0x07, 0xe0, 0x2b, 0xc5,
191 0xf5, 0x60, 0x35, 0x6a, 0xa2, 0x06, 0x40, 0x4a,
192 0xac, 0x64, 0x02, 0x58, 0x4d, 0x07, 0xe3, 0x69,
193 0xd7, 0xe0, 0x8f, 0xb5, 0xf4, 0xbc, 0xfa, 0xab,
194 0x1a, 0xb0, 0xfa, 0x29, 0xf8, 0xca, 0xde, 0x78,
195 0xf0, 0x89, 0xe2, 0xf9, 0xb7, 0x68, 0x5b, 0x0e,
196 0xdc, 0x4e, 0x8a, 0x56, 0x8d, 0x33, 0x20, 0x2e,
197 0xed, 0x2e, 0xab, 0x6f, 0xba, 0x77, 0xef, 0xe6,
198 0x12, 0x62, 0x49, 0x9e, 0x87, 0x76, 0x1c, 0x1e,
199 0xf4, 0x0e, 0x9e, 0x78, 0x98, 0x91, 0x1a, 0xe3,
200 0xb4, 0x51, 0x4b, 0x8c, 0x2f, 0x08, 0x97, 0x8f,
201 0xf9, 0x68, 0x61, 0x40, 0xcd, 0xb6, 0x10, 0xb4,
202 0xfb, 0x75, 0xb4, 0x20, 0xc1, 0x5a, 0xda, 0x64,
203 0xfd, 0x51, 0x06, 0x85, 0x9a, 0x9e, 0x5d, 0x82,
204 0x14, 0xd4, 0x41, 0x4e, 0x75, 0x10, 0xb5, 0x7b,
205 0xd0, 0x4c, 0xd1, 0x00, 0x01, 0x02, 0x81, 0x81,
206 0x00, 0xcf, 0x8e, 0x68, 0x04, 0x67, 0x09, 0xa9,
207 0x6e, 0xff, 0x11, 0x8c, 0xe5, 0xe4, 0x16, 0xdd,
208 0xb6, 0xa6, 0x55, 0xca, 0x4b, 0x0b, 0xbb, 0xb7,
209 0xf5, 0xe5, 0x73, 0xf3, 0x24, 0x84, 0x29, 0xb2,
210 0xc3, 0xbc, 0x7f, 0x2b, 0x4a, 0xc7, 0xdf, 0x46,
211 0x8e, 0xe1, 0x35, 0x69, 0x1b, 0x8e, 0x9f, 0x6b,
212 0x4d, 0xf3, 0x65, 0xae, 0x3d, 0x87, 0x2b, 0xc9,
213 0xf0, 0x8c, 0xf2, 0x88, 0x2f, 0x1b, 0x79, 0x80,
214 0xd2, 0xb2, 0x64, 0x0a, 0xcc, 0x66, 0x69, 0x4c,
215 0xa1, 0x85, 0xc4, 0x6a, 0x94, 0x46, 0x70, 0x69,
216 0xbc, 0x8c, 0x1c, 0x62, 0x65, 0x4d, 0x68, 0xcc,
217 0xe3, 0x3c, 0x6c, 0xe7, 0xd1, 0x09, 0xed, 0xdd,
218 0x42, 0x10, 0x11, 0x6b, 0xdd, 0x7c, 0xe3, 0xe1,
219 0x3b, 0x3b, 0x0d, 0x01, 0x6d, 0xca, 0x2f, 0x4b,
220 0x45, 0x5e, 0x76, 0x5d, 0x5c, 0x6f, 0x53, 0xa4,
221 0x38, 0x74, 0x75, 0x94, 0x2c, 0xda, 0xf8, 0xa6,
222 0x01, 0x02, 0x81, 0x81, 0x00, 0xcd, 0x5f, 0x9d,
223 0x6c, 0x94, 0xf6, 0x44, 0x37, 0x72, 0xfe, 0xcf,
224 0xbe, 0x82, 0x96, 0x24, 0x22, 0x12, 0x07, 0x6f,
225 0xd1, 0x57, 0x7b, 0xc7, 0x63, 0x20, 0xf5, 0x93,
226 0x79, 0x70, 0x0b, 0xe4, 0x38, 0x19, 0x62, 0x7b,
227 0x89, 0x3e, 0x45, 0xdf, 0xd6, 0xae, 0x9d, 0x0d,
228 0xa8, 0x76, 0xc1, 0xbd, 0x04, 0x2b, 0xaa, 0x30,
229 0x6a, 0xac, 0x65, 0x91, 0x61, 0xf0, 0xf8, 0x5d,
230 0xa3, 0x53, 0xa4, 0xfb, 0x99, 0xac, 0x46, 0x7a,
231 0x12, 0x4b, 0xf7, 0xa7, 0x48, 0x41, 0x61, 0x48,
232 0x26, 0x5c, 0x68, 0x2f, 0x73, 0x91, 0xe4, 0x74,
233 0xcd, 0xc9, 0x8b, 0xe7, 0x26, 0xe4, 0x35, 0xde,
234 0x32, 0x6b, 0x24, 0x49, 0xf2, 0x04, 0x67, 0x3d,
235 0x31, 0x8f, 0x22, 0xe5, 0x49, 0xae, 0x49, 0x94,
236 0xb3, 0x45, 0x2b, 0xed, 0x6f, 0x9c, 0xc7, 0x80,
237 0xf0, 0x42, 0xd5, 0x8f, 0x27, 0xd6, 0xd6, 0x49,
238 0xf2, 0x16, 0xcc, 0x4b, 0x39, 0x02, 0x81, 0x81,
239 0x00, 0xbb, 0xb7, 0xd7, 0x59, 0xcb, 0xfb, 0x10,
240 0x13, 0xc4, 0x7b, 0x92, 0x0c, 0x45, 0xcb, 0x6c,
241 0x81, 0x0a, 0x55, 0x63, 0x1d, 0x96, 0xa2, 0x13,
242 0xd2, 0x40, 0xd1, 0x2a, 0xa1, 0xe7, 0x2a, 0x73,
243 0x74, 0xd6, 0x61, 0xc9, 0xbc, 0xdb, 0xa2, 0x93,
244 0x85, 0x1c, 0x28, 0x9b, 0x44, 0x82, 0x2c, 0xaa,
245 0xf7, 0x18, 0x60, 0xe9, 0x42, 0xda, 0xa2, 0xff,
246 0x04, 0x21, 0xe6, 0x24, 0xc7, 0x3e, 0x39, 0x19,
247 0x0a, 0xf6, 0xae, 0xc6, 0x99, 0x71, 0x32, 0x61,
248 0x4d, 0x60, 0xd7, 0x71, 0x71, 0x63, 0x77, 0xbe,
249 0x19, 0xfa, 0x3a, 0x9d, 0xbf, 0x73, 0x50, 0x8a,
250 0xa6, 0x26, 0x7b, 0x74, 0xfa, 0x39, 0xd9, 0xb9,
251 0x18, 0x4b, 0xc2, 0x05, 0xe5, 0x8f, 0x53, 0xe6,
252 0xdc, 0x14, 0x1f, 0x42, 0x20, 0x93, 0x11, 0x4d,
253 0x29, 0x93, 0x32, 0xc8, 0x63, 0x96, 0x88, 0x76,
254 0x69, 0x5c, 0xe3, 0x0e, 0xbd, 0xb6, 0xd9, 0xd6,
255 0x01, 0x02, 0x81, 0x80, 0x62, 0xa2, 0xed, 0x84,
256 0xdc, 0xf6, 0x7a, 0x44, 0xf7, 0x62, 0x12, 0x7c,
257 0xb9, 0x53, 0x4a, 0xff, 0x62, 0x11, 0x58, 0x4e,
258 0xfe, 0xe9, 0x60, 0x15, 0xe8, 0x1a, 0x8a, 0x3d,
259 0xe4, 0xe6, 0x91, 0x31, 0xb0, 0x5f, 0x70, 0x5d,
260 0xb6, 0x1e, 0xf1, 0x26, 0xb6, 0xae, 0x8f, 0x84,
261 0xbd, 0xa4, 0xc7, 0x17, 0x5d, 0xb1, 0x5b, 0x97,
262 0xa0, 0x3d, 0x17, 0xda, 0x26, 0x55, 0xe3, 0x03,
263 0x32, 0x85, 0x26, 0xa1, 0xe3, 0xef, 0xe5, 0x69,
264 0x2c, 0x3b, 0x41, 0x88, 0x9e, 0x7e, 0x0e, 0x9c,
265 0xfd, 0xfc, 0xbb, 0xed, 0x91, 0xc0, 0x5b, 0xa9,
266 0x0a, 0x87, 0xba, 0xf9, 0x1e, 0xda, 0x10, 0x61,
267 0xbe, 0xbb, 0xab, 0x18, 0x25, 0xad, 0x3f, 0xe2,
268 0xb1, 0x90, 0x5c, 0xf7, 0x4a, 0x51, 0xe4, 0xad,
269 0x45, 0x27, 0x97, 0xdd, 0xe7, 0x3a, 0x9a, 0x5e,
270 0xca, 0x7a, 0xaf, 0x4a, 0xbf, 0x10, 0x24, 0x6b,
271 0xb5, 0x2f, 0x61, 0x61, 0x02, 0x81, 0x81, 0x00,
272 0x85, 0x7c, 0x78, 0xa5, 0x11, 0xdf, 0xc3, 0x6a,
273 0x38, 0x48, 0xfa, 0x7e, 0x48, 0xf0, 0x5a, 0x58,
274 0xe2, 0xc5, 0x83, 0x4e, 0x38, 0x3f, 0x4a, 0x2b,
275 0x07, 0x57, 0x31, 0xe7, 0xbe, 0x50, 0xb1, 0xbb,
276 0x24, 0xf3, 0x3d, 0x8b, 0x53, 0xb7, 0xd1, 0x47,
277 0x72, 0x5e, 0xd5, 0xd6, 0x4c, 0xce, 0x2c, 0x46,
278 0x61, 0x9a, 0xaa, 0xc3, 0x0e, 0xd4, 0x23, 0x2c,
279 0xdd, 0xf5, 0xb7, 0xad, 0x38, 0x52, 0x17, 0xc4,
280 0x16, 0xbb, 0xda, 0x1c, 0x61, 0xb1, 0xca, 0x8d,
281 0xb2, 0xa0, 0xbe, 0x4f, 0x3d, 0x19, 0x0e, 0xe0,
282 0x0e, 0x52, 0xad, 0xf3, 0xaf, 0xd9, 0xcc, 0x78,
283 0xc2, 0xb1, 0x5e, 0x05, 0x5e, 0xf2, 0x27, 0x84,
284 0x15, 0xe4, 0x8f, 0xca, 0xc5, 0x92, 0x43, 0xe0,
285 0x24, 0x8d, 0xf2, 0x5d, 0x55, 0xcc, 0x9d, 0x2f,
286 0xa9, 0xf6, 0x9b, 0x67, 0x6a, 0x87, 0x74, 0x36,
287 0x34, 0x7c, 0xd4, 0x9d, 0xff, 0xad, 0xee, 0x69
290 /* don’t use _k1 */
293 __unused
static const uint8_t _k1_digest
[] = {
294 0x46, 0xE0, 0x8A, 0x05, 0x63, 0x4D, 0x17, 0x3F,
295 0xCA, 0xA4, 0xAA, 0xB6, 0x5A, 0xDA, 0xCF, 0xBA,
296 0x84, 0x22, 0x7C, 0x23
299 /* Create and identity and try to retrieve it. */
300 static void tests(void)
302 SecCertificateRef cert
= NULL
, cert2
= NULL
;
303 SecKeyRef privKey
= NULL
;
304 SecIdentityRef identity
= NULL
;
305 CFArrayRef trust_chain
= NULL
;
306 SSLContextRef ctx
= NULL
;
308 isnt(cert
= SecCertificateCreateWithBytes(NULL
, _c1
, sizeof(_c1
)),
309 NULL
, "create certificate");
310 isnt(cert2
= SecCertificateCreateWithBytes(NULL
, _c1
, sizeof(_c1
)),
311 NULL
, "create certificate2");
313 privKey
= SecKeyCreateRSAPrivateKey(NULL
, _k1
, sizeof(_k1
),
314 kSecKeyEncodingPkcs1
);
316 privKey
= NULL
; /* TODO */
318 isnt(privKey
, NULL
, "create private key");
320 ok(identity
= SecIdentityCreate(kCFAllocatorDefault
, cert
, privKey
), "SecIdentityCreate");
322 CFReleaseSafe(privKey
);
323 const void *values
[] = { identity
, cert2
};
324 ok(trust_chain
= CFArrayCreate(kCFAllocatorDefault
, values
,
325 array_size(values
), &kCFTypeArrayCallBacks
), "CFArrayCreate");
326 CFReleaseSafe(identity
);
327 CFReleaseSafe(cert2
);
329 is(CFGetRetainCount(trust_chain
), 1, "trust_chain rc = 1");
330 is(CFGetRetainCount(identity
), 1, "identity rc = 1");
331 is(CFGetRetainCount(cert
), 1, "cert rc = 1");
332 is(CFGetRetainCount(cert2
), 1, "cert2 rc = 1");
333 is(CFGetRetainCount(privKey
), 1, "privKey rc = 1");
335 ok(ctx
=SSLCreateContext(NULL
, kSSLClientSide
, kSSLStreamType
), "SSLNewContext");
336 ok_status(SSLSetCertificate(ctx
, trust_chain
), "SSLSetCertificate");
339 is(CFGetRetainCount(trust_chain
), 1, "trust_chain rc = 1");
340 is(CFGetRetainCount(identity
), 1, "identity rc = 1");
341 is(CFGetRetainCount(cert
), 1, "cert rc = 1");
342 is(CFGetRetainCount(cert2
), 1, "cert2 rc = 1");
343 is(CFGetRetainCount(privKey
), 1, "privKey rc = 1");
345 ok(ctx
=SSLCreateContext(NULL
, kSSLClientSide
, kSSLStreamType
), "SSLCreateContext");
346 ok_status(SSLSetCertificate(ctx
, trust_chain
), "SSLSetCertificate");
349 is(CFGetRetainCount(trust_chain
), 1, "trust_chain rc = 1");
350 is(CFGetRetainCount(identity
), 1, "identity rc = 1");
351 is(CFGetRetainCount(cert
), 1, "cert rc = 1");
352 is(CFGetRetainCount(cert2
), 1, "cert2 rc = 1");
353 is(CFGetRetainCount(privKey
), 1, "privKey rc = 1");
355 ok(ctx
=SSLCreateContext(NULL
, kSSLClientSide
, kSSLStreamType
), "SSLCreateContext");
356 ok_status(SSLSetCertificate(ctx
, trust_chain
), "SSLSetCertificate");
357 ok_status(SSLSetCertificate(ctx
, trust_chain
), "SSLSetCertificate");
360 is(CFGetRetainCount(trust_chain
), 1, "trust_chain rc = 1");
361 is(CFGetRetainCount(identity
), 1, "identity rc = 1");
362 is(CFGetRetainCount(cert
), 1, "cert rc = 1");
363 is(CFGetRetainCount(cert2
), 1, "cert2 rc = 1");
364 is(CFGetRetainCount(privKey
), 1, "privKey rc = 1");
366 CFReleaseNull(trust_chain
);
369 int ssl_41_clientauth(int argc
, char *const *argv
)