]> git.saurik.com Git - apple/security.git/blob - OSX/utilities/src/SecAppleAnchor.c
Security-57337.50.23.tar.gz
[apple/security.git] / OSX / utilities / src / SecAppleAnchor.c
1 //
2 // utilities
3 //
4 // Copyright © 2015 Apple Inc. All rights reserved.
5 //
6
7 #include <AssertMacros.h>
8
9 #include "SecAppleAnchorPriv.h"
10 #include "SecInternalReleasePriv.h"
11 #include "SecCFWrappers.h"
12
13 static CFDictionaryRef getAnchors(void);
14
15 bool
16 SecIsAppleTrustAnchorData(CFDataRef cert,
17 SecAppleTrustAnchorFlags flags)
18 {
19 CFDictionaryRef anchors = NULL;
20 CFTypeRef value = NULL;
21 bool res = false;
22
23 anchors = getAnchors();
24 require(anchors, fail);
25
26 value = CFDictionaryGetValue(anchors, cert);
27 require_quiet(value, fail);
28
29 require(isBoolean(value), fail);
30
31 if ((SecIsInternalRelease() || flags & kSecAppleTrustAnchorFlagsAllowNonProduction)
32 && flags & kSecAppleTrustAnchorFlagsIncludeTestAnchors) {
33 res = true;
34 } else {
35 res = CFBooleanGetValue(value);
36 }
37
38 fail:
39 return res;
40 }
41
42
43 bool
44 SecIsAppleTrustAnchor(SecCertificateRef cert,
45 SecAppleTrustAnchorFlags flags)
46 {
47 CFDataRef data;
48 bool res = false;
49
50 data = SecCertificateCopyData(cert);
51 require(data, fail);
52
53 res = SecIsAppleTrustAnchorData(data, flags);
54
55 fail:
56 CFReleaseNull(data);
57 return res;
58 }
59
60 static const unsigned char AppleRoot[1215] = {
61 0x30, 0x82, 0x04, 0xbb, 0x30, 0x82, 0x03, 0xa3, 0xa0, 0x03, 0x02, 0x01,
62 0x02, 0x02, 0x01, 0x02, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
63 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x62, 0x31, 0x0b, 0x30,
64 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13,
65 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x41, 0x70, 0x70,
66 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06,
67 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20,
68 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
69 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31,
70 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0d, 0x41, 0x70,
71 0x70, 0x6c, 0x65, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30,
72 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x30, 0x34, 0x32, 0x35, 0x32, 0x31, 0x34,
73 0x30, 0x33, 0x36, 0x5a, 0x17, 0x0d, 0x33, 0x35, 0x30, 0x32, 0x30, 0x39,
74 0x32, 0x31, 0x34, 0x30, 0x33, 0x36, 0x5a, 0x30, 0x62, 0x31, 0x0b, 0x30,
75 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13,
76 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x41, 0x70, 0x70,
77 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06,
78 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20,
79 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
80 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31,
81 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0d, 0x41, 0x70,
82 0x70, 0x6c, 0x65, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30,
83 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
84 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30,
85 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xe4, 0x91, 0xa9, 0x09,
86 0x1f, 0x91, 0xdb, 0x1e, 0x47, 0x50, 0xeb, 0x05, 0xed, 0x5e, 0x79, 0x84,
87 0x2d, 0xeb, 0x36, 0xa2, 0x57, 0x4c, 0x55, 0xec, 0x8b, 0x19, 0x89, 0xde,
88 0xf9, 0x4b, 0x6c, 0xf5, 0x07, 0xab, 0x22, 0x30, 0x02, 0xe8, 0x18, 0x3e,
89 0xf8, 0x50, 0x09, 0xd3, 0x7f, 0x41, 0xa8, 0x98, 0xf9, 0xd1, 0xca, 0x66,
90 0x9c, 0x24, 0x6b, 0x11, 0xd0, 0xa3, 0xbb, 0xe4, 0x1b, 0x2a, 0xc3, 0x1f,
91 0x95, 0x9e, 0x7a, 0x0c, 0xa4, 0x47, 0x8b, 0x5b, 0xd4, 0x16, 0x37, 0x33,
92 0xcb, 0xc4, 0x0f, 0x4d, 0xce, 0x14, 0x69, 0xd1, 0xc9, 0x19, 0x72, 0xf5,
93 0x5d, 0x0e, 0xd5, 0x7f, 0x5f, 0x9b, 0xf2, 0x25, 0x03, 0xba, 0x55, 0x8f,
94 0x4d, 0x5d, 0x0d, 0xf1, 0x64, 0x35, 0x23, 0x15, 0x4b, 0x15, 0x59, 0x1d,
95 0xb3, 0x94, 0xf7, 0xf6, 0x9c, 0x9e, 0xcf, 0x50, 0xba, 0xc1, 0x58, 0x50,
96 0x67, 0x8f, 0x08, 0xb4, 0x20, 0xf7, 0xcb, 0xac, 0x2c, 0x20, 0x6f, 0x70,
97 0xb6, 0x3f, 0x01, 0x30, 0x8c, 0xb7, 0x43, 0xcf, 0x0f, 0x9d, 0x3d, 0xf3,
98 0x2b, 0x49, 0x28, 0x1a, 0xc8, 0xfe, 0xce, 0xb5, 0xb9, 0x0e, 0xd9, 0x5e,
99 0x1c, 0xd6, 0xcb, 0x3d, 0xb5, 0x3a, 0xad, 0xf4, 0x0f, 0x0e, 0x00, 0x92,
100 0x0b, 0xb1, 0x21, 0x16, 0x2e, 0x74, 0xd5, 0x3c, 0x0d, 0xdb, 0x62, 0x16,
101 0xab, 0xa3, 0x71, 0x92, 0x47, 0x53, 0x55, 0xc1, 0xaf, 0x2f, 0x41, 0xb3,
102 0xf8, 0xfb, 0xe3, 0x70, 0xcd, 0xe6, 0xa3, 0x4c, 0x45, 0x7e, 0x1f, 0x4c,
103 0x6b, 0x50, 0x96, 0x41, 0x89, 0xc4, 0x74, 0x62, 0x0b, 0x10, 0x83, 0x41,
104 0x87, 0x33, 0x8a, 0x81, 0xb1, 0x30, 0x58, 0xec, 0x5a, 0x04, 0x32, 0x8c,
105 0x68, 0xb3, 0x8f, 0x1d, 0xde, 0x65, 0x73, 0xff, 0x67, 0x5e, 0x65, 0xbc,
106 0x49, 0xd8, 0x76, 0x9f, 0x33, 0x14, 0x65, 0xa1, 0x77, 0x94, 0xc9, 0x2d,
107 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x7a, 0x30, 0x82, 0x01,
108 0x76, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04,
109 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13,
110 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x1d,
111 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x2b, 0xd0, 0x69,
112 0x47, 0x94, 0x76, 0x09, 0xfe, 0xf4, 0x6b, 0x8d, 0x2e, 0x40, 0xa6, 0xf7,
113 0x47, 0x4d, 0x7f, 0x08, 0x5e, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23,
114 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x2b, 0xd0, 0x69, 0x47, 0x94, 0x76,
115 0x09, 0xfe, 0xf4, 0x6b, 0x8d, 0x2e, 0x40, 0xa6, 0xf7, 0x47, 0x4d, 0x7f,
116 0x08, 0x5e, 0x30, 0x82, 0x01, 0x11, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04,
117 0x82, 0x01, 0x08, 0x30, 0x82, 0x01, 0x04, 0x30, 0x82, 0x01, 0x00, 0x06,
118 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x63, 0x64, 0x05, 0x01, 0x30, 0x81,
119 0xf2, 0x30, 0x2a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02,
120 0x01, 0x16, 0x1e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77,
121 0x77, 0x77, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d,
122 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x63, 0x61, 0x2f, 0x30, 0x81, 0xc3,
123 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x02, 0x30, 0x81,
124 0xb6, 0x1a, 0x81, 0xb3, 0x52, 0x65, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65,
125 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x63, 0x65, 0x72,
126 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x62, 0x79, 0x20,
127 0x61, 0x6e, 0x79, 0x20, 0x70, 0x61, 0x72, 0x74, 0x79, 0x20, 0x61, 0x73,
128 0x73, 0x75, 0x6d, 0x65, 0x73, 0x20, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74,
129 0x61, 0x6e, 0x63, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20,
130 0x74, 0x68, 0x65, 0x6e, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61,
131 0x62, 0x6c, 0x65, 0x20, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64,
132 0x20, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x63,
133 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6f, 0x66,
134 0x20, 0x75, 0x73, 0x65, 0x2c, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66,
135 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
136 0x20, 0x61, 0x6e, 0x64, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
137 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x72, 0x61, 0x63, 0x74,
138 0x69, 0x63, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e,
139 0x74, 0x73, 0x2e, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
140 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x5c,
141 0x36, 0x99, 0x4c, 0x2d, 0x78, 0xb7, 0xed, 0x8c, 0x9b, 0xdc, 0xf3, 0x77,
142 0x9b, 0xf2, 0x76, 0xd2, 0x77, 0x30, 0x4f, 0xc1, 0x1f, 0x85, 0x83, 0x85,
143 0x1b, 0x99, 0x3d, 0x47, 0x37, 0xf2, 0xa9, 0x9b, 0x40, 0x8e, 0x2c, 0xd4,
144 0xb1, 0x90, 0x12, 0xd8, 0xbe, 0xf4, 0x73, 0x9b, 0xee, 0xd2, 0x64, 0x0f,
145 0xcb, 0x79, 0x4f, 0x34, 0xd8, 0xa2, 0x3e, 0xf9, 0x78, 0xff, 0x6b, 0xc8,
146 0x07, 0xec, 0x7d, 0x39, 0x83, 0x8b, 0x53, 0x20, 0xd3, 0x38, 0xc4, 0xb1,
147 0xbf, 0x9a, 0x4f, 0x0a, 0x6b, 0xff, 0x2b, 0xfc, 0x59, 0xa7, 0x05, 0x09,
148 0x7c, 0x17, 0x40, 0x56, 0x11, 0x1e, 0x74, 0xd3, 0xb7, 0x8b, 0x23, 0x3b,
149 0x47, 0xa3, 0xd5, 0x6f, 0x24, 0xe2, 0xeb, 0xd1, 0xb7, 0x70, 0xdf, 0x0f,
150 0x45, 0xe1, 0x27, 0xca, 0xf1, 0x6d, 0x78, 0xed, 0xe7, 0xb5, 0x17, 0x17,
151 0xa8, 0xdc, 0x7e, 0x22, 0x35, 0xca, 0x25, 0xd5, 0xd9, 0x0f, 0xd6, 0x6b,
152 0xd4, 0xa2, 0x24, 0x23, 0x11, 0xf7, 0xa1, 0xac, 0x8f, 0x73, 0x81, 0x60,
153 0xc6, 0x1b, 0x5b, 0x09, 0x2f, 0x92, 0xb2, 0xf8, 0x44, 0x48, 0xf0, 0x60,
154 0x38, 0x9e, 0x15, 0xf5, 0x3d, 0x26, 0x67, 0x20, 0x8a, 0x33, 0x6a, 0xf7,
155 0x0d, 0x82, 0xcf, 0xde, 0xeb, 0xa3, 0x2f, 0xf9, 0x53, 0x6a, 0x5b, 0x64,
156 0xc0, 0x63, 0x33, 0x77, 0xf7, 0x3a, 0x07, 0x2c, 0x56, 0xeb, 0xda, 0x0f,
157 0x21, 0x0e, 0xda, 0xba, 0x73, 0x19, 0x4f, 0xb5, 0xd9, 0x36, 0x7f, 0xc1,
158 0x87, 0x55, 0xd9, 0xa7, 0x99, 0xb9, 0x32, 0x42, 0xfb, 0xd8, 0xd5, 0x71,
159 0x9e, 0x7e, 0xa1, 0x52, 0xb7, 0x1b, 0xbd, 0x93, 0x42, 0x24, 0x12, 0x2a,
160 0xc7, 0x0f, 0x1d, 0xb6, 0x4d, 0x9c, 0x5e, 0x63, 0xc8, 0x4b, 0x80, 0x17,
161 0x50, 0xaa, 0x8a, 0xd5, 0xda, 0xe4, 0xfc, 0xd0, 0x09, 0x07, 0x37, 0xb0,
162 0x75, 0x75, 0x21
163 };
164
165 static const unsigned char AppleRootG2[1430] = {
166 0x30, 0x82, 0x05, 0x92, 0x30, 0x82, 0x03, 0x7a, 0xa0, 0x03, 0x02, 0x01,
167 0x02, 0x02, 0x08, 0x01, 0xe0, 0xe5, 0xb5, 0x83, 0x67, 0xa3, 0xe0, 0x30,
168 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0c,
169 0x05, 0x00, 0x30, 0x67, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04,
170 0x03, 0x0c, 0x12, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x52, 0x6f, 0x6f,
171 0x74, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x31, 0x26, 0x30,
172 0x24, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x1d, 0x41, 0x70, 0x70, 0x6c,
173 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
174 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74,
175 0x79, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0a,
176 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x0b,
177 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x30,
178 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30, 0x34, 0x33, 0x30, 0x31, 0x38, 0x31,
179 0x30, 0x30, 0x39, 0x5a, 0x17, 0x0d, 0x33, 0x39, 0x30, 0x34, 0x33, 0x30,
180 0x31, 0x38, 0x31, 0x30, 0x30, 0x39, 0x5a, 0x30, 0x67, 0x31, 0x1b, 0x30,
181 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x12, 0x41, 0x70, 0x70, 0x6c,
182 0x65, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20,
183 0x47, 0x32, 0x31, 0x26, 0x30, 0x24, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c,
184 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69,
185 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74,
186 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03,
187 0x55, 0x04, 0x0a, 0x0c, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49,
188 0x6e, 0x63, 0x2e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
189 0x13, 0x02, 0x55, 0x53, 0x30, 0x82, 0x02, 0x22, 0x30, 0x0d, 0x06, 0x09,
190 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03,
191 0x82, 0x02, 0x0f, 0x00, 0x30, 0x82, 0x02, 0x0a, 0x02, 0x82, 0x02, 0x01,
192 0x00, 0xd8, 0x11, 0x12, 0x48, 0x48, 0xda, 0x29, 0x8a, 0x49, 0xc5, 0x1c,
193 0xc7, 0xec, 0x6e, 0x33, 0x6d, 0xfe, 0x4d, 0xfb, 0xe0, 0x1c, 0xde, 0xac,
194 0x5e, 0xe2, 0x36, 0xa7, 0x24, 0xf9, 0x7f, 0x50, 0x6b, 0x4c, 0xce, 0xb9,
195 0x30, 0x54, 0x27, 0xe5, 0xb3, 0xd6, 0xed, 0x25, 0xe6, 0x30, 0xb6, 0x05,
196 0x37, 0x5e, 0x14, 0x22, 0x11, 0xc5, 0xe8, 0xaa, 0x1b, 0xd2, 0xfb, 0xb2,
197 0xd2, 0x09, 0x95, 0x38, 0xa4, 0xef, 0x2a, 0x49, 0x8c, 0x5d, 0x3e, 0x71,
198 0x66, 0x03, 0x38, 0xfb, 0x16, 0xf5, 0x85, 0x88, 0xe4, 0x5a, 0x92, 0x0c,
199 0x04, 0x32, 0xf2, 0xc8, 0x40, 0xfb, 0x52, 0x5f, 0x9f, 0xf6, 0xc0, 0xf1,
200 0xe3, 0xba, 0x45, 0xa0, 0x50, 0xd5, 0x12, 0x8b, 0xf2, 0xdd, 0xde, 0x91,
201 0x86, 0x23, 0xf0, 0xf5, 0xb6, 0x72, 0x2e, 0x01, 0xda, 0x0b, 0xf6, 0x2e,
202 0x39, 0x08, 0x5f, 0x19, 0xa1, 0x63, 0x41, 0x0b, 0x1c, 0xa7, 0x94, 0xc1,
203 0x86, 0xc4, 0x53, 0x2f, 0x76, 0xf6, 0x0a, 0xd7, 0x0c, 0xd1, 0x83, 0x3f,
204 0x1a, 0x53, 0x19, 0xf3, 0x57, 0xd5, 0x27, 0x7f, 0xfc, 0x13, 0xb8, 0xf8,
205 0x92, 0x8d, 0xfc, 0xd3, 0x28, 0x43, 0x3c, 0xb5, 0x68, 0x00, 0x25, 0x5d,
206 0x27, 0x62, 0xd3, 0xdd, 0x55, 0xdd, 0x44, 0x20, 0x90, 0x83, 0x35, 0x93,
207 0xc5, 0xbf, 0xb8, 0x19, 0xfb, 0x6b, 0xe3, 0xdc, 0x08, 0x42, 0xe6, 0xaf,
208 0x6d, 0xfa, 0x9e, 0x40, 0xca, 0x4e, 0x85, 0x85, 0x78, 0x49, 0xb1, 0xd7,
209 0xc3, 0xc1, 0x30, 0x39, 0x32, 0xab, 0x7e, 0x5f, 0xaa, 0xd3, 0x8b, 0x6f,
210 0x9f, 0x2d, 0x1a, 0x21, 0x68, 0x70, 0x67, 0xb3, 0xa3, 0xf1, 0x98, 0x41,
211 0x6d, 0x91, 0x7c, 0xf8, 0xd7, 0xdb, 0xa8, 0xe7, 0x5f, 0x21, 0x1a, 0x8c,
212 0x33, 0xbf, 0x31, 0x74, 0xb7, 0xb8, 0xd1, 0xf4, 0xe0, 0x22, 0xf4, 0xbf,
213 0x72, 0x34, 0xdf, 0xf7, 0x81, 0x4d, 0x71, 0x7d, 0x51, 0xa1, 0xe2, 0xb3,
214 0xf0, 0xd3, 0x28, 0x16, 0x73, 0x6f, 0xcd, 0xcc, 0xad, 0x37, 0x7d, 0x4e,
215 0xeb, 0xad, 0x40, 0xe1, 0x3f, 0x81, 0xfd, 0xf7, 0x3d, 0x0a, 0x3e, 0xa2,
216 0xf1, 0xbd, 0x31, 0x96, 0x29, 0x59, 0xdc, 0xc2, 0x19, 0x80, 0x8c, 0x5b,
217 0x74, 0xc6, 0x2c, 0xd3, 0x10, 0x53, 0x26, 0x1d, 0x14, 0x4f, 0xc4, 0xd4,
218 0x81, 0x66, 0x3c, 0x87, 0x67, 0x33, 0x27, 0x14, 0x08, 0xe9, 0xb4, 0x77,
219 0x84, 0x34, 0x52, 0x8f, 0x89, 0xf8, 0x68, 0x98, 0x17, 0xbf, 0xc3, 0xbb,
220 0xaa, 0x13, 0x93, 0x1f, 0x5d, 0x54, 0x2f, 0xa8, 0xc7, 0x7c, 0xfb, 0x0d,
221 0x14, 0xbe, 0x15, 0x3d, 0x24, 0x34, 0xf2, 0x9a, 0xdc, 0x75, 0x41, 0x66,
222 0x22, 0xb4, 0x01, 0xd6, 0x0b, 0xaf, 0x90, 0x9e, 0x0c, 0xea, 0x62, 0xf8,
223 0x9b, 0x59, 0x3c, 0x08, 0xe2, 0x96, 0x34, 0xe4, 0x63, 0xde, 0xbc, 0x37,
224 0xd4, 0xeb, 0x0c, 0x88, 0x03, 0x43, 0x0b, 0x50, 0xaf, 0xa0, 0x34, 0xdd,
225 0x50, 0x4d, 0x15, 0xfb, 0x5a, 0x24, 0xd8, 0x0c, 0xfa, 0x0c, 0x63, 0x9e,
226 0x1f, 0x03, 0xb1, 0xe1, 0xee, 0xe1, 0xaa, 0x43, 0xf4, 0x66, 0x65, 0x28,
227 0x37, 0x02, 0x31, 0xef, 0x01, 0xc7, 0x1e, 0xd1, 0xcc, 0x9f, 0x6d, 0xca,
228 0x54, 0x3a, 0x40, 0xdb, 0xce, 0xcf, 0x4f, 0x46, 0x8b, 0x4a, 0x65, 0x9a,
229 0x6a, 0xc6, 0x68, 0x6c, 0xd7, 0xcc, 0x99, 0x1b, 0x47, 0xb0, 0x72, 0xc3,
230 0x77, 0x8f, 0xc4, 0xf7, 0x61, 0x9c, 0x74, 0x1f, 0xce, 0xfd, 0x6b, 0xa1,
231 0xc2, 0x9c, 0x94, 0x82, 0xab, 0x94, 0xa2, 0xe7, 0xbd, 0x1b, 0xba, 0xb9,
232 0x70, 0x39, 0x95, 0x17, 0xc5, 0x29, 0xf3, 0x39, 0x58, 0x34, 0xf5, 0xc4,
233 0xa4, 0xc6, 0x7b, 0x60, 0xb9, 0x66, 0x43, 0x50, 0x3f, 0x6e, 0x61, 0xfc,
234 0x0e, 0xf9, 0x86, 0xaa, 0x60, 0x0c, 0x43, 0x4b, 0x95, 0x02, 0x03, 0x01,
235 0x00, 0x01, 0xa3, 0x42, 0x30, 0x40, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,
236 0x0e, 0x04, 0x16, 0x04, 0x14, 0xc4, 0x99, 0x13, 0x6c, 0x18, 0x03, 0xc2,
237 0x7b, 0xc0, 0xa3, 0xa0, 0x0d, 0x7f, 0x72, 0x80, 0x7a, 0x1c, 0x77, 0x26,
238 0x8d, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04,
239 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d,
240 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x0d,
241 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0c, 0x05,
242 0x00, 0x03, 0x82, 0x02, 0x01, 0x00, 0x51, 0xa6, 0xf3, 0xe2, 0xf4, 0xb8,
243 0x3d, 0x93, 0xbf, 0x2d, 0xce, 0x0f, 0xbb, 0x5b, 0xe1, 0x55, 0x14, 0x4e,
244 0x4e, 0xd1, 0xe5, 0xce, 0x79, 0x5d, 0x81, 0x7f, 0xfe, 0xb6, 0xf0, 0x87,
245 0x33, 0xf8, 0xef, 0x94, 0xe5, 0x7e, 0xdc, 0x6a, 0x79, 0xa7, 0x1c, 0xbe,
246 0xf0, 0x94, 0xb7, 0xa6, 0xd1, 0x30, 0x9c, 0xc8, 0x0d, 0x0a, 0x75, 0x9e,
247 0x7d, 0x92, 0x95, 0x7e, 0x18, 0x9d, 0x7e, 0xc2, 0x71, 0x69, 0x7c, 0x14,
248 0xea, 0xcf, 0x83, 0x0e, 0xe4, 0x14, 0x42, 0x9e, 0x74, 0x0e, 0x10, 0xcd,
249 0xab, 0x1a, 0xba, 0x11, 0x61, 0x81, 0x78, 0xd8, 0xf1, 0xb5, 0x45, 0x40,
250 0x78, 0xab, 0xa8, 0xc0, 0xce, 0xfb, 0x7d, 0x63, 0x37, 0x68, 0xf6, 0xe7,
251 0xfb, 0xaf, 0xc6, 0xc3, 0x4b, 0xec, 0x1f, 0x36, 0x26, 0x13, 0x54, 0x86,
252 0x94, 0x72, 0xb2, 0xea, 0x02, 0xed, 0x8b, 0x6d, 0xe4, 0x0c, 0xa6, 0x90,
253 0xc0, 0x57, 0x75, 0xcf, 0x8c, 0x42, 0x7d, 0x5c, 0xe6, 0x31, 0x7d, 0xf3,
254 0xc9, 0xb2, 0x92, 0x69, 0x46, 0x0e, 0x88, 0xf8, 0xe3, 0x2d, 0x42, 0xb2,
255 0x38, 0xa8, 0xa6, 0x19, 0x8d, 0xf1, 0x9f, 0xcd, 0xee, 0x6a, 0x65, 0xbc,
256 0x1a, 0xb0, 0x25, 0xbd, 0xa7, 0x29, 0xfd, 0xf4, 0x3e, 0xa2, 0x75, 0x49,
257 0xbf, 0x9e, 0xdb, 0xc9, 0xf7, 0xa7, 0x1e, 0x63, 0x99, 0xe1, 0x5c, 0x46,
258 0xff, 0x92, 0x05, 0x8c, 0xfa, 0x1e, 0x20, 0xf9, 0x86, 0x94, 0x56, 0x25,
259 0xe5, 0xb4, 0x57, 0x38, 0x9d, 0xeb, 0x88, 0x64, 0x14, 0x21, 0x49, 0x21,
260 0x39, 0xbf, 0x62, 0x66, 0xa9, 0xb1, 0xa2, 0xca, 0x6f, 0x3f, 0x21, 0x60,
261 0xc5, 0x89, 0xd4, 0x45, 0x36, 0xc8, 0x98, 0x7c, 0xbd, 0xf6, 0xfe, 0x99,
262 0x49, 0x80, 0x3b, 0x2c, 0xd2, 0xa6, 0xa7, 0x88, 0x03, 0x04, 0x31, 0x19,
263 0xb7, 0xb6, 0x3a, 0x61, 0x45, 0xfa, 0xc9, 0xf2, 0x23, 0xc8, 0x63, 0x73,
264 0xbf, 0x56, 0x89, 0x31, 0xb0, 0xd9, 0x7c, 0x62, 0xa7, 0x7b, 0x15, 0xa8,
265 0x88, 0x8a, 0xab, 0x38, 0x40, 0xc2, 0xcc, 0x12, 0xff, 0x15, 0xe3, 0xf0,
266 0x37, 0xdf, 0x37, 0x72, 0xcb, 0xcc, 0x98, 0xe6, 0xbf, 0xa2, 0xbc, 0xfa,
267 0x26, 0x8a, 0x71, 0x56, 0xd7, 0xe7, 0x24, 0x1b, 0x48, 0x44, 0x3e, 0x9e,
268 0xfc, 0x9f, 0xc9, 0xcc, 0x1a, 0xec, 0x43, 0x3c, 0x01, 0xbc, 0x34, 0x78,
269 0xc8, 0x69, 0xf5, 0xc6, 0xe6, 0x56, 0xec, 0x06, 0x09, 0x36, 0x90, 0xeb,
270 0x14, 0x4a, 0x1b, 0x5e, 0xc9, 0x88, 0x23, 0xda, 0x03, 0x30, 0x91, 0x0b,
271 0xb8, 0x36, 0x3e, 0xf9, 0xe7, 0xb5, 0x28, 0x6f, 0xbe, 0x3f, 0xec, 0x3c,
272 0x8f, 0x65, 0x1d, 0xe5, 0xc0, 0x1e, 0x87, 0xa4, 0xaa, 0xba, 0x98, 0xfd,
273 0x92, 0xe3, 0x6c, 0x26, 0x77, 0xdd, 0x06, 0xb4, 0x64, 0x06, 0x87, 0xf4,
274 0x4e, 0xd6, 0xba, 0x4a, 0xaa, 0x16, 0xa8, 0xf4, 0x05, 0x67, 0x66, 0x96,
275 0xba, 0xe2, 0x55, 0x79, 0xc3, 0x2c, 0x5d, 0x49, 0x8f, 0x80, 0x49, 0x2b,
276 0x8a, 0x12, 0xc7, 0x76, 0x80, 0x51, 0xdf, 0xba, 0xbd, 0x65, 0x5d, 0x3e,
277 0x37, 0x47, 0x63, 0x31, 0xe9, 0xe5, 0xf4, 0xc5, 0x3f, 0x4b, 0xad, 0x04,
278 0x8a, 0x7a, 0x71, 0x2c, 0xaf, 0x09, 0x43, 0x37, 0x0f, 0xa8, 0xe3, 0x32,
279 0x4f, 0xf4, 0x45, 0xb6, 0x6d, 0x97, 0x36, 0xec, 0x84, 0xf5, 0x0a, 0x01,
280 0xea, 0x17, 0xbb, 0x85, 0x8d, 0x42, 0x93, 0x70, 0xc3, 0x50, 0xe5, 0x14,
281 0x8b, 0xbf, 0x3f, 0xc3, 0x41, 0x0f, 0xdd, 0x22, 0x04, 0x23, 0x08, 0x8a,
282 0xba, 0x6d, 0x71, 0x44, 0xab, 0x73, 0x09, 0x3a, 0xc9, 0xf9, 0x52, 0x80,
283 0x09, 0xdf, 0xba, 0xe9, 0xe6, 0x16, 0xca, 0x2e, 0x2e, 0x4c, 0xb2, 0xd3,
284 0xdc, 0xe5, 0x04, 0x54, 0xb2, 0xd4, 0x34, 0x80, 0x32, 0xb5, 0xbc, 0x0f,
285 0x17, 0xe1
286 };
287
288 static const unsigned char AppleRootG3[583] = {
289 0x30, 0x82, 0x02, 0x43, 0x30, 0x82, 0x01, 0xc9, 0xa0, 0x03, 0x02, 0x01,
290 0x02, 0x02, 0x08, 0x2d, 0xc5, 0xfc, 0x88, 0xd2, 0xc5, 0x4b, 0x95, 0x30,
291 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x03, 0x30,
292 0x67, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x12,
293 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43,
294 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x31, 0x26, 0x30, 0x24, 0x06, 0x03,
295 0x55, 0x04, 0x0b, 0x0c, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x43,
296 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
297 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x13,
298 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0a, 0x41, 0x70, 0x70,
299 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x0b, 0x30, 0x09, 0x06,
300 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x30, 0x1e, 0x17, 0x0d,
301 0x31, 0x34, 0x30, 0x34, 0x33, 0x30, 0x31, 0x38, 0x31, 0x39, 0x30, 0x36,
302 0x5a, 0x17, 0x0d, 0x33, 0x39, 0x30, 0x34, 0x33, 0x30, 0x31, 0x38, 0x31,
303 0x39, 0x30, 0x36, 0x5a, 0x30, 0x67, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03,
304 0x55, 0x04, 0x03, 0x0c, 0x12, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x52,
305 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x31,
306 0x26, 0x30, 0x24, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x1d, 0x41, 0x70,
307 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
308 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72,
309 0x69, 0x74, 0x79, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a,
310 0x0c, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e,
311 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
312 0x53, 0x30, 0x76, 0x30, 0x10, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d,
313 0x02, 0x01, 0x06, 0x05, 0x2b, 0x81, 0x04, 0x00, 0x22, 0x03, 0x62, 0x00,
314 0x04, 0x98, 0xe9, 0x2f, 0x3d, 0x40, 0x72, 0xa4, 0xed, 0x93, 0x22, 0x72,
315 0x81, 0x13, 0x1c, 0xdd, 0x10, 0x95, 0xf1, 0xc5, 0xa3, 0x4e, 0x71, 0xdc,
316 0x14, 0x16, 0xd9, 0x0e, 0xe5, 0xa6, 0x05, 0x2a, 0x77, 0x64, 0x7b, 0x5f,
317 0x4e, 0x38, 0xd3, 0xbb, 0x1c, 0x44, 0xb5, 0x7f, 0xf5, 0x1f, 0xb6, 0x32,
318 0x62, 0x5d, 0xc9, 0xe9, 0x84, 0x5b, 0x4f, 0x30, 0x4f, 0x11, 0x5a, 0x00,
319 0xfd, 0x58, 0x58, 0x0c, 0xa5, 0xf5, 0x0f, 0x2c, 0x4d, 0x07, 0x47, 0x13,
320 0x75, 0xda, 0x97, 0x97, 0x97, 0x6f, 0x31, 0x5c, 0xed, 0x2b, 0x9d, 0x7b,
321 0x20, 0x3b, 0xd8, 0xb9, 0x54, 0xd9, 0x5e, 0x99, 0xa4, 0x3a, 0x51, 0x0a,
322 0x31, 0xa3, 0x42, 0x30, 0x40, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e,
323 0x04, 0x16, 0x04, 0x14, 0xbb, 0xb0, 0xde, 0xa1, 0x58, 0x33, 0x88, 0x9a,
324 0xa4, 0x8a, 0x99, 0xde, 0xbe, 0xbd, 0xeb, 0xaf, 0xda, 0xcb, 0x24, 0xab,
325 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05,
326 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f,
327 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x0a, 0x06,
328 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x03, 0x03, 0x68, 0x00,
329 0x30, 0x65, 0x02, 0x31, 0x00, 0x83, 0xe9, 0xc1, 0xc4, 0x16, 0x5e, 0x1a,
330 0x5d, 0x34, 0x18, 0xd9, 0xed, 0xef, 0xf4, 0x6c, 0x0e, 0x00, 0x46, 0x4b,
331 0xb8, 0xdf, 0xb2, 0x46, 0x11, 0xc5, 0x0f, 0xfd, 0xe6, 0x7a, 0x8c, 0xa1,
332 0xa6, 0x6b, 0xce, 0xc2, 0x03, 0xd4, 0x9c, 0xf5, 0x93, 0xc6, 0x74, 0xb8,
333 0x6a, 0xdf, 0xaa, 0x23, 0x15, 0x02, 0x30, 0x6d, 0x66, 0x8a, 0x10, 0xca,
334 0xd4, 0x0d, 0xd4, 0x4f, 0xcd, 0x8d, 0x43, 0x3e, 0xb4, 0x8a, 0x63, 0xa5,
335 0x33, 0x6e, 0xe3, 0x6d, 0xda, 0x17, 0xb7, 0x64, 0x1f, 0xc8, 0x53, 0x26,
336 0xf9, 0x88, 0x62, 0x74, 0x39, 0x0b, 0x17, 0x5b, 0xcb, 0x51, 0xa8, 0x0c,
337 0xe8, 0x18, 0x03, 0xe7, 0xa2, 0xb2, 0x28
338 };
339
340 static const unsigned char TestAppleGlobalRootCA[630] = {
341 0x30, 0x82, 0x02, 0x72, 0x30, 0x82, 0x01, 0xf8, 0xa0, 0x03, 0x02, 0x01,
342 0x02, 0x02, 0x08, 0x1c, 0xb5, 0x4f, 0x77, 0x41, 0xf3, 0xa9, 0x54, 0x30,
343 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x03, 0x30,
344 0x6e, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x19,
345 0x54, 0x65, 0x73, 0x74, 0x20, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x47,
346 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43,
347 0x41, 0x31, 0x26, 0x30, 0x24, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x1d,
348 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66,
349 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68,
350 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55,
351 0x04, 0x0a, 0x0c, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e,
352 0x63, 0x2e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
353 0x02, 0x55, 0x53, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x35, 0x30, 0x34, 0x32,
354 0x32, 0x30, 0x32, 0x34, 0x33, 0x35, 0x37, 0x5a, 0x17, 0x0d, 0x34, 0x30,
355 0x31, 0x32, 0x32, 0x36, 0x30, 0x33, 0x31, 0x33, 0x33, 0x37, 0x5a, 0x30,
356 0x6e, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x19,
357 0x54, 0x65, 0x73, 0x74, 0x20, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x47,
358 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43,
359 0x41, 0x31, 0x26, 0x30, 0x24, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x1d,
360 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66,
361 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68,
362 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55,
363 0x04, 0x0a, 0x0c, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e,
364 0x63, 0x2e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
365 0x02, 0x55, 0x53, 0x30, 0x76, 0x30, 0x10, 0x06, 0x07, 0x2a, 0x86, 0x48,
366 0xce, 0x3d, 0x02, 0x01, 0x06, 0x05, 0x2b, 0x81, 0x04, 0x00, 0x22, 0x03,
367 0x62, 0x00, 0x04, 0xee, 0x83, 0xb8, 0xa8, 0x5a, 0xee, 0x93, 0xfd, 0x07,
368 0x5c, 0x6f, 0x28, 0xce, 0x1b, 0x78, 0x8f, 0x13, 0x3a, 0x47, 0x27, 0x96,
369 0x95, 0xb1, 0x4b, 0xee, 0x7f, 0x27, 0xe4, 0x69, 0x03, 0x9f, 0x3b, 0xff,
370 0x47, 0x92, 0x28, 0x45, 0x9e, 0xbc, 0xe3, 0x8d, 0x53, 0x69, 0x75, 0xc0,
371 0x88, 0x59, 0x99, 0x92, 0x65, 0xb9, 0x53, 0xd7, 0x43, 0x4c, 0xfc, 0xd5,
372 0x37, 0xe2, 0x85, 0x43, 0x15, 0xbb, 0xbc, 0xcb, 0x53, 0x08, 0xbf, 0xfa,
373 0x69, 0x86, 0x25, 0x01, 0x4b, 0x6f, 0x31, 0xb3, 0x84, 0xad, 0x2c, 0x48,
374 0xff, 0xbf, 0x22, 0x5a, 0x20, 0x25, 0xb7, 0x5b, 0x14, 0xca, 0x8e, 0x5a,
375 0x4f, 0x1b, 0x76, 0xa3, 0x63, 0x30, 0x61, 0x30, 0x1d, 0x06, 0x03, 0x55,
376 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x96, 0xd3, 0x56, 0x5f, 0xf8, 0x49,
377 0xc1, 0x40, 0xdf, 0x3b, 0x82, 0x36, 0x5f, 0x09, 0x75, 0xee, 0x95, 0x58,
378 0x32, 0x43, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff,
379 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x1f, 0x06, 0x03, 0x55,
380 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x96, 0xd3, 0x56, 0x5f,
381 0xf8, 0x49, 0xc1, 0x40, 0xdf, 0x3b, 0x82, 0x36, 0x5f, 0x09, 0x75, 0xee,
382 0x95, 0x58, 0x32, 0x43, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01,
383 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x0a, 0x06, 0x08,
384 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x03, 0x03, 0x68, 0x00, 0x30,
385 0x65, 0x02, 0x30, 0x34, 0x32, 0x8a, 0xdc, 0x5f, 0xa0, 0x07, 0x56, 0xa9,
386 0xb3, 0xf5, 0x97, 0x05, 0x9f, 0x2e, 0xa6, 0x81, 0x10, 0x4c, 0xe6, 0xdc,
387 0xce, 0xac, 0x66, 0x8b, 0x42, 0xea, 0xb7, 0x47, 0x6d, 0x0b, 0x96, 0x74,
388 0x9d, 0x4d, 0xe8, 0xc6, 0x29, 0xf1, 0xd6, 0xaa, 0x75, 0xbc, 0x58, 0x10,
389 0xf2, 0xe5, 0xeb, 0x02, 0x31, 0x00, 0xf9, 0x05, 0x65, 0x9e, 0x91, 0xa9,
390 0xdf, 0x88, 0x2e, 0x90, 0x0f, 0x04, 0xf6, 0x7e, 0xb5, 0xef, 0xbd, 0x0e,
391 0xf9, 0xea, 0x01, 0x6e, 0x9d, 0x85, 0x66, 0x1c, 0x63, 0x7b, 0x9b, 0x70,
392 0xcd, 0x04, 0x94, 0x70, 0x3d, 0x06, 0x06, 0x82, 0xbd, 0x3a, 0xc4, 0x7d,
393 0xc5, 0x7d, 0x04, 0xac, 0xc9, 0xf2
394 };
395
396 static const unsigned char TestAppleRootCA[1232] = {
397 0x30, 0x82, 0x04, 0xcc, 0x30, 0x82, 0x03, 0xb4, 0xa0, 0x03, 0x02, 0x01,
398 0x02, 0x02, 0x08, 0x3d, 0x00, 0x4b, 0x90, 0x3e, 0xde, 0xe0, 0xd0, 0x30,
399 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05,
400 0x05, 0x00, 0x30, 0x67, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,
401 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55,
402 0x04, 0x0a, 0x0c, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e,
403 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c,
404 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69,
405 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74,
406 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03,
407 0x55, 0x04, 0x03, 0x0c, 0x12, 0x54, 0x65, 0x73, 0x74, 0x20, 0x41, 0x70,
408 0x70, 0x6c, 0x65, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30,
409 0x1e, 0x17, 0x0d, 0x31, 0x35, 0x30, 0x34, 0x32, 0x32, 0x30, 0x32, 0x31,
410 0x35, 0x34, 0x38, 0x5a, 0x17, 0x0d, 0x33, 0x35, 0x30, 0x32, 0x30, 0x39,
411 0x32, 0x31, 0x34, 0x30, 0x33, 0x36, 0x5a, 0x30, 0x67, 0x31, 0x0b, 0x30,
412 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13,
413 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0a, 0x41, 0x70, 0x70,
414 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06,
415 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20,
416 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
417 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31,
418 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x12, 0x54, 0x65,
419 0x73, 0x74, 0x20, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x52, 0x6f, 0x6f,
420 0x74, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09,
421 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03,
422 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01,
423 0x00, 0xc7, 0xd1, 0x43, 0x53, 0x7f, 0x0d, 0x88, 0x6b, 0xe6, 0xb1, 0x67,
424 0x9d, 0xee, 0x67, 0xb6, 0xe7, 0x77, 0x12, 0x81, 0xc4, 0xdf, 0x24, 0x6b,
425 0x7a, 0x75, 0x24, 0xf7, 0x01, 0x09, 0xce, 0x34, 0x92, 0xf5, 0x38, 0x08,
426 0x42, 0x7e, 0xec, 0x9d, 0xf2, 0x5d, 0x38, 0x91, 0xb4, 0x93, 0x98, 0x35,
427 0x11, 0x3c, 0x98, 0x00, 0x77, 0xd9, 0xd7, 0xf3, 0x4a, 0xf8, 0xf0, 0xbc,
428 0xeb, 0x97, 0x5d, 0x4b, 0x61, 0x2e, 0xfb, 0xc5, 0xcc, 0x68, 0xb7, 0x6d,
429 0x69, 0x10, 0xcc, 0xa5, 0x61, 0x78, 0xa8, 0x81, 0x02, 0x9e, 0xe7, 0x63,
430 0xc5, 0xff, 0x29, 0x22, 0x82, 0x68, 0xaa, 0xaa, 0x0e, 0xfb, 0xa9, 0xd8,
431 0x16, 0x73, 0x25, 0xbf, 0x9d, 0x08, 0x62, 0x2f, 0x78, 0x04, 0xf6, 0xf6,
432 0x44, 0x07, 0x37, 0x6e, 0x99, 0x1b, 0x93, 0xd8, 0x7f, 0xee, 0x72, 0xde,
433 0xe8, 0x32, 0xf6, 0x6d, 0x78, 0x04, 0xa0, 0xa8, 0x21, 0x26, 0x8a, 0x32,
434 0xe3, 0xb1, 0x65, 0x85, 0xa1, 0x7b, 0x1a, 0xa9, 0x02, 0xb2, 0xbb, 0xee,
435 0xdd, 0xdd, 0x8f, 0x41, 0x49, 0xc8, 0x3f, 0xdc, 0x1e, 0xdf, 0x21, 0xa3,
436 0x95, 0x99, 0xbb, 0xfc, 0x29, 0xba, 0x40, 0x43, 0xb9, 0x1c, 0xcd, 0xc9,
437 0x21, 0x45, 0x73, 0xad, 0xff, 0xfd, 0xa2, 0x6c, 0x5c, 0x3b, 0x1c, 0x37,
438 0x91, 0x34, 0x8e, 0x5c, 0xd3, 0xd5, 0x03, 0x58, 0x28, 0xc7, 0xf2, 0x76,
439 0x6f, 0x11, 0xc0, 0xb5, 0xbd, 0x7e, 0xef, 0x23, 0xb3, 0x3d, 0xb8, 0xbd,
440 0x38, 0x66, 0x8c, 0xf2, 0x78, 0x95, 0xc1, 0x8b, 0x32, 0x65, 0x3a, 0x9b,
441 0x49, 0x1a, 0x5c, 0x41, 0x3c, 0xc6, 0x85, 0x50, 0xec, 0x85, 0xf0, 0x59,
442 0x17, 0x81, 0xe8, 0x96, 0xe8, 0x6a, 0xcc, 0xb3, 0xc7, 0x46, 0xbf, 0x81,
443 0x48, 0xd1, 0x09, 0x1b, 0xbc, 0x73, 0x1e, 0xd7, 0xe8, 0x27, 0xa8, 0x49,
444 0x48, 0xa2, 0x1c, 0x41, 0x1d, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82,
445 0x01, 0x7a, 0x30, 0x82, 0x01, 0x76, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,
446 0x0e, 0x04, 0x16, 0x04, 0x14, 0x59, 0xb8, 0x2b, 0x94, 0x3a, 0x1b, 0xba,
447 0xf1, 0x00, 0xae, 0xee, 0x50, 0x52, 0x23, 0x33, 0xc9, 0x59, 0xc3, 0x54,
448 0x98, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04,
449 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d,
450 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x59, 0xb8, 0x2b, 0x94, 0x3a,
451 0x1b, 0xba, 0xf1, 0x00, 0xae, 0xee, 0x50, 0x52, 0x23, 0x33, 0xc9, 0x59,
452 0xc3, 0x54, 0x98, 0x30, 0x82, 0x01, 0x11, 0x06, 0x03, 0x55, 0x1d, 0x20,
453 0x04, 0x82, 0x01, 0x08, 0x30, 0x82, 0x01, 0x04, 0x30, 0x82, 0x01, 0x00,
454 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x63, 0x64, 0x05, 0x01, 0x30,
455 0x81, 0xf2, 0x30, 0x2a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
456 0x02, 0x01, 0x16, 0x1e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f,
457 0x77, 0x77, 0x77, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f,
458 0x6d, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x63, 0x61, 0x2f, 0x30, 0x81,
459 0xc3, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x02, 0x30,
460 0x81, 0xb6, 0x0c, 0x81, 0xb3, 0x52, 0x65, 0x6c, 0x69, 0x61, 0x6e, 0x63,
461 0x65, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x63, 0x65,
462 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x62, 0x79,
463 0x20, 0x61, 0x6e, 0x79, 0x20, 0x70, 0x61, 0x72, 0x74, 0x79, 0x20, 0x61,
464 0x73, 0x73, 0x75, 0x6d, 0x65, 0x73, 0x20, 0x61, 0x63, 0x63, 0x65, 0x70,
465 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65,
466 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63,
467 0x61, 0x62, 0x6c, 0x65, 0x20, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72,
468 0x64, 0x20, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20,
469 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6f,
470 0x66, 0x20, 0x75, 0x73, 0x65, 0x2c, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69,
471 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63,
472 0x79, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66,
473 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x72, 0x61, 0x63,
474 0x74, 0x69, 0x63, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65,
475 0x6e, 0x74, 0x73, 0x2e, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01,
476 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x0d, 0x06, 0x09,
477 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03,
478 0x82, 0x01, 0x01, 0x00, 0x10, 0x5e, 0x6c, 0x69, 0xfc, 0xa6, 0x0f, 0xe2,
479 0x09, 0xd5, 0x94, 0x90, 0xa6, 0x7c, 0x22, 0xdc, 0xee, 0xb0, 0x8f, 0x24,
480 0x22, 0x4f, 0xb3, 0x67, 0xdb, 0x32, 0xb0, 0xd6, 0x24, 0x87, 0xe6, 0xf3,
481 0xea, 0x9e, 0xd0, 0x95, 0x75, 0xaa, 0xa7, 0x08, 0xff, 0xb0, 0x35, 0xd7,
482 0x1f, 0xa3, 0xbf, 0x89, 0x55, 0x0c, 0x1c, 0xa4, 0xd0, 0xf8, 0x00, 0x17,
483 0x44, 0x94, 0x36, 0x63, 0x3b, 0x83, 0xfe, 0x4e, 0xe5, 0xb3, 0xec, 0x7b,
484 0x7d, 0xce, 0xfe, 0xa9, 0x54, 0xed, 0xbb, 0x12, 0xa6, 0x72, 0x2b, 0xb3,
485 0x48, 0x00, 0xc7, 0x8e, 0xf5, 0x5b, 0x68, 0xc9, 0x24, 0x22, 0x7f, 0xa1,
486 0x4d, 0xfc, 0x54, 0xd9, 0xd0, 0x5d, 0x82, 0x53, 0x71, 0x29, 0x66, 0xcf,
487 0x0f, 0x6d, 0x32, 0xa6, 0x3f, 0xae, 0x54, 0x27, 0xc2, 0x8c, 0x12, 0x4c,
488 0xf0, 0xd6, 0xc1, 0x80, 0x75, 0xc3, 0x33, 0x19, 0xd1, 0x8b, 0x58, 0xe6,
489 0x00, 0x69, 0x76, 0xe7, 0xe5, 0x3d, 0x47, 0xf9, 0xc0, 0x9c, 0xe7, 0x19,
490 0x1e, 0x95, 0xbc, 0x52, 0x15, 0xce, 0x94, 0xf8, 0x30, 0x14, 0x0b, 0x39,
491 0x0e, 0x8b, 0xaf, 0x29, 0x30, 0x56, 0xaf, 0x5a, 0x28, 0xac, 0xe1, 0x0f,
492 0x51, 0x76, 0x76, 0x9a, 0xe7, 0xb9, 0x7d, 0xa3, 0x30, 0xe8, 0xe3, 0x71,
493 0x15, 0xe8, 0xbf, 0x0d, 0x4f, 0x12, 0x9b, 0x65, 0xab, 0xef, 0xa4, 0xe9,
494 0x42, 0xf0, 0xd2, 0x4d, 0x20, 0x55, 0x29, 0x88, 0x58, 0x5c, 0x82, 0x67,
495 0x63, 0x20, 0x50, 0xc6, 0xca, 0x04, 0xe8, 0xbc, 0x3d, 0x93, 0x06, 0x21,
496 0xb2, 0xc0, 0xbf, 0x53, 0x1e, 0xe1, 0x8b, 0x48, 0xa9, 0xb9, 0xd7, 0xe6,
497 0x5f, 0x4e, 0x5a, 0x2f, 0x43, 0xac, 0x35, 0xbd, 0x26, 0x60, 0x2f, 0x01,
498 0xd5, 0x86, 0x6b, 0x64, 0xfa, 0x67, 0x05, 0x44, 0x55, 0x83, 0x5b, 0x93,
499 0x9c, 0x7c, 0xa7, 0x26, 0x4e, 0x02, 0x2b, 0x48
500 };
501
502 static const unsigned char TestAppleRootCAG3[592] = {
503 0x30, 0x82, 0x02, 0x4c, 0x30, 0x82, 0x01, 0xd3, 0xa0, 0x03, 0x02, 0x01,
504 0x02, 0x02, 0x08, 0x78, 0x36, 0x0b, 0xf4, 0xb7, 0xc8, 0xb6, 0xb0, 0x30,
505 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x03, 0x30,
506 0x6c, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x17,
507 0x54, 0x65, 0x73, 0x74, 0x20, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x52,
508 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x31,
509 0x26, 0x30, 0x24, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x1d, 0x41, 0x70,
510 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
511 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72,
512 0x69, 0x74, 0x79, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a,
513 0x0c, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e,
514 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
515 0x53, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x35, 0x30, 0x34, 0x32, 0x32, 0x30,
516 0x33, 0x31, 0x37, 0x34, 0x34, 0x5a, 0x17, 0x0d, 0x34, 0x30, 0x31, 0x32,
517 0x32, 0x36, 0x30, 0x33, 0x31, 0x33, 0x33, 0x37, 0x5a, 0x30, 0x6c, 0x31,
518 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x17, 0x54, 0x65,
519 0x73, 0x74, 0x20, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x52, 0x6f, 0x6f,
520 0x74, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x31, 0x26, 0x30,
521 0x24, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x1d, 0x41, 0x70, 0x70, 0x6c,
522 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
523 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74,
524 0x79, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0a,
525 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x0b,
526 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x30,
527 0x76, 0x30, 0x10, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01,
528 0x06, 0x05, 0x2b, 0x81, 0x04, 0x00, 0x22, 0x03, 0x62, 0x00, 0x04, 0xa9,
529 0x1a, 0x63, 0x34, 0xef, 0xbc, 0xa6, 0x8a, 0xd6, 0x2a, 0x6a, 0x38, 0x22,
530 0xe9, 0x25, 0xad, 0xda, 0x28, 0xa0, 0x49, 0xc5, 0x64, 0xfe, 0x5d, 0x91,
531 0xc3, 0x6c, 0xf7, 0x99, 0xe4, 0xba, 0xe4, 0x2a, 0x5f, 0x61, 0xd2, 0xbf,
532 0x3b, 0x6c, 0xa8, 0x61, 0x11, 0xb5, 0xe0, 0x66, 0xf7, 0x22, 0x11, 0x86,
533 0x97, 0x5d, 0xc3, 0xba, 0x1b, 0x6d, 0x55, 0x7f, 0xd0, 0xf9, 0x80, 0xe0,
534 0xff, 0xd9, 0x05, 0xad, 0x5a, 0x5b, 0xbf, 0x3a, 0x7a, 0xa7, 0x09, 0x52,
535 0x1a, 0x31, 0x7f, 0x0c, 0xa2, 0xe8, 0x10, 0xf5, 0x36, 0xd3, 0xc8, 0xea,
536 0xa0, 0x5b, 0x0a, 0x28, 0x85, 0x30, 0x28, 0x5f, 0x94, 0xf6, 0x94, 0xa3,
537 0x42, 0x30, 0x40, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16,
538 0x04, 0x14, 0xfc, 0x46, 0xd8, 0x83, 0x6c, 0x1f, 0xe6, 0xf2, 0xdc, 0xdf,
539 0xa7, 0x99, 0x17, 0xae, 0x0b, 0x44, 0x67, 0x17, 0x1b, 0x46, 0x30, 0x0f,
540 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03,
541 0x01, 0x01, 0xff, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01,
542 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x0a, 0x06, 0x08, 0x2a,
543 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x03, 0x03, 0x67, 0x00, 0x30, 0x64,
544 0x02, 0x30, 0x1a, 0x14, 0x38, 0x24, 0xff, 0xb4, 0x08, 0xcb, 0xea, 0xc9,
545 0x3b, 0xda, 0xcc, 0x82, 0xf3, 0xd9, 0x0d, 0xd1, 0x2b, 0x6e, 0xbf, 0x1f,
546 0xc4, 0x15, 0x14, 0x44, 0xdf, 0x98, 0x9b, 0xd7, 0xdd, 0xba, 0x1b, 0xbe,
547 0x4f, 0x9f, 0x17, 0xa4, 0xd2, 0x02, 0x75, 0x90, 0x7d, 0x76, 0xcc, 0x93,
548 0x16, 0x2f, 0x02, 0x30, 0x02, 0xd7, 0xda, 0x0b, 0xbe, 0xdd, 0x3d, 0xed,
549 0xf9, 0xa3, 0x06, 0x90, 0xa9, 0x58, 0xbd, 0x6b, 0x7c, 0x7c, 0xe5, 0xc5,
550 0x4e, 0x0e, 0x44, 0xa2, 0x94, 0x2f, 0xb4, 0x04, 0x9a, 0xcd, 0x9b, 0x69,
551 0x8d, 0x2a, 0xc6, 0x1d, 0x58, 0xff, 0xe3, 0x32, 0xb6, 0xdb, 0x3e, 0x34,
552 0xff, 0x67, 0x70, 0xf1
553 };
554
555 static void
556 addAnchor(CFMutableDictionaryRef anchors,
557 const unsigned char *trustAnchor, size_t size,
558 bool production)
559 {
560 CFDataRef value = CFDataCreateWithBytesNoCopy(NULL, trustAnchor, size, kCFAllocatorNull);
561 if (CFDictionaryGetValue(anchors, value))
562 abort();
563 CFDictionarySetValue(anchors, value, production ? kCFBooleanTrue : kCFBooleanFalse);
564 CFReleaseSafe(value);
565 }
566
567
568 static CFDictionaryRef
569 getAnchors(void)
570 {
571 static dispatch_once_t onceToken;
572 static CFDictionaryRef anchors = NULL;
573 dispatch_once(&onceToken, ^{
574 CFMutableDictionaryRef temp;
575
576 temp = CFDictionaryCreateMutableForCFTypes(NULL);
577 addAnchor(temp, AppleRoot, sizeof(AppleRoot), true);
578 addAnchor(temp, AppleRootG2, sizeof(AppleRootG2), true);
579 addAnchor(temp, AppleRootG3, sizeof(AppleRootG3), true);
580 addAnchor(temp, TestAppleGlobalRootCA, sizeof(TestAppleGlobalRootCA), false);
581 addAnchor(temp, TestAppleRootCA, sizeof(TestAppleRootCA), false);
582 addAnchor(temp, TestAppleRootCAG3, sizeof(TestAppleRootCAG3), false);
583
584
585 anchors = temp;
586 });
587 return anchors;
588 }