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