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