Add FairPlay crate reimplementing fairplay-decrypt and fix APS
Dadoum

Dadoum commited on 2026-10-25 21:12:14
Showing 26 changed files, with 1853 additions and 1275 deletions.

... ...
@@ -155,6 +155,7 @@ dependencies = [
155 155
  "cipher 0.5.2",
156 156
  "cpubits",
157 157
  "cpufeatures 0.3.0",
158
+ "zeroize",
158 159
 ]
159 160
 
160 161
 [[package]]
... ...
@@ -882,6 +883,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
882 883
 checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa"
883 884
 dependencies = [
884 885
  "hybrid-array",
886
+ "zeroize",
885 887
 ]
886 888
 
887 889
 [[package]]
... ...
@@ -1151,6 +1153,7 @@ dependencies = [
1151 1153
  "block-buffer 0.12.1",
1152 1154
  "crypto-common 0.2.2",
1153 1155
  "inout 0.2.2",
1156
+ "zeroize",
1154 1157
 ]
1155 1158
 
1156 1159
 [[package]]
... ...
@@ -2182,6 +2185,13 @@ dependencies = [
2182 2185
 [[package]]
2183 2186
 name = "fairplay"
2184 2187
 version = "0.1.0"
2188
+dependencies = [
2189
+ "aes 0.9.1",
2190
+ "cbc 0.2.1",
2191
+ "md-5",
2192
+ "thiserror 2.0.18",
2193
+ "zeroize",
2194
+]
2185 2195
 
2186 2196
 [[package]]
2187 2197
 name = "fastrand"
... ...
@@ -3387,6 +3397,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
3387 3397
 checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c"
3388 3398
 dependencies = [
3389 3399
  "typenum",
3400
+ "zeroize",
3390 3401
 ]
3391 3402
 
3392 3403
 [[package]]
... ...
@@ -5573,15 +5584,6 @@ dependencies = [
5573 5584
  "cc",
5574 5585
 ]
5575 5586
 
5576
-[[package]]
5577
-name = "purple-builder"
5578
-version = "0.1.0"
5579
-dependencies = [
5580
- "adi",
5581
- "elf-loader",
5582
- "env_logger",
5583
-]
5584
-
5585 5587
 [[package]]
5586 5588
 name = "pxfm"
5587 5589
 version = "0.1.30"
... ...
@@ -6126,27 +6128,6 @@ dependencies = [
6126 6128
  "zeroize",
6127 6129
 ]
6128 6130
 
6129
-[[package]]
6130
-name = "rust-adi"
6131
-version = "0.1.0"
6132
-dependencies = [
6133
- "adi",
6134
- "aes 0.9.1",
6135
- "base64",
6136
- "cbc 0.2.1",
6137
- "getrandom 0.4.3",
6138
- "grandslam",
6139
- "hex",
6140
- "md-5",
6141
- "plist",
6142
- "reqwest",
6143
- "serde_json",
6144
- "sha1 0.11.0",
6145
- "sha2 0.10.9",
6146
- "tempfile",
6147
- "tokio",
6148
-]
6149
-
6150 6131
 [[package]]
6151 6132
 name = "rust-embed"
6152 6133
 version = "8.11.0"
... ...
@@ -7149,6 +7130,7 @@ dependencies = [
7149 7130
  "crc32fast",
7150 7131
  "der",
7151 7132
  "directories",
7133
+ "dlopen2",
7152 7134
  "env_logger",
7153 7135
  "flate2",
7154 7136
  "futures",
... ...
@@ -7163,12 +7145,12 @@ dependencies = [
7163 7145
  "libc",
7164 7146
  "library-coreadi",
7165 7147
  "log",
7148
+ "ouroboros",
7166 7149
  "pem-rfc7468",
7167 7150
  "plist",
7168 7151
  "rand 0.10.2",
7169 7152
  "reqwest",
7170 7153
  "rsa",
7171
- "rust-adi",
7172 7154
  "serde",
7173 7155
  "sha1 0.11.0",
7174 7156
  "sha2 0.10.9",
... ...
@@ -1,6 +1,6 @@
1 1
 [workspace]
2 2
 resolver = "2"
3
-members = ["adi", "adid-proxy", "android-coreadi", "aps", "grandslam", "apple-codesign-quick", "elf-loader", "fairplay", "icloud", "itunes", "library-coreadi", "plist-macros", "purple-builder", "super-sideloader", "xcode"]
3
+members = ["adi", "adid-proxy", "android-coreadi", "aps", "grandslam", "apple-codesign-quick", "elf-loader", "fairplay", "icloud", "itunes", "library-coreadi", "plist-macros", "super-sideloader", "xcode"]
4 4
 
5 5
 [workspace.dependencies]
6 6
 adi = { path = "adi" }
... ...
@@ -44,8 +44,8 @@ Connecting moves the identity into the connection; reconnecting reuses it
44 44
 without cloning the private key.
45 45
 
46 46
 The signer is synchronous, like a local cryptographic provider. Applications
47
-using a slow signer should schedule activation accordingly. The built-in Windows
48
-signer uses embedded constants and Rust cryptography.
47
+using a slow signer should schedule activation accordingly. The built-in Mac
48
+signer uses embedded constants and Rust cryptography on all supported platforms.
49 49
 
50 50
 ## Connection lifetime and persistence
51 51
 
... ...
@@ -101,15 +101,29 @@ part of this crate.
101 101
 The HTTPS client also needs this root for `init.push.apple.com`, as shown above.
102 102
 It is not included in every operating system's default trust store.
103 103
 
104
-## Standalone Windows signing identity
104
+## Standalone activation signer
105 105
 
106
-`WindowsActivationSigner::new()` selects one of ten embedded activation signing
107
-identities recovered from iCloud 15.10.39.0 x64. Their RSA primes and matching
108
-certificates live in a private constants module, with the shared CA chain stored
109
-once. No DLL or extraction step is needed. Signing errors use `rsa::Error`.
106
+`MacOsActivationSigner::new()` selects one of ten software signing identities
107
+recovered from macOS `apsd`. It requires no Apple library, emulation or hardware
108
+operation. Supply an `ActivationDevice` with `device_class: "MacOS"` and the
109
+profile to activate. The library uses Apple's macOS deviceservices endpoint.
110
+The device profile remains the caller's responsibility; the signer does not
111
+read or invent model, serial or host identifiers.
112
+
113
+```rust,ignore
114
+let signer = aps::MacOsActivationSigner::new();
115
+let identity = aps::activate(&client, &device, &signer).await?;
116
+```
117
+
118
+The example uses a synthetic Mac profile by default. Use `--device DEVICE.plist`
119
+to supply your own profile for fresh activation. The plist
120
+requires string fields `ProductType`, `ProductVersion`, `BuildVersion`,
121
+`SerialNumber`, and `UniqueDeviceID`. `UniqueDeviceID` corresponds to the native
122
+host UUID (`gethostuuid`), normally formatted as an uppercase UUID. Restoring
123
+an existing state file needs no profile or signing operation.
110 124
 
111 125
 ```sh
112
-cargo run -p aps --example push_token -- /path/to/push-state.plist
126
+cargo run -p aps --example push_token -- /path/to/push-state.plist --check-connection
113 127
 ```
114 128
 
115 129
 Add `--check-connection` to drive receive/keepalive for 95 seconds, reconnect,
... ...
@@ -127,11 +141,11 @@ Windows client and rustpush's public protocol implementation. This crate does
127 141
 not depend on rustpush or its account APIs.
128 142
 
129 143
 Outgoing messages and acknowledgement handling were also checked against
130
-macOS 27's `apsd`; see [the comparison notes](../research/aps/docs/macos-protocol.md).
131
-
132
-See [the signing format notes](../research/aps/docs/windows-signing.md) for the decoded wrapping
133
-format and its provenance.
134
-
135
-All ten embedded identities passed independent RSA signature verification.
136
-The standalone Rust signer also completed live activation and obtained a
137
-32-byte push token; restoring that state reused the same token without a DLL.
144
+macOS 27's `apsd`.
145
+
146
+The Mac signer matches thirteen native signatures covering all ten Mac
147
+identities. Tests also check all ten key/certificate pairs.
148
+On October 25, 2026, the Mac signer completed live activation and obtained a
149
+32-byte push token on macOS and on the Ubuntu ARM64 VM. The Linux activation
150
+used a synthetic serial and generated UUID. Keepalive, reconnect and a separate
151
+process restart preserved the token on both platforms.
... ...
@@ -1,5 +1,5 @@
1
-//! cargo run -p aps --example push_token -- STATE.plist [--check-connection]
2
-use aps::{ActivationDevice, PushConnection, PushIdentity, PushToken, WindowsActivationSigner};
1
+//! cargo run -p aps --example push_token -- STATE.plist [--device DEVICE.plist] [--check-connection]
2
+use aps::{ActivationDevice, MacOsActivationSigner, PushConnection, PushIdentity, PushToken};
3 3
 use plist::Data;
4 4
 use rsa::{
5 5
     RsaPrivateKey,
... ...
@@ -11,7 +11,7 @@ use thiserror::Error;
11 11
 
12 12
 #[derive(Debug, Error)]
13 13
 enum ExampleError {
14
-    #[error("usage: push_token STATE.plist [--check-connection]")]
14
+    #[error("usage: push_token STATE.plist [--device DEVICE.plist] [--check-connection]")]
15 15
     Usage,
16 16
     #[error(transparent)]
17 17
     Io(#[from] io::Error),
... ...
@@ -38,13 +38,32 @@ struct SavedState {
38 38
     token: PushToken,
39 39
 }
40 40
 
41
+#[derive(Deserialize)]
42
+#[serde(rename_all = "PascalCase")]
43
+struct DeviceProfile {
44
+    product_type: String,
45
+    product_version: String,
46
+    build_version: String,
47
+    serial_number: String,
48
+    #[serde(rename = "UniqueDeviceID")]
49
+    unique_device_id: String,
50
+}
51
+
41 52
 #[tokio::main]
42 53
 async fn main() -> Result<(), ExampleError> {
43
-    let args: Vec<_> = std::env::args_os().skip(1).collect();
44
-    if args.is_empty() || args.len() > 2 || (args.len() == 2 && args[1] != "--check-connection") {
54
+    let mut args = std::env::args_os().skip(1);
55
+    let state_path = PathBuf::from(args.next().ok_or(ExampleError::Usage)?);
56
+    let mut device_profile = None;
57
+    let mut check_connection = false;
58
+    while let Some(argument) = args.next() {
59
+        if argument == "--device" && device_profile.is_none() {
60
+            device_profile = Some(PathBuf::from(args.next().ok_or(ExampleError::Usage)?));
61
+        } else if argument == "--check-connection" && !check_connection {
62
+            check_connection = true;
63
+        } else {
45 64
             return Err(ExampleError::Usage);
46 65
         }
47
-    let state_path = PathBuf::from(&args[0]);
66
+    }
48 67
     let client = reqwest::Client::builder()
49 68
         .tls_certs_merge([reqwest::Certificate::from_der(aps::APPLE_ROOT_CA)?])
50 69
         .timeout(Duration::from_secs(30))
... ...
@@ -64,18 +83,26 @@ async fn main() -> Result<(), ExampleError> {
64 83
             connection
65 84
         }
66 85
         Err(error) if error.kind() == io::ErrorKind::NotFound => {
67
-            let udid = uuid::Uuid::new_v4().to_string().to_uppercase();
68
-            // Values observed in Apple's Windows activation client.
86
+            let profile = match device_profile {
87
+                Some(path) => plist::from_bytes::<DeviceProfile>(&fs::read(path)?)?,
88
+                None => DeviceProfile {
89
+                    // Synthetic profile verified against Apple's activation service.
90
+                    product_type: "MacBookPro18,3".into(),
91
+                    product_version: "27.0.1".into(),
92
+                    build_version: "26A434".into(),
93
+                    serial_number: "C02SYNTHETIC".into(),
94
+                    unique_device_id: uuid::Uuid::new_v4().to_string().to_uppercase(),
95
+                },
96
+            };
69 97
             let device = ActivationDevice {
70
-                device_class: "Windows",
71
-                product_type: "windows1,1",
72
-                product_version: "10.6.4",
73
-                build_version: "10.6.4",
74
-                serial_number: "WindowSerial",
75
-                unique_device_id: &udid,
98
+                device_class: "MacOS",
99
+                product_type: &profile.product_type,
100
+                product_version: &profile.product_version,
101
+                build_version: &profile.build_version,
102
+                serial_number: &profile.serial_number,
103
+                unique_device_id: &profile.unique_device_id,
76 104
             };
77
-            let signer = WindowsActivationSigner::new();
78
-            let identity = aps::activate(&client, &device, &signer).await?;
105
+            let identity = aps::activate(&client, &device, &MacOsActivationSigner::new()).await?;
79 106
             println!(
80 107
                 "Activated; device certificate is {} bytes",
81 108
                 identity.certificate().len()
... ...
@@ -113,7 +140,7 @@ async fn main() -> Result<(), ExampleError> {
113 140
         "Courier payload limit: {} bytes",
114 141
         connection.max_payload_size()
115 142
     );
116
-    if args.len() == 2 {
143
+    if check_connection {
117 144
         // Drive the first keepalive (60s) and its response deadline (30s).
118 145
         // Do not print received payloads or credential values.
119 146
         let until = tokio::time::Instant::now() + Duration::from_secs(95);
... ...
@@ -52,7 +52,7 @@ pub enum ActivationError<E> {
52 52
 }
53 53
 
54 54
 /// Fields placed in Apple's activation-info plist, excluding the generated CSR
55
-/// and activation nonce. `device_class` also selects the activation endpoint.
55
+/// and activation nonce. `device_class` is also sent as the activation endpoint's device query parameter.
56 56
 pub struct ActivationDevice<'a> {
57 57
     pub device_class: &'a str,
58 58
     pub product_type: &'a str,
... ...
@@ -121,13 +121,14 @@ pub(crate) fn sign_sha1(key: &RsaPrivateKey, data: &[u8]) -> Result<Vec<u8>, rsa
121 121
     key.sign_with_rng(&mut OsRng, Pkcs1v15Sign::new_unprefixed(), &digest_info)
122 122
 }
123 123
 
124
-/// Generates a device key and CSR, then requests an activation certificate.
125
-/// Use a plain HTTP client; account authentication headers are not needed here.
126
-pub async fn activate<S: ActivationSigner>(
127
-    client: &Client,
124
+/// Builds the signed `activation-info` request body and the matching device key.
125
+/// `activate` posts this body; exposing it lets a caller replay the identical
126
+/// bytes through another HTTP stack for comparison. Each call generates a fresh
127
+/// device key and activation randomness.
128
+pub fn build_activation_request<S: ActivationSigner>(
128 129
     device: &ActivationDevice<'_>,
129 130
     signer: &S,
130
-) -> Result<PushIdentity, ActivationError<S::Error>> {
131
+) -> Result<(Vec<u8>, RsaPrivateKey), ActivationError<S::Error>> {
131 132
     let private_key = RsaPrivateKey::new(&mut OsRng, 1024)?;
132 133
     let info = CertReqInfo {
133 134
         version: Default::default(),
... ...
@@ -176,8 +177,19 @@ pub async fn activate<S: ActivationSigner>(
176 177
     ]);
177 178
     let mut body = Vec::new();
178 179
     plist::to_writer_xml(&mut body, &envelope)?;
180
+    Ok((body, private_key))
181
+}
182
+
183
+/// Generates a device key and CSR, then requests an activation certificate.
184
+/// Use a plain HTTP client; account authentication headers are not needed here.
185
+pub async fn activate<S: ActivationSigner>(
186
+    client: &Client,
187
+    device: &ActivationDevice<'_>,
188
+    signer: &S,
189
+) -> Result<PushIdentity, ActivationError<S::Error>> {
190
+    let (body, private_key) = build_activation_request(device, signer)?;
179 191
     let response = client
180
-        .post("https://albert.apple.com/WebObjects/ALUnbrick.woa/wa/deviceActivation")
192
+        .post("https://albert.apple.com/deviceservices/deviceActivation")
181 193
         .query(&[("device", device.device_class)])
182 194
         .form(&[("activation-info", String::from_utf8_lossy(&body).as_ref())])
183 195
         .send()
... ...
@@ -185,7 +197,7 @@ pub async fn activate<S: ActivationSigner>(
185 197
         .error_for_status()?
186 198
         .bytes()
187 199
         .await?;
188
-    // The Windows endpoint wraps the response plist in an HTML Protocol element.
200
+    // Activation responses may wrap the plist in an HTML Protocol element.
189 201
     let text = String::from_utf8_lossy(&response);
190 202
     let payload = match text.split_once("<Protocol>") {
191 203
         Some((_, rest)) => rest
... ...
@@ -5,18 +5,18 @@
5 5
 
6 6
 mod activation;
7 7
 mod connection;
8
+mod macos_signer;
8 9
 mod protocol;
9
-mod windows_signer;
10 10
 
11 11
 pub use activation::{
12 12
     ActivationDevice, ActivationError, ActivationSignature, ActivationSigner, IdentityError,
13
-    PushIdentity, activate,
13
+    PushIdentity, activate, build_activation_request,
14 14
 };
15 15
 pub use connection::{
16 16
     ConnectError, Event, Notification, PushConnection, PushToken, SendError, SendStatus,
17 17
 };
18
+pub use macos_signer::MacOsActivationSigner;
18 19
 pub use protocol::CourierError;
19
-pub use windows_signer::WindowsActivationSigner;
20 20
 
21 21
 /// DER-encoded Apple root needed by the push configuration HTTPS endpoint.
22 22
 /// Add it to the HTTP client's trust store before connecting.
... ...
@@ -0,0 +1,100 @@
1
+mod constants;
2
+#[cfg(test)]
3
+mod vectors;
4
+
5
+use crate::{ActivationSignature, ActivationSigner, activation::sign_sha1};
6
+use constants::{CERTIFICATE_AUTHORITY_CHAIN, IDENTITIES, SigningIdentity};
7
+use rsa::{
8
+    BigUint, RsaPrivateKey,
9
+    rand_core::{OsRng, RngCore},
10
+};
11
+
12
+/// Signs MacOS activation requests using apsd's embedded FairPlay identities.
13
+/// Uses only Rust cryptography and constants; no Apple library or hardware is required.
14
+pub struct MacOsActivationSigner {
15
+    private_key: RsaPrivateKey,
16
+    certificate: &'static [u8],
17
+}
18
+
19
+impl MacOsActivationSigner {
20
+    /// Selects one of the ten software activation identities recovered from apsd.
21
+    pub fn new() -> Self {
22
+        let identity = &IDENTITIES[OsRng.next_u32() as usize % IDENTITIES.len()];
23
+        Self::from_identity(identity)
24
+    }
25
+
26
+    fn from_identity(identity: &SigningIdentity) -> Self {
27
+        let private_key = RsaPrivateKey::from_p_q(
28
+            BigUint::from_bytes_be(&identity.p),
29
+            BigUint::from_bytes_be(&identity.q),
30
+            65537u32.into(),
31
+        )
32
+        .expect("embedded activation primes must form a valid RSA key");
33
+        Self {
34
+            private_key,
35
+            certificate: identity.certificate,
36
+        }
37
+    }
38
+}
39
+
40
+impl Default for MacOsActivationSigner {
41
+    fn default() -> Self {
42
+        Self::new()
43
+    }
44
+}
45
+
46
+impl ActivationSigner for MacOsActivationSigner {
47
+    type Error = rsa::Error;
48
+
49
+    fn sign(&self, xml: &[u8]) -> Result<ActivationSignature, Self::Error> {
50
+        Ok(ActivationSignature {
51
+            signature: sign_sha1(&self.private_key, xml)?,
52
+            certificate_chain: [self.certificate, CERTIFICATE_AUTHORITY_CHAIN].concat(),
53
+        })
54
+    }
55
+}
56
+
57
+#[cfg(test)]
58
+mod tests {
59
+    use super::*;
60
+    use rsa::{RsaPublicKey, pkcs8::DecodePublicKey};
61
+    use x509_cert::{
62
+        Certificate,
63
+        der::{Decode, Encode},
64
+    };
65
+
66
+    #[test]
67
+    fn signatures_match_native_apsd_for_every_identity() {
68
+        let mut covered = [false; 10];
69
+        for &(index, message, expected_signature) in vectors::VECTORS {
70
+            let identity = &IDENTITIES[index];
71
+            let signer = MacOsActivationSigner::from_identity(identity);
72
+            let signed = signer.sign(message).unwrap();
73
+            assert_eq!(signed.signature, expected_signature, "identity {index}");
74
+            assert_eq!(
75
+                signed.certificate_chain,
76
+                [identity.certificate, CERTIFICATE_AUTHORITY_CHAIN].concat()
77
+            );
78
+            covered[index] = true;
79
+        }
80
+        assert!(covered.into_iter().all(|covered| covered));
81
+    }
82
+
83
+    #[test]
84
+    fn keys_match_certificates() {
85
+        for identity in &IDENTITIES {
86
+            let signer = MacOsActivationSigner::from_identity(identity);
87
+            signer.private_key.validate().unwrap();
88
+            let certificate = Certificate::from_der(identity.certificate).unwrap();
89
+            let public = RsaPublicKey::from_public_key_der(
90
+                &certificate
91
+                    .tbs_certificate
92
+                    .subject_public_key_info
93
+                    .to_der()
94
+                    .unwrap(),
95
+            )
96
+            .unwrap();
97
+            assert_eq!(signer.private_key.to_public_key(), public);
98
+        }
99
+    }
100
+}
... ...
@@ -0,0 +1,848 @@
1
+// Software activation identities from macOS 27.0.1 (26A434) apsd, arm64e.
2
+// Recovered and verified by research/aps/analysis/recover_activation_identities.py.
3
+// Only the RSA primes are retained; Rust reconstructs the CRT parameters.
4
+
5
+pub(super) struct SigningIdentity {
6
+    pub p: [u8; 64],
7
+    pub q: [u8; 64],
8
+    pub certificate: &'static [u8],
9
+}
10
+
11
+pub(super) static IDENTITIES: [SigningIdentity; 10] = [
12
+    // CN=APN.3333AF100723AF0002AF000001.
13
+    SigningIdentity {
14
+        p: [
15
+            0xc2, 0x20, 0xe4, 0x21, 0x39, 0xbe, 0x4a, 0x5f, 0x87, 0xae, 0x2b, 0x55, 0x86, 0x1f,
16
+            0x5c, 0x0a, 0xcc, 0x1b, 0xac, 0x8c, 0xab, 0x4a, 0x47, 0x24, 0xa7, 0xe7, 0x9a, 0xe9,
17
+            0xec, 0x9e, 0x20, 0x19, 0xf0, 0x7b, 0x07, 0x28, 0xf9, 0x37, 0x90, 0x2a, 0x43, 0x98,
18
+            0x24, 0x20, 0x78, 0xe5, 0x91, 0x85, 0x7d, 0xfc, 0xd8, 0xfc, 0x57, 0x3a, 0x05, 0xcd,
19
+            0xe4, 0xee, 0xc7, 0x68, 0x88, 0x05, 0x6a, 0x19,
20
+        ],
21
+        q: [
22
+            0xde, 0xc4, 0x99, 0x35, 0x81, 0x89, 0x2c, 0xf0, 0x71, 0x72, 0x2b, 0x48, 0x45, 0x2d,
23
+            0x9a, 0x60, 0x33, 0x87, 0xc5, 0x0a, 0x1a, 0x4d, 0xee, 0x86, 0x44, 0xc5, 0x06, 0xfe,
24
+            0x9f, 0x19, 0x13, 0x59, 0xed, 0x0b, 0x55, 0x05, 0xfa, 0xa3, 0xe7, 0x59, 0x84, 0x2f,
25
+            0xd8, 0x58, 0xe8, 0x3d, 0xa9, 0x3e, 0x36, 0x69, 0xc3, 0xad, 0x44, 0x3c, 0xce, 0x28,
26
+            0x1b, 0xec, 0x42, 0x92, 0x84, 0xaf, 0x76, 0x6d,
27
+        ],
28
+        certificate: &[
29
+            0x30, 0x82, 0x02, 0xc1, 0x30, 0x82, 0x02, 0x2a, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02,
30
+            0x0d, 0x33, 0x33, 0xaf, 0x10, 0x07, 0x23, 0xaf, 0x00, 0x02, 0xaf, 0x00, 0x00, 0x01,
31
+            0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05,
32
+            0x00, 0x30, 0x7b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
33
+            0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x41,
34
+            0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06,
35
+            0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65,
36
+            0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75,
37
+            0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55,
38
+            0x04, 0x03, 0x13, 0x26, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x46, 0x61, 0x69, 0x72,
39
+            0x50, 0x6c, 0x61, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
40
+            0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
41
+            0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x37, 0x32, 0x33, 0x30, 0x32, 0x33, 0x30,
42
+            0x30, 0x38, 0x5a, 0x17, 0x0d, 0x31, 0x35, 0x30, 0x37, 0x32, 0x32, 0x30, 0x32, 0x33,
43
+            0x30, 0x30, 0x38, 0x5a, 0x30, 0x64, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,
44
+            0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a,
45
+            0x13, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x17,
46
+            0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0e, 0x41, 0x70, 0x70, 0x6c, 0x65,
47
+            0x20, 0x46, 0x61, 0x69, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x31, 0x27, 0x30, 0x25, 0x06,
48
+            0x03, 0x55, 0x04, 0x03, 0x13, 0x1e, 0x41, 0x50, 0x4e, 0x2e, 0x33, 0x33, 0x33, 0x33,
49
+            0x41, 0x46, 0x31, 0x30, 0x30, 0x37, 0x32, 0x33, 0x41, 0x46, 0x30, 0x30, 0x30, 0x32,
50
+            0x41, 0x46, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06,
51
+            0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81,
52
+            0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xa8, 0xed, 0x9b, 0x31, 0xb4,
53
+            0xe4, 0xe9, 0x36, 0x47, 0x98, 0xe0, 0x58, 0xe3, 0xbb, 0x62, 0x90, 0x0c, 0x58, 0x6d,
54
+            0xaf, 0x05, 0xc4, 0x38, 0xc5, 0xd6, 0xe5, 0x6a, 0x19, 0x6e, 0xbc, 0x91, 0x71, 0x23,
55
+            0x63, 0x73, 0x38, 0x42, 0x30, 0xe5, 0x20, 0xe9, 0xac, 0xe9, 0x0c, 0x74, 0x0b, 0x38,
56
+            0x93, 0x7d, 0xac, 0xbc, 0x5e, 0x77, 0xf2, 0x64, 0x29, 0x10, 0xad, 0xe8, 0xa5, 0x47,
57
+            0x6c, 0xf1, 0x06, 0x03, 0xa0, 0xa4, 0xdb, 0xe5, 0x3b, 0x9a, 0x4e, 0x58, 0x15, 0x4d,
58
+            0xb5, 0xf8, 0xcf, 0x5e, 0xb6, 0xdf, 0x8d, 0x77, 0x44, 0x06, 0xf6, 0xc7, 0xd1, 0xd3,
59
+            0x92, 0xea, 0xf9, 0xd8, 0x23, 0x93, 0x86, 0xad, 0x1c, 0xd5, 0xb5, 0xf1, 0x01, 0x18,
60
+            0x47, 0xb8, 0x2c, 0x9b, 0x89, 0x8a, 0xf1, 0x82, 0x5e, 0xa7, 0xd2, 0x34, 0x0a, 0x1c,
61
+            0x8d, 0x54, 0x02, 0x2a, 0xa9, 0xd0, 0xde, 0xd4, 0x4c, 0xb2, 0xa5, 0x02, 0x03, 0x01,
62
+            0x00, 0x01, 0xa3, 0x60, 0x30, 0x5e, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01,
63
+            0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x03, 0xb8, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x1d,
64
+            0x13, 0x01, 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,
65
+            0x0e, 0x04, 0x16, 0x04, 0x14, 0xdc, 0x84, 0xb4, 0x8a, 0x5f, 0xd4, 0x80, 0xbf, 0x97,
66
+            0xcc, 0xc9, 0x23, 0x07, 0x62, 0x6a, 0x6b, 0xb7, 0x15, 0x03, 0x82, 0x30, 0x1f, 0x06,
67
+            0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xfa, 0x0d, 0xd4, 0x11,
68
+            0x91, 0x1b, 0xe6, 0xb2, 0x4e, 0x1e, 0x06, 0x49, 0x94, 0x11, 0xdd, 0x63, 0x62, 0x07,
69
+            0x59, 0x64, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
70
+            0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x06, 0x9e, 0x49, 0xa1, 0x04, 0xb4, 0xf8,
71
+            0xec, 0xc1, 0x51, 0xf6, 0xb9, 0xbe, 0xda, 0x45, 0x0c, 0x8a, 0x69, 0x81, 0x62, 0xdd,
72
+            0x7b, 0x1d, 0xf1, 0x5c, 0xf5, 0x0f, 0xec, 0x46, 0x63, 0xff, 0xa8, 0x75, 0xcd, 0x72,
73
+            0xb2, 0xa0, 0x0f, 0xbb, 0x94, 0x72, 0x1e, 0x46, 0x13, 0xe3, 0x5b, 0x01, 0xa5, 0xfc,
74
+            0x30, 0xb6, 0x73, 0x38, 0x84, 0xc6, 0x77, 0xa5, 0x9c, 0xd4, 0xa7, 0xff, 0xea, 0x0f,
75
+            0xf6, 0xe1, 0x1e, 0x61, 0x80, 0x7e, 0x28, 0x9a, 0x1b, 0x51, 0x9a, 0x3e, 0x0b, 0x31,
76
+            0x17, 0xfe, 0x62, 0xd5, 0xed, 0x5c, 0x75, 0x68, 0x24, 0x57, 0xf3, 0x56, 0x32, 0xe0,
77
+            0xc8, 0x3d, 0xcc, 0x66, 0xb7, 0xdd, 0x50, 0xce, 0x46, 0xcc, 0xda, 0x82, 0x3a, 0xa1,
78
+            0x29, 0xbb, 0x82, 0x24, 0xcc, 0x02, 0x00, 0xef, 0xc7, 0x83, 0xd6, 0x80, 0x23, 0x15,
79
+            0xf6, 0xb5, 0xff, 0x9e, 0xa1, 0x7d, 0x56, 0xaf, 0xb1,
80
+        ],
81
+    },
82
+    // CN=APN.3333AF100723AF0002AF000002.
83
+    SigningIdentity {
84
+        p: [
85
+            0xf1, 0xf9, 0x91, 0xce, 0x31, 0x05, 0xda, 0xb2, 0xf9, 0xa8, 0xc7, 0x34, 0xdd, 0x9b,
86
+            0x96, 0x83, 0x6b, 0xec, 0x95, 0xad, 0x1f, 0x2b, 0xb2, 0x60, 0x32, 0x7e, 0x75, 0x6c,
87
+            0x04, 0xa8, 0x5d, 0x70, 0xe0, 0x3d, 0x6b, 0x58, 0x4b, 0x1c, 0x52, 0x27, 0xe3, 0xa6,
88
+            0xe1, 0x72, 0x78, 0x7f, 0xc0, 0xd0, 0x92, 0xe1, 0x53, 0x64, 0x11, 0xc8, 0x67, 0x16,
89
+            0x39, 0xf8, 0xf4, 0x2a, 0x49, 0x99, 0x65, 0x41,
90
+        ],
91
+        q: [
92
+            0xf8, 0xe3, 0x32, 0xc9, 0xd3, 0x3c, 0x0a, 0x02, 0xa5, 0xf4, 0x58, 0x3b, 0x25, 0x76,
93
+            0x3a, 0x8d, 0xc5, 0x65, 0xf7, 0x7b, 0x48, 0xbc, 0xa2, 0x4e, 0x7d, 0xf8, 0x90, 0x32,
94
+            0x70, 0x33, 0xb5, 0x8c, 0x7a, 0xa7, 0x59, 0x52, 0x63, 0x93, 0x9f, 0x2d, 0xb8, 0x79,
95
+            0x2b, 0x18, 0x1f, 0xea, 0xd9, 0xdd, 0x85, 0x8d, 0x4a, 0x2e, 0xd9, 0x22, 0xfc, 0x32,
96
+            0x7c, 0xd4, 0xf2, 0xdc, 0x18, 0x61, 0x0a, 0x4f,
97
+        ],
98
+        certificate: &[
99
+            0x30, 0x82, 0x02, 0xc1, 0x30, 0x82, 0x02, 0x2a, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02,
100
+            0x0d, 0x33, 0x33, 0xaf, 0x10, 0x07, 0x23, 0xaf, 0x00, 0x02, 0xaf, 0x00, 0x00, 0x02,
101
+            0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05,
102
+            0x00, 0x30, 0x7b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
103
+            0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x41,
104
+            0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06,
105
+            0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65,
106
+            0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75,
107
+            0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55,
108
+            0x04, 0x03, 0x13, 0x26, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x46, 0x61, 0x69, 0x72,
109
+            0x50, 0x6c, 0x61, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
110
+            0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
111
+            0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x37, 0x32, 0x33, 0x30, 0x32, 0x33, 0x30,
112
+            0x30, 0x39, 0x5a, 0x17, 0x0d, 0x31, 0x35, 0x30, 0x37, 0x32, 0x32, 0x30, 0x32, 0x33,
113
+            0x30, 0x30, 0x39, 0x5a, 0x30, 0x64, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,
114
+            0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a,
115
+            0x13, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x17,
116
+            0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0e, 0x41, 0x70, 0x70, 0x6c, 0x65,
117
+            0x20, 0x46, 0x61, 0x69, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x31, 0x27, 0x30, 0x25, 0x06,
118
+            0x03, 0x55, 0x04, 0x03, 0x13, 0x1e, 0x41, 0x50, 0x4e, 0x2e, 0x33, 0x33, 0x33, 0x33,
119
+            0x41, 0x46, 0x31, 0x30, 0x30, 0x37, 0x32, 0x33, 0x41, 0x46, 0x30, 0x30, 0x30, 0x32,
120
+            0x41, 0x46, 0x30, 0x30, 0x30, 0x30, 0x30, 0x32, 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06,
121
+            0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81,
122
+            0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xeb, 0x40, 0x85, 0x8d, 0x8c,
123
+            0x6a, 0x57, 0xa7, 0x50, 0x1b, 0xdf, 0x52, 0xc9, 0x77, 0x16, 0xd3, 0xa3, 0x04, 0x18,
124
+            0x89, 0xcd, 0xe9, 0x4c, 0xb0, 0x8e, 0x60, 0x6b, 0xee, 0xeb, 0x0d, 0xb1, 0xc3, 0xaa,
125
+            0xa0, 0xef, 0x55, 0x5d, 0xbc, 0x8a, 0xac, 0xa0, 0x51, 0xf2, 0xea, 0x0a, 0x8b, 0x9a,
126
+            0xe2, 0xba, 0x20, 0xab, 0xbd, 0x44, 0xa1, 0x8b, 0xe5, 0x21, 0x23, 0x6f, 0xcc, 0x2f,
127
+            0xf6, 0x9a, 0x66, 0x91, 0x80, 0x29, 0x92, 0x5d, 0xb7, 0xe9, 0xc1, 0x01, 0xd2, 0x1e,
128
+            0x9c, 0x84, 0xff, 0x5a, 0x28, 0x09, 0xa8, 0x92, 0x77, 0xeb, 0x68, 0x3b, 0x2a, 0x00,
129
+            0x51, 0xb8, 0x95, 0x84, 0x28, 0xa8, 0x3d, 0x8c, 0xb0, 0x22, 0x8e, 0x85, 0x24, 0xe9,
130
+            0x85, 0x69, 0x18, 0x74, 0xd3, 0xa3, 0xed, 0x0f, 0x83, 0xbb, 0x24, 0x77, 0x19, 0x38,
131
+            0x6a, 0xcd, 0x07, 0xaf, 0xa7, 0xba, 0x66, 0x29, 0xeb, 0xc9, 0x0f, 0x02, 0x03, 0x01,
132
+            0x00, 0x01, 0xa3, 0x60, 0x30, 0x5e, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01,
133
+            0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x03, 0xb8, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x1d,
134
+            0x13, 0x01, 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,
135
+            0x0e, 0x04, 0x16, 0x04, 0x14, 0xdc, 0x01, 0x3d, 0xa8, 0xf5, 0x66, 0xa5, 0x1f, 0x5c,
136
+            0x4d, 0x30, 0xca, 0x6b, 0x85, 0x8f, 0x1b, 0xc9, 0x43, 0xff, 0x62, 0x30, 0x1f, 0x06,
137
+            0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xfa, 0x0d, 0xd4, 0x11,
138
+            0x91, 0x1b, 0xe6, 0xb2, 0x4e, 0x1e, 0x06, 0x49, 0x94, 0x11, 0xdd, 0x63, 0x62, 0x07,
139
+            0x59, 0x64, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
140
+            0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x3e, 0x6a, 0xf1, 0x25, 0xe6, 0x52, 0x9b,
141
+            0x8f, 0x62, 0x06, 0x24, 0x0b, 0x40, 0xab, 0x42, 0x79, 0x28, 0xa3, 0xf6, 0x4e, 0xb0,
142
+            0x50, 0xf4, 0xc4, 0xd3, 0x36, 0x07, 0x09, 0x7a, 0x68, 0x63, 0x49, 0x65, 0x89, 0x33,
143
+            0x6b, 0x6f, 0xbf, 0x8c, 0xd9, 0x65, 0xb7, 0x27, 0x66, 0x5a, 0xc4, 0xff, 0x90, 0x73,
144
+            0xa7, 0x64, 0xfc, 0x0a, 0x55, 0xc0, 0x11, 0xc3, 0xd6, 0xcb, 0x1b, 0x87, 0x0c, 0xc4,
145
+            0x93, 0xbd, 0x7a, 0x4e, 0x19, 0x2b, 0x65, 0x3d, 0xdd, 0xa8, 0x1c, 0xcb, 0x9d, 0x22,
146
+            0x46, 0x6a, 0x3d, 0x6d, 0x55, 0x35, 0x4d, 0x02, 0xa4, 0x47, 0xff, 0xb4, 0x9f, 0x8a,
147
+            0x9a, 0xc3, 0x1a, 0xec, 0x64, 0x25, 0x95, 0xd4, 0x12, 0x8d, 0x11, 0xee, 0x86, 0x98,
148
+            0xae, 0x47, 0xe6, 0x5a, 0x50, 0xa5, 0x02, 0x87, 0xc4, 0x2e, 0x13, 0xbe, 0xe0, 0x66,
149
+            0x79, 0xce, 0xa5, 0xcb, 0xe1, 0x9e, 0x18, 0xa2, 0x6e,
150
+        ],
151
+    },
152
+    // CN=APN.3333AF100723AF0002AF000003.
153
+    SigningIdentity {
154
+        p: [
155
+            0xd4, 0x97, 0xbb, 0x5c, 0xe1, 0x2f, 0x1b, 0x16, 0x41, 0x57, 0x1f, 0x40, 0xc8, 0x25,
156
+            0xe1, 0xfc, 0xac, 0x03, 0xc4, 0x44, 0x54, 0x16, 0xdc, 0xde, 0x25, 0x2f, 0xa3, 0x12,
157
+            0xb3, 0xda, 0x0b, 0x57, 0x5a, 0xbd, 0x61, 0xfd, 0xab, 0x7f, 0x6a, 0x6c, 0xc9, 0xfe,
158
+            0xb4, 0x6e, 0x3d, 0x7d, 0x1c, 0xb8, 0x47, 0x85, 0x5e, 0xb3, 0x9c, 0x0d, 0x72, 0x68,
159
+            0x62, 0x2c, 0x3d, 0xa5, 0x71, 0x04, 0x48, 0xf3,
160
+        ],
161
+        q: [
162
+            0xec, 0x84, 0x59, 0x48, 0xec, 0xec, 0x30, 0x93, 0x6e, 0x7a, 0x18, 0xee, 0xf2, 0x9f,
163
+            0xe9, 0x49, 0x6c, 0x08, 0x53, 0x50, 0x6b, 0x5d, 0xa8, 0x4b, 0x7c, 0x03, 0x1a, 0xce,
164
+            0xd8, 0x09, 0x0b, 0xaf, 0xf7, 0xa1, 0x3e, 0x4f, 0xd4, 0x74, 0xd6, 0xbc, 0xd2, 0xeb,
165
+            0x88, 0x72, 0x00, 0xf9, 0x23, 0x04, 0xaf, 0xf0, 0x4a, 0x97, 0x40, 0xe7, 0x4a, 0x76,
166
+            0xb4, 0xc7, 0xe1, 0x21, 0x1f, 0x45, 0x81, 0x27,
167
+        ],
168
+        certificate: &[
169
+            0x30, 0x82, 0x02, 0xc1, 0x30, 0x82, 0x02, 0x2a, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02,
170
+            0x0d, 0x33, 0x33, 0xaf, 0x10, 0x07, 0x23, 0xaf, 0x00, 0x02, 0xaf, 0x00, 0x00, 0x03,
171
+            0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05,
172
+            0x00, 0x30, 0x7b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
173
+            0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x41,
174
+            0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06,
175
+            0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65,
176
+            0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75,
177
+            0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55,
178
+            0x04, 0x03, 0x13, 0x26, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x46, 0x61, 0x69, 0x72,
179
+            0x50, 0x6c, 0x61, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
180
+            0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
181
+            0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x37, 0x32, 0x33, 0x30, 0x32, 0x33, 0x30,
182
+            0x30, 0x39, 0x5a, 0x17, 0x0d, 0x31, 0x35, 0x30, 0x37, 0x32, 0x32, 0x30, 0x32, 0x33,
183
+            0x30, 0x30, 0x39, 0x5a, 0x30, 0x64, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,
184
+            0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a,
185
+            0x13, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x17,
186
+            0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0e, 0x41, 0x70, 0x70, 0x6c, 0x65,
187
+            0x20, 0x46, 0x61, 0x69, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x31, 0x27, 0x30, 0x25, 0x06,
188
+            0x03, 0x55, 0x04, 0x03, 0x13, 0x1e, 0x41, 0x50, 0x4e, 0x2e, 0x33, 0x33, 0x33, 0x33,
189
+            0x41, 0x46, 0x31, 0x30, 0x30, 0x37, 0x32, 0x33, 0x41, 0x46, 0x30, 0x30, 0x30, 0x32,
190
+            0x41, 0x46, 0x30, 0x30, 0x30, 0x30, 0x30, 0x33, 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06,
191
+            0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81,
192
+            0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xc4, 0x69, 0xc9, 0x1b, 0x8b,
193
+            0x0b, 0x8a, 0x9c, 0x6c, 0x97, 0xf9, 0x2e, 0xfb, 0x4c, 0x65, 0x75, 0xc9, 0x48, 0x37,
194
+            0xc2, 0xc8, 0x61, 0x0f, 0x58, 0x2b, 0xfd, 0xcf, 0x36, 0x9e, 0x41, 0x42, 0x52, 0x8c,
195
+            0x6b, 0x04, 0x57, 0x1f, 0x44, 0x70, 0xad, 0x05, 0x2f, 0x4c, 0xa9, 0xdc, 0xbd, 0x34,
196
+            0x10, 0x83, 0x5d, 0x58, 0xb1, 0x47, 0x41, 0x5d, 0x41, 0xe7, 0x74, 0xc2, 0x1f, 0x66,
197
+            0xc3, 0x1d, 0x6c, 0xda, 0x27, 0x6d, 0x14, 0x10, 0x04, 0x4c, 0xd4, 0x7d, 0xb6, 0xeb,
198
+            0xe5, 0xd4, 0xf7, 0xed, 0x00, 0x88, 0xa6, 0x2a, 0xd4, 0x18, 0x0e, 0x9d, 0xfd, 0xc9,
199
+            0xd0, 0x19, 0x2c, 0x85, 0xcf, 0x9f, 0x58, 0x26, 0x53, 0x66, 0xdd, 0x9a, 0x0c, 0xbf,
200
+            0x16, 0xc1, 0x75, 0x91, 0x77, 0xd9, 0x4d, 0x79, 0x7e, 0x11, 0xfb, 0x18, 0x50, 0xb8,
201
+            0x01, 0xef, 0x0c, 0xcc, 0xa4, 0xb7, 0x77, 0x76, 0xe8, 0x90, 0x05, 0x02, 0x03, 0x01,
202
+            0x00, 0x01, 0xa3, 0x60, 0x30, 0x5e, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01,
203
+            0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x03, 0xb8, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x1d,
204
+            0x13, 0x01, 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,
205
+            0x0e, 0x04, 0x16, 0x04, 0x14, 0x1e, 0x54, 0x96, 0x7a, 0x7f, 0xb8, 0xa6, 0x0e, 0xe9,
206
+            0xb3, 0x7a, 0x5e, 0x1d, 0xc9, 0xdd, 0xc0, 0x4e, 0x00, 0xef, 0x2b, 0x30, 0x1f, 0x06,
207
+            0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xfa, 0x0d, 0xd4, 0x11,
208
+            0x91, 0x1b, 0xe6, 0xb2, 0x4e, 0x1e, 0x06, 0x49, 0x94, 0x11, 0xdd, 0x63, 0x62, 0x07,
209
+            0x59, 0x64, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
210
+            0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x81, 0x6f, 0x3d, 0xf1, 0x1e, 0x87, 0x0a,
211
+            0xc2, 0x40, 0x30, 0x61, 0xfd, 0xb8, 0x83, 0xec, 0xe4, 0x97, 0x3f, 0xdc, 0xb5, 0xf3,
212
+            0x31, 0x49, 0xd7, 0xed, 0x2c, 0x2e, 0xbd, 0x0b, 0x32, 0xe7, 0x67, 0x88, 0xa0, 0x82,
213
+            0x4f, 0x7c, 0x52, 0x6b, 0x29, 0x3b, 0x2d, 0x2a, 0xb2, 0xa8, 0x7f, 0x89, 0xde, 0x66,
214
+            0x4b, 0x12, 0xa5, 0xf4, 0x95, 0xe5, 0xac, 0xc5, 0xd3, 0x13, 0xa9, 0xc3, 0x60, 0x64,
215
+            0xd5, 0x07, 0xb2, 0x20, 0xec, 0xe5, 0x89, 0x66, 0x58, 0xe2, 0x2c, 0x9d, 0x5e, 0xf7,
216
+            0x5d, 0x58, 0xe6, 0x93, 0x52, 0x1f, 0x15, 0xeb, 0x22, 0x1c, 0x1c, 0x8d, 0x7f, 0xdb,
217
+            0x7e, 0x07, 0xdb, 0xfa, 0x9a, 0x7c, 0x71, 0xeb, 0xfc, 0xf1, 0xce, 0xc4, 0x49, 0x3c,
218
+            0x3d, 0xcc, 0x88, 0x9b, 0x33, 0x82, 0xa4, 0xd4, 0xfd, 0xda, 0xfb, 0x77, 0x99, 0x25,
219
+            0x51, 0x74, 0x2c, 0x84, 0xe2, 0x29, 0x13, 0x56, 0xa5,
220
+        ],
221
+    },
222
+    // CN=APN.3333AF100723AF0002AF000004.
223
+    SigningIdentity {
224
+        p: [
225
+            0xc2, 0x26, 0x96, 0x17, 0xeb, 0xfe, 0x4a, 0x65, 0x71, 0x0d, 0x74, 0xbc, 0x88, 0x03,
226
+            0x53, 0xa5, 0x66, 0x2c, 0x48, 0x4e, 0x48, 0x36, 0x85, 0xec, 0xf1, 0x19, 0x77, 0x4c,
227
+            0xa9, 0x0d, 0xf7, 0x53, 0x11, 0xb3, 0x6a, 0x45, 0xeb, 0x41, 0xa2, 0x16, 0xa2, 0x16,
228
+            0x59, 0x11, 0x60, 0x07, 0x77, 0x3d, 0x4d, 0xdf, 0x43, 0xbf, 0xf7, 0x0c, 0x00, 0x61,
229
+            0xf6, 0xfc, 0x46, 0xa6, 0x17, 0x2f, 0x8f, 0x95,
230
+        ],
231
+        q: [
232
+            0xd3, 0xaa, 0x51, 0xde, 0xa9, 0x31, 0x18, 0xee, 0x0f, 0xef, 0x37, 0x91, 0xcf, 0x09,
233
+            0x1b, 0x73, 0x89, 0x2f, 0x18, 0xe4, 0x1f, 0xd0, 0xc8, 0xce, 0xaf, 0x6c, 0x02, 0x96,
234
+            0xa8, 0xc8, 0x15, 0xa5, 0x2c, 0x5e, 0x0d, 0x54, 0x88, 0x5b, 0x70, 0x8a, 0x16, 0x23,
235
+            0x93, 0xb7, 0x37, 0x91, 0xd8, 0x27, 0x77, 0x61, 0xb5, 0x99, 0x84, 0xa0, 0xa5, 0xf8,
236
+            0xdc, 0xf5, 0x38, 0x11, 0xee, 0x39, 0x2a, 0x03,
237
+        ],
238
+        certificate: &[
239
+            0x30, 0x82, 0x02, 0xc1, 0x30, 0x82, 0x02, 0x2a, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02,
240
+            0x0d, 0x33, 0x33, 0xaf, 0x10, 0x07, 0x23, 0xaf, 0x00, 0x02, 0xaf, 0x00, 0x00, 0x04,
241
+            0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05,
242
+            0x00, 0x30, 0x7b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
243
+            0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x41,
244
+            0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06,
245
+            0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65,
246
+            0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75,
247
+            0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55,
248
+            0x04, 0x03, 0x13, 0x26, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x46, 0x61, 0x69, 0x72,
249
+            0x50, 0x6c, 0x61, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
250
+            0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
251
+            0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x37, 0x32, 0x33, 0x30, 0x32, 0x33, 0x30,
252
+            0x30, 0x39, 0x5a, 0x17, 0x0d, 0x31, 0x35, 0x30, 0x37, 0x32, 0x32, 0x30, 0x32, 0x33,
253
+            0x30, 0x30, 0x39, 0x5a, 0x30, 0x64, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,
254
+            0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a,
255
+            0x13, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x17,
256
+            0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0e, 0x41, 0x70, 0x70, 0x6c, 0x65,
257
+            0x20, 0x46, 0x61, 0x69, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x31, 0x27, 0x30, 0x25, 0x06,
258
+            0x03, 0x55, 0x04, 0x03, 0x13, 0x1e, 0x41, 0x50, 0x4e, 0x2e, 0x33, 0x33, 0x33, 0x33,
259
+            0x41, 0x46, 0x31, 0x30, 0x30, 0x37, 0x32, 0x33, 0x41, 0x46, 0x30, 0x30, 0x30, 0x32,
260
+            0x41, 0x46, 0x30, 0x30, 0x30, 0x30, 0x30, 0x34, 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06,
261
+            0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81,
262
+            0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xa0, 0x86, 0xf9, 0x6c, 0x76,
263
+            0xa9, 0xbd, 0xf9, 0xcf, 0x00, 0x49, 0x01, 0x0d, 0x9e, 0xa0, 0xc8, 0x0d, 0xf1, 0x25,
264
+            0xcf, 0x86, 0xd1, 0x8c, 0x00, 0xc2, 0x7c, 0x4b, 0x5e, 0x41, 0xe7, 0x8e, 0x6c, 0x83,
265
+            0x7b, 0x8f, 0xd9, 0x24, 0x8b, 0xc3, 0xa5, 0x22, 0x7e, 0x3e, 0x76, 0xf2, 0xdc, 0xa5,
266
+            0xae, 0xe2, 0x45, 0xe6, 0x03, 0xda, 0x04, 0x9c, 0x6c, 0x65, 0xdb, 0x7d, 0xe5, 0xac,
267
+            0x5c, 0x57, 0x2b, 0x5c, 0x27, 0x07, 0xe1, 0x24, 0x70, 0xbb, 0xc4, 0xb7, 0x9b, 0xc0,
268
+            0x97, 0x1e, 0x2e, 0x46, 0xa9, 0x9f, 0x08, 0xb2, 0x2a, 0x44, 0x7c, 0x47, 0xd3, 0x78,
269
+            0xe3, 0x05, 0x99, 0x7a, 0x4b, 0x5e, 0x68, 0x4c, 0x7c, 0x1e, 0x02, 0xa2, 0x68, 0x43,
270
+            0x2f, 0x58, 0xcb, 0xb0, 0x23, 0x7b, 0x0a, 0xb2, 0x1c, 0x7e, 0x20, 0xbf, 0x25, 0xa4,
271
+            0x76, 0xd2, 0xdf, 0xd4, 0x3f, 0x95, 0xb8, 0x91, 0x4a, 0x20, 0xbf, 0x02, 0x03, 0x01,
272
+            0x00, 0x01, 0xa3, 0x60, 0x30, 0x5e, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01,
273
+            0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x03, 0xb8, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x1d,
274
+            0x13, 0x01, 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,
275
+            0x0e, 0x04, 0x16, 0x04, 0x14, 0x95, 0xbf, 0xb9, 0x87, 0xa4, 0x8e, 0xc8, 0xd2, 0x13,
276
+            0x09, 0x71, 0x5d, 0xf8, 0xdb, 0x0b, 0x4e, 0xfe, 0x98, 0xca, 0xb0, 0x30, 0x1f, 0x06,
277
+            0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xfa, 0x0d, 0xd4, 0x11,
278
+            0x91, 0x1b, 0xe6, 0xb2, 0x4e, 0x1e, 0x06, 0x49, 0x94, 0x11, 0xdd, 0x63, 0x62, 0x07,
279
+            0x59, 0x64, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
280
+            0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x02, 0x2d, 0xe8, 0x2b, 0xf2, 0xcb, 0xce,
281
+            0x1c, 0x6f, 0x04, 0x83, 0x74, 0x76, 0xb3, 0xb0, 0x48, 0x0b, 0x1b, 0xda, 0x07, 0xa8,
282
+            0x1c, 0x8c, 0x0f, 0xa6, 0x40, 0x56, 0x98, 0x4d, 0x4c, 0xd5, 0xfb, 0x02, 0x9c, 0xe0,
283
+            0xd2, 0xf6, 0x59, 0xc4, 0x88, 0x42, 0x84, 0x3d, 0xb8, 0xca, 0x5b, 0xd0, 0x10, 0xaf,
284
+            0x93, 0x4b, 0x92, 0xbc, 0xcc, 0xf0, 0xad, 0x56, 0xcb, 0x9b, 0x62, 0xbc, 0x59, 0xe3,
285
+            0xe4, 0x18, 0x51, 0x14, 0xb0, 0x7d, 0x8a, 0xfa, 0xf3, 0x61, 0x84, 0x0b, 0x4f, 0xd1,
286
+            0x5d, 0xaf, 0xa2, 0x5b, 0xe3, 0xed, 0x89, 0x18, 0x22, 0xb0, 0xa3, 0x30, 0xbd, 0xa3,
287
+            0x0e, 0xb3, 0x86, 0xaa, 0x6f, 0xe6, 0x9b, 0x18, 0x5c, 0x94, 0x65, 0x1f, 0xa9, 0xa5,
288
+            0x10, 0xd4, 0x09, 0xf7, 0x43, 0x7f, 0x74, 0xa8, 0x4b, 0x65, 0x43, 0xbe, 0xbf, 0x9a,
289
+            0xa3, 0xe3, 0x84, 0xd9, 0xce, 0x3f, 0xcc, 0xc0, 0xa1,
290
+        ],
291
+    },
292
+    // CN=APN.3333AF100723AF0002AF000005.
293
+    SigningIdentity {
294
+        p: [
295
+            0xd0, 0xf3, 0xc5, 0xf4, 0xf0, 0x9c, 0xb9, 0xc7, 0xea, 0x8c, 0x04, 0xe9, 0xcc, 0xb4,
296
+            0xa3, 0x0b, 0xa9, 0x0f, 0x36, 0x4c, 0x6d, 0x3b, 0xa8, 0x3d, 0x01, 0x71, 0xd7, 0x1f,
297
+            0x48, 0x7e, 0x66, 0xac, 0x26, 0x93, 0xc7, 0xde, 0xe3, 0x23, 0xee, 0x1a, 0x21, 0x72,
298
+            0x25, 0xad, 0x95, 0xc5, 0x46, 0xd5, 0x59, 0x44, 0xc3, 0xa2, 0x04, 0x85, 0x3e, 0x42,
299
+            0x9c, 0x47, 0x1d, 0x2a, 0x0c, 0x07, 0xcf, 0x3f,
300
+        ],
301
+        q: [
302
+            0xef, 0xe4, 0x46, 0x27, 0xfe, 0xe6, 0xba, 0xa6, 0x8f, 0x90, 0x22, 0xc8, 0xc6, 0xf9,
303
+            0xad, 0x67, 0xd2, 0xb0, 0x0f, 0xd0, 0x78, 0x08, 0x0e, 0xeb, 0xcd, 0xd7, 0xa9, 0x22,
304
+            0xba, 0x3a, 0x57, 0x10, 0x31, 0xe1, 0x07, 0xf3, 0x23, 0x57, 0xe1, 0x3c, 0x34, 0x6f,
305
+            0xa1, 0x93, 0xf9, 0xe9, 0xf4, 0xd7, 0xc7, 0x32, 0xfe, 0x22, 0xd7, 0xd3, 0x3d, 0xa7,
306
+            0x62, 0x77, 0x15, 0x33, 0x24, 0x5d, 0xba, 0xb7,
307
+        ],
308
+        certificate: &[
309
+            0x30, 0x82, 0x02, 0xc1, 0x30, 0x82, 0x02, 0x2a, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02,
310
+            0x0d, 0x33, 0x33, 0xaf, 0x10, 0x07, 0x23, 0xaf, 0x00, 0x02, 0xaf, 0x00, 0x00, 0x05,
311
+            0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05,
312
+            0x00, 0x30, 0x7b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
313
+            0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x41,
314
+            0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06,
315
+            0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65,
316
+            0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75,
317
+            0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55,
318
+            0x04, 0x03, 0x13, 0x26, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x46, 0x61, 0x69, 0x72,
319
+            0x50, 0x6c, 0x61, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
320
+            0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
321
+            0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x37, 0x32, 0x33, 0x30, 0x32, 0x33, 0x30,
322
+            0x31, 0x30, 0x5a, 0x17, 0x0d, 0x31, 0x35, 0x30, 0x37, 0x32, 0x32, 0x30, 0x32, 0x33,
323
+            0x30, 0x31, 0x30, 0x5a, 0x30, 0x64, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,
324
+            0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a,
325
+            0x13, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x17,
326
+            0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0e, 0x41, 0x70, 0x70, 0x6c, 0x65,
327
+            0x20, 0x46, 0x61, 0x69, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x31, 0x27, 0x30, 0x25, 0x06,
328
+            0x03, 0x55, 0x04, 0x03, 0x13, 0x1e, 0x41, 0x50, 0x4e, 0x2e, 0x33, 0x33, 0x33, 0x33,
329
+            0x41, 0x46, 0x31, 0x30, 0x30, 0x37, 0x32, 0x33, 0x41, 0x46, 0x30, 0x30, 0x30, 0x32,
330
+            0x41, 0x46, 0x30, 0x30, 0x30, 0x30, 0x30, 0x35, 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06,
331
+            0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81,
332
+            0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xc3, 0xcd, 0xe8, 0x2f, 0x48,
333
+            0x1a, 0xf0, 0xe8, 0x8e, 0x92, 0x66, 0xc2, 0x41, 0x47, 0x6a, 0x69, 0x52, 0x97, 0xee,
334
+            0xa7, 0x5e, 0xcb, 0x91, 0xf2, 0xfa, 0x6b, 0x5d, 0xc6, 0xf2, 0x50, 0xee, 0xa1, 0x9e,
335
+            0x53, 0xf3, 0x89, 0x49, 0xc4, 0xa0, 0xbd, 0x17, 0x97, 0x8c, 0x1b, 0xf6, 0x71, 0x1e,
336
+            0xb0, 0x8c, 0x6f, 0x35, 0x49, 0x86, 0xb7, 0xd6, 0xc0, 0x45, 0x95, 0x48, 0xc5, 0x98,
337
+            0xc1, 0x82, 0x23, 0x7d, 0xdb, 0x01, 0xe1, 0x32, 0x82, 0x27, 0x5d, 0x30, 0xe9, 0xfc,
338
+            0xea, 0xfc, 0xa1, 0x4b, 0x03, 0x93, 0xd5, 0x43, 0x64, 0xd2, 0xcc, 0x6b, 0xdc, 0x8e,
339
+            0xea, 0xb9, 0x58, 0xb3, 0x94, 0xfd, 0x04, 0xa7, 0x4c, 0xee, 0x78, 0xc5, 0xa1, 0xf7,
340
+            0x3a, 0x2e, 0xf4, 0x65, 0x32, 0x9e, 0x9e, 0x40, 0x22, 0xf0, 0x4c, 0x3a, 0xba, 0x14,
341
+            0xc5, 0xb9, 0x86, 0x61, 0xd5, 0x52, 0x54, 0x6c, 0x0b, 0xec, 0x09, 0x02, 0x03, 0x01,
342
+            0x00, 0x01, 0xa3, 0x60, 0x30, 0x5e, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01,
343
+            0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x03, 0xb8, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x1d,
344
+            0x13, 0x01, 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,
345
+            0x0e, 0x04, 0x16, 0x04, 0x14, 0x64, 0x3d, 0x96, 0xa3, 0xe7, 0x68, 0x79, 0x3f, 0x31,
346
+            0xe7, 0xce, 0xf2, 0x57, 0xe4, 0x93, 0x31, 0x20, 0x4c, 0x79, 0x87, 0x30, 0x1f, 0x06,
347
+            0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xfa, 0x0d, 0xd4, 0x11,
348
+            0x91, 0x1b, 0xe6, 0xb2, 0x4e, 0x1e, 0x06, 0x49, 0x94, 0x11, 0xdd, 0x63, 0x62, 0x07,
349
+            0x59, 0x64, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
350
+            0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x5d, 0xd9, 0x64, 0x0c, 0x15, 0xd3, 0x19,
351
+            0x06, 0x49, 0xce, 0x79, 0xc0, 0xbf, 0xc5, 0xf1, 0x50, 0x87, 0xd6, 0x7d, 0x6c, 0xb9,
352
+            0x6e, 0xf7, 0xed, 0xa3, 0x3f, 0xfa, 0xdb, 0x55, 0x38, 0x98, 0x51, 0x74, 0xbc, 0xa1,
353
+            0xf6, 0xa3, 0xcf, 0x89, 0x6e, 0x47, 0x26, 0xe2, 0xaf, 0x32, 0x2c, 0xef, 0x1e, 0xbc,
354
+            0x00, 0xa1, 0x2b, 0x2a, 0xf6, 0xd6, 0xcc, 0x63, 0x81, 0x17, 0x7f, 0xb7, 0xd5, 0x4c,
355
+            0x4a, 0xca, 0x85, 0x9e, 0xf0, 0x7c, 0xb4, 0x20, 0x25, 0x97, 0x5f, 0x01, 0xc0, 0xca,
356
+            0xd6, 0xbd, 0x4a, 0x71, 0x54, 0xab, 0xca, 0x2d, 0x80, 0x31, 0xcb, 0x8c, 0xdb, 0xe2,
357
+            0xca, 0xcf, 0x52, 0xa6, 0x92, 0x0f, 0xbe, 0xd0, 0x9e, 0x31, 0x74, 0x01, 0xbb, 0x77,
358
+            0xec, 0x0a, 0xed, 0xe3, 0xf4, 0xd4, 0x3c, 0x4c, 0x8b, 0x33, 0x1d, 0x1e, 0x05, 0xb0,
359
+            0x51, 0xd6, 0x48, 0x11, 0xa2, 0x98, 0x37, 0x10, 0x28,
360
+        ],
361
+    },
362
+    // CN=APN.3333AF100723AF0002AF000006.
363
+    SigningIdentity {
364
+        p: [
365
+            0xcb, 0xf5, 0x15, 0x23, 0xb0, 0xb3, 0x96, 0x21, 0x3f, 0x2c, 0x78, 0x49, 0xea, 0xef,
366
+            0x25, 0x8f, 0x9d, 0x28, 0xbf, 0x88, 0x70, 0x04, 0xd9, 0x59, 0x81, 0x06, 0x0b, 0x8b,
367
+            0x45, 0xe2, 0x53, 0x92, 0xe5, 0xaf, 0xb1, 0xcc, 0xfb, 0x54, 0x7f, 0xb2, 0x7f, 0x41,
368
+            0x5c, 0x0e, 0x4d, 0x32, 0x81, 0x64, 0x8b, 0x1e, 0xec, 0x4b, 0xf3, 0xae, 0x63, 0x64,
369
+            0xdd, 0x35, 0xc7, 0x29, 0xf1, 0xe0, 0x8f, 0x79,
370
+        ],
371
+        q: [
372
+            0xcc, 0x9e, 0xea, 0x57, 0x51, 0xd5, 0xb5, 0x44, 0x15, 0x84, 0x87, 0x5d, 0x82, 0x4d,
373
+            0xee, 0xf4, 0x01, 0x3c, 0x76, 0xfb, 0xef, 0xdd, 0xb2, 0xf6, 0xe8, 0xa2, 0x79, 0xc4,
374
+            0xf7, 0xd2, 0x1e, 0x3b, 0x50, 0x59, 0x5e, 0x52, 0xfa, 0xc6, 0x0d, 0x4a, 0x7d, 0x53,
375
+            0x73, 0x8a, 0xe0, 0xa9, 0x11, 0xbe, 0x1f, 0x22, 0x1d, 0xdf, 0xb1, 0x77, 0x19, 0xa3,
376
+            0xad, 0x4e, 0x6f, 0xd8, 0x1c, 0x99, 0x9c, 0x67,
377
+        ],
378
+        certificate: &[
379
+            0x30, 0x82, 0x02, 0xc1, 0x30, 0x82, 0x02, 0x2a, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02,
380
+            0x0d, 0x33, 0x33, 0xaf, 0x10, 0x07, 0x23, 0xaf, 0x00, 0x02, 0xaf, 0x00, 0x00, 0x06,
381
+            0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05,
382
+            0x00, 0x30, 0x7b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
383
+            0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x41,
384
+            0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06,
385
+            0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65,
386
+            0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75,
387
+            0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55,
388
+            0x04, 0x03, 0x13, 0x26, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x46, 0x61, 0x69, 0x72,
389
+            0x50, 0x6c, 0x61, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
390
+            0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
391
+            0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x37, 0x32, 0x33, 0x30, 0x32, 0x33, 0x30,
392
+            0x31, 0x30, 0x5a, 0x17, 0x0d, 0x31, 0x35, 0x30, 0x37, 0x32, 0x32, 0x30, 0x32, 0x33,
393
+            0x30, 0x31, 0x30, 0x5a, 0x30, 0x64, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,
394
+            0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a,
395
+            0x13, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x17,
396
+            0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0e, 0x41, 0x70, 0x70, 0x6c, 0x65,
397
+            0x20, 0x46, 0x61, 0x69, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x31, 0x27, 0x30, 0x25, 0x06,
398
+            0x03, 0x55, 0x04, 0x03, 0x13, 0x1e, 0x41, 0x50, 0x4e, 0x2e, 0x33, 0x33, 0x33, 0x33,
399
+            0x41, 0x46, 0x31, 0x30, 0x30, 0x37, 0x32, 0x33, 0x41, 0x46, 0x30, 0x30, 0x30, 0x32,
400
+            0x41, 0x46, 0x30, 0x30, 0x30, 0x30, 0x30, 0x36, 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06,
401
+            0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81,
402
+            0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xa3, 0x05, 0xe8, 0xcf, 0x13,
403
+            0xa5, 0xc8, 0x23, 0xc2, 0xea, 0x38, 0xa2, 0x2c, 0x4a, 0xeb, 0xd7, 0x85, 0x9b, 0xf4,
404
+            0xe5, 0x75, 0xaf, 0xb9, 0xbf, 0xf9, 0x9b, 0xd3, 0x66, 0x8e, 0x6f, 0xe5, 0x3f, 0x31,
405
+            0xc4, 0x8e, 0xc2, 0xce, 0xd7, 0x51, 0xd5, 0x8c, 0x06, 0x34, 0x54, 0xc9, 0x7b, 0xb6,
406
+            0x72, 0xd8, 0xbf, 0x23, 0x65, 0x24, 0xd0, 0xda, 0xd3, 0x00, 0xfc, 0x24, 0xd3, 0x01,
407
+            0x16, 0x0e, 0xe0, 0x3f, 0xe8, 0xf6, 0x5e, 0xd8, 0xdf, 0x75, 0xcf, 0x45, 0xaf, 0xb9,
408
+            0xa8, 0xef, 0xf8, 0x3e, 0xf0, 0x54, 0x0e, 0x40, 0xbe, 0x4c, 0x5c, 0x45, 0x30, 0x9f,
409
+            0x84, 0xb6, 0x0a, 0xbc, 0xd5, 0xe7, 0x37, 0x09, 0xec, 0x53, 0xaf, 0x1e, 0x23, 0x80,
410
+            0x9b, 0x33, 0xdc, 0x8d, 0xb8, 0xbe, 0xc1, 0x7c, 0x11, 0x8a, 0x4c, 0xb2, 0x75, 0x07,
411
+            0x6a, 0x64, 0xfe, 0x54, 0x13, 0x55, 0x44, 0x24, 0x18, 0x75, 0xaf, 0x02, 0x03, 0x01,
412
+            0x00, 0x01, 0xa3, 0x60, 0x30, 0x5e, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01,
413
+            0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x03, 0xb8, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x1d,
414
+            0x13, 0x01, 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,
415
+            0x0e, 0x04, 0x16, 0x04, 0x14, 0x78, 0xd4, 0x6a, 0x70, 0xea, 0x7d, 0xad, 0x81, 0xa3,
416
+            0x53, 0xe2, 0x72, 0xdb, 0xe8, 0x94, 0x1c, 0xe9, 0x6f, 0x47, 0x8b, 0x30, 0x1f, 0x06,
417
+            0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xfa, 0x0d, 0xd4, 0x11,
418
+            0x91, 0x1b, 0xe6, 0xb2, 0x4e, 0x1e, 0x06, 0x49, 0x94, 0x11, 0xdd, 0x63, 0x62, 0x07,
419
+            0x59, 0x64, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
420
+            0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x6e, 0x68, 0x5c, 0x97, 0x95, 0x14, 0xe2,
421
+            0xcb, 0x54, 0x95, 0xdf, 0xbf, 0x85, 0x28, 0xea, 0x22, 0x80, 0xad, 0xd8, 0xfe, 0x21,
422
+            0xfe, 0x0c, 0xba, 0x27, 0x9d, 0x7a, 0x91, 0x6f, 0xe9, 0xa3, 0x25, 0x6c, 0xad, 0x4d,
423
+            0xf7, 0x86, 0xc8, 0x2b, 0x7d, 0x60, 0x86, 0x9d, 0x53, 0x3e, 0x73, 0xbd, 0x72, 0x5d,
424
+            0x1f, 0x37, 0x6f, 0x8a, 0xfe, 0xe2, 0x9d, 0x24, 0x26, 0x79, 0xe6, 0x43, 0x22, 0xae,
425
+            0xfb, 0x94, 0x23, 0xa1, 0xd5, 0x22, 0x4d, 0x9c, 0x54, 0x38, 0x2a, 0x21, 0x02, 0x0d,
426
+            0x45, 0xdb, 0x2c, 0x2a, 0x75, 0xe3, 0xbd, 0x81, 0xb6, 0x2a, 0x52, 0xa0, 0x1d, 0x80,
427
+            0xef, 0x7a, 0xd4, 0x71, 0xfb, 0x9f, 0xb0, 0x62, 0x4a, 0x65, 0x0e, 0xfb, 0xf1, 0x50,
428
+            0x2c, 0xdd, 0x7c, 0x76, 0xfd, 0x07, 0x9f, 0x2e, 0x4e, 0xf9, 0xb3, 0x7f, 0xe4, 0xad,
429
+            0x74, 0xb8, 0x3b, 0xc9, 0xfb, 0xc4, 0x7f, 0xff, 0x1e,
430
+        ],
431
+    },
432
+    // CN=APN.3333AF100723AF0002AF000007.
433
+    SigningIdentity {
434
+        p: [
435
+            0xef, 0x8f, 0x8b, 0x0c, 0xbb, 0x10, 0x52, 0xa3, 0xd7, 0xe2, 0x84, 0xea, 0x86, 0xa2,
436
+            0xf5, 0xa8, 0xc6, 0xbe, 0xb3, 0xcd, 0x98, 0xe4, 0x1d, 0xf7, 0x4b, 0x96, 0xc5, 0x11,
437
+            0xae, 0x52, 0xf7, 0x64, 0x5c, 0x3e, 0x11, 0xc4, 0x01, 0x3e, 0x77, 0x10, 0x1c, 0x3a,
438
+            0x5a, 0x7f, 0x23, 0x8e, 0xcd, 0x93, 0x6a, 0x6e, 0xab, 0xfb, 0x47, 0x3c, 0xad, 0x81,
439
+            0x8b, 0xdc, 0x30, 0x25, 0x6e, 0xce, 0x9c, 0x5d,
440
+        ],
441
+        q: [
442
+            0xf6, 0x7e, 0x94, 0x25, 0x65, 0x6f, 0xaf, 0x81, 0x06, 0xe1, 0xc3, 0xc3, 0x3b, 0x86,
443
+            0xa6, 0x73, 0xba, 0xb7, 0x55, 0xde, 0xb0, 0xda, 0x80, 0xea, 0xb3, 0x2d, 0xca, 0xbf,
444
+            0x1e, 0x6e, 0x91, 0x15, 0xbb, 0x50, 0x37, 0x60, 0x0f, 0x47, 0xb2, 0x79, 0x3f, 0x2c,
445
+            0x6d, 0x25, 0x05, 0x1b, 0x40, 0xa9, 0x8d, 0xef, 0xb7, 0x60, 0xbd, 0xf4, 0x6e, 0xf6,
446
+            0xc5, 0x13, 0x4d, 0xab, 0xba, 0xe6, 0x0f, 0x41,
447
+        ],
448
+        certificate: &[
449
+            0x30, 0x82, 0x02, 0xc1, 0x30, 0x82, 0x02, 0x2a, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02,
450
+            0x0d, 0x33, 0x33, 0xaf, 0x10, 0x07, 0x23, 0xaf, 0x00, 0x02, 0xaf, 0x00, 0x00, 0x07,
451
+            0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05,
452
+            0x00, 0x30, 0x7b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
453
+            0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x41,
454
+            0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06,
455
+            0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65,
456
+            0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75,
457
+            0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55,
458
+            0x04, 0x03, 0x13, 0x26, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x46, 0x61, 0x69, 0x72,
459
+            0x50, 0x6c, 0x61, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
460
+            0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
461
+            0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x37, 0x32, 0x33, 0x30, 0x32, 0x33, 0x30,
462
+            0x31, 0x31, 0x5a, 0x17, 0x0d, 0x31, 0x35, 0x30, 0x37, 0x32, 0x32, 0x30, 0x32, 0x33,
463
+            0x30, 0x31, 0x31, 0x5a, 0x30, 0x64, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,
464
+            0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a,
465
+            0x13, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x17,
466
+            0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0e, 0x41, 0x70, 0x70, 0x6c, 0x65,
467
+            0x20, 0x46, 0x61, 0x69, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x31, 0x27, 0x30, 0x25, 0x06,
468
+            0x03, 0x55, 0x04, 0x03, 0x13, 0x1e, 0x41, 0x50, 0x4e, 0x2e, 0x33, 0x33, 0x33, 0x33,
469
+            0x41, 0x46, 0x31, 0x30, 0x30, 0x37, 0x32, 0x33, 0x41, 0x46, 0x30, 0x30, 0x30, 0x32,
470
+            0x41, 0x46, 0x30, 0x30, 0x30, 0x30, 0x30, 0x37, 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06,
471
+            0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81,
472
+            0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xe6, 0xaa, 0x62, 0xe6, 0xa7,
473
+            0x14, 0x5b, 0xc3, 0xc5, 0x60, 0x8b, 0x49, 0x61, 0xda, 0xc5, 0x37, 0x0c, 0x08, 0x2c,
474
+            0xc8, 0x05, 0xed, 0x0b, 0x04, 0x4e, 0x86, 0xa4, 0x8b, 0x34, 0x1f, 0xe3, 0x0f, 0x43,
475
+            0x11, 0xa1, 0xf2, 0x58, 0x16, 0x23, 0x60, 0x85, 0x08, 0x19, 0x54, 0x59, 0x7c, 0x34,
476
+            0x80, 0x4a, 0x88, 0xed, 0x81, 0x8e, 0x07, 0x30, 0x4f, 0xbc, 0x49, 0x55, 0xc1, 0x59,
477
+            0x2d, 0xb6, 0xf0, 0x00, 0x84, 0x17, 0x21, 0x62, 0xbf, 0x76, 0xf4, 0x6d, 0xf5, 0xd6,
478
+            0xf6, 0x39, 0xb3, 0x78, 0x07, 0x58, 0xaf, 0xa1, 0x1e, 0x94, 0xe9, 0x82, 0x58, 0x93,
479
+            0x6f, 0x21, 0x00, 0x84, 0xff, 0x8a, 0x28, 0x6f, 0x3d, 0x53, 0xf5, 0x3a, 0xc0, 0x92,
480
+            0xbc, 0x4a, 0x46, 0x5c, 0x69, 0xc7, 0x0d, 0x18, 0xfe, 0xfa, 0x7d, 0xc7, 0x5e, 0xa1,
481
+            0x8e, 0x22, 0x41, 0x32, 0xcf, 0x81, 0x5a, 0x4b, 0x2d, 0x26, 0x9d, 0x02, 0x03, 0x01,
482
+            0x00, 0x01, 0xa3, 0x60, 0x30, 0x5e, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01,
483
+            0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x03, 0xb8, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x1d,
484
+            0x13, 0x01, 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,
485
+            0x0e, 0x04, 0x16, 0x04, 0x14, 0x56, 0x93, 0xc6, 0x2c, 0x6a, 0xe7, 0x9f, 0xaf, 0x40,
486
+            0x6d, 0x73, 0x16, 0x9a, 0xb9, 0x21, 0x6a, 0x47, 0xc8, 0x4b, 0x84, 0x30, 0x1f, 0x06,
487
+            0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xfa, 0x0d, 0xd4, 0x11,
488
+            0x91, 0x1b, 0xe6, 0xb2, 0x4e, 0x1e, 0x06, 0x49, 0x94, 0x11, 0xdd, 0x63, 0x62, 0x07,
489
+            0x59, 0x64, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
490
+            0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0xa9, 0x60, 0x02, 0x2d, 0xaa, 0xf6, 0x62,
491
+            0xa4, 0x53, 0xf3, 0x16, 0x25, 0xa5, 0x82, 0xc2, 0x0c, 0x55, 0x05, 0x7e, 0x5a, 0x59,
492
+            0x80, 0x11, 0x1f, 0xbd, 0xa0, 0x45, 0xe4, 0xbe, 0xa5, 0xfb, 0xd4, 0xc2, 0x17, 0xa7,
493
+            0xbd, 0x35, 0xf9, 0x2b, 0x08, 0xfd, 0xe4, 0x5d, 0xea, 0x61, 0x39, 0x5c, 0x7f, 0x2a,
494
+            0xa3, 0x63, 0x34, 0xcf, 0xe1, 0xc8, 0x5b, 0x22, 0xa0, 0x22, 0xe2, 0x18, 0x7f, 0xbb,
495
+            0x95, 0xa1, 0x1c, 0x5d, 0x88, 0x9d, 0xb1, 0xf8, 0x4f, 0xc2, 0xe6, 0x66, 0x0e, 0x55,
496
+            0xd0, 0x30, 0xe5, 0x66, 0x6b, 0x6b, 0xd3, 0xfd, 0x2e, 0x7e, 0x0f, 0x32, 0xbf, 0xdc,
497
+            0xc1, 0x10, 0x1b, 0xbe, 0x36, 0x26, 0xd9, 0x96, 0xac, 0x03, 0xb9, 0x56, 0x53, 0xd0,
498
+            0x88, 0x29, 0xba, 0x3d, 0x79, 0x06, 0xfc, 0xe9, 0x4a, 0xa3, 0x2f, 0x69, 0x61, 0x4e,
499
+            0xcc, 0x66, 0x88, 0x19, 0xef, 0x78, 0x81, 0x35, 0xac,
500
+        ],
501
+    },
502
+    // CN=APN.3333AF100723AF0002AF000008.
503
+    SigningIdentity {
504
+        p: [
505
+            0xde, 0xb1, 0xcf, 0x7b, 0xaf, 0x3a, 0xd2, 0x82, 0xc0, 0xe0, 0x0d, 0x95, 0x82, 0x60,
506
+            0xa4, 0x29, 0xd5, 0xe4, 0x97, 0x86, 0xc8, 0xc6, 0x93, 0x43, 0x1c, 0x5a, 0x3e, 0x87,
507
+            0x4a, 0xfe, 0x7b, 0x19, 0x40, 0x75, 0x36, 0xab, 0xcc, 0xf4, 0x90, 0x7d, 0x75, 0xd9,
508
+            0x29, 0xd6, 0x3e, 0x34, 0x1a, 0xff, 0xe7, 0xc3, 0x48, 0x81, 0x9c, 0x65, 0x7b, 0x21,
509
+            0xdd, 0x48, 0xe7, 0x58, 0x83, 0xc8, 0x55, 0x3f,
510
+        ],
511
+        q: [
512
+            0xff, 0x85, 0xfa, 0xfe, 0x5a, 0xc8, 0x65, 0x44, 0x41, 0x81, 0x19, 0xc9, 0x6c, 0xbd,
513
+            0x84, 0xb1, 0xc4, 0x01, 0xa1, 0x9b, 0x08, 0x06, 0x9c, 0xf5, 0x0c, 0x90, 0x32, 0x73,
514
+            0x77, 0xc6, 0x3d, 0xd7, 0xe8, 0x4c, 0x2f, 0x49, 0xa2, 0x96, 0x24, 0x3b, 0x4b, 0x4d,
515
+            0x41, 0x16, 0xe5, 0x08, 0xca, 0xda, 0x3c, 0x4e, 0x05, 0xa2, 0xc2, 0xd8, 0xa0, 0xd2,
516
+            0xa0, 0xa1, 0x92, 0xbc, 0x1c, 0xb2, 0x97, 0x19,
517
+        ],
518
+        certificate: &[
519
+            0x30, 0x82, 0x02, 0xc1, 0x30, 0x82, 0x02, 0x2a, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02,
520
+            0x0d, 0x33, 0x33, 0xaf, 0x10, 0x07, 0x23, 0xaf, 0x00, 0x02, 0xaf, 0x00, 0x00, 0x08,
521
+            0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05,
522
+            0x00, 0x30, 0x7b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
523
+            0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x41,
524
+            0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06,
525
+            0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65,
526
+            0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75,
527
+            0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55,
528
+            0x04, 0x03, 0x13, 0x26, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x46, 0x61, 0x69, 0x72,
529
+            0x50, 0x6c, 0x61, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
530
+            0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
531
+            0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x37, 0x32, 0x33, 0x30, 0x32, 0x33, 0x30,
532
+            0x31, 0x31, 0x5a, 0x17, 0x0d, 0x31, 0x35, 0x30, 0x37, 0x32, 0x32, 0x30, 0x32, 0x33,
533
+            0x30, 0x31, 0x31, 0x5a, 0x30, 0x64, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,
534
+            0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a,
535
+            0x13, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x17,
536
+            0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0e, 0x41, 0x70, 0x70, 0x6c, 0x65,
537
+            0x20, 0x46, 0x61, 0x69, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x31, 0x27, 0x30, 0x25, 0x06,
538
+            0x03, 0x55, 0x04, 0x03, 0x13, 0x1e, 0x41, 0x50, 0x4e, 0x2e, 0x33, 0x33, 0x33, 0x33,
539
+            0x41, 0x46, 0x31, 0x30, 0x30, 0x37, 0x32, 0x33, 0x41, 0x46, 0x30, 0x30, 0x30, 0x32,
540
+            0x41, 0x46, 0x30, 0x30, 0x30, 0x30, 0x30, 0x38, 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06,
541
+            0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81,
542
+            0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xde, 0x47, 0xaa, 0x63, 0xe6,
543
+            0xd1, 0x1d, 0x0a, 0x05, 0x4b, 0xe0, 0xae, 0xe0, 0x07, 0x88, 0x96, 0xc8, 0xc7, 0x16,
544
+            0x88, 0x89, 0xb0, 0x7c, 0x31, 0xa8, 0x06, 0x50, 0x72, 0xf2, 0x3f, 0x71, 0x07, 0xbf,
545
+            0x7e, 0x93, 0xeb, 0x97, 0x50, 0x57, 0x33, 0xba, 0x79, 0x06, 0xfa, 0xae, 0x75, 0x3d,
546
+            0x76, 0xd2, 0xea, 0xce, 0xe9, 0x4e, 0xff, 0xd7, 0xf3, 0x06, 0xa8, 0xff, 0xa3, 0xa3,
547
+            0x2c, 0xe1, 0x1c, 0x3e, 0xc2, 0x29, 0x8f, 0x75, 0xf2, 0x32, 0x18, 0xe5, 0xcd, 0xfa,
548
+            0x9d, 0x3b, 0x79, 0x9f, 0x03, 0xc2, 0x1d, 0xb2, 0x79, 0x07, 0x3c, 0x2a, 0x10, 0xc0,
549
+            0x24, 0x08, 0x26, 0x80, 0x7a, 0x64, 0xf3, 0x8d, 0xa6, 0x80, 0xb8, 0x1d, 0x63, 0xc6,
550
+            0x9f, 0x13, 0x63, 0xeb, 0x84, 0x08, 0x20, 0xb3, 0xbb, 0x26, 0xfe, 0x1f, 0xeb, 0x54,
551
+            0x91, 0x99, 0xef, 0x2a, 0xe4, 0xe0, 0x42, 0x32, 0xa6, 0x7c, 0x27, 0x02, 0x03, 0x01,
552
+            0x00, 0x01, 0xa3, 0x60, 0x30, 0x5e, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01,
553
+            0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x03, 0xb8, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x1d,
554
+            0x13, 0x01, 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,
555
+            0x0e, 0x04, 0x16, 0x04, 0x14, 0x90, 0xc0, 0x8d, 0xd4, 0x02, 0x1f, 0xca, 0x9f, 0xee,
556
+            0xef, 0x9b, 0x1e, 0xf1, 0x2b, 0x48, 0x87, 0xf4, 0xe8, 0x3c, 0x84, 0x30, 0x1f, 0x06,
557
+            0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xfa, 0x0d, 0xd4, 0x11,
558
+            0x91, 0x1b, 0xe6, 0xb2, 0x4e, 0x1e, 0x06, 0x49, 0x94, 0x11, 0xdd, 0x63, 0x62, 0x07,
559
+            0x59, 0x64, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
560
+            0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x1a, 0x1b, 0xc2, 0x71, 0xee, 0xc3, 0xe6,
561
+            0xf1, 0xd3, 0x7f, 0xe8, 0x19, 0xf9, 0x03, 0xd8, 0x17, 0xb5, 0xe7, 0x63, 0xfa, 0xb3,
562
+            0x3f, 0x4e, 0x9a, 0x7a, 0x37, 0x64, 0x04, 0x9e, 0xe9, 0x45, 0x79, 0xa6, 0x21, 0x5c,
563
+            0x63, 0x57, 0x84, 0x9e, 0xf3, 0x2a, 0xa1, 0x18, 0xeb, 0xf3, 0xea, 0xc2, 0x52, 0x8e,
564
+            0x96, 0x18, 0x10, 0x28, 0xfc, 0xb4, 0x75, 0x6e, 0xe3, 0x6b, 0xc8, 0xc4, 0xab, 0xd6,
565
+            0x50, 0x30, 0xef, 0x73, 0xbf, 0x24, 0xc0, 0x05, 0x4e, 0x0b, 0x36, 0x0f, 0x11, 0xed,
566
+            0x9e, 0xb9, 0x67, 0x8e, 0x2a, 0x7c, 0x24, 0x02, 0xaa, 0xb3, 0x94, 0xd1, 0xcd, 0x4c,
567
+            0xe9, 0x9b, 0x55, 0xa0, 0xc5, 0x00, 0xd0, 0xfc, 0xce, 0x2f, 0xb6, 0x43, 0x57, 0x6a,
568
+            0x55, 0x79, 0x0a, 0xa1, 0xe2, 0xe3, 0x0c, 0x65, 0xd8, 0x24, 0x4c, 0x20, 0x65, 0x8e,
569
+            0xc2, 0xa2, 0x30, 0x6e, 0xb3, 0x00, 0xac, 0x72, 0xf0,
570
+        ],
571
+    },
572
+    // CN=APN.3333AF100723AF0002AF000009.
573
+    SigningIdentity {
574
+        p: [
575
+            0xfb, 0xfc, 0x34, 0x55, 0xad, 0x62, 0x97, 0xf2, 0xa0, 0xe0, 0xed, 0xa8, 0xcb, 0x38,
576
+            0x22, 0xc4, 0x16, 0x15, 0x49, 0x8f, 0x29, 0x42, 0x79, 0x20, 0xfe, 0x7e, 0x0a, 0x6d,
577
+            0x46, 0x04, 0xdb, 0xcb, 0xf2, 0xf6, 0xd0, 0x04, 0x84, 0xf0, 0x1a, 0xb5, 0xd2, 0xfe,
578
+            0xb7, 0x8e, 0x43, 0x1d, 0x39, 0x2a, 0xcf, 0x35, 0x9c, 0xbd, 0x85, 0x89, 0xc8, 0xb9,
579
+            0xec, 0x29, 0x87, 0xca, 0x53, 0xdb, 0xc7, 0xe5,
580
+        ],
581
+        q: [
582
+            0xfd, 0x49, 0x28, 0xf2, 0x57, 0xa7, 0x9b, 0x54, 0x8f, 0x13, 0xa9, 0x6f, 0xc6, 0x24,
583
+            0xd8, 0x45, 0x8e, 0x2b, 0x62, 0xe9, 0x32, 0x3a, 0xd9, 0x1d, 0xd8, 0x80, 0xc3, 0x76,
584
+            0xcb, 0x6a, 0x34, 0x8f, 0x6f, 0x38, 0xb5, 0xaa, 0xab, 0x62, 0xaf, 0x6f, 0x6f, 0x25,
585
+            0xaa, 0x0f, 0x23, 0x2e, 0xfa, 0x85, 0x69, 0xf8, 0x90, 0xf4, 0xe8, 0x2c, 0x08, 0xe0,
586
+            0x73, 0xbf, 0x07, 0x95, 0xcb, 0xb2, 0xa9, 0x6d,
587
+        ],
588
+        certificate: &[
589
+            0x30, 0x82, 0x02, 0xc1, 0x30, 0x82, 0x02, 0x2a, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02,
590
+            0x0d, 0x33, 0x33, 0xaf, 0x10, 0x07, 0x23, 0xaf, 0x00, 0x02, 0xaf, 0x00, 0x00, 0x09,
591
+            0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05,
592
+            0x00, 0x30, 0x7b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
593
+            0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x41,
594
+            0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06,
595
+            0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65,
596
+            0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75,
597
+            0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55,
598
+            0x04, 0x03, 0x13, 0x26, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x46, 0x61, 0x69, 0x72,
599
+            0x50, 0x6c, 0x61, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
600
+            0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
601
+            0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x37, 0x32, 0x33, 0x30, 0x32, 0x33, 0x30,
602
+            0x31, 0x31, 0x5a, 0x17, 0x0d, 0x31, 0x35, 0x30, 0x37, 0x32, 0x32, 0x30, 0x32, 0x33,
603
+            0x30, 0x31, 0x31, 0x5a, 0x30, 0x64, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,
604
+            0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a,
605
+            0x13, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x17,
606
+            0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0e, 0x41, 0x70, 0x70, 0x6c, 0x65,
607
+            0x20, 0x46, 0x61, 0x69, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x31, 0x27, 0x30, 0x25, 0x06,
608
+            0x03, 0x55, 0x04, 0x03, 0x13, 0x1e, 0x41, 0x50, 0x4e, 0x2e, 0x33, 0x33, 0x33, 0x33,
609
+            0x41, 0x46, 0x31, 0x30, 0x30, 0x37, 0x32, 0x33, 0x41, 0x46, 0x30, 0x30, 0x30, 0x32,
610
+            0x41, 0x46, 0x30, 0x30, 0x30, 0x30, 0x30, 0x39, 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06,
611
+            0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81,
612
+            0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xf9, 0x50, 0x42, 0xf1, 0x8b,
613
+            0xa7, 0x6d, 0x91, 0x9d, 0x36, 0x9c, 0x4a, 0x3c, 0x2f, 0x23, 0xd3, 0xea, 0x44, 0xf0,
614
+            0xd3, 0x2a, 0x7c, 0xbe, 0xd3, 0x1f, 0x12, 0x3d, 0x12, 0x99, 0x7c, 0x81, 0xe6, 0x9b,
615
+            0xd9, 0x47, 0x63, 0x63, 0xcd, 0x90, 0x48, 0x26, 0xa3, 0x0e, 0x4c, 0x23, 0xb4, 0x16,
616
+            0x5d, 0x15, 0x49, 0x9d, 0xdb, 0x47, 0x1c, 0xff, 0x9a, 0xf7, 0x01, 0x1d, 0x3f, 0x99,
617
+            0x4e, 0xfc, 0x37, 0xf9, 0xfe, 0x1b, 0x59, 0x3d, 0xda, 0xa0, 0x76, 0x56, 0xc1, 0x08,
618
+            0x53, 0xd8, 0x29, 0x9f, 0xe5, 0xe2, 0x2b, 0x7f, 0xbf, 0x90, 0x04, 0x5f, 0xf5, 0x40,
619
+            0x40, 0xe8, 0x1d, 0x66, 0xa9, 0xb6, 0x7a, 0x99, 0xca, 0x92, 0x5a, 0x41, 0x6a, 0x5d,
620
+            0xc3, 0xb3, 0xb1, 0xab, 0x57, 0x43, 0xda, 0xe6, 0xa9, 0x6c, 0x92, 0xcb, 0x54, 0xbd,
621
+            0x25, 0x44, 0xd2, 0xa7, 0xbe, 0x94, 0x1e, 0x5f, 0xc4, 0x49, 0x81, 0x02, 0x03, 0x01,
622
+            0x00, 0x01, 0xa3, 0x60, 0x30, 0x5e, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01,
623
+            0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x03, 0xb8, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x1d,
624
+            0x13, 0x01, 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,
625
+            0x0e, 0x04, 0x16, 0x04, 0x14, 0xdd, 0x29, 0xab, 0x1a, 0x87, 0xc4, 0x51, 0x20, 0xf6,
626
+            0x72, 0x4e, 0x6a, 0x9c, 0x7e, 0xa0, 0xd8, 0x55, 0xd3, 0x7e, 0xfa, 0x30, 0x1f, 0x06,
627
+            0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xfa, 0x0d, 0xd4, 0x11,
628
+            0x91, 0x1b, 0xe6, 0xb2, 0x4e, 0x1e, 0x06, 0x49, 0x94, 0x11, 0xdd, 0x63, 0x62, 0x07,
629
+            0x59, 0x64, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
630
+            0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x70, 0x66, 0x20, 0x8d, 0xd2, 0x5f, 0x1a,
631
+            0xda, 0x1b, 0xe8, 0xbf, 0x90, 0xd1, 0xbd, 0x16, 0x51, 0x47, 0x46, 0x39, 0xc2, 0x51,
632
+            0x3a, 0x77, 0xa6, 0xbf, 0x49, 0xba, 0x62, 0x4e, 0x15, 0x20, 0x9f, 0xdf, 0xca, 0xef,
633
+            0xf2, 0xdb, 0x4a, 0x48, 0x73, 0x45, 0x4d, 0x1f, 0xcc, 0x66, 0x9b, 0xd8, 0xbd, 0xd5,
634
+            0x99, 0xa9, 0x37, 0x43, 0xe5, 0x5d, 0xef, 0x52, 0x0c, 0x06, 0x6f, 0x11, 0xca, 0xfc,
635
+            0xe3, 0xc4, 0x66, 0x98, 0xc9, 0x2a, 0x25, 0x7c, 0xa9, 0x6a, 0xc3, 0x70, 0x10, 0xe9,
636
+            0x55, 0xa1, 0xfc, 0x68, 0x24, 0x7f, 0x67, 0x3d, 0x59, 0x64, 0x66, 0x04, 0x03, 0x81,
637
+            0xd7, 0xe5, 0x2a, 0xaa, 0x04, 0x5a, 0xba, 0x59, 0xf6, 0xef, 0x4e, 0xfb, 0x86, 0xf7,
638
+            0x96, 0x7f, 0x1a, 0xa7, 0xe9, 0xce, 0xad, 0xee, 0xff, 0x45, 0xfe, 0x58, 0x82, 0xf4,
639
+            0xed, 0x19, 0xdf, 0x3f, 0x59, 0xc1, 0xde, 0x36, 0xe9,
640
+        ],
641
+    },
642
+    // CN=APN.3333AF100723AF0002AF000010.
643
+    SigningIdentity {
644
+        p: [
645
+            0xca, 0x3c, 0x28, 0x39, 0xf6, 0xef, 0x84, 0x1b, 0x85, 0xfe, 0xc9, 0xe9, 0xbb, 0xf5,
646
+            0xf3, 0x0e, 0x54, 0xde, 0xa5, 0x1a, 0xb2, 0xc7, 0x9c, 0xfb, 0xa9, 0xeb, 0x51, 0x58,
647
+            0xd2, 0x37, 0xab, 0x45, 0x2b, 0x5b, 0x08, 0xd7, 0xb0, 0xd8, 0x25, 0xaa, 0xd4, 0x4c,
648
+            0x2b, 0xf3, 0x30, 0x8d, 0x6a, 0x64, 0xa2, 0xa9, 0xec, 0x47, 0xd9, 0x59, 0x41, 0x57,
649
+            0x15, 0x6e, 0xb0, 0x03, 0x22, 0x05, 0x46, 0xe1,
650
+        ],
651
+        q: [
652
+            0xfc, 0x70, 0x1b, 0x3a, 0x71, 0x96, 0x22, 0xaf, 0x92, 0x28, 0xa1, 0xed, 0xf5, 0x7e,
653
+            0x95, 0x68, 0x86, 0xd0, 0x3e, 0x0f, 0x18, 0x22, 0xfa, 0x88, 0x71, 0x27, 0xdd, 0x60,
654
+            0x5a, 0x41, 0xbb, 0x87, 0xb3, 0xae, 0x03, 0x85, 0x42, 0x9a, 0x09, 0x9f, 0xe4, 0xa0,
655
+            0x53, 0xf3, 0x88, 0xaa, 0x0a, 0x83, 0x59, 0x00, 0xb6, 0xba, 0x4a, 0xa5, 0xd2, 0xd2,
656
+            0x66, 0x4a, 0xd1, 0xb1, 0x81, 0x09, 0x7e, 0x97,
657
+        ],
658
+        certificate: &[
659
+            0x30, 0x82, 0x02, 0xc1, 0x30, 0x82, 0x02, 0x2a, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02,
660
+            0x0d, 0x33, 0x33, 0xaf, 0x10, 0x07, 0x23, 0xaf, 0x00, 0x02, 0xaf, 0x00, 0x00, 0x10,
661
+            0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05,
662
+            0x00, 0x30, 0x7b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
663
+            0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x41,
664
+            0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06,
665
+            0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65,
666
+            0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75,
667
+            0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55,
668
+            0x04, 0x03, 0x13, 0x26, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x46, 0x61, 0x69, 0x72,
669
+            0x50, 0x6c, 0x61, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
670
+            0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
671
+            0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x37, 0x32, 0x33, 0x30, 0x32, 0x33, 0x30,
672
+            0x31, 0x32, 0x5a, 0x17, 0x0d, 0x31, 0x35, 0x30, 0x37, 0x32, 0x32, 0x30, 0x32, 0x33,
673
+            0x30, 0x31, 0x32, 0x5a, 0x30, 0x64, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,
674
+            0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a,
675
+            0x13, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x17,
676
+            0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0e, 0x41, 0x70, 0x70, 0x6c, 0x65,
677
+            0x20, 0x46, 0x61, 0x69, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x31, 0x27, 0x30, 0x25, 0x06,
678
+            0x03, 0x55, 0x04, 0x03, 0x13, 0x1e, 0x41, 0x50, 0x4e, 0x2e, 0x33, 0x33, 0x33, 0x33,
679
+            0x41, 0x46, 0x31, 0x30, 0x30, 0x37, 0x32, 0x33, 0x41, 0x46, 0x30, 0x30, 0x30, 0x32,
680
+            0x41, 0x46, 0x30, 0x30, 0x30, 0x30, 0x31, 0x30, 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06,
681
+            0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81,
682
+            0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xc7, 0x6b, 0xc7, 0x6d, 0x2c,
683
+            0x0a, 0x31, 0x69, 0xf1, 0x08, 0x47, 0xee, 0xfa, 0xab, 0x20, 0x88, 0x53, 0xd4, 0x56,
684
+            0x88, 0xdd, 0x09, 0xb5, 0x42, 0x40, 0xfe, 0x82, 0x89, 0x89, 0x36, 0x45, 0x1d, 0x74,
685
+            0xfc, 0xc0, 0xdc, 0x40, 0x1c, 0xe4, 0xe8, 0x9d, 0x60, 0xdc, 0x92, 0x92, 0xcc, 0xed,
686
+            0x38, 0x0b, 0x7c, 0x8b, 0x96, 0x53, 0x9f, 0x4e, 0xc2, 0x71, 0x6c, 0x2a, 0xac, 0xca,
687
+            0x79, 0xf6, 0x7f, 0x48, 0x8d, 0x32, 0x9e, 0xf0, 0xae, 0x6a, 0x79, 0x76, 0xdb, 0x58,
688
+            0x10, 0x36, 0x88, 0x4a, 0x47, 0xf7, 0x34, 0x9b, 0xff, 0x2a, 0x80, 0x6a, 0x73, 0xb8,
689
+            0x36, 0x25, 0x1e, 0xba, 0x7e, 0x75, 0x8f, 0xda, 0x09, 0xca, 0x35, 0x7d, 0x52, 0xe1,
690
+            0xf5, 0xbd, 0x80, 0x5c, 0x94, 0x2d, 0x71, 0xe4, 0xe4, 0x3e, 0x99, 0xc9, 0x18, 0x94,
691
+            0xd8, 0xd5, 0xc6, 0xda, 0xb9, 0xea, 0x0f, 0x88, 0xe8, 0x8c, 0xb7, 0x02, 0x03, 0x01,
692
+            0x00, 0x01, 0xa3, 0x60, 0x30, 0x5e, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01,
693
+            0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x03, 0xb8, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x1d,
694
+            0x13, 0x01, 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,
695
+            0x0e, 0x04, 0x16, 0x04, 0x14, 0x0f, 0xb5, 0x2e, 0xbc, 0x73, 0xb7, 0x82, 0x86, 0x45,
696
+            0x02, 0xde, 0x5f, 0x02, 0x6b, 0x3f, 0x16, 0x38, 0xd8, 0x0c, 0x58, 0x30, 0x1f, 0x06,
697
+            0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xfa, 0x0d, 0xd4, 0x11,
698
+            0x91, 0x1b, 0xe6, 0xb2, 0x4e, 0x1e, 0x06, 0x49, 0x94, 0x11, 0xdd, 0x63, 0x62, 0x07,
699
+            0x59, 0x64, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
700
+            0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x7c, 0x65, 0xd8, 0x81, 0xd9, 0xcd, 0x65,
701
+            0x9e, 0xba, 0x5d, 0xba, 0x09, 0xd6, 0x4a, 0xf1, 0x5f, 0xd7, 0xcd, 0x7f, 0x51, 0xd7,
702
+            0x73, 0x7c, 0x0d, 0x59, 0x10, 0x11, 0xfa, 0x5e, 0x90, 0x5d, 0x7f, 0xa1, 0x0e, 0x79,
703
+            0xf9, 0x2e, 0xf4, 0xbb, 0x08, 0x79, 0xd2, 0xbd, 0xfe, 0xf7, 0xb1, 0xeb, 0x71, 0x39,
704
+            0xef, 0x1a, 0x83, 0x9d, 0xd1, 0x3d, 0x4f, 0x55, 0x3b, 0xfc, 0x12, 0x3d, 0xc9, 0xd7,
705
+            0xcf, 0xfe, 0x1b, 0x75, 0xbe, 0x95, 0xef, 0xa0, 0x46, 0x06, 0xf3, 0xd0, 0xaf, 0x11,
706
+            0x46, 0x5d, 0xca, 0x6f, 0x85, 0x16, 0xbd, 0x31, 0xe5, 0x81, 0xf3, 0x2d, 0x9e, 0x57,
707
+            0x74, 0x87, 0x4b, 0xe6, 0x63, 0x96, 0x0b, 0x51, 0x1b, 0x9e, 0x71, 0xaf, 0xa8, 0xc0,
708
+            0xc2, 0x11, 0x1a, 0x2f, 0x6b, 0x0f, 0x3a, 0xbb, 0xe2, 0x53, 0xd6, 0x5e, 0xdf, 0x58,
709
+            0x24, 0x8a, 0xd1, 0xbd, 0x00, 0x5c, 0x69, 0xb8, 0x4e,
710
+        ],
711
+    },
712
+];
713
+
714
+// Shared FairPlay intermediate and Apple root, concatenated DER.
715
+pub(super) const CERTIFICATE_AUTHORITY_CHAIN: &[u8] = &[
716
+    0x30, 0x82, 0x03, 0x71, 0x30, 0x82, 0x02, 0x59, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x01, 0x11,
717
+    0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30,
718
+    0x62, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13,
719
+    0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49,
720
+    0x6e, 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x70,
721
+    0x70, 0x6c, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
722
+    0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x16, 0x30, 0x14, 0x06,
723
+    0x03, 0x55, 0x04, 0x03, 0x13, 0x0d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x52, 0x6f, 0x6f, 0x74,
724
+    0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x37, 0x30, 0x32, 0x31, 0x34, 0x31, 0x39, 0x32,
725
+    0x30, 0x34, 0x31, 0x5a, 0x17, 0x0d, 0x31, 0x32, 0x30, 0x32, 0x31, 0x34, 0x31, 0x39, 0x32, 0x30,
726
+    0x34, 0x31, 0x5a, 0x30, 0x7b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
727
+    0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x41, 0x70, 0x70,
728
+    0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06, 0x03, 0x55, 0x04, 0x0b,
729
+    0x13, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
730
+    0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31,
731
+    0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x26, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20,
732
+    0x46, 0x61, 0x69, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
733
+    0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
734
+    0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
735
+    0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xb2, 0x67, 0x3c,
736
+    0x5d, 0x2a, 0xe7, 0x8f, 0xf2, 0x77, 0xcf, 0xef, 0x31, 0xbc, 0xd1, 0x04, 0xfd, 0xea, 0x9f, 0xd0,
737
+    0x86, 0x29, 0x90, 0x0a, 0xa3, 0xff, 0x64, 0x4a, 0xef, 0x69, 0xf4, 0x0a, 0xb9, 0xef, 0xc4, 0xc4,
738
+    0x63, 0xca, 0x3a, 0x2d, 0x21, 0x3d, 0x52, 0x8c, 0x23, 0x89, 0x29, 0xaa, 0xdb, 0x17, 0xdc, 0xcb,
739
+    0x28, 0xc4, 0x69, 0xcd, 0x72, 0x24, 0xc2, 0x10, 0xc1, 0xf4, 0x78, 0x1d, 0x31, 0x16, 0xc5, 0xe6,
740
+    0xea, 0x19, 0x1d, 0x2a, 0x33, 0xbe, 0x80, 0xab, 0xdc, 0x11, 0x48, 0x06, 0x2a, 0x1f, 0x0e, 0x61,
741
+    0x81, 0xcd, 0x79, 0x9a, 0x5d, 0x12, 0xf4, 0x84, 0x90, 0xc8, 0x7c, 0xf6, 0x78, 0x9b, 0x52, 0xf8,
742
+    0xfa, 0xf1, 0x88, 0x6e, 0x10, 0x72, 0xf8, 0x5d, 0xcb, 0x88, 0xec, 0xb6, 0x55, 0x14, 0x97, 0xa4,
743
+    0x4d, 0x0b, 0xc1, 0x4f, 0x27, 0x67, 0x99, 0xa6, 0xa4, 0xb3, 0xd7, 0xda, 0xad, 0x02, 0x03, 0x01,
744
+    0x00, 0x01, 0xa3, 0x81, 0x9c, 0x30, 0x81, 0x99, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01,
745
+    0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01,
746
+    0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e,
747
+    0x04, 0x16, 0x04, 0x14, 0xfa, 0x0d, 0xd4, 0x11, 0x91, 0x1b, 0xe6, 0xb2, 0x4e, 0x1e, 0x06, 0x49,
748
+    0x94, 0x11, 0xdd, 0x63, 0x62, 0x07, 0x59, 0x64, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04,
749
+    0x18, 0x30, 0x16, 0x80, 0x14, 0x2b, 0xd0, 0x69, 0x47, 0x94, 0x76, 0x09, 0xfe, 0xf4, 0x6b, 0x8d,
750
+    0x2e, 0x40, 0xa6, 0xf7, 0x47, 0x4d, 0x7f, 0x08, 0x5e, 0x30, 0x36, 0x06, 0x03, 0x55, 0x1d, 0x1f,
751
+    0x04, 0x2f, 0x30, 0x2d, 0x30, 0x2b, 0xa0, 0x29, 0xa0, 0x27, 0x86, 0x25, 0x68, 0x74, 0x74, 0x70,
752
+    0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d,
753
+    0x2f, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x63, 0x61, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x72,
754
+    0x6c, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00,
755
+    0x03, 0x82, 0x01, 0x01, 0x00, 0xc0, 0xa0, 0x73, 0xf8, 0x1d, 0xea, 0x1c, 0xd1, 0xcd, 0xc5, 0x86,
756
+    0x75, 0xa4, 0xbb, 0xeb, 0x40, 0xc5, 0x6a, 0x2d, 0x0c, 0xfe, 0x5b, 0xfc, 0x6e, 0xc1, 0x5b, 0xd7,
757
+    0x48, 0x7d, 0x40, 0xa9, 0x61, 0x2d, 0x4b, 0x37, 0x70, 0x38, 0xef, 0x06, 0x91, 0x4b, 0xaf, 0x11,
758
+    0xc2, 0x1f, 0x95, 0xee, 0x88, 0x33, 0x6f, 0x5f, 0x72, 0xea, 0xf6, 0xd5, 0x76, 0xb5, 0x57, 0x58,
759
+    0x71, 0xf0, 0x3e, 0x10, 0xc3, 0xd5, 0x2e, 0xbb, 0x2f, 0xa6, 0x3a, 0x73, 0xc2, 0x32, 0x65, 0x0a,
760
+    0x56, 0x04, 0x16, 0x19, 0x98, 0x4d, 0x0b, 0x78, 0x6d, 0xd0, 0xa3, 0x74, 0x64, 0x98, 0x54, 0xf4,
761
+    0xa7, 0xd7, 0x1d, 0xa2, 0xff, 0x2a, 0xc3, 0x79, 0x00, 0xb2, 0x99, 0xe7, 0xe7, 0xbb, 0xd5, 0x06,
762
+    0xa2, 0xeb, 0x49, 0x33, 0x69, 0x67, 0x41, 0x01, 0x99, 0xad, 0x68, 0xb0, 0xd3, 0x7a, 0xf4, 0x95,
763
+    0xe0, 0xfd, 0x24, 0x88, 0x2a, 0x10, 0xe7, 0xa3, 0x68, 0xff, 0xad, 0x7b, 0xfa, 0xd9, 0xba, 0xf1,
764
+    0xa5, 0x7f, 0xca, 0x93, 0xa2, 0xce, 0x03, 0x37, 0x03, 0x66, 0x85, 0x93, 0x05, 0x1b, 0x31, 0xf6,
765
+    0x75, 0x82, 0x93, 0x2f, 0xd3, 0xf0, 0xda, 0x39, 0x37, 0x3d, 0x5f, 0xfe, 0xba, 0xcd, 0x9a, 0x70,
766
+    0xc0, 0x06, 0x8b, 0x22, 0xee, 0xa9, 0xce, 0x04, 0x6e, 0x24, 0x69, 0x3b, 0x16, 0x52, 0xa5, 0xc0,
767
+    0xf2, 0xc0, 0xae, 0x43, 0x70, 0x84, 0xbb, 0x21, 0x91, 0x43, 0xcb, 0xbb, 0xb7, 0xea, 0x5b, 0xba,
768
+    0x93, 0xe0, 0xb7, 0x77, 0x89, 0xef, 0x4d, 0x56, 0x04, 0x33, 0x5d, 0xce, 0x5c, 0x59, 0x31, 0xa7,
769
+    0xd7, 0x3b, 0x45, 0x56, 0x11, 0xcd, 0xae, 0xcb, 0x9b, 0x0e, 0xa0, 0xcf, 0xdc, 0x93, 0xa8, 0xca,
770
+    0xc5, 0x58, 0x78, 0x00, 0x05, 0xd9, 0x99, 0xab, 0xd6, 0x5e, 0x87, 0xea, 0x92, 0x73, 0x34, 0x54,
771
+    0xa3, 0x93, 0x18, 0xa4, 0x83, 0x30, 0x82, 0x04, 0xbb, 0x30, 0x82, 0x03, 0xa3, 0xa0, 0x03, 0x02,
772
+    0x01, 0x02, 0x02, 0x01, 0x02, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
773
+    0x01, 0x05, 0x05, 0x00, 0x30, 0x62, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
774
+    0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x41, 0x70,
775
+    0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06, 0x03, 0x55, 0x04,
776
+    0x0b, 0x13, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
777
+    0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
778
+    0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0d, 0x41, 0x70, 0x70, 0x6c, 0x65,
779
+    0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x30, 0x34,
780
+    0x32, 0x35, 0x32, 0x31, 0x34, 0x30, 0x33, 0x36, 0x5a, 0x17, 0x0d, 0x33, 0x35, 0x30, 0x32, 0x30,
781
+    0x39, 0x32, 0x31, 0x34, 0x30, 0x33, 0x36, 0x5a, 0x30, 0x62, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03,
782
+    0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a,
783
+    0x13, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24,
784
+    0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65, 0x72,
785
+    0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f,
786
+    0x72, 0x69, 0x74, 0x79, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0d, 0x41,
787
+    0x70, 0x70, 0x6c, 0x65, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22,
788
+    0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03,
789
+    0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xe4, 0x91, 0xa9,
790
+    0x09, 0x1f, 0x91, 0xdb, 0x1e, 0x47, 0x50, 0xeb, 0x05, 0xed, 0x5e, 0x79, 0x84, 0x2d, 0xeb, 0x36,
791
+    0xa2, 0x57, 0x4c, 0x55, 0xec, 0x8b, 0x19, 0x89, 0xde, 0xf9, 0x4b, 0x6c, 0xf5, 0x07, 0xab, 0x22,
792
+    0x30, 0x02, 0xe8, 0x18, 0x3e, 0xf8, 0x50, 0x09, 0xd3, 0x7f, 0x41, 0xa8, 0x98, 0xf9, 0xd1, 0xca,
793
+    0x66, 0x9c, 0x24, 0x6b, 0x11, 0xd0, 0xa3, 0xbb, 0xe4, 0x1b, 0x2a, 0xc3, 0x1f, 0x95, 0x9e, 0x7a,
794
+    0x0c, 0xa4, 0x47, 0x8b, 0x5b, 0xd4, 0x16, 0x37, 0x33, 0xcb, 0xc4, 0x0f, 0x4d, 0xce, 0x14, 0x69,
795
+    0xd1, 0xc9, 0x19, 0x72, 0xf5, 0x5d, 0x0e, 0xd5, 0x7f, 0x5f, 0x9b, 0xf2, 0x25, 0x03, 0xba, 0x55,
796
+    0x8f, 0x4d, 0x5d, 0x0d, 0xf1, 0x64, 0x35, 0x23, 0x15, 0x4b, 0x15, 0x59, 0x1d, 0xb3, 0x94, 0xf7,
797
+    0xf6, 0x9c, 0x9e, 0xcf, 0x50, 0xba, 0xc1, 0x58, 0x50, 0x67, 0x8f, 0x08, 0xb4, 0x20, 0xf7, 0xcb,
798
+    0xac, 0x2c, 0x20, 0x6f, 0x70, 0xb6, 0x3f, 0x01, 0x30, 0x8c, 0xb7, 0x43, 0xcf, 0x0f, 0x9d, 0x3d,
799
+    0xf3, 0x2b, 0x49, 0x28, 0x1a, 0xc8, 0xfe, 0xce, 0xb5, 0xb9, 0x0e, 0xd9, 0x5e, 0x1c, 0xd6, 0xcb,
800
+    0x3d, 0xb5, 0x3a, 0xad, 0xf4, 0x0f, 0x0e, 0x00, 0x92, 0x0b, 0xb1, 0x21, 0x16, 0x2e, 0x74, 0xd5,
801
+    0x3c, 0x0d, 0xdb, 0x62, 0x16, 0xab, 0xa3, 0x71, 0x92, 0x47, 0x53, 0x55, 0xc1, 0xaf, 0x2f, 0x41,
802
+    0xb3, 0xf8, 0xfb, 0xe3, 0x70, 0xcd, 0xe6, 0xa3, 0x4c, 0x45, 0x7e, 0x1f, 0x4c, 0x6b, 0x50, 0x96,
803
+    0x41, 0x89, 0xc4, 0x74, 0x62, 0x0b, 0x10, 0x83, 0x41, 0x87, 0x33, 0x8a, 0x81, 0xb1, 0x30, 0x58,
804
+    0xec, 0x5a, 0x04, 0x32, 0x8c, 0x68, 0xb3, 0x8f, 0x1d, 0xde, 0x65, 0x73, 0xff, 0x67, 0x5e, 0x65,
805
+    0xbc, 0x49, 0xd8, 0x76, 0x9f, 0x33, 0x14, 0x65, 0xa1, 0x77, 0x94, 0xc9, 0x2d, 0x02, 0x03, 0x01,
806
+    0x00, 0x01, 0xa3, 0x82, 0x01, 0x7a, 0x30, 0x82, 0x01, 0x76, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d,
807
+    0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d,
808
+    0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x1d, 0x06, 0x03, 0x55,
809
+    0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x2b, 0xd0, 0x69, 0x47, 0x94, 0x76, 0x09, 0xfe, 0xf4, 0x6b,
810
+    0x8d, 0x2e, 0x40, 0xa6, 0xf7, 0x47, 0x4d, 0x7f, 0x08, 0x5e, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d,
811
+    0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x2b, 0xd0, 0x69, 0x47, 0x94, 0x76, 0x09, 0xfe, 0xf4,
812
+    0x6b, 0x8d, 0x2e, 0x40, 0xa6, 0xf7, 0x47, 0x4d, 0x7f, 0x08, 0x5e, 0x30, 0x82, 0x01, 0x11, 0x06,
813
+    0x03, 0x55, 0x1d, 0x20, 0x04, 0x82, 0x01, 0x08, 0x30, 0x82, 0x01, 0x04, 0x30, 0x82, 0x01, 0x00,
814
+    0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x63, 0x64, 0x05, 0x01, 0x30, 0x81, 0xf2, 0x30, 0x2a,
815
+    0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1e, 0x68, 0x74, 0x74, 0x70,
816
+    0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f,
817
+    0x6d, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x63, 0x61, 0x2f, 0x30, 0x81, 0xc3, 0x06, 0x08, 0x2b,
818
+    0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x02, 0x30, 0x81, 0xb6, 0x1a, 0x81, 0xb3, 0x52, 0x65, 0x6c,
819
+    0x69, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x63, 0x65,
820
+    0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x62, 0x79, 0x20, 0x61, 0x6e, 0x79,
821
+    0x20, 0x70, 0x61, 0x72, 0x74, 0x79, 0x20, 0x61, 0x73, 0x73, 0x75, 0x6d, 0x65, 0x73, 0x20, 0x61,
822
+    0x63, 0x63, 0x65, 0x70, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65,
823
+    0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x62, 0x6c, 0x65,
824
+    0x20, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x20,
825
+    0x61, 0x6e, 0x64, 0x20, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6f,
826
+    0x66, 0x20, 0x75, 0x73, 0x65, 0x2c, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
827
+    0x74, 0x65, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x63, 0x65,
828
+    0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x72, 0x61, 0x63,
829
+    0x74, 0x69, 0x63, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2e,
830
+    0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03,
831
+    0x82, 0x01, 0x01, 0x00, 0x5c, 0x36, 0x99, 0x4c, 0x2d, 0x78, 0xb7, 0xed, 0x8c, 0x9b, 0xdc, 0xf3,
832
+    0x77, 0x9b, 0xf2, 0x76, 0xd2, 0x77, 0x30, 0x4f, 0xc1, 0x1f, 0x85, 0x83, 0x85, 0x1b, 0x99, 0x3d,
833
+    0x47, 0x37, 0xf2, 0xa9, 0x9b, 0x40, 0x8e, 0x2c, 0xd4, 0xb1, 0x90, 0x12, 0xd8, 0xbe, 0xf4, 0x73,
834
+    0x9b, 0xee, 0xd2, 0x64, 0x0f, 0xcb, 0x79, 0x4f, 0x34, 0xd8, 0xa2, 0x3e, 0xf9, 0x78, 0xff, 0x6b,
835
+    0xc8, 0x07, 0xec, 0x7d, 0x39, 0x83, 0x8b, 0x53, 0x20, 0xd3, 0x38, 0xc4, 0xb1, 0xbf, 0x9a, 0x4f,
836
+    0x0a, 0x6b, 0xff, 0x2b, 0xfc, 0x59, 0xa7, 0x05, 0x09, 0x7c, 0x17, 0x40, 0x56, 0x11, 0x1e, 0x74,
837
+    0xd3, 0xb7, 0x8b, 0x23, 0x3b, 0x47, 0xa3, 0xd5, 0x6f, 0x24, 0xe2, 0xeb, 0xd1, 0xb7, 0x70, 0xdf,
838
+    0x0f, 0x45, 0xe1, 0x27, 0xca, 0xf1, 0x6d, 0x78, 0xed, 0xe7, 0xb5, 0x17, 0x17, 0xa8, 0xdc, 0x7e,
839
+    0x22, 0x35, 0xca, 0x25, 0xd5, 0xd9, 0x0f, 0xd6, 0x6b, 0xd4, 0xa2, 0x24, 0x23, 0x11, 0xf7, 0xa1,
840
+    0xac, 0x8f, 0x73, 0x81, 0x60, 0xc6, 0x1b, 0x5b, 0x09, 0x2f, 0x92, 0xb2, 0xf8, 0x44, 0x48, 0xf0,
841
+    0x60, 0x38, 0x9e, 0x15, 0xf5, 0x3d, 0x26, 0x67, 0x20, 0x8a, 0x33, 0x6a, 0xf7, 0x0d, 0x82, 0xcf,
842
+    0xde, 0xeb, 0xa3, 0x2f, 0xf9, 0x53, 0x6a, 0x5b, 0x64, 0xc0, 0x63, 0x33, 0x77, 0xf7, 0x3a, 0x07,
843
+    0x2c, 0x56, 0xeb, 0xda, 0x0f, 0x21, 0x0e, 0xda, 0xba, 0x73, 0x19, 0x4f, 0xb5, 0xd9, 0x36, 0x7f,
844
+    0xc1, 0x87, 0x55, 0xd9, 0xa7, 0x99, 0xb9, 0x32, 0x42, 0xfb, 0xd8, 0xd5, 0x71, 0x9e, 0x7e, 0xa1,
845
+    0x52, 0xb7, 0x1b, 0xbd, 0x93, 0x42, 0x24, 0x12, 0x2a, 0xc7, 0x0f, 0x1d, 0xb6, 0x4d, 0x9c, 0x5e,
846
+    0x63, 0xc8, 0x4b, 0x80, 0x17, 0x50, 0xaa, 0x8a, 0xd5, 0xda, 0xe4, 0xfc, 0xd0, 0x09, 0x07, 0x37,
847
+    0xb0, 0x75, 0x75, 0x21,
848
+];
... ...
@@ -0,0 +1,277 @@
1
+// Synthetic input/signature pairs captured from the unchanged native routine.
2
+// These are public signatures, not account or device credentials.
3
+pub(super) const VECTORS: &[(usize, &[u8], &[u8])] = &[
4
+    (
5
+        7,
6
+        &[
7
+            0x53, 0x79, 0x6e, 0x74, 0x68, 0x65, 0x74, 0x69, 0x63, 0x20, 0x41, 0x50, 0x53, 0x20,
8
+            0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x64, 0x65,
9
+            0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61,
10
+            0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00,
11
+        ],
12
+        &[
13
+            0xbc, 0x9b, 0x19, 0xef, 0x01, 0xf9, 0xba, 0xef, 0x65, 0x4d, 0xa2, 0x64, 0x4b, 0xee,
14
+            0x59, 0xbc, 0x0b, 0x64, 0x53, 0x99, 0xdf, 0x60, 0xf4, 0xaf, 0xab, 0x9e, 0xd8, 0xc3,
15
+            0x7c, 0xb1, 0x85, 0xc6, 0x27, 0x64, 0x1b, 0x5b, 0x56, 0x5b, 0xe9, 0x4b, 0xf0, 0x57,
16
+            0xf2, 0x42, 0x04, 0x99, 0xec, 0x50, 0x54, 0xc8, 0x79, 0x00, 0xba, 0xf5, 0xb6, 0x6f,
17
+            0x99, 0x76, 0xe5, 0x37, 0x60, 0x78, 0x86, 0xa9, 0x73, 0x84, 0xaa, 0x28, 0x00, 0x96,
18
+            0x42, 0xbe, 0x60, 0x61, 0x33, 0x52, 0x47, 0xb0, 0x3b, 0x28, 0xea, 0x9f, 0x09, 0xa5,
19
+            0xc4, 0xac, 0x5e, 0x1c, 0xf2, 0x30, 0x17, 0x22, 0x5d, 0xc3, 0x33, 0x9b, 0xac, 0x0f,
20
+            0x7b, 0x1e, 0xc8, 0xb5, 0xc2, 0xcd, 0x84, 0xf4, 0xc4, 0x87, 0xf0, 0x42, 0x90, 0x8f,
21
+            0x8f, 0x5f, 0x3d, 0x9e, 0xcd, 0x16, 0x81, 0xd9, 0x17, 0xe8, 0x75, 0xc8, 0x3a, 0x2b,
22
+            0xbc, 0x6e,
23
+        ],
24
+    ),
25
+    (
26
+        6,
27
+        &[
28
+            0x53, 0x79, 0x6e, 0x74, 0x68, 0x65, 0x74, 0x69, 0x63, 0x20, 0x41, 0x50, 0x53, 0x20,
29
+            0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x64, 0x65,
30
+            0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61,
31
+            0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x01,
32
+        ],
33
+        &[
34
+            0x91, 0x5f, 0xcb, 0x51, 0x1a, 0xe8, 0x57, 0x0d, 0xf4, 0xab, 0xcd, 0xf8, 0xd1, 0x51,
35
+            0xac, 0xe2, 0x7e, 0x0f, 0x43, 0xb1, 0xba, 0xba, 0xd7, 0x54, 0x23, 0x45, 0x7a, 0xd9,
36
+            0x99, 0x59, 0x0f, 0x33, 0x97, 0x65, 0x64, 0x57, 0x50, 0x63, 0xcd, 0xd0, 0x29, 0x7d,
37
+            0x43, 0xef, 0xd5, 0x78, 0x43, 0x04, 0x18, 0x77, 0x52, 0x3f, 0x90, 0xf0, 0x5c, 0xcf,
38
+            0xd8, 0xa5, 0x91, 0x39, 0x5f, 0xe6, 0xcf, 0x69, 0x35, 0xa8, 0xf1, 0x5f, 0x3f, 0xe1,
39
+            0xc2, 0x33, 0x86, 0xac, 0x87, 0x12, 0xcd, 0x62, 0x35, 0xc0, 0x6f, 0xdc, 0x26, 0xe3,
40
+            0x0e, 0xa0, 0x3e, 0x43, 0x19, 0xad, 0xf8, 0x31, 0xdc, 0x4a, 0x70, 0xb0, 0x9b, 0xc3,
41
+            0x67, 0x1a, 0x34, 0x31, 0x95, 0x30, 0xf3, 0x4c, 0x8e, 0x87, 0x2c, 0xb3, 0xf8, 0x06,
42
+            0xd3, 0x10, 0xf5, 0x06, 0x61, 0xfe, 0xea, 0x9c, 0x85, 0x15, 0x04, 0x7f, 0x7e, 0xda,
43
+            0x9b, 0xe0,
44
+        ],
45
+    ),
46
+    (
47
+        6,
48
+        &[
49
+            0x53, 0x79, 0x6e, 0x74, 0x68, 0x65, 0x74, 0x69, 0x63, 0x20, 0x41, 0x50, 0x53, 0x20,
50
+            0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x64, 0x65,
51
+            0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61,
52
+            0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x02,
53
+        ],
54
+        &[
55
+            0x6e, 0xd5, 0xac, 0xb5, 0x68, 0xf5, 0x92, 0x8b, 0x88, 0x1b, 0xf6, 0x10, 0x1f, 0xa8,
56
+            0x62, 0xd8, 0x6d, 0xab, 0x1f, 0x25, 0x63, 0xfb, 0x99, 0x8d, 0x88, 0x3d, 0x1a, 0x13,
57
+            0x6a, 0xd6, 0xbe, 0x6f, 0xf7, 0x12, 0x1f, 0xae, 0xd2, 0x97, 0x86, 0x57, 0x1c, 0x47,
58
+            0x03, 0xcd, 0x79, 0xd9, 0x9a, 0x0a, 0xef, 0xe4, 0x84, 0xd6, 0x62, 0x6f, 0x61, 0x76,
59
+            0xf8, 0x5c, 0x01, 0x70, 0xd6, 0xdf, 0x70, 0xd8, 0xa1, 0x41, 0x1b, 0xf1, 0x06, 0xb2,
60
+            0xda, 0x43, 0x1e, 0x34, 0xfd, 0x4b, 0xd8, 0xe2, 0xd3, 0x8d, 0xbf, 0x6b, 0x24, 0x5c,
61
+            0xd8, 0xfa, 0xe9, 0xd1, 0xda, 0x84, 0x4b, 0x39, 0x73, 0xd0, 0xec, 0xaa, 0xa2, 0x57,
62
+            0xcf, 0x03, 0xfb, 0x03, 0x4d, 0x2e, 0xf7, 0x5d, 0xf2, 0xbb, 0x28, 0x4f, 0x71, 0xba,
63
+            0x1b, 0xac, 0x2c, 0xcb, 0x7d, 0x00, 0xd9, 0x48, 0x21, 0x3f, 0x7a, 0x60, 0xa3, 0x35,
64
+            0x63, 0x01,
65
+        ],
66
+    ),
67
+    (
68
+        2,
69
+        &[
70
+            0x53, 0x79, 0x6e, 0x74, 0x68, 0x65, 0x74, 0x69, 0x63, 0x20, 0x41, 0x50, 0x53, 0x20,
71
+            0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x64, 0x65,
72
+            0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61,
73
+            0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x03,
74
+        ],
75
+        &[
76
+            0x2a, 0xc8, 0x8a, 0x84, 0xbc, 0x41, 0x36, 0xdf, 0x5b, 0x49, 0x17, 0xd3, 0x6c, 0xb4,
77
+            0x60, 0xb5, 0xb2, 0x14, 0x60, 0xfc, 0x14, 0x0e, 0x97, 0x9f, 0xd7, 0xb3, 0x92, 0x73,
78
+            0x7b, 0xbc, 0xda, 0x32, 0xf1, 0x90, 0x44, 0xbd, 0x1d, 0x61, 0x12, 0x03, 0x00, 0x04,
79
+            0xf0, 0xf2, 0x7f, 0xa5, 0x0c, 0x48, 0x4d, 0xa2, 0x9d, 0x78, 0xb9, 0x79, 0x3e, 0x6a,
80
+            0x5b, 0xea, 0x24, 0x3f, 0x55, 0x8f, 0xb7, 0x3c, 0x4f, 0x9d, 0x4a, 0x31, 0x9f, 0x77,
81
+            0xa5, 0x9e, 0xdf, 0xc6, 0x89, 0x81, 0x7f, 0x52, 0x86, 0x44, 0xae, 0xd7, 0x79, 0x95,
82
+            0xfc, 0xd9, 0x17, 0x66, 0x8c, 0x92, 0xcf, 0xc7, 0x55, 0x2f, 0xbe, 0xe7, 0xc7, 0xac,
83
+            0xf0, 0x07, 0x9d, 0x40, 0x4f, 0xb3, 0x87, 0x66, 0x6d, 0xc2, 0x80, 0x53, 0x84, 0xd2,
84
+            0xbf, 0x2c, 0xc5, 0x2f, 0x2c, 0x2b, 0x46, 0x6d, 0x7c, 0x5b, 0x91, 0x57, 0x83, 0xef,
85
+            0x8a, 0xec,
86
+        ],
87
+    ),
88
+    (
89
+        5,
90
+        &[
91
+            0x53, 0x79, 0x6e, 0x74, 0x68, 0x65, 0x74, 0x69, 0x63, 0x20, 0x41, 0x50, 0x53, 0x20,
92
+            0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x64, 0x65,
93
+            0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61,
94
+            0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x04,
95
+        ],
96
+        &[
97
+            0x5b, 0xf8, 0x51, 0xf1, 0x7a, 0x4a, 0x00, 0x1d, 0x37, 0x08, 0xd4, 0x5c, 0xff, 0x6f,
98
+            0x4f, 0xba, 0x34, 0x6d, 0xa2, 0x5c, 0xc2, 0x17, 0x6c, 0x8f, 0x59, 0x46, 0xae, 0x8b,
99
+            0x7d, 0xd7, 0x1a, 0xf9, 0x32, 0xd1, 0x4b, 0xe9, 0x07, 0x6b, 0x15, 0x02, 0xfc, 0x21,
100
+            0x5c, 0x08, 0x3e, 0x1d, 0x62, 0x3f, 0x5e, 0xdc, 0xbd, 0xe8, 0x51, 0x3c, 0x12, 0xf0,
101
+            0x79, 0xea, 0x21, 0xf4, 0x4d, 0x9b, 0xe1, 0x5d, 0x16, 0xf2, 0xcc, 0x31, 0x44, 0x37,
102
+            0x9d, 0xd1, 0x6f, 0x6d, 0x55, 0xd9, 0x07, 0xb2, 0xf3, 0xd0, 0xb6, 0x3b, 0xea, 0x3e,
103
+            0xeb, 0x04, 0x13, 0x9e, 0x89, 0x1c, 0x3a, 0xfc, 0x81, 0xb9, 0xd8, 0x2d, 0xba, 0x6d,
104
+            0x2b, 0x88, 0x3f, 0x36, 0x6f, 0xde, 0x6e, 0xb1, 0x75, 0x1f, 0xaf, 0x67, 0x52, 0xba,
105
+            0x5e, 0xad, 0xd8, 0x3b, 0xab, 0xa2, 0xaa, 0xf9, 0xa6, 0xf7, 0xf8, 0xda, 0x3f, 0x7a,
106
+            0x47, 0x8e,
107
+        ],
108
+    ),
109
+    (
110
+        9,
111
+        &[
112
+            0x53, 0x79, 0x6e, 0x74, 0x68, 0x65, 0x74, 0x69, 0x63, 0x20, 0x41, 0x50, 0x53, 0x20,
113
+            0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x64, 0x65,
114
+            0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61,
115
+            0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05,
116
+        ],
117
+        &[
118
+            0x22, 0x93, 0x62, 0x8c, 0x50, 0x06, 0x53, 0xd2, 0x3c, 0xa5, 0x94, 0x61, 0xd9, 0x1c,
119
+            0xd4, 0xac, 0xba, 0xc8, 0xb7, 0x1d, 0xde, 0xae, 0xba, 0xd3, 0x88, 0xe7, 0x39, 0xd3,
120
+            0x93, 0xa7, 0x4e, 0xe0, 0xbc, 0x54, 0x3d, 0xac, 0x8f, 0x3e, 0x13, 0xb3, 0xbd, 0xbc,
121
+            0x2a, 0x2e, 0x6e, 0x08, 0x89, 0x88, 0xe6, 0x22, 0x1e, 0x72, 0x11, 0xb1, 0xec, 0xd8,
122
+            0x1b, 0x2c, 0xb4, 0xa5, 0x26, 0x03, 0x07, 0xa6, 0x56, 0x6e, 0x70, 0x1c, 0x0d, 0x48,
123
+            0x74, 0x89, 0x67, 0x2c, 0xac, 0x9e, 0x1d, 0x8b, 0x51, 0xed, 0x42, 0x95, 0x32, 0x3f,
124
+            0x27, 0x84, 0xee, 0x09, 0x7f, 0xd4, 0x2c, 0xea, 0x47, 0x7d, 0x62, 0xc9, 0x94, 0x08,
125
+            0x95, 0x6a, 0x36, 0x67, 0xf6, 0x81, 0x12, 0x19, 0x36, 0x5f, 0xa3, 0x97, 0xc7, 0x69,
126
+            0xfc, 0x91, 0x87, 0xf2, 0x1b, 0xa4, 0x2d, 0xf7, 0xaf, 0xbc, 0x6a, 0x69, 0x47, 0xa6,
127
+            0x29, 0x1c,
128
+        ],
129
+    ),
130
+    (
131
+        4,
132
+        &[
133
+            0x53, 0x79, 0x6e, 0x74, 0x68, 0x65, 0x74, 0x69, 0x63, 0x20, 0x41, 0x50, 0x53, 0x20,
134
+            0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x64, 0x65,
135
+            0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61,
136
+            0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x06,
137
+        ],
138
+        &[
139
+            0x97, 0xf4, 0x48, 0x97, 0x97, 0x4c, 0xd1, 0xe2, 0xe9, 0x84, 0xf0, 0xbe, 0x40, 0xee,
140
+            0xc0, 0x55, 0x1b, 0x32, 0xc8, 0x8b, 0xfa, 0xe2, 0x59, 0xfd, 0x49, 0x72, 0xe2, 0x1e,
141
+            0x30, 0xe1, 0x3a, 0xbb, 0xc3, 0x27, 0x84, 0x67, 0x39, 0x8b, 0xb4, 0x94, 0x8f, 0xd1,
142
+            0x56, 0x55, 0xed, 0x6e, 0x34, 0x7b, 0xea, 0xa7, 0xad, 0x7a, 0xb5, 0x82, 0x9b, 0x7b,
143
+            0x42, 0xe4, 0x8c, 0x69, 0xe3, 0xc7, 0xe7, 0x55, 0x44, 0xc3, 0x73, 0x3b, 0x87, 0x01,
144
+            0x4e, 0xa5, 0x6a, 0x3a, 0x6e, 0x40, 0x5d, 0x72, 0x8d, 0x8b, 0xa3, 0x7c, 0xbe, 0xba,
145
+            0x4b, 0x80, 0xc9, 0xf6, 0x28, 0x72, 0xf6, 0x67, 0x50, 0xad, 0xe2, 0xd4, 0x73, 0xce,
146
+            0x5f, 0xe2, 0xcd, 0x15, 0xcc, 0xeb, 0x99, 0x9d, 0x93, 0xd2, 0xc7, 0x4e, 0xf3, 0x03,
147
+            0x79, 0xdc, 0xcd, 0x1b, 0xb1, 0xb0, 0xd6, 0x53, 0x6f, 0xc3, 0xd7, 0x29, 0x3f, 0xdf,
148
+            0xd7, 0xa3,
149
+        ],
150
+    ),
151
+    (
152
+        1,
153
+        &[
154
+            0x53, 0x79, 0x6e, 0x74, 0x68, 0x65, 0x74, 0x69, 0x63, 0x20, 0x41, 0x50, 0x53, 0x20,
155
+            0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x64, 0x65,
156
+            0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61,
157
+            0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x07,
158
+        ],
159
+        &[
160
+            0x2b, 0x63, 0x31, 0xce, 0x71, 0xa2, 0x50, 0x09, 0xc5, 0x80, 0x7a, 0xcd, 0xce, 0x60,
161
+            0xeb, 0x37, 0x75, 0x59, 0x4d, 0x5c, 0xdf, 0x1c, 0x76, 0x35, 0x45, 0x25, 0xaf, 0xb7,
162
+            0x12, 0x9e, 0x5b, 0x36, 0xe8, 0xff, 0x70, 0x57, 0x39, 0xac, 0x9e, 0xb4, 0x67, 0xda,
163
+            0x93, 0xd3, 0x47, 0x78, 0xb4, 0x10, 0x9b, 0x11, 0xed, 0x7e, 0x81, 0x20, 0xf9, 0x59,
164
+            0x95, 0x5d, 0xe0, 0x29, 0x26, 0x60, 0x84, 0x0a, 0xbf, 0x2f, 0x3e, 0xc7, 0x29, 0x5a,
165
+            0x88, 0x4a, 0x95, 0x53, 0x42, 0xbc, 0xe9, 0xfa, 0x1a, 0xa6, 0x93, 0x31, 0xa9, 0x50,
166
+            0x79, 0x6a, 0x27, 0x77, 0x91, 0xd7, 0x99, 0xab, 0xb2, 0xce, 0xec, 0xb7, 0xbe, 0xf1,
167
+            0x7a, 0x96, 0x84, 0xaa, 0xf5, 0xa1, 0x0f, 0x73, 0xad, 0xff, 0x22, 0xa7, 0x55, 0x0d,
168
+            0x4b, 0x5f, 0x30, 0x24, 0xc5, 0x32, 0x60, 0x88, 0x3b, 0x54, 0xa6, 0x65, 0xe9, 0x31,
169
+            0x44, 0x2b,
170
+        ],
171
+    ),
172
+    (
173
+        8,
174
+        &[
175
+            0x53, 0x79, 0x6e, 0x74, 0x68, 0x65, 0x74, 0x69, 0x63, 0x20, 0x41, 0x50, 0x53, 0x20,
176
+            0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x64, 0x65,
177
+            0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61,
178
+            0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x08,
179
+        ],
180
+        &[
181
+            0x39, 0xd8, 0x10, 0xec, 0xa8, 0x18, 0x46, 0x82, 0x66, 0x00, 0x73, 0x7c, 0xcc, 0x1f,
182
+            0xed, 0x9e, 0x66, 0x33, 0x41, 0xb9, 0xf7, 0xf8, 0xcb, 0xe7, 0xfc, 0x60, 0xb1, 0x56,
183
+            0xcb, 0x5b, 0x62, 0xf4, 0x2f, 0x99, 0x20, 0x94, 0xdc, 0xee, 0x3e, 0x61, 0xd5, 0x77,
184
+            0x2f, 0x47, 0xa8, 0x24, 0x8c, 0xdc, 0x39, 0xf5, 0xa4, 0x95, 0x28, 0x6c, 0x2f, 0xb3,
185
+            0x2f, 0x1d, 0x9c, 0xf6, 0x98, 0xbb, 0xc5, 0xe0, 0xdb, 0x7c, 0xbe, 0xd9, 0xda, 0xfc,
186
+            0xe9, 0xae, 0x2c, 0xf5, 0xc9, 0x85, 0xad, 0xde, 0xac, 0xb1, 0xc3, 0xcf, 0x4a, 0x00,
187
+            0xc4, 0x02, 0x26, 0xdb, 0x62, 0xd8, 0xba, 0xe9, 0xc1, 0xa6, 0x68, 0xa6, 0xb4, 0xab,
188
+            0x65, 0xa9, 0x02, 0x04, 0x81, 0x8f, 0xe5, 0x26, 0x0f, 0x4f, 0x28, 0x89, 0x83, 0xac,
189
+            0x68, 0x50, 0x26, 0xd5, 0x05, 0xd9, 0xd4, 0x46, 0xb0, 0x87, 0x0a, 0x61, 0xb2, 0x56,
190
+            0x45, 0x4d,
191
+        ],
192
+    ),
193
+    (
194
+        0,
195
+        &[
196
+            0x53, 0x79, 0x6e, 0x74, 0x68, 0x65, 0x74, 0x69, 0x63, 0x20, 0x41, 0x50, 0x53, 0x20,
197
+            0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x64, 0x65,
198
+            0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61,
199
+            0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x09,
200
+        ],
201
+        &[
202
+            0x33, 0x01, 0xf7, 0x94, 0x5b, 0xf0, 0xf9, 0x79, 0x8b, 0x30, 0x11, 0x97, 0x7d, 0xfc,
203
+            0xd2, 0xa5, 0x43, 0x51, 0x42, 0xb0, 0xc7, 0x88, 0x1a, 0xe4, 0x45, 0xb9, 0x00, 0x30,
204
+            0x5c, 0x62, 0x4f, 0x43, 0xce, 0x57, 0x1f, 0xee, 0x9c, 0xb5, 0x27, 0xea, 0xaf, 0xd2,
205
+            0x98, 0x5f, 0x00, 0xc2, 0xf1, 0xdb, 0x46, 0x71, 0xcf, 0x60, 0x52, 0xec, 0xa6, 0xbf,
206
+            0xeb, 0x31, 0x65, 0x43, 0x27, 0xfa, 0xf9, 0x74, 0x98, 0x9f, 0x7d, 0xc3, 0xe4, 0xe3,
207
+            0x61, 0x64, 0xa7, 0x62, 0xfb, 0x6a, 0x1d, 0x16, 0x9d, 0xad, 0xb9, 0x6b, 0x50, 0x60,
208
+            0xb7, 0x90, 0xba, 0x09, 0xda, 0x32, 0xeb, 0xc5, 0xcd, 0xc0, 0xd4, 0xb0, 0x06, 0x44,
209
+            0x9a, 0x03, 0xbd, 0x05, 0x0d, 0x12, 0x9d, 0xb8, 0x16, 0x02, 0x6b, 0x28, 0xf9, 0xcd,
210
+            0x6e, 0x19, 0xfe, 0x9d, 0xf2, 0x2b, 0x38, 0x0d, 0x8a, 0xd6, 0x17, 0x12, 0x03, 0x93,
211
+            0xa1, 0xb2,
212
+        ],
213
+    ),
214
+    (
215
+        1,
216
+        &[
217
+            0x53, 0x79, 0x6e, 0x74, 0x68, 0x65, 0x74, 0x69, 0x63, 0x20, 0x41, 0x50, 0x53, 0x20,
218
+            0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x64, 0x65,
219
+            0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61,
220
+            0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x0a,
221
+        ],
222
+        &[
223
+            0x3a, 0x7c, 0xc5, 0x88, 0xea, 0x03, 0xf2, 0x9e, 0xee, 0xcc, 0xe2, 0x54, 0x49, 0x0d,
224
+            0xf7, 0x2e, 0x2f, 0x86, 0x91, 0x38, 0x20, 0x4f, 0x30, 0x81, 0xd2, 0x70, 0x6d, 0x8f,
225
+            0x32, 0xd2, 0x71, 0xea, 0xd7, 0x06, 0x4e, 0x5b, 0xb9, 0x67, 0x6b, 0x92, 0x26, 0x81,
226
+            0x3e, 0xd2, 0xd1, 0x42, 0x64, 0x66, 0xd5, 0xf5, 0xc2, 0x1c, 0xeb, 0x04, 0xd1, 0x0a,
227
+            0x3c, 0x4b, 0x8f, 0x57, 0x40, 0x54, 0xd8, 0x51, 0x57, 0x02, 0xbb, 0x37, 0x6d, 0xbe,
228
+            0xec, 0x19, 0xa8, 0x94, 0x7f, 0x68, 0x69, 0x01, 0x3d, 0x18, 0xe5, 0xa0, 0xe6, 0x39,
229
+            0x46, 0x15, 0x04, 0x45, 0x13, 0xdb, 0xbd, 0xd5, 0xe1, 0x5a, 0xf3, 0x1d, 0xa8, 0x89,
230
+            0x1e, 0xf8, 0x03, 0xc7, 0x24, 0x95, 0x4e, 0x3e, 0xa9, 0x05, 0x21, 0x0e, 0xb3, 0xd5,
231
+            0x91, 0x8d, 0x5e, 0x00, 0xbc, 0xf5, 0x26, 0x60, 0x74, 0x5e, 0xe4, 0x7b, 0xfa, 0xf5,
232
+            0x67, 0x4b,
233
+        ],
234
+    ),
235
+    (
236
+        1,
237
+        &[
238
+            0x53, 0x79, 0x6e, 0x74, 0x68, 0x65, 0x74, 0x69, 0x63, 0x20, 0x41, 0x50, 0x53, 0x20,
239
+            0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x64, 0x65,
240
+            0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61,
241
+            0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x0b,
242
+        ],
243
+        &[
244
+            0x89, 0x19, 0xc9, 0x22, 0x98, 0x90, 0x00, 0x46, 0xbb, 0xfe, 0xbb, 0x8e, 0x00, 0xd3,
245
+            0x02, 0xf9, 0x63, 0xa7, 0x9a, 0x7d, 0x70, 0x9c, 0x9e, 0x9f, 0xed, 0x0a, 0xaa, 0xf5,
246
+            0x49, 0x48, 0x75, 0x4f, 0x55, 0x98, 0x80, 0x92, 0xc9, 0xbd, 0xcf, 0x1f, 0xb6, 0x7c,
247
+            0xa4, 0x42, 0x2e, 0x67, 0x3d, 0x5b, 0xb6, 0xe5, 0x5a, 0xb8, 0x80, 0xdd, 0x38, 0x4b,
248
+            0xb0, 0x48, 0xd3, 0xcc, 0x51, 0xfb, 0x86, 0x9c, 0x15, 0x01, 0xd7, 0x9d, 0x92, 0x5c,
249
+            0x08, 0x8b, 0x33, 0xcd, 0xb9, 0x5a, 0x21, 0x41, 0xc8, 0x72, 0xab, 0x31, 0x74, 0x3c,
250
+            0x92, 0x92, 0xc2, 0x27, 0x9f, 0xe4, 0x19, 0xbf, 0x22, 0xc6, 0x23, 0xa7, 0xc7, 0x73,
251
+            0xb3, 0x58, 0x19, 0x28, 0x3b, 0x9e, 0x9f, 0xab, 0xdc, 0x4f, 0x7a, 0x9d, 0x70, 0x56,
252
+            0xad, 0xe4, 0xe1, 0x10, 0x63, 0xd4, 0x77, 0x3c, 0x7b, 0x76, 0xc6, 0x86, 0xba, 0xc6,
253
+            0x74, 0x34,
254
+        ],
255
+    ),
256
+    (
257
+        3,
258
+        &[
259
+            0x53, 0x79, 0x6e, 0x74, 0x68, 0x65, 0x74, 0x69, 0x63, 0x20, 0x41, 0x50, 0x53, 0x20,
260
+            0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x64, 0x65,
261
+            0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61,
262
+            0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x0c,
263
+        ],
264
+        &[
265
+            0x8d, 0x1d, 0xb0, 0x9a, 0x90, 0xb0, 0xa2, 0xf0, 0x59, 0x7a, 0xc8, 0x17, 0x35, 0xc5,
266
+            0x4c, 0x08, 0x58, 0x24, 0xc6, 0x66, 0x5c, 0xd6, 0x6c, 0xc7, 0x19, 0x8d, 0xc2, 0xd1,
267
+            0x77, 0x9e, 0xc1, 0x2c, 0xff, 0x09, 0xfb, 0x09, 0x37, 0xf1, 0xaa, 0xbc, 0x53, 0xc9,
268
+            0xf1, 0x12, 0x34, 0x7f, 0xc4, 0x6b, 0xe2, 0x51, 0xd6, 0x6a, 0xc5, 0x6f, 0x4c, 0x7f,
269
+            0x3c, 0xa1, 0x4a, 0xe6, 0xcc, 0x73, 0xdd, 0xf9, 0x21, 0xff, 0xc3, 0xfd, 0x4c, 0xc4,
270
+            0x37, 0x80, 0xd8, 0x63, 0x0d, 0xfe, 0x85, 0x87, 0x1f, 0xd9, 0xbe, 0xc3, 0xc5, 0x5f,
271
+            0xf8, 0xcb, 0xe8, 0xf0, 0x71, 0xec, 0x2b, 0x54, 0x91, 0xd5, 0x80, 0xc9, 0xfe, 0x1f,
272
+            0x2e, 0x2a, 0xa5, 0xf4, 0x03, 0xf9, 0x15, 0x49, 0x68, 0x8b, 0x89, 0x09, 0xbb, 0x3d,
273
+            0xf7, 0x2c, 0x67, 0xbc, 0x3e, 0x41, 0x88, 0x7e, 0xad, 0x0d, 0xf8, 0x60, 0xd2, 0xa5,
274
+            0x00, 0x59,
275
+        ],
276
+    ),
277
+];
... ...
@@ -1,52 +0,0 @@
1
-mod constants;
2
-
3
-use crate::{ActivationSignature, ActivationSigner, activation::sign_sha1};
4
-use constants::{CERTIFICATE_AUTHORITY_CHAIN, IDENTITIES, PUBLIC_EXPONENT};
5
-use rsa::{
6
-    BigUint, RsaPrivateKey,
7
-    rand_core::{OsRng, RngCore},
8
-};
9
-
10
-/// Signs activation requests using the embedded Windows activation identities.
11
-pub struct WindowsActivationSigner {
12
-    private_key: RsaPrivateKey,
13
-    certificate_chain: Vec<u8>,
14
-}
15
-
16
-impl WindowsActivationSigner {
17
-    /// Selects one of the ten identities, as Apple's Windows client does.
18
-    pub fn new() -> Self {
19
-        let identity = &IDENTITIES[OsRng.next_u32() as usize % IDENTITIES.len()];
20
-        let private_key = RsaPrivateKey::from_p_q(
21
-            BigUint::from_bytes_be(&identity.p),
22
-            BigUint::from_bytes_be(&identity.q),
23
-            PUBLIC_EXPONENT.into(),
24
-        )
25
-        .expect("embedded activation primes must form a valid RSA key");
26
-        let mut certificate_chain =
27
-            Vec::with_capacity(identity.certificate.len() + CERTIFICATE_AUTHORITY_CHAIN.len());
28
-        certificate_chain.extend_from_slice(identity.certificate);
29
-        certificate_chain.extend_from_slice(CERTIFICATE_AUTHORITY_CHAIN);
30
-        Self {
31
-            private_key,
32
-            certificate_chain,
33
-        }
34
-    }
35
-}
36
-
37
-impl Default for WindowsActivationSigner {
38
-    fn default() -> Self {
39
-        Self::new()
40
-    }
41
-}
42
-
43
-impl ActivationSigner for WindowsActivationSigner {
44
-    type Error = rsa::Error;
45
-
46
-    fn sign(&self, xml: &[u8]) -> Result<ActivationSignature, Self::Error> {
47
-        Ok(ActivationSignature {
48
-            signature: sign_sha1(&self.private_key, xml)?,
49
-            certificate_chain: self.certificate_chain.clone(),
50
-        })
51
-    }
52
-}
... ...
@@ -1,850 +0,0 @@
1
-// Shared activation identities from APSDaemon_main.dll, iCloud 15.10.39.0 x64.
2
-// See ../../docs/windows-signing.md for provenance and decoding details.
3
-// Only p and q are needed; rsa reconstructs the remaining CRT components.
4
-
5
-pub(super) struct SigningIdentity {
6
-    pub p: [u8; 64],
7
-    pub q: [u8; 64],
8
-    pub certificate: &'static [u8],
9
-}
10
-
11
-pub(super) const PUBLIC_EXPONENT: u32 = 65537;
12
-
13
-pub(super) static IDENTITIES: [SigningIdentity; 10] = [
14
-    // APN-Win identity 000001.
15
-    SigningIdentity {
16
-        p: [
17
-            0xe2, 0x3a, 0xc7, 0xac, 0xca, 0xaf, 0xe6, 0x2d, 0x20, 0x82, 0x39, 0x46, 0xa6, 0xd7,
18
-            0xf4, 0xf9, 0xa7, 0x2d, 0xd4, 0x0e, 0xbb, 0xed, 0x56, 0xf1, 0x39, 0x3c, 0x2b, 0x86,
19
-            0x3d, 0x57, 0x65, 0xda, 0xec, 0x69, 0x88, 0xd1, 0x4e, 0x7e, 0xd2, 0x52, 0xe2, 0x31,
20
-            0x75, 0x07, 0x38, 0x5f, 0xd7, 0x6d, 0x5a, 0xc5, 0xb5, 0x0d, 0xd3, 0x57, 0x05, 0xc0,
21
-            0x62, 0xf6, 0x25, 0xae, 0x84, 0x89, 0x6a, 0x29,
22
-        ],
23
-        q: [
24
-            0xcf, 0xf3, 0x26, 0x9e, 0x30, 0x2d, 0x0b, 0xd4, 0x2a, 0x20, 0x16, 0x91, 0xcf, 0x01,
25
-            0xb9, 0x38, 0x84, 0x01, 0xb9, 0xe3, 0xd8, 0xc5, 0x6f, 0x48, 0xb4, 0x53, 0x8e, 0x51,
26
-            0xb4, 0x29, 0xb2, 0xab, 0x80, 0x91, 0x66, 0x2f, 0x39, 0x2a, 0xd8, 0xdc, 0x2c, 0xd6,
27
-            0x23, 0xdd, 0x34, 0xce, 0x22, 0x34, 0x78, 0xd4, 0x19, 0xf5, 0x06, 0x32, 0x8e, 0x6a,
28
-            0xc2, 0xb0, 0x8a, 0x71, 0xfd, 0x77, 0x77, 0xc3,
29
-        ],
30
-        certificate: &[
31
-            0x30, 0x82, 0x02, 0xc5, 0x30, 0x82, 0x02, 0x2e, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02,
32
-            0x0d, 0x33, 0x33, 0xaf, 0x10, 0x10, 0x20, 0xaf, 0x00, 0x01, 0xaf, 0x00, 0x00, 0x01,
33
-            0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05,
34
-            0x00, 0x30, 0x7b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
35
-            0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x41,
36
-            0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06,
37
-            0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65,
38
-            0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75,
39
-            0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55,
40
-            0x04, 0x03, 0x13, 0x26, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x46, 0x61, 0x69, 0x72,
41
-            0x50, 0x6c, 0x61, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
42
-            0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
43
-            0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x31, 0x30, 0x32, 0x30, 0x30, 0x30, 0x30, 0x32,
44
-            0x30, 0x31, 0x5a, 0x17, 0x0d, 0x31, 0x35, 0x31, 0x30, 0x31, 0x39, 0x30, 0x30, 0x30,
45
-            0x32, 0x30, 0x31, 0x5a, 0x30, 0x68, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,
46
-            0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a,
47
-            0x13, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x17,
48
-            0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0e, 0x41, 0x70, 0x70, 0x6c, 0x65,
49
-            0x20, 0x46, 0x61, 0x69, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x31, 0x2b, 0x30, 0x29, 0x06,
50
-            0x03, 0x55, 0x04, 0x03, 0x13, 0x22, 0x41, 0x50, 0x4e, 0x2d, 0x57, 0x69, 0x6e, 0x2e,
51
-            0x33, 0x33, 0x33, 0x33, 0x41, 0x46, 0x31, 0x30, 0x31, 0x30, 0x32, 0x30, 0x41, 0x46,
52
-            0x30, 0x30, 0x30, 0x31, 0x41, 0x46, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x30, 0x81,
53
-            0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
54
-            0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xb7,
55
-            0xc4, 0x67, 0x60, 0xc5, 0x66, 0x57, 0x0a, 0xb2, 0xb6, 0x4e, 0x88, 0x6e, 0xab, 0xb5,
56
-            0x40, 0x47, 0x92, 0x5f, 0x01, 0x67, 0xa1, 0x9c, 0x29, 0xa7, 0x4d, 0x56, 0x0d, 0x7f,
57
-            0x05, 0x8d, 0x1c, 0xff, 0x95, 0x8a, 0x26, 0x78, 0xa8, 0xb2, 0xf1, 0xd4, 0x86, 0x55,
58
-            0xc6, 0x09, 0x5a, 0x1c, 0xe8, 0x31, 0x20, 0x68, 0x5b, 0x55, 0x4d, 0x1c, 0x81, 0x12,
59
-            0x87, 0x2f, 0x2f, 0x00, 0x6d, 0x6e, 0x18, 0xab, 0xb7, 0xdd, 0xf7, 0x8c, 0x92, 0x6d,
60
-            0x7f, 0xbb, 0x69, 0x8d, 0x7c, 0x35, 0xbf, 0x8e, 0xcb, 0x6f, 0x4c, 0x27, 0x06, 0x2c,
61
-            0x72, 0xa8, 0x92, 0xe7, 0x4f, 0x0a, 0xa7, 0xe3, 0x6d, 0xcf, 0x9b, 0xff, 0xd2, 0xb4,
62
-            0x84, 0xc1, 0x2b, 0x52, 0xd7, 0x8a, 0xd0, 0xeb, 0x72, 0x65, 0x3c, 0x9a, 0xe7, 0x2b,
63
-            0xaa, 0x83, 0x4c, 0x90, 0x5d, 0xbc, 0x95, 0x6c, 0x30, 0x33, 0x6e, 0xb3, 0x13, 0xec,
64
-            0x3b, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x60, 0x30, 0x5e, 0x30, 0x0e, 0x06, 0x03,
65
-            0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x03, 0xb8, 0x30, 0x0c,
66
-            0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, 0x30, 0x1d,
67
-            0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xdd, 0x56, 0x61, 0x8e, 0x48,
68
-            0xe7, 0x51, 0x79, 0x9f, 0x85, 0xac, 0x1e, 0xb3, 0xf0, 0x98, 0x7a, 0xdc, 0xf3, 0x26,
69
-            0x7a, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14,
70
-            0xfa, 0x0d, 0xd4, 0x11, 0x91, 0x1b, 0xe6, 0xb2, 0x4e, 0x1e, 0x06, 0x49, 0x94, 0x11,
71
-            0xdd, 0x63, 0x62, 0x07, 0x59, 0x64, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
72
-            0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x2a, 0xae, 0xec,
73
-            0x81, 0xc7, 0x8d, 0xa5, 0xf5, 0x51, 0xb4, 0xee, 0x82, 0x0f, 0xd4, 0xa7, 0x08, 0x83,
74
-            0xba, 0x48, 0x04, 0x6d, 0x85, 0xbe, 0x69, 0x9a, 0xfa, 0x73, 0x59, 0x03, 0xe0, 0x53,
75
-            0xc1, 0xad, 0x54, 0x9b, 0x90, 0x16, 0x5e, 0xf3, 0x9e, 0x5d, 0xa2, 0x7b, 0x75, 0xd9,
76
-            0x85, 0x7b, 0xeb, 0x9a, 0xeb, 0x43, 0xf1, 0x24, 0x59, 0x05, 0x0b, 0xc0, 0x03, 0x0b,
77
-            0xb1, 0x99, 0x75, 0xab, 0x71, 0xd8, 0x7c, 0x4e, 0x02, 0x92, 0xf1, 0x54, 0x95, 0x89,
78
-            0x27, 0x75, 0x38, 0xf5, 0x96, 0xcc, 0xc0, 0xa8, 0x76, 0x6c, 0xf3, 0xb6, 0xa3, 0xfe,
79
-            0x9d, 0x1f, 0x92, 0x1d, 0x77, 0x1c, 0xe0, 0xc8, 0x39, 0x60, 0x25, 0xfc, 0x35, 0xb3,
80
-            0x0c, 0x95, 0x0c, 0xf2, 0x90, 0xf5, 0x4f, 0x23, 0xd0, 0xea, 0x78, 0x8f, 0x55, 0x0c,
81
-            0x9e, 0xc7, 0x76, 0x6e, 0x71, 0x05, 0xec, 0x88, 0x6c, 0x5f, 0x90, 0xb2, 0xb3,
82
-        ],
83
-    },
84
-    // APN-Win identity 000002.
85
-    SigningIdentity {
86
-        p: [
87
-            0xfd, 0xce, 0x1a, 0x02, 0x08, 0x1e, 0x5f, 0xb3, 0x0d, 0xd7, 0x7b, 0x50, 0x92, 0xd4,
88
-            0xde, 0xc5, 0x9a, 0x2b, 0x47, 0x8d, 0xd6, 0xff, 0x24, 0x27, 0x04, 0x5a, 0x53, 0xe4,
89
-            0xa0, 0x98, 0xad, 0xdd, 0xd6, 0x08, 0xc6, 0x96, 0x3e, 0x36, 0x81, 0x19, 0xac, 0x7c,
90
-            0x6b, 0x37, 0x5d, 0xfe, 0x9b, 0xa6, 0x0b, 0xba, 0x11, 0x56, 0xf0, 0x6d, 0xff, 0x1f,
91
-            0x1a, 0x79, 0x1a, 0x51, 0x13, 0xb8, 0x54, 0x37,
92
-        ],
93
-        q: [
94
-            0xf5, 0xea, 0x55, 0x5b, 0x42, 0x99, 0x5f, 0x92, 0x2b, 0x38, 0x9e, 0xa3, 0x85, 0x90,
95
-            0x68, 0x37, 0x95, 0xb5, 0x1b, 0x5b, 0xa2, 0x87, 0xcb, 0x48, 0xb8, 0x72, 0x9f, 0xa3,
96
-            0x94, 0x4a, 0xfa, 0x0b, 0x65, 0x4a, 0xa4, 0x11, 0xff, 0xfa, 0xaf, 0x50, 0x29, 0x95,
97
-            0xf2, 0x59, 0x2c, 0xb9, 0x0d, 0x98, 0x9a, 0xb3, 0xc5, 0xbd, 0x31, 0xee, 0x15, 0x67,
98
-            0x83, 0xbb, 0x0e, 0x75, 0x6a, 0x54, 0xdb, 0xb5,
99
-        ],
100
-        certificate: &[
101
-            0x30, 0x82, 0x02, 0xc5, 0x30, 0x82, 0x02, 0x2e, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02,
102
-            0x0d, 0x33, 0x33, 0xaf, 0x10, 0x10, 0x20, 0xaf, 0x00, 0x01, 0xaf, 0x00, 0x00, 0x02,
103
-            0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05,
104
-            0x00, 0x30, 0x7b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
105
-            0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x41,
106
-            0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06,
107
-            0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65,
108
-            0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75,
109
-            0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55,
110
-            0x04, 0x03, 0x13, 0x26, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x46, 0x61, 0x69, 0x72,
111
-            0x50, 0x6c, 0x61, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
112
-            0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
113
-            0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x31, 0x30, 0x32, 0x30, 0x30, 0x30, 0x30, 0x32,
114
-            0x30, 0x32, 0x5a, 0x17, 0x0d, 0x31, 0x35, 0x31, 0x30, 0x31, 0x39, 0x30, 0x30, 0x30,
115
-            0x32, 0x30, 0x32, 0x5a, 0x30, 0x68, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,
116
-            0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a,
117
-            0x13, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x17,
118
-            0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0e, 0x41, 0x70, 0x70, 0x6c, 0x65,
119
-            0x20, 0x46, 0x61, 0x69, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x31, 0x2b, 0x30, 0x29, 0x06,
120
-            0x03, 0x55, 0x04, 0x03, 0x13, 0x22, 0x41, 0x50, 0x4e, 0x2d, 0x57, 0x69, 0x6e, 0x2e,
121
-            0x33, 0x33, 0x33, 0x33, 0x41, 0x46, 0x31, 0x30, 0x31, 0x30, 0x32, 0x30, 0x41, 0x46,
122
-            0x30, 0x30, 0x30, 0x31, 0x41, 0x46, 0x30, 0x30, 0x30, 0x30, 0x30, 0x32, 0x30, 0x81,
123
-            0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
124
-            0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xf3,
125
-            0xce, 0x91, 0xe7, 0xa0, 0x8d, 0x9a, 0x67, 0x45, 0xd6, 0x5d, 0xf3, 0xe8, 0xa3, 0x4f,
126
-            0xca, 0x63, 0xfd, 0xf0, 0x7c, 0x8d, 0xae, 0xfe, 0x8d, 0xdf, 0x52, 0x77, 0x1b, 0x6f,
127
-            0x22, 0x51, 0xfa, 0x1d, 0x01, 0xae, 0x70, 0x5f, 0x90, 0x15, 0x2d, 0xf6, 0xd3, 0x31,
128
-            0x17, 0xf0, 0xb1, 0xb8, 0x48, 0xd3, 0xf9, 0xa7, 0x1d, 0x58, 0x48, 0xbf, 0xf0, 0x2f,
129
-            0x50, 0x9b, 0x1e, 0xa9, 0x65, 0x62, 0x5d, 0xf2, 0xd4, 0xfe, 0xb4, 0x3d, 0xcd, 0x32,
130
-            0x6d, 0x75, 0xab, 0x50, 0xd0, 0x88, 0xbe, 0xef, 0x13, 0x42, 0xb3, 0xa1, 0xa6, 0x97,
131
-            0x6e, 0xd7, 0x10, 0xb0, 0xd7, 0xfb, 0xda, 0x3b, 0x8b, 0xba, 0xbb, 0xdd, 0x5e, 0x36,
132
-            0x67, 0x94, 0x8d, 0xca, 0x4d, 0xc8, 0x34, 0xb6, 0x72, 0xf7, 0xe1, 0xdb, 0xfe, 0x46,
133
-            0x58, 0x07, 0xcc, 0xfd, 0x7e, 0x67, 0x46, 0x46, 0xee, 0x41, 0xaf, 0x09, 0x6a, 0x97,
134
-            0xe3, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x60, 0x30, 0x5e, 0x30, 0x0e, 0x06, 0x03,
135
-            0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x03, 0xb8, 0x30, 0x0c,
136
-            0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, 0x30, 0x1d,
137
-            0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xa4, 0xd6, 0xfe, 0xac, 0x1f,
138
-            0x91, 0xe9, 0xe0, 0x7b, 0x17, 0x15, 0x88, 0xda, 0xcd, 0x43, 0xdc, 0x48, 0x22, 0x52,
139
-            0xba, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14,
140
-            0xfa, 0x0d, 0xd4, 0x11, 0x91, 0x1b, 0xe6, 0xb2, 0x4e, 0x1e, 0x06, 0x49, 0x94, 0x11,
141
-            0xdd, 0x63, 0x62, 0x07, 0x59, 0x64, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
142
-            0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x80, 0x3d, 0x5c,
143
-            0xb1, 0x79, 0xb4, 0x2e, 0x24, 0xd4, 0x75, 0x9f, 0xe4, 0x5c, 0x8f, 0x3a, 0x4c, 0x16,
144
-            0xa7, 0x2a, 0x74, 0xbd, 0xce, 0x5b, 0xca, 0x75, 0xb4, 0x02, 0x90, 0xd6, 0xd3, 0xd2,
145
-            0xfb, 0x4d, 0xb8, 0xa0, 0xc6, 0xa4, 0xd6, 0x05, 0x39, 0x15, 0xaa, 0x69, 0x54, 0x79,
146
-            0xc7, 0xe1, 0xc6, 0x3e, 0x1a, 0xb0, 0xd4, 0xaf, 0x39, 0xb8, 0x22, 0xef, 0xc3, 0xd6,
147
-            0xf7, 0xaf, 0x45, 0xb5, 0xe2, 0xda, 0x5b, 0x3c, 0xb6, 0xc8, 0x8c, 0x0d, 0xd4, 0xb5,
148
-            0xc9, 0x57, 0xa0, 0xc4, 0x7c, 0xaf, 0x9e, 0x72, 0x60, 0x9b, 0xaa, 0xf0, 0xff, 0x2f,
149
-            0x3e, 0x62, 0xf8, 0x3c, 0xb4, 0xfe, 0xe2, 0x58, 0x00, 0xeb, 0x16, 0x21, 0x36, 0x47,
150
-            0x6d, 0x60, 0x37, 0x9c, 0x7a, 0xe9, 0xb1, 0x58, 0x47, 0x53, 0x76, 0x2e, 0x3e, 0x6e,
151
-            0x91, 0xde, 0x92, 0x1e, 0xea, 0x3f, 0xd4, 0x2c, 0xb9, 0xc3, 0x67, 0x2f, 0x07,
152
-        ],
153
-    },
154
-    // APN-Win identity 000003.
155
-    SigningIdentity {
156
-        p: [
157
-            0xee, 0x6e, 0x95, 0xa0, 0x19, 0x46, 0xd8, 0x80, 0xc5, 0x7d, 0x15, 0x56, 0x90, 0x5f,
158
-            0xc5, 0x2c, 0x4a, 0x55, 0xb5, 0xee, 0x85, 0x0d, 0xb8, 0x46, 0x00, 0xdc, 0xf9, 0xd6,
159
-            0xaf, 0xc8, 0xdf, 0xa1, 0x79, 0x9f, 0xff, 0xc2, 0x6e, 0x84, 0xa8, 0xcb, 0x9f, 0x50,
160
-            0xa8, 0x41, 0xeb, 0xea, 0xf8, 0xd2, 0xb3, 0xe0, 0x22, 0x16, 0x29, 0x84, 0xc0, 0x55,
161
-            0x3b, 0xef, 0xb1, 0xef, 0xa4, 0xbc, 0x4c, 0x07,
162
-        ],
163
-        q: [
164
-            0xd6, 0x6d, 0xcc, 0x1c, 0x89, 0xf3, 0x37, 0x27, 0xef, 0x93, 0xde, 0x23, 0x39, 0x6d,
165
-            0xea, 0x18, 0xb6, 0x0b, 0xe1, 0x63, 0x27, 0x26, 0x89, 0x0b, 0x69, 0xaa, 0xa8, 0x0f,
166
-            0xc6, 0x97, 0xc3, 0x8c, 0xf3, 0x7a, 0xd0, 0xfd, 0x44, 0x97, 0xae, 0x2c, 0x57, 0x33,
167
-            0x27, 0xc5, 0xcd, 0xb7, 0x4d, 0xe6, 0x18, 0xc3, 0xf1, 0xd1, 0xc0, 0x98, 0x51, 0xc5,
168
-            0xd0, 0xfe, 0xc5, 0xcb, 0x4f, 0x47, 0xad, 0xe5,
169
-        ],
170
-        certificate: &[
171
-            0x30, 0x82, 0x02, 0xc5, 0x30, 0x82, 0x02, 0x2e, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02,
172
-            0x0d, 0x33, 0x33, 0xaf, 0x10, 0x10, 0x20, 0xaf, 0x00, 0x01, 0xaf, 0x00, 0x00, 0x03,
173
-            0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05,
174
-            0x00, 0x30, 0x7b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
175
-            0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x41,
176
-            0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06,
177
-            0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65,
178
-            0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75,
179
-            0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55,
180
-            0x04, 0x03, 0x13, 0x26, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x46, 0x61, 0x69, 0x72,
181
-            0x50, 0x6c, 0x61, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
182
-            0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
183
-            0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x31, 0x30, 0x32, 0x30, 0x30, 0x30, 0x30, 0x32,
184
-            0x30, 0x32, 0x5a, 0x17, 0x0d, 0x31, 0x35, 0x31, 0x30, 0x31, 0x39, 0x30, 0x30, 0x30,
185
-            0x32, 0x30, 0x32, 0x5a, 0x30, 0x68, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,
186
-            0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a,
187
-            0x13, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x17,
188
-            0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0e, 0x41, 0x70, 0x70, 0x6c, 0x65,
189
-            0x20, 0x46, 0x61, 0x69, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x31, 0x2b, 0x30, 0x29, 0x06,
190
-            0x03, 0x55, 0x04, 0x03, 0x13, 0x22, 0x41, 0x50, 0x4e, 0x2d, 0x57, 0x69, 0x6e, 0x2e,
191
-            0x33, 0x33, 0x33, 0x33, 0x41, 0x46, 0x31, 0x30, 0x31, 0x30, 0x32, 0x30, 0x41, 0x46,
192
-            0x30, 0x30, 0x30, 0x31, 0x41, 0x46, 0x30, 0x30, 0x30, 0x30, 0x30, 0x33, 0x30, 0x81,
193
-            0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
194
-            0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xc7,
195
-            0xb6, 0xb4, 0x44, 0x3e, 0x1b, 0xa2, 0x36, 0xb4, 0xd1, 0x00, 0x91, 0x4e, 0x58, 0xd5,
196
-            0x5c, 0x81, 0xe6, 0x56, 0x6e, 0x06, 0xee, 0x13, 0x15, 0x69, 0x3e, 0xe3, 0x57, 0xf6,
197
-            0x66, 0xbf, 0xf1, 0x30, 0xa8, 0xbd, 0xbd, 0xed, 0x50, 0xe2, 0xed, 0x46, 0xee, 0xcb,
198
-            0x64, 0x8a, 0x43, 0xbc, 0xdf, 0x47, 0x16, 0x41, 0x56, 0x70, 0x87, 0xd4, 0xa0, 0x66,
199
-            0x8a, 0x7d, 0xce, 0x48, 0x7c, 0x01, 0x8f, 0xa5, 0x5f, 0x9c, 0xa3, 0x23, 0x8d, 0x36,
200
-            0x94, 0x48, 0xe6, 0x38, 0x7d, 0x1b, 0xf4, 0x59, 0xce, 0xb3, 0x05, 0xed, 0x69, 0x43,
201
-            0x02, 0x68, 0xc2, 0x4e, 0x02, 0x9d, 0x9f, 0x0e, 0x94, 0x6a, 0xe6, 0x26, 0x57, 0x38,
202
-            0xab, 0x1e, 0xcd, 0xea, 0xc1, 0x94, 0x77, 0xf0, 0x30, 0x0d, 0xc4, 0xe9, 0x20, 0x7e,
203
-            0x40, 0xb8, 0x3b, 0x78, 0x96, 0xe8, 0xeb, 0x8c, 0xb9, 0x95, 0xed, 0xda, 0xc1, 0xbd,
204
-            0x43, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x60, 0x30, 0x5e, 0x30, 0x0e, 0x06, 0x03,
205
-            0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x03, 0xb8, 0x30, 0x0c,
206
-            0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, 0x30, 0x1d,
207
-            0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x28, 0xe6, 0xd6, 0x9e, 0x1a,
208
-            0x0b, 0xf5, 0x0e, 0x13, 0x30, 0x1e, 0x50, 0x26, 0xbd, 0x64, 0x08, 0x2c, 0x08, 0xdb,
209
-            0x0a, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14,
210
-            0xfa, 0x0d, 0xd4, 0x11, 0x91, 0x1b, 0xe6, 0xb2, 0x4e, 0x1e, 0x06, 0x49, 0x94, 0x11,
211
-            0xdd, 0x63, 0x62, 0x07, 0x59, 0x64, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
212
-            0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x46, 0x5c, 0xb9,
213
-            0xe1, 0xed, 0xea, 0xb9, 0x72, 0x9b, 0x82, 0xbd, 0xc5, 0xef, 0xed, 0x6d, 0x00, 0xf1,
214
-            0x24, 0xd3, 0x06, 0x68, 0x1f, 0x63, 0x54, 0xea, 0xde, 0x25, 0x56, 0x97, 0xd6, 0x05,
215
-            0xb3, 0x92, 0xbb, 0xc7, 0xc3, 0xa9, 0xf2, 0xef, 0xd2, 0x85, 0x2e, 0x18, 0x2e, 0x2d,
216
-            0x22, 0x1a, 0xf1, 0x48, 0x9d, 0x03, 0xe6, 0xc5, 0x18, 0x00, 0xdc, 0xa0, 0xda, 0x1a,
217
-            0x27, 0x87, 0x41, 0x16, 0xa0, 0xe8, 0xfa, 0x31, 0x28, 0xd9, 0x4b, 0xf6, 0xd0, 0x02,
218
-            0xec, 0x09, 0x75, 0xc6, 0xd0, 0x1e, 0x9f, 0x88, 0x7d, 0x5c, 0xb6, 0x45, 0x0d, 0x26,
219
-            0x3d, 0x09, 0x33, 0x20, 0x6e, 0x92, 0x2d, 0xe9, 0xfc, 0x40, 0x0a, 0x7d, 0xc2, 0x9a,
220
-            0xcb, 0xa4, 0x88, 0x8f, 0xef, 0xa4, 0xa3, 0x16, 0x6b, 0x29, 0x71, 0xfe, 0x5a, 0xf2,
221
-            0x7f, 0x37, 0xec, 0xa9, 0x9f, 0x79, 0x8e, 0x74, 0x28, 0x26, 0x89, 0xda, 0xf3,
222
-        ],
223
-    },
224
-    // APN-Win identity 000004.
225
-    SigningIdentity {
226
-        p: [
227
-            0xf3, 0xca, 0x6a, 0x26, 0xb4, 0x29, 0xd8, 0xb4, 0x1d, 0xc6, 0x91, 0x08, 0xe2, 0xfa,
228
-            0x6a, 0x1f, 0xd8, 0x55, 0xd6, 0x58, 0xcb, 0x1a, 0xac, 0xb7, 0xcf, 0x32, 0xdb, 0x91,
229
-            0xba, 0xa0, 0xbc, 0x44, 0x04, 0x39, 0xd8, 0x5c, 0xe9, 0xe0, 0x36, 0xce, 0x3e, 0xe3,
230
-            0x87, 0x4f, 0xd1, 0xbf, 0x83, 0xaa, 0x1d, 0xb8, 0x12, 0x18, 0x6e, 0x9a, 0x20, 0xe1,
231
-            0x95, 0x5f, 0x51, 0xbe, 0xed, 0xb8, 0xcc, 0x43,
232
-        ],
233
-        q: [
234
-            0xe9, 0x5a, 0x35, 0x40, 0x29, 0x81, 0x33, 0x5d, 0x59, 0x76, 0xc2, 0xfa, 0x9e, 0xdf,
235
-            0x20, 0x25, 0xcf, 0xac, 0xc4, 0xfa, 0x5f, 0x29, 0xdc, 0x2c, 0x56, 0xc4, 0x26, 0x95,
236
-            0x05, 0xb8, 0x54, 0x71, 0x93, 0xa7, 0xa6, 0x42, 0x5a, 0x66, 0x24, 0x90, 0xd8, 0xd7,
237
-            0x60, 0x59, 0xaf, 0x48, 0xce, 0xeb, 0x12, 0xe7, 0xad, 0x78, 0xed, 0x8d, 0xa4, 0xe5,
238
-            0xc9, 0x4d, 0xc4, 0x02, 0x01, 0x17, 0x44, 0x01,
239
-        ],
240
-        certificate: &[
241
-            0x30, 0x82, 0x02, 0xc5, 0x30, 0x82, 0x02, 0x2e, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02,
242
-            0x0d, 0x33, 0x33, 0xaf, 0x10, 0x10, 0x20, 0xaf, 0x00, 0x01, 0xaf, 0x00, 0x00, 0x04,
243
-            0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05,
244
-            0x00, 0x30, 0x7b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
245
-            0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x41,
246
-            0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06,
247
-            0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65,
248
-            0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75,
249
-            0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55,
250
-            0x04, 0x03, 0x13, 0x26, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x46, 0x61, 0x69, 0x72,
251
-            0x50, 0x6c, 0x61, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
252
-            0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
253
-            0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x31, 0x30, 0x32, 0x30, 0x30, 0x30, 0x30, 0x32,
254
-            0x30, 0x33, 0x5a, 0x17, 0x0d, 0x31, 0x35, 0x31, 0x30, 0x31, 0x39, 0x30, 0x30, 0x30,
255
-            0x32, 0x30, 0x33, 0x5a, 0x30, 0x68, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,
256
-            0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a,
257
-            0x13, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x17,
258
-            0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0e, 0x41, 0x70, 0x70, 0x6c, 0x65,
259
-            0x20, 0x46, 0x61, 0x69, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x31, 0x2b, 0x30, 0x29, 0x06,
260
-            0x03, 0x55, 0x04, 0x03, 0x13, 0x22, 0x41, 0x50, 0x4e, 0x2d, 0x57, 0x69, 0x6e, 0x2e,
261
-            0x33, 0x33, 0x33, 0x33, 0x41, 0x46, 0x31, 0x30, 0x31, 0x30, 0x32, 0x30, 0x41, 0x46,
262
-            0x30, 0x30, 0x30, 0x31, 0x41, 0x46, 0x30, 0x30, 0x30, 0x30, 0x30, 0x34, 0x30, 0x81,
263
-            0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
264
-            0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xde,
265
-            0x39, 0x22, 0x7c, 0x8d, 0xb0, 0x6e, 0xd5, 0xbb, 0xfb, 0xe3, 0xa2, 0xe8, 0x2a, 0x38,
266
-            0xe5, 0x96, 0x31, 0x44, 0xc7, 0xab, 0x34, 0xd7, 0xe0, 0x5a, 0xde, 0xfd, 0x29, 0x5c,
267
-            0xa3, 0x10, 0x38, 0xd8, 0x27, 0x37, 0x65, 0xaf, 0x35, 0x1b, 0x23, 0x20, 0x5c, 0x88,
268
-            0xa2, 0xb7, 0x12, 0xa6, 0xcd, 0x9b, 0x92, 0x29, 0x92, 0x14, 0xf0, 0xde, 0x58, 0xad,
269
-            0x80, 0xee, 0x01, 0xe1, 0xe4, 0xf7, 0x59, 0x09, 0x15, 0x33, 0x26, 0x5e, 0xbd, 0x3e,
270
-            0xe9, 0x2f, 0x83, 0xed, 0x5d, 0xa8, 0x4b, 0x8a, 0x48, 0x45, 0xeb, 0xd4, 0x81, 0xc4,
271
-            0xff, 0x2d, 0x5d, 0xcf, 0x57, 0x7c, 0x18, 0x48, 0x70, 0xf2, 0x0f, 0x64, 0xc2, 0x02,
272
-            0xe2, 0x09, 0x13, 0x1e, 0x54, 0x90, 0xd8, 0xda, 0x58, 0x64, 0xd7, 0xed, 0xa3, 0x69,
273
-            0xa7, 0x50, 0xcd, 0x6a, 0xa8, 0xe5, 0xd5, 0x61, 0x27, 0x01, 0xd0, 0xa0, 0xff, 0x98,
274
-            0x43, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x60, 0x30, 0x5e, 0x30, 0x0e, 0x06, 0x03,
275
-            0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x03, 0xb8, 0x30, 0x0c,
276
-            0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, 0x30, 0x1d,
277
-            0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x55, 0xf7, 0x3a, 0x58, 0x9e,
278
-            0x81, 0x1d, 0x7c, 0x17, 0x1c, 0x0b, 0xcf, 0x5c, 0x78, 0x0c, 0xa2, 0x49, 0x5e, 0xc9,
279
-            0x4b, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14,
280
-            0xfa, 0x0d, 0xd4, 0x11, 0x91, 0x1b, 0xe6, 0xb2, 0x4e, 0x1e, 0x06, 0x49, 0x94, 0x11,
281
-            0xdd, 0x63, 0x62, 0x07, 0x59, 0x64, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
282
-            0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x92, 0x7e, 0xf0,
283
-            0x9d, 0xc5, 0xbf, 0x3a, 0x1b, 0xd5, 0x6e, 0x32, 0x28, 0xa4, 0x0a, 0x78, 0x9e, 0x49,
284
-            0x26, 0x4c, 0xb6, 0x15, 0x6a, 0xf4, 0x03, 0xed, 0x19, 0x3b, 0x13, 0xa8, 0x78, 0x04,
285
-            0x6e, 0xea, 0x5d, 0xd6, 0x3c, 0xa7, 0xdf, 0x68, 0xbf, 0x26, 0x73, 0x19, 0xda, 0xe0,
286
-            0xfb, 0xb7, 0xa6, 0x2d, 0xbc, 0xf6, 0x88, 0x01, 0xa1, 0xa7, 0x2c, 0x24, 0x45, 0x10,
287
-            0xb3, 0xdc, 0x96, 0x99, 0xac, 0x65, 0x16, 0xb9, 0x85, 0x5c, 0xfe, 0x75, 0xfc, 0x6a,
288
-            0x3c, 0x99, 0x83, 0x18, 0x06, 0x22, 0x72, 0xa1, 0xbd, 0xdd, 0xbc, 0xd8, 0x24, 0x64,
289
-            0x48, 0x7c, 0x52, 0xa9, 0x4c, 0xae, 0xc8, 0x18, 0x1e, 0xd0, 0x2c, 0x8b, 0xfb, 0xe0,
290
-            0x01, 0xab, 0xcc, 0x4d, 0x9f, 0x80, 0x10, 0xcb, 0x46, 0xea, 0xa9, 0xab, 0x0e, 0xfe,
291
-            0x75, 0x23, 0x61, 0xb2, 0x72, 0x04, 0x52, 0x7c, 0x40, 0x27, 0x34, 0x05, 0x1a,
292
-        ],
293
-    },
294
-    // APN-Win identity 000005.
295
-    SigningIdentity {
296
-        p: [
297
-            0xf5, 0x5d, 0x32, 0x17, 0xc3, 0xc2, 0x52, 0x4b, 0x88, 0x00, 0xb4, 0xe7, 0x0e, 0xa7,
298
-            0x96, 0xf3, 0x88, 0xeb, 0x59, 0xe3, 0x62, 0xb8, 0xb9, 0x8d, 0xf2, 0x6b, 0x9e, 0xc7,
299
-            0x39, 0x78, 0x84, 0xa4, 0x3f, 0x08, 0x25, 0xc7, 0x6d, 0x96, 0xd5, 0x3f, 0x23, 0x71,
300
-            0x86, 0x19, 0x0c, 0x7f, 0xc6, 0x5a, 0x9f, 0xdb, 0x7b, 0xb3, 0x6e, 0xd5, 0x6f, 0xde,
301
-            0xcf, 0xb5, 0x33, 0xac, 0x0c, 0xfa, 0xa1, 0xff,
302
-        ],
303
-        q: [
304
-            0xdc, 0x8d, 0xae, 0x74, 0x7e, 0x51, 0xf0, 0x39, 0xc5, 0x12, 0xd1, 0x4d, 0x45, 0x41,
305
-            0xf4, 0x71, 0x85, 0xf4, 0x00, 0xc5, 0xff, 0xda, 0x6e, 0x98, 0xbb, 0x6c, 0x86, 0x8c,
306
-            0x2c, 0xd6, 0x30, 0xb3, 0x8d, 0x34, 0xd3, 0x43, 0x50, 0xfc, 0x0c, 0x85, 0x56, 0xc5,
307
-            0x01, 0xa6, 0x86, 0x98, 0x05, 0x49, 0xc7, 0xb9, 0x7d, 0x8b, 0x61, 0xd9, 0xe1, 0x8a,
308
-            0x22, 0xa2, 0xa7, 0x8d, 0x18, 0x21, 0x55, 0xab,
309
-        ],
310
-        certificate: &[
311
-            0x30, 0x82, 0x02, 0xc5, 0x30, 0x82, 0x02, 0x2e, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02,
312
-            0x0d, 0x33, 0x33, 0xaf, 0x10, 0x10, 0x20, 0xaf, 0x00, 0x01, 0xaf, 0x00, 0x00, 0x05,
313
-            0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05,
314
-            0x00, 0x30, 0x7b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
315
-            0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x41,
316
-            0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06,
317
-            0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65,
318
-            0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75,
319
-            0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55,
320
-            0x04, 0x03, 0x13, 0x26, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x46, 0x61, 0x69, 0x72,
321
-            0x50, 0x6c, 0x61, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
322
-            0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
323
-            0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x31, 0x30, 0x32, 0x30, 0x30, 0x30, 0x30, 0x32,
324
-            0x30, 0x33, 0x5a, 0x17, 0x0d, 0x31, 0x35, 0x31, 0x30, 0x31, 0x39, 0x30, 0x30, 0x30,
325
-            0x32, 0x30, 0x33, 0x5a, 0x30, 0x68, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,
326
-            0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a,
327
-            0x13, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x17,
328
-            0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0e, 0x41, 0x70, 0x70, 0x6c, 0x65,
329
-            0x20, 0x46, 0x61, 0x69, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x31, 0x2b, 0x30, 0x29, 0x06,
330
-            0x03, 0x55, 0x04, 0x03, 0x13, 0x22, 0x41, 0x50, 0x4e, 0x2d, 0x57, 0x69, 0x6e, 0x2e,
331
-            0x33, 0x33, 0x33, 0x33, 0x41, 0x46, 0x31, 0x30, 0x31, 0x30, 0x32, 0x30, 0x41, 0x46,
332
-            0x30, 0x30, 0x30, 0x31, 0x41, 0x46, 0x30, 0x30, 0x30, 0x30, 0x30, 0x35, 0x30, 0x81,
333
-            0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
334
-            0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xd3,
335
-            0x63, 0xe2, 0x96, 0x02, 0xab, 0x11, 0xf6, 0x4d, 0xee, 0xe9, 0x07, 0x3e, 0x02, 0xba,
336
-            0xae, 0x14, 0x15, 0x42, 0xfe, 0xad, 0xdc, 0xd8, 0x76, 0x34, 0xf0, 0x7a, 0x0a, 0xfa,
337
-            0xf0, 0x1e, 0x54, 0x19, 0xb5, 0xdd, 0x73, 0xb0, 0xdc, 0xc7, 0xd4, 0xcb, 0xf5, 0xa1,
338
-            0x2c, 0x93, 0x5e, 0x32, 0x6a, 0xbd, 0x66, 0x88, 0x20, 0xb2, 0x98, 0x39, 0xd0, 0xed,
339
-            0x37, 0x96, 0x31, 0x4a, 0xba, 0xe3, 0xe8, 0x25, 0x66, 0x5c, 0x65, 0x36, 0xe8, 0xbd,
340
-            0x81, 0x23, 0xc1, 0x9d, 0xef, 0x78, 0x93, 0x7d, 0x19, 0xc0, 0x93, 0x2a, 0x8f, 0x82,
341
-            0xed, 0x00, 0x74, 0x10, 0x6e, 0xc8, 0xf3, 0x95, 0x4d, 0xff, 0x9b, 0xb6, 0x59, 0x46,
342
-            0x58, 0x3b, 0xe0, 0xa1, 0xee, 0x63, 0x3c, 0xe4, 0xb3, 0x5c, 0xc1, 0xbd, 0xea, 0x05,
343
-            0xa2, 0x7b, 0xd8, 0x95, 0xa8, 0x1c, 0xce, 0xb9, 0xad, 0x62, 0x2d, 0xad, 0x12, 0xe0,
344
-            0x55, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x60, 0x30, 0x5e, 0x30, 0x0e, 0x06, 0x03,
345
-            0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x03, 0xb8, 0x30, 0x0c,
346
-            0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, 0x30, 0x1d,
347
-            0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x31, 0xb5, 0x80, 0xdd, 0x93,
348
-            0x24, 0x80, 0x5f, 0x30, 0x80, 0x6c, 0x40, 0x44, 0xcd, 0x85, 0x85, 0x6e, 0x87, 0x48,
349
-            0xf7, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14,
350
-            0xfa, 0x0d, 0xd4, 0x11, 0x91, 0x1b, 0xe6, 0xb2, 0x4e, 0x1e, 0x06, 0x49, 0x94, 0x11,
351
-            0xdd, 0x63, 0x62, 0x07, 0x59, 0x64, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
352
-            0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x96, 0xd7, 0xdf,
353
-            0x77, 0x6e, 0x25, 0x6a, 0x26, 0xbe, 0xe9, 0x4b, 0xb0, 0xc1, 0x88, 0xc6, 0x76, 0x39,
354
-            0x84, 0x15, 0x17, 0xbf, 0x50, 0x74, 0x95, 0x02, 0xcf, 0x02, 0xc4, 0x3c, 0x79, 0xde,
355
-            0xec, 0x36, 0x2f, 0x1d, 0x31, 0x4c, 0xcd, 0xaf, 0x69, 0x73, 0x32, 0xac, 0x1e, 0xa3,
356
-            0xcd, 0x08, 0x1a, 0xed, 0x58, 0xc9, 0xfc, 0xb7, 0x0e, 0x5d, 0x56, 0x6f, 0xef, 0xcd,
357
-            0x4e, 0xf7, 0xf9, 0x71, 0x46, 0x4b, 0x23, 0x09, 0x61, 0x73, 0x3c, 0xd3, 0x93, 0xe2,
358
-            0xb7, 0x40, 0xfd, 0x03, 0xf9, 0xb0, 0x2d, 0x05, 0x55, 0xac, 0xfa, 0x73, 0x99, 0x4d,
359
-            0xc1, 0xca, 0x93, 0x67, 0xf3, 0xa7, 0x3e, 0x76, 0x06, 0x45, 0x7c, 0x97, 0x57, 0xc2,
360
-            0xd6, 0x40, 0x48, 0x28, 0xe6, 0xfb, 0x6a, 0xfe, 0x4f, 0x07, 0x6c, 0xf5, 0x68, 0xcf,
361
-            0xad, 0x12, 0x88, 0xc4, 0x9e, 0xb8, 0x45, 0x70, 0x5c, 0xe4, 0x57, 0x2a, 0x28,
362
-        ],
363
-    },
364
-    // APN-Win identity 000006.
365
-    SigningIdentity {
366
-        p: [
367
-            0xe3, 0x7b, 0xc2, 0x31, 0x22, 0x8a, 0x5c, 0x8f, 0x03, 0xcb, 0x6c, 0xde, 0x92, 0x6f,
368
-            0xb0, 0x88, 0x47, 0x43, 0x7b, 0xac, 0x72, 0xd9, 0x94, 0x31, 0x2d, 0xd9, 0xa6, 0xdf,
369
-            0xf1, 0x83, 0x41, 0xac, 0x3a, 0x21, 0xe9, 0x52, 0x19, 0xdb, 0x44, 0xf4, 0xe4, 0x4b,
370
-            0xd0, 0x18, 0x8e, 0xa6, 0x30, 0xa5, 0xa2, 0x3c, 0xb9, 0xa7, 0x7d, 0x78, 0x07, 0x0d,
371
-            0x7b, 0x4c, 0xe5, 0xdb, 0x52, 0x4e, 0x7d, 0x95,
372
-        ],
373
-        q: [
374
-            0xc2, 0x06, 0xe8, 0x58, 0x13, 0x8f, 0xcb, 0xdc, 0x92, 0x56, 0xb6, 0x3e, 0x4e, 0x03,
375
-            0x18, 0xcb, 0x35, 0x73, 0x4f, 0x78, 0x73, 0x09, 0xc5, 0xee, 0x00, 0x83, 0x52, 0x28,
376
-            0xd4, 0xb3, 0x6b, 0xb4, 0xfb, 0xd1, 0x39, 0x2f, 0x4d, 0x7b, 0xad, 0x76, 0x42, 0x83,
377
-            0x3f, 0x24, 0x4d, 0x07, 0x45, 0xe9, 0x10, 0x77, 0xad, 0xac, 0x4a, 0xd8, 0x6d, 0x1e,
378
-            0xab, 0x1a, 0x9e, 0xa2, 0x21, 0x93, 0x62, 0x33,
379
-        ],
380
-        certificate: &[
381
-            0x30, 0x82, 0x02, 0xc5, 0x30, 0x82, 0x02, 0x2e, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02,
382
-            0x0d, 0x33, 0x33, 0xaf, 0x10, 0x10, 0x20, 0xaf, 0x00, 0x01, 0xaf, 0x00, 0x00, 0x06,
383
-            0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05,
384
-            0x00, 0x30, 0x7b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
385
-            0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x41,
386
-            0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06,
387
-            0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65,
388
-            0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75,
389
-            0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55,
390
-            0x04, 0x03, 0x13, 0x26, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x46, 0x61, 0x69, 0x72,
391
-            0x50, 0x6c, 0x61, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
392
-            0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
393
-            0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x31, 0x30, 0x32, 0x30, 0x30, 0x30, 0x30, 0x32,
394
-            0x30, 0x34, 0x5a, 0x17, 0x0d, 0x31, 0x35, 0x31, 0x30, 0x31, 0x39, 0x30, 0x30, 0x30,
395
-            0x32, 0x30, 0x34, 0x5a, 0x30, 0x68, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,
396
-            0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a,
397
-            0x13, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x17,
398
-            0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0e, 0x41, 0x70, 0x70, 0x6c, 0x65,
399
-            0x20, 0x46, 0x61, 0x69, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x31, 0x2b, 0x30, 0x29, 0x06,
400
-            0x03, 0x55, 0x04, 0x03, 0x13, 0x22, 0x41, 0x50, 0x4e, 0x2d, 0x57, 0x69, 0x6e, 0x2e,
401
-            0x33, 0x33, 0x33, 0x33, 0x41, 0x46, 0x31, 0x30, 0x31, 0x30, 0x32, 0x30, 0x41, 0x46,
402
-            0x30, 0x30, 0x30, 0x31, 0x41, 0x46, 0x30, 0x30, 0x30, 0x30, 0x30, 0x36, 0x30, 0x81,
403
-            0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
404
-            0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xac,
405
-            0x69, 0xec, 0x86, 0x35, 0x3c, 0xe8, 0x46, 0x12, 0x0f, 0xb6, 0xe9, 0x33, 0xce, 0x4d,
406
-            0x9c, 0xae, 0x60, 0xc2, 0xd1, 0x12, 0x4b, 0xe9, 0x43, 0xce, 0x44, 0x9d, 0x2f, 0x85,
407
-            0x58, 0xdb, 0x4d, 0x9f, 0xa0, 0x7f, 0x94, 0x59, 0x4b, 0x63, 0x8f, 0xb5, 0x62, 0xe6,
408
-            0x4c, 0x24, 0x19, 0x03, 0x2d, 0xdc, 0x81, 0x4a, 0x40, 0x88, 0xd8, 0x59, 0xeb, 0xe1,
409
-            0xef, 0x4b, 0xc3, 0x98, 0xc0, 0xf4, 0x7c, 0xea, 0xd8, 0x2b, 0x67, 0x62, 0xd1, 0x30,
410
-            0x63, 0xe9, 0xc7, 0xf5, 0xe8, 0x70, 0xa9, 0x20, 0xaa, 0x5e, 0x65, 0x13, 0x84, 0xd0,
411
-            0x27, 0xcf, 0xf3, 0xe3, 0x21, 0x0a, 0x76, 0x36, 0xde, 0xc4, 0x69, 0x63, 0x33, 0x21,
412
-            0x58, 0x9f, 0x2e, 0xe2, 0x80, 0xcf, 0xa8, 0x59, 0xda, 0x8a, 0x1f, 0xf6, 0x90, 0x86,
413
-            0x24, 0xd0, 0x97, 0x28, 0x6a, 0x0b, 0x94, 0x12, 0x2b, 0x8f, 0xbf, 0xc3, 0x45, 0x0e,
414
-            0xaf, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x60, 0x30, 0x5e, 0x30, 0x0e, 0x06, 0x03,
415
-            0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x03, 0xb8, 0x30, 0x0c,
416
-            0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, 0x30, 0x1d,
417
-            0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x0f, 0x4d, 0x5f, 0x83, 0x52,
418
-            0x56, 0x19, 0xa0, 0x76, 0x8f, 0x4b, 0xee, 0xf0, 0xed, 0xd8, 0x02, 0x0d, 0x3a, 0x00,
419
-            0xdc, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14,
420
-            0xfa, 0x0d, 0xd4, 0x11, 0x91, 0x1b, 0xe6, 0xb2, 0x4e, 0x1e, 0x06, 0x49, 0x94, 0x11,
421
-            0xdd, 0x63, 0x62, 0x07, 0x59, 0x64, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
422
-            0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x2b, 0x82, 0x74,
423
-            0x72, 0x5a, 0x54, 0x4c, 0x54, 0x54, 0x37, 0x6e, 0xd8, 0xcf, 0xa8, 0x3e, 0x1f, 0x8d,
424
-            0xd0, 0x26, 0xe5, 0x47, 0xf4, 0x1a, 0xc9, 0x35, 0x7a, 0xce, 0xec, 0xca, 0x38, 0x3b,
425
-            0x94, 0x54, 0xd8, 0xae, 0x7c, 0xf8, 0x45, 0x5f, 0xfa, 0xd4, 0xbd, 0x4f, 0x1a, 0x22,
426
-            0x27, 0xe7, 0x69, 0xf5, 0xaa, 0xed, 0xcf, 0x3b, 0x0b, 0xc2, 0x74, 0x1e, 0xa5, 0x7d,
427
-            0x75, 0x3b, 0x3f, 0x94, 0xe7, 0x19, 0x38, 0x42, 0x24, 0xbc, 0xb1, 0x36, 0x52, 0x35,
428
-            0x3d, 0xac, 0x49, 0xa0, 0x25, 0xe0, 0x22, 0xc1, 0xea, 0x55, 0x0d, 0xba, 0x43, 0xd3,
429
-            0x5f, 0x07, 0xdc, 0x5f, 0x59, 0x1b, 0x48, 0x13, 0x4f, 0xd7, 0x4e, 0x6d, 0x07, 0x08,
430
-            0xc1, 0xb4, 0x00, 0x92, 0x84, 0xcf, 0xa0, 0xbd, 0xdf, 0x33, 0xaa, 0x3f, 0xfd, 0x8b,
431
-            0x99, 0x87, 0x8d, 0x46, 0x45, 0xa9, 0x3d, 0x0a, 0x65, 0x9d, 0xd2, 0x15, 0xb0,
432
-        ],
433
-    },
434
-    // APN-Win identity 000007.
435
-    SigningIdentity {
436
-        p: [
437
-            0xf0, 0xad, 0x75, 0x6a, 0xdb, 0x42, 0x8d, 0x70, 0x3c, 0xa4, 0xba, 0xa5, 0x87, 0xa9,
438
-            0x1e, 0xc3, 0xd7, 0x6d, 0xe5, 0x46, 0x97, 0xa6, 0x8a, 0x7a, 0x09, 0x44, 0xdc, 0x33,
439
-            0x71, 0xb6, 0xb7, 0x9f, 0x2d, 0x44, 0xfa, 0x64, 0xcf, 0xd0, 0xa2, 0x5a, 0x8d, 0x2d,
440
-            0x67, 0xed, 0x62, 0x07, 0x7f, 0xfa, 0x23, 0x4c, 0xa2, 0x75, 0x90, 0xce, 0xc0, 0xf5,
441
-            0xfc, 0x79, 0x3b, 0x30, 0x96, 0x3b, 0x57, 0xe5,
442
-        ],
443
-        q: [
444
-            0xef, 0x4b, 0x6c, 0x26, 0x07, 0xf1, 0x3f, 0x3a, 0xf7, 0xbb, 0x7b, 0x9c, 0xff, 0x16,
445
-            0xeb, 0xb3, 0x72, 0xf8, 0x33, 0x95, 0xb0, 0x94, 0xed, 0xf2, 0xdc, 0x6f, 0x24, 0x1c,
446
-            0x87, 0xec, 0x6a, 0x26, 0x16, 0xb0, 0xf8, 0x80, 0x4c, 0xbe, 0xa9, 0xfd, 0x7c, 0x2a,
447
-            0x88, 0x6d, 0xf4, 0x1f, 0x55, 0xac, 0x98, 0x2a, 0xaf, 0x6e, 0x1f, 0x93, 0xd9, 0x46,
448
-            0xf7, 0xb9, 0x5e, 0xef, 0x7b, 0xc5, 0x5c, 0x03,
449
-        ],
450
-        certificate: &[
451
-            0x30, 0x82, 0x02, 0xc5, 0x30, 0x82, 0x02, 0x2e, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02,
452
-            0x0d, 0x33, 0x33, 0xaf, 0x10, 0x10, 0x20, 0xaf, 0x00, 0x01, 0xaf, 0x00, 0x00, 0x07,
453
-            0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05,
454
-            0x00, 0x30, 0x7b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
455
-            0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x41,
456
-            0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06,
457
-            0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65,
458
-            0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75,
459
-            0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55,
460
-            0x04, 0x03, 0x13, 0x26, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x46, 0x61, 0x69, 0x72,
461
-            0x50, 0x6c, 0x61, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
462
-            0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
463
-            0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x31, 0x30, 0x32, 0x30, 0x30, 0x30, 0x30, 0x32,
464
-            0x30, 0x34, 0x5a, 0x17, 0x0d, 0x31, 0x35, 0x31, 0x30, 0x31, 0x39, 0x30, 0x30, 0x30,
465
-            0x32, 0x30, 0x34, 0x5a, 0x30, 0x68, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,
466
-            0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a,
467
-            0x13, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x17,
468
-            0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0e, 0x41, 0x70, 0x70, 0x6c, 0x65,
469
-            0x20, 0x46, 0x61, 0x69, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x31, 0x2b, 0x30, 0x29, 0x06,
470
-            0x03, 0x55, 0x04, 0x03, 0x13, 0x22, 0x41, 0x50, 0x4e, 0x2d, 0x57, 0x69, 0x6e, 0x2e,
471
-            0x33, 0x33, 0x33, 0x33, 0x41, 0x46, 0x31, 0x30, 0x31, 0x30, 0x32, 0x30, 0x41, 0x46,
472
-            0x30, 0x30, 0x30, 0x31, 0x41, 0x46, 0x30, 0x30, 0x30, 0x30, 0x30, 0x37, 0x30, 0x81,
473
-            0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
474
-            0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xe0,
475
-            0xf8, 0xd9, 0x1d, 0x17, 0xc1, 0x6d, 0xdb, 0x6d, 0xbc, 0xa7, 0xa7, 0xcd, 0x17, 0x07,
476
-            0x9b, 0x83, 0x21, 0x86, 0x81, 0x37, 0x40, 0x68, 0x2c, 0xec, 0x2d, 0x45, 0x55, 0xe9,
477
-            0x84, 0xcc, 0x40, 0x86, 0xd5, 0x2b, 0x6a, 0x1f, 0x1f, 0xbc, 0x3c, 0x3e, 0xb3, 0x55,
478
-            0xdd, 0x0a, 0x49, 0x60, 0x80, 0xb5, 0x12, 0x94, 0xfc, 0xc2, 0xfc, 0x78, 0xb8, 0xaf,
479
-            0xba, 0x7f, 0xc1, 0x75, 0x65, 0x67, 0xd0, 0x9a, 0x31, 0x51, 0xe1, 0xd4, 0xb4, 0x16,
480
-            0xde, 0xed, 0xe9, 0x80, 0x52, 0xb6, 0xd0, 0x33, 0x44, 0xed, 0x2b, 0x0d, 0x08, 0xa5,
481
-            0x08, 0xe7, 0xa1, 0x5a, 0xe1, 0x10, 0x38, 0xce, 0x30, 0x0a, 0x74, 0xd7, 0x57, 0x56,
482
-            0x9d, 0x33, 0x85, 0x52, 0x7f, 0xb3, 0xe5, 0xd0, 0x2e, 0x58, 0xd5, 0xe5, 0x93, 0x87,
483
-            0x21, 0xf3, 0x0e, 0x22, 0x92, 0x44, 0x2c, 0xee, 0x6d, 0x6b, 0x3f, 0xc0, 0x81, 0x53,
484
-            0xaf, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x60, 0x30, 0x5e, 0x30, 0x0e, 0x06, 0x03,
485
-            0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x03, 0xb8, 0x30, 0x0c,
486
-            0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, 0x30, 0x1d,
487
-            0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xad, 0x58, 0x03, 0x97, 0xe3,
488
-            0xf9, 0x03, 0x0c, 0xd5, 0x01, 0x0b, 0x68, 0x0a, 0xa5, 0xb7, 0xec, 0x6c, 0x27, 0x71,
489
-            0x61, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14,
490
-            0xfa, 0x0d, 0xd4, 0x11, 0x91, 0x1b, 0xe6, 0xb2, 0x4e, 0x1e, 0x06, 0x49, 0x94, 0x11,
491
-            0xdd, 0x63, 0x62, 0x07, 0x59, 0x64, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
492
-            0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x66, 0xc5, 0x8e,
493
-            0xa8, 0x43, 0xd2, 0x34, 0x6e, 0x85, 0x03, 0xd3, 0xc5, 0xef, 0x0a, 0x31, 0xda, 0x1e,
494
-            0x84, 0xde, 0xd9, 0x40, 0x79, 0xc9, 0xdd, 0x5a, 0x24, 0xf5, 0xcc, 0xca, 0x47, 0x65,
495
-            0x69, 0xe3, 0x6f, 0x0c, 0x4e, 0x58, 0x95, 0x6f, 0x86, 0x18, 0x4c, 0x94, 0xe9, 0xc5,
496
-            0x49, 0xbd, 0x47, 0xac, 0xfe, 0xb1, 0xf4, 0x68, 0xbc, 0x1e, 0xe7, 0x8a, 0x66, 0x60,
497
-            0xcd, 0x39, 0x20, 0x1c, 0x06, 0x56, 0x19, 0xc7, 0x4c, 0xe2, 0x0e, 0x0e, 0x15, 0x86,
498
-            0xe8, 0xf3, 0xa3, 0xb5, 0x4a, 0xc4, 0x44, 0x73, 0x37, 0x10, 0xa8, 0xa9, 0x7e, 0x18,
499
-            0x72, 0x9c, 0xef, 0x77, 0xed, 0x1b, 0x21, 0x6a, 0xcd, 0xd9, 0x9d, 0xee, 0x17, 0xf6,
500
-            0x56, 0x31, 0x18, 0xf5, 0xf0, 0x35, 0xbc, 0x14, 0x33, 0x76, 0x91, 0xd8, 0xa6, 0x7c,
501
-            0x86, 0x7f, 0x80, 0x69, 0xe2, 0xb1, 0xaa, 0x30, 0xec, 0xf4, 0xe3, 0xd5, 0x1c,
502
-        ],
503
-    },
504
-    // APN-Win identity 000008.
505
-    SigningIdentity {
506
-        p: [
507
-            0xcb, 0x6a, 0xa4, 0xbb, 0xe3, 0x96, 0x51, 0x43, 0x94, 0x2e, 0x5e, 0x0f, 0x33, 0x0b,
508
-            0x10, 0xcc, 0xf0, 0xfe, 0xa8, 0x83, 0x19, 0x3f, 0xdd, 0xed, 0x1f, 0x11, 0xe4, 0xcc,
509
-            0x72, 0xd6, 0xf9, 0x9e, 0x64, 0x03, 0x71, 0x2d, 0xa8, 0xa9, 0xcd, 0xfe, 0x02, 0xf0,
510
-            0x72, 0xf9, 0xfb, 0xd7, 0x13, 0xce, 0x69, 0x23, 0x84, 0x03, 0xd2, 0xc3, 0x30, 0xd8,
511
-            0x2a, 0xb3, 0x63, 0xb2, 0xfd, 0x12, 0x6a, 0x2f,
512
-        ],
513
-        q: [
514
-            0xc4, 0x4e, 0xb8, 0xc1, 0x5c, 0x87, 0xd0, 0x58, 0x95, 0x78, 0x3d, 0x21, 0xf3, 0xef,
515
-            0x05, 0x52, 0x93, 0x41, 0xe3, 0x6a, 0x10, 0x84, 0x5f, 0xbb, 0x7e, 0x26, 0x7f, 0x64,
516
-            0xe7, 0x70, 0x6f, 0x12, 0x41, 0x42, 0xc3, 0x5f, 0xf4, 0x60, 0xfc, 0x48, 0x91, 0x92,
517
-            0x45, 0x63, 0x0e, 0xa1, 0x80, 0x68, 0x0b, 0x6a, 0x0b, 0x0d, 0xae, 0xed, 0x29, 0x0f,
518
-            0xfe, 0x5f, 0xc6, 0xff, 0x23, 0x41, 0x3e, 0x11,
519
-        ],
520
-        certificate: &[
521
-            0x30, 0x82, 0x02, 0xc5, 0x30, 0x82, 0x02, 0x2e, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02,
522
-            0x0d, 0x33, 0x33, 0xaf, 0x10, 0x10, 0x20, 0xaf, 0x00, 0x01, 0xaf, 0x00, 0x00, 0x08,
523
-            0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05,
524
-            0x00, 0x30, 0x7b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
525
-            0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x41,
526
-            0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06,
527
-            0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65,
528
-            0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75,
529
-            0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55,
530
-            0x04, 0x03, 0x13, 0x26, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x46, 0x61, 0x69, 0x72,
531
-            0x50, 0x6c, 0x61, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
532
-            0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
533
-            0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x31, 0x30, 0x32, 0x30, 0x30, 0x30, 0x30, 0x32,
534
-            0x30, 0x35, 0x5a, 0x17, 0x0d, 0x31, 0x35, 0x31, 0x30, 0x31, 0x39, 0x30, 0x30, 0x30,
535
-            0x32, 0x30, 0x35, 0x5a, 0x30, 0x68, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,
536
-            0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a,
537
-            0x13, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x17,
538
-            0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0e, 0x41, 0x70, 0x70, 0x6c, 0x65,
539
-            0x20, 0x46, 0x61, 0x69, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x31, 0x2b, 0x30, 0x29, 0x06,
540
-            0x03, 0x55, 0x04, 0x03, 0x13, 0x22, 0x41, 0x50, 0x4e, 0x2d, 0x57, 0x69, 0x6e, 0x2e,
541
-            0x33, 0x33, 0x33, 0x33, 0x41, 0x46, 0x31, 0x30, 0x31, 0x30, 0x32, 0x30, 0x41, 0x46,
542
-            0x30, 0x30, 0x30, 0x31, 0x41, 0x46, 0x30, 0x30, 0x30, 0x30, 0x30, 0x38, 0x30, 0x81,
543
-            0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
544
-            0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0x9b,
545
-            0xfc, 0x33, 0x6c, 0x56, 0xd1, 0xe9, 0x3c, 0x8c, 0xeb, 0x6c, 0x03, 0xcf, 0x39, 0xd6,
546
-            0xa1, 0x8e, 0x96, 0x27, 0xdf, 0xfa, 0xf8, 0x56, 0x73, 0x05, 0x5f, 0x16, 0xc3, 0x6a,
547
-            0xc0, 0x3b, 0x1a, 0x27, 0x10, 0x79, 0x5c, 0x5a, 0xbb, 0x4a, 0x14, 0xdf, 0xa9, 0x42,
548
-            0x36, 0x6f, 0x95, 0x2e, 0xcc, 0x15, 0xf9, 0x19, 0x16, 0xc6, 0x85, 0xb8, 0x53, 0x7c,
549
-            0xbc, 0x47, 0xe4, 0x54, 0xda, 0x8c, 0x94, 0xae, 0x89, 0x37, 0xf4, 0xfd, 0x3c, 0x97,
550
-            0x3f, 0x9f, 0x9a, 0xf6, 0x28, 0x6c, 0xda, 0x7e, 0xb7, 0x8f, 0x29, 0xeb, 0xf5, 0x01,
551
-            0x18, 0x1d, 0x15, 0x00, 0x33, 0xa4, 0x62, 0xe7, 0xb8, 0xb3, 0x86, 0x58, 0x09, 0xbc,
552
-            0xf3, 0x42, 0x94, 0x0b, 0x0c, 0xf6, 0x3c, 0x58, 0x11, 0x03, 0xcc, 0x1a, 0x8a, 0xf4,
553
-            0x0f, 0x4c, 0x00, 0x1e, 0x6d, 0xa4, 0xd7, 0x6e, 0x03, 0xdd, 0x2f, 0xa6, 0xdf, 0x6f,
554
-            0x1f, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x60, 0x30, 0x5e, 0x30, 0x0e, 0x06, 0x03,
555
-            0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x03, 0xb8, 0x30, 0x0c,
556
-            0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, 0x30, 0x1d,
557
-            0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xf7, 0x93, 0xef, 0x48, 0x8c,
558
-            0xb6, 0x71, 0xee, 0x83, 0x05, 0x1e, 0x1e, 0x76, 0xb0, 0xdc, 0xb0, 0xa7, 0xcb, 0x4c,
559
-            0x8c, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14,
560
-            0xfa, 0x0d, 0xd4, 0x11, 0x91, 0x1b, 0xe6, 0xb2, 0x4e, 0x1e, 0x06, 0x49, 0x94, 0x11,
561
-            0xdd, 0x63, 0x62, 0x07, 0x59, 0x64, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
562
-            0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x50, 0xdb, 0xf6,
563
-            0xef, 0xad, 0xb5, 0x9e, 0x56, 0x4b, 0xf1, 0x69, 0x3a, 0xc2, 0x49, 0x2a, 0x7b, 0x3d,
564
-            0x47, 0x30, 0x67, 0xae, 0x0f, 0x3f, 0xdf, 0xc1, 0x36, 0x9b, 0x0f, 0x42, 0x02, 0x56,
565
-            0x11, 0x22, 0xe4, 0x8c, 0x60, 0xe6, 0x12, 0x1d, 0x1c, 0x8a, 0x19, 0xb7, 0x52, 0x3f,
566
-            0x6a, 0xae, 0xf4, 0xed, 0x96, 0x6e, 0xa0, 0x5f, 0x67, 0x50, 0xf1, 0xdf, 0x02, 0xe5,
567
-            0xe5, 0x46, 0x92, 0xa2, 0xce, 0x11, 0x90, 0x34, 0xd6, 0x2f, 0x81, 0x3a, 0xc8, 0x04,
568
-            0x9a, 0x60, 0x91, 0x0d, 0x7f, 0xe6, 0xf4, 0x01, 0xc6, 0x0b, 0x88, 0x39, 0x95, 0x17,
569
-            0xeb, 0x3c, 0x1f, 0xb2, 0x8a, 0x07, 0x4c, 0xe3, 0xd1, 0x5b, 0xc0, 0x24, 0x10, 0xf3,
570
-            0x56, 0x94, 0xe9, 0xc3, 0xb3, 0x3c, 0x7f, 0x3d, 0x9b, 0x0e, 0x43, 0x1d, 0x9e, 0x8c,
571
-            0xb0, 0x65, 0x3c, 0x22, 0xb6, 0x28, 0x56, 0x79, 0xa3, 0xef, 0xb9, 0x5b, 0x06,
572
-        ],
573
-    },
574
-    // APN-Win identity 000009.
575
-    SigningIdentity {
576
-        p: [
577
-            0xe6, 0x4f, 0x46, 0x42, 0xfe, 0xc8, 0x2c, 0x82, 0xf0, 0xe2, 0xee, 0x28, 0xb0, 0xdd,
578
-            0x4b, 0x5a, 0xe7, 0xc9, 0x6e, 0x02, 0xaa, 0xba, 0x3a, 0xe9, 0xe0, 0xc4, 0xcb, 0xb0,
579
-            0xc6, 0xd8, 0x3f, 0x88, 0x1c, 0x28, 0x89, 0x22, 0xca, 0x61, 0x62, 0x64, 0xbf, 0x3b,
580
-            0x49, 0xd8, 0xad, 0x8d, 0x99, 0xf1, 0xca, 0x75, 0xb4, 0xd9, 0x12, 0x18, 0x9a, 0x3c,
581
-            0xab, 0xc8, 0x97, 0x77, 0x85, 0x36, 0xe2, 0xe3,
582
-        ],
583
-        q: [
584
-            0xc3, 0x59, 0x95, 0x2b, 0x7f, 0xeb, 0x24, 0x78, 0xda, 0xd4, 0x41, 0x79, 0x90, 0xb3,
585
-            0x62, 0xd4, 0x33, 0xd1, 0x6d, 0x11, 0x59, 0x3e, 0x6a, 0x8b, 0x90, 0x73, 0x8a, 0x51,
586
-            0xc8, 0x15, 0xe6, 0x93, 0x93, 0x98, 0xf7, 0xc1, 0xbc, 0x17, 0x48, 0x53, 0x88, 0x88,
587
-            0xe5, 0x93, 0xeb, 0x6e, 0x47, 0xb5, 0x97, 0x83, 0x4e, 0x50, 0x47, 0x21, 0x76, 0x37,
588
-            0x32, 0xdc, 0x3d, 0xc4, 0x79, 0x8e, 0xbc, 0xd9,
589
-        ],
590
-        certificate: &[
591
-            0x30, 0x82, 0x02, 0xc5, 0x30, 0x82, 0x02, 0x2e, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02,
592
-            0x0d, 0x33, 0x33, 0xaf, 0x10, 0x10, 0x20, 0xaf, 0x00, 0x01, 0xaf, 0x00, 0x00, 0x09,
593
-            0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05,
594
-            0x00, 0x30, 0x7b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
595
-            0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x41,
596
-            0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06,
597
-            0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65,
598
-            0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75,
599
-            0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55,
600
-            0x04, 0x03, 0x13, 0x26, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x46, 0x61, 0x69, 0x72,
601
-            0x50, 0x6c, 0x61, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
602
-            0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
603
-            0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x31, 0x30, 0x32, 0x30, 0x30, 0x30, 0x30, 0x32,
604
-            0x30, 0x35, 0x5a, 0x17, 0x0d, 0x31, 0x35, 0x31, 0x30, 0x31, 0x39, 0x30, 0x30, 0x30,
605
-            0x32, 0x30, 0x35, 0x5a, 0x30, 0x68, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,
606
-            0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a,
607
-            0x13, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x17,
608
-            0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0e, 0x41, 0x70, 0x70, 0x6c, 0x65,
609
-            0x20, 0x46, 0x61, 0x69, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x31, 0x2b, 0x30, 0x29, 0x06,
610
-            0x03, 0x55, 0x04, 0x03, 0x13, 0x22, 0x41, 0x50, 0x4e, 0x2d, 0x57, 0x69, 0x6e, 0x2e,
611
-            0x33, 0x33, 0x33, 0x33, 0x41, 0x46, 0x31, 0x30, 0x31, 0x30, 0x32, 0x30, 0x41, 0x46,
612
-            0x30, 0x30, 0x30, 0x31, 0x41, 0x46, 0x30, 0x30, 0x30, 0x30, 0x30, 0x39, 0x30, 0x81,
613
-            0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
614
-            0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xaf,
615
-            0xbe, 0xfa, 0x47, 0xbb, 0xa7, 0xb8, 0x7b, 0x20, 0x58, 0x4b, 0xf4, 0x76, 0x53, 0x5e,
616
-            0xb8, 0x44, 0xf3, 0xe0, 0x1d, 0x90, 0x6c, 0xb6, 0xae, 0x9e, 0x94, 0x8b, 0x52, 0x67,
617
-            0xf8, 0xe9, 0x4a, 0x98, 0xbd, 0x66, 0xe5, 0x4f, 0x51, 0xf7, 0x6a, 0x1f, 0x76, 0xa8,
618
-            0x94, 0xc7, 0x3f, 0xa8, 0xf7, 0x46, 0x6f, 0xac, 0x23, 0x56, 0x29, 0x68, 0xed, 0xd0,
619
-            0x9b, 0x8c, 0x6e, 0x87, 0x47, 0xd1, 0x1d, 0xa0, 0x1a, 0x35, 0x96, 0xfd, 0xca, 0x93,
620
-            0x8c, 0x7f, 0x04, 0xcd, 0x5f, 0x1c, 0x5c, 0x61, 0x7d, 0x87, 0x4b, 0x06, 0xc0, 0x6e,
621
-            0xa2, 0x62, 0xf2, 0x57, 0x64, 0x62, 0x16, 0xcf, 0x1a, 0xbb, 0x86, 0x9c, 0x3a, 0xb1,
622
-            0x74, 0x18, 0x62, 0x33, 0xff, 0xe4, 0x61, 0x8d, 0x23, 0xaa, 0xdf, 0x14, 0x9c, 0x79,
623
-            0x87, 0xd1, 0x35, 0x97, 0x01, 0x6a, 0xf0, 0xd1, 0xb0, 0xcc, 0x9f, 0x5f, 0x0f, 0x06,
624
-            0x6b, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x60, 0x30, 0x5e, 0x30, 0x0e, 0x06, 0x03,
625
-            0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x03, 0xb8, 0x30, 0x0c,
626
-            0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, 0x30, 0x1d,
627
-            0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x59, 0x2c, 0x9c, 0x42, 0x56,
628
-            0x6b, 0x56, 0x6f, 0xa9, 0xd9, 0x51, 0xd8, 0xe0, 0x58, 0x9d, 0x89, 0xfa, 0xa6, 0xbf,
629
-            0x41, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14,
630
-            0xfa, 0x0d, 0xd4, 0x11, 0x91, 0x1b, 0xe6, 0xb2, 0x4e, 0x1e, 0x06, 0x49, 0x94, 0x11,
631
-            0xdd, 0x63, 0x62, 0x07, 0x59, 0x64, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
632
-            0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x93, 0x8c, 0x71,
633
-            0xef, 0xa0, 0x1b, 0x9f, 0xc5, 0xa9, 0xcc, 0x2e, 0xec, 0x6a, 0x73, 0x99, 0xff, 0xa0,
634
-            0x7a, 0x79, 0x2b, 0x74, 0x72, 0xfc, 0xd5, 0xd7, 0x09, 0x46, 0xe2, 0x10, 0xc9, 0x57,
635
-            0x72, 0x26, 0xa8, 0xe9, 0xce, 0x3c, 0x6b, 0xb4, 0x55, 0x0f, 0xc1, 0x97, 0x40, 0x29,
636
-            0xf1, 0xdf, 0xa8, 0x6a, 0xe2, 0xcb, 0x74, 0x39, 0xf9, 0xec, 0x55, 0xb4, 0xb8, 0x9a,
637
-            0x98, 0xc5, 0x4b, 0x63, 0x97, 0x1a, 0xc5, 0x3d, 0x70, 0x85, 0x2c, 0xb3, 0x80, 0xde,
638
-            0x7a, 0xca, 0x6b, 0x36, 0xb9, 0x1d, 0x01, 0x83, 0x97, 0x12, 0x8a, 0xe0, 0x58, 0x52,
639
-            0x81, 0x44, 0xeb, 0x00, 0x76, 0xb8, 0x73, 0x06, 0x7e, 0x32, 0x48, 0x58, 0xf0, 0x8a,
640
-            0xba, 0xbe, 0x44, 0x16, 0x81, 0x90, 0x71, 0x23, 0x9f, 0x9d, 0x77, 0x84, 0x63, 0x10,
641
-            0x0f, 0x95, 0xb7, 0x9e, 0x29, 0xbd, 0xc2, 0x52, 0x0b, 0x42, 0xb1, 0x3b, 0x93,
642
-        ],
643
-    },
644
-    // APN-Win identity 00000A.
645
-    SigningIdentity {
646
-        p: [
647
-            0xe8, 0xc1, 0x04, 0xea, 0xfb, 0xd9, 0x6f, 0x57, 0x56, 0x3a, 0x59, 0xf5, 0x1a, 0x0f,
648
-            0x66, 0xaa, 0x23, 0x37, 0x53, 0x24, 0xbd, 0xb9, 0x0d, 0xe0, 0x3b, 0xf6, 0xb6, 0x04,
649
-            0x1a, 0xa6, 0xf2, 0x45, 0x99, 0xb7, 0x4d, 0x99, 0xfb, 0x0c, 0xd2, 0x4c, 0x1d, 0x0f,
650
-            0xd1, 0x32, 0x0e, 0xf3, 0x8b, 0x9b, 0x9b, 0xd6, 0xa7, 0x0c, 0x41, 0x37, 0xbc, 0xfc,
651
-            0x18, 0x12, 0x06, 0x2c, 0x1b, 0x01, 0x4a, 0xbd,
652
-        ],
653
-        q: [
654
-            0xe1, 0x69, 0xc8, 0x77, 0x52, 0xfd, 0x8e, 0x52, 0x69, 0x75, 0x29, 0xba, 0xc6, 0xef,
655
-            0x7b, 0x49, 0x68, 0x35, 0xd7, 0xea, 0xd5, 0x15, 0xa8, 0x16, 0xae, 0x64, 0xa3, 0xcf,
656
-            0xd8, 0xe9, 0xad, 0x90, 0x69, 0xc0, 0xfe, 0xdf, 0x68, 0x47, 0xfb, 0xf3, 0xfc, 0x29,
657
-            0xb1, 0x9b, 0x68, 0xfd, 0xc0, 0x14, 0x4f, 0x5e, 0xe8, 0xa6, 0xaf, 0xab, 0xed, 0xa5,
658
-            0xdf, 0xe6, 0x2a, 0x7e, 0xf9, 0x0b, 0x06, 0x3b,
659
-        ],
660
-        certificate: &[
661
-            0x30, 0x82, 0x02, 0xc5, 0x30, 0x82, 0x02, 0x2e, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02,
662
-            0x0d, 0x33, 0x33, 0xaf, 0x10, 0x10, 0x20, 0xaf, 0x00, 0x01, 0xaf, 0x00, 0x00, 0x10,
663
-            0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05,
664
-            0x00, 0x30, 0x7b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
665
-            0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x41,
666
-            0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06,
667
-            0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65,
668
-            0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75,
669
-            0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55,
670
-            0x04, 0x03, 0x13, 0x26, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x46, 0x61, 0x69, 0x72,
671
-            0x50, 0x6c, 0x61, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
672
-            0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
673
-            0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x31, 0x30, 0x32, 0x30, 0x30, 0x30, 0x30, 0x32,
674
-            0x30, 0x36, 0x5a, 0x17, 0x0d, 0x31, 0x35, 0x31, 0x30, 0x31, 0x39, 0x30, 0x30, 0x30,
675
-            0x32, 0x30, 0x36, 0x5a, 0x30, 0x68, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,
676
-            0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a,
677
-            0x13, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x17,
678
-            0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0e, 0x41, 0x70, 0x70, 0x6c, 0x65,
679
-            0x20, 0x46, 0x61, 0x69, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x31, 0x2b, 0x30, 0x29, 0x06,
680
-            0x03, 0x55, 0x04, 0x03, 0x13, 0x22, 0x41, 0x50, 0x4e, 0x2d, 0x57, 0x69, 0x6e, 0x2e,
681
-            0x33, 0x33, 0x33, 0x33, 0x41, 0x46, 0x31, 0x30, 0x31, 0x30, 0x32, 0x30, 0x41, 0x46,
682
-            0x30, 0x30, 0x30, 0x31, 0x41, 0x46, 0x30, 0x30, 0x30, 0x30, 0x31, 0x30, 0x30, 0x81,
683
-            0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
684
-            0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xcc,
685
-            0xf1, 0xd2, 0xc0, 0xd4, 0xc0, 0xa0, 0xc2, 0x7e, 0x00, 0xcb, 0xa6, 0xa2, 0xc5, 0x0f,
686
-            0x55, 0x85, 0xae, 0x5d, 0xa9, 0x5a, 0x4b, 0x63, 0xd4, 0x48, 0xb2, 0xb5, 0xeb, 0x48,
687
-            0xf6, 0x7e, 0x3d, 0xa3, 0x24, 0xa3, 0xf2, 0x19, 0xff, 0x61, 0x60, 0x06, 0xc8, 0x81,
688
-            0x12, 0x64, 0x31, 0xb5, 0xd0, 0x35, 0xce, 0x31, 0x53, 0x59, 0x41, 0x28, 0xe4, 0x41,
689
-            0x87, 0xb3, 0xb9, 0x36, 0x68, 0x53, 0xf7, 0x72, 0x9f, 0xcd, 0xa8, 0x0c, 0x7d, 0x4b,
690
-            0x1e, 0x42, 0x65, 0xcc, 0xc5, 0x21, 0x6b, 0xd4, 0x24, 0x2b, 0xfb, 0xec, 0x33, 0xff,
691
-            0x40, 0xf5, 0xe4, 0x33, 0xf7, 0x22, 0xf6, 0x79, 0xb7, 0x6e, 0xc9, 0xf7, 0x1b, 0xb2,
692
-            0x88, 0x0c, 0x2e, 0x1d, 0x7d, 0xd5, 0x10, 0xef, 0xef, 0xed, 0x05, 0x25, 0x0d, 0x99,
693
-            0x76, 0xfb, 0x19, 0x26, 0xd2, 0xd5, 0xa9, 0x6c, 0x29, 0xaa, 0x92, 0x4c, 0x2b, 0xa7,
694
-            0x8f, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x60, 0x30, 0x5e, 0x30, 0x0e, 0x06, 0x03,
695
-            0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x03, 0xb8, 0x30, 0x0c,
696
-            0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, 0x30, 0x1d,
697
-            0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x92, 0x6c, 0xf2, 0xef, 0x26,
698
-            0xb5, 0x1a, 0x38, 0x41, 0xe8, 0xba, 0xb8, 0x11, 0x0d, 0x58, 0x18, 0x51, 0x86, 0x66,
699
-            0xbb, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14,
700
-            0xfa, 0x0d, 0xd4, 0x11, 0x91, 0x1b, 0xe6, 0xb2, 0x4e, 0x1e, 0x06, 0x49, 0x94, 0x11,
701
-            0xdd, 0x63, 0x62, 0x07, 0x59, 0x64, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
702
-            0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x44, 0x47, 0xd1,
703
-            0x2f, 0x41, 0x3c, 0x06, 0x8d, 0x07, 0xa9, 0x7c, 0xa7, 0xaa, 0x35, 0x1c, 0x2e, 0xdf,
704
-            0x94, 0x44, 0xaa, 0x31, 0x47, 0xba, 0xf8, 0x32, 0x82, 0xef, 0xf5, 0xa1, 0xe9, 0x6e,
705
-            0xd2, 0x3f, 0x2f, 0x40, 0x3f, 0x3a, 0x53, 0xd1, 0x7e, 0xce, 0x0c, 0x2b, 0x4c, 0xb3,
706
-            0xfa, 0x07, 0x41, 0x9d, 0x22, 0xf3, 0x6a, 0x79, 0x90, 0x8c, 0xa9, 0x7c, 0xee, 0x58,
707
-            0x0b, 0x16, 0x0d, 0x36, 0x8c, 0x1c, 0x2c, 0x5e, 0x56, 0xc4, 0x5d, 0x5a, 0xff, 0x71,
708
-            0xe5, 0x0a, 0xe8, 0x6e, 0x8d, 0x98, 0x85, 0x55, 0xb7, 0xaf, 0x72, 0x3d, 0xec, 0xa5,
709
-            0xea, 0x2c, 0xfb, 0x90, 0x01, 0x75, 0x4f, 0x46, 0x10, 0x88, 0x91, 0x71, 0xf5, 0xd8,
710
-            0xe8, 0x7c, 0xd4, 0x69, 0x7f, 0x04, 0x39, 0xec, 0x65, 0x1a, 0x7c, 0x3c, 0xb0, 0xc0,
711
-            0x52, 0xf9, 0x84, 0x05, 0xf9, 0x1b, 0x47, 0xc6, 0xd2, 0x38, 0xf3, 0x6e, 0x3b,
712
-        ],
713
-    },
714
-];
715
-
716
-// FairPlay intermediate and root certificates, concatenated DER.
717
-pub(super) const CERTIFICATE_AUTHORITY_CHAIN: &[u8] = &[
718
-    0x30, 0x82, 0x03, 0x71, 0x30, 0x82, 0x02, 0x59, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x01, 0x11,
719
-    0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30,
720
-    0x62, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13,
721
-    0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49,
722
-    0x6e, 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x70,
723
-    0x70, 0x6c, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
724
-    0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x16, 0x30, 0x14, 0x06,
725
-    0x03, 0x55, 0x04, 0x03, 0x13, 0x0d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x52, 0x6f, 0x6f, 0x74,
726
-    0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x37, 0x30, 0x32, 0x31, 0x34, 0x31, 0x39, 0x32,
727
-    0x30, 0x34, 0x31, 0x5a, 0x17, 0x0d, 0x31, 0x32, 0x30, 0x32, 0x31, 0x34, 0x31, 0x39, 0x32, 0x30,
728
-    0x34, 0x31, 0x5a, 0x30, 0x7b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
729
-    0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x41, 0x70, 0x70,
730
-    0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06, 0x03, 0x55, 0x04, 0x0b,
731
-    0x13, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
732
-    0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31,
733
-    0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x26, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20,
734
-    0x46, 0x61, 0x69, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
735
-    0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
736
-    0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
737
-    0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xb2, 0x67, 0x3c,
738
-    0x5d, 0x2a, 0xe7, 0x8f, 0xf2, 0x77, 0xcf, 0xef, 0x31, 0xbc, 0xd1, 0x04, 0xfd, 0xea, 0x9f, 0xd0,
739
-    0x86, 0x29, 0x90, 0x0a, 0xa3, 0xff, 0x64, 0x4a, 0xef, 0x69, 0xf4, 0x0a, 0xb9, 0xef, 0xc4, 0xc4,
740
-    0x63, 0xca, 0x3a, 0x2d, 0x21, 0x3d, 0x52, 0x8c, 0x23, 0x89, 0x29, 0xaa, 0xdb, 0x17, 0xdc, 0xcb,
741
-    0x28, 0xc4, 0x69, 0xcd, 0x72, 0x24, 0xc2, 0x10, 0xc1, 0xf4, 0x78, 0x1d, 0x31, 0x16, 0xc5, 0xe6,
742
-    0xea, 0x19, 0x1d, 0x2a, 0x33, 0xbe, 0x80, 0xab, 0xdc, 0x11, 0x48, 0x06, 0x2a, 0x1f, 0x0e, 0x61,
743
-    0x81, 0xcd, 0x79, 0x9a, 0x5d, 0x12, 0xf4, 0x84, 0x90, 0xc8, 0x7c, 0xf6, 0x78, 0x9b, 0x52, 0xf8,
744
-    0xfa, 0xf1, 0x88, 0x6e, 0x10, 0x72, 0xf8, 0x5d, 0xcb, 0x88, 0xec, 0xb6, 0x55, 0x14, 0x97, 0xa4,
745
-    0x4d, 0x0b, 0xc1, 0x4f, 0x27, 0x67, 0x99, 0xa6, 0xa4, 0xb3, 0xd7, 0xda, 0xad, 0x02, 0x03, 0x01,
746
-    0x00, 0x01, 0xa3, 0x81, 0x9c, 0x30, 0x81, 0x99, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01,
747
-    0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01,
748
-    0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e,
749
-    0x04, 0x16, 0x04, 0x14, 0xfa, 0x0d, 0xd4, 0x11, 0x91, 0x1b, 0xe6, 0xb2, 0x4e, 0x1e, 0x06, 0x49,
750
-    0x94, 0x11, 0xdd, 0x63, 0x62, 0x07, 0x59, 0x64, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04,
751
-    0x18, 0x30, 0x16, 0x80, 0x14, 0x2b, 0xd0, 0x69, 0x47, 0x94, 0x76, 0x09, 0xfe, 0xf4, 0x6b, 0x8d,
752
-    0x2e, 0x40, 0xa6, 0xf7, 0x47, 0x4d, 0x7f, 0x08, 0x5e, 0x30, 0x36, 0x06, 0x03, 0x55, 0x1d, 0x1f,
753
-    0x04, 0x2f, 0x30, 0x2d, 0x30, 0x2b, 0xa0, 0x29, 0xa0, 0x27, 0x86, 0x25, 0x68, 0x74, 0x74, 0x70,
754
-    0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d,
755
-    0x2f, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x63, 0x61, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x72,
756
-    0x6c, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00,
757
-    0x03, 0x82, 0x01, 0x01, 0x00, 0xc0, 0xa0, 0x73, 0xf8, 0x1d, 0xea, 0x1c, 0xd1, 0xcd, 0xc5, 0x86,
758
-    0x75, 0xa4, 0xbb, 0xeb, 0x40, 0xc5, 0x6a, 0x2d, 0x0c, 0xfe, 0x5b, 0xfc, 0x6e, 0xc1, 0x5b, 0xd7,
759
-    0x48, 0x7d, 0x40, 0xa9, 0x61, 0x2d, 0x4b, 0x37, 0x70, 0x38, 0xef, 0x06, 0x91, 0x4b, 0xaf, 0x11,
760
-    0xc2, 0x1f, 0x95, 0xee, 0x88, 0x33, 0x6f, 0x5f, 0x72, 0xea, 0xf6, 0xd5, 0x76, 0xb5, 0x57, 0x58,
761
-    0x71, 0xf0, 0x3e, 0x10, 0xc3, 0xd5, 0x2e, 0xbb, 0x2f, 0xa6, 0x3a, 0x73, 0xc2, 0x32, 0x65, 0x0a,
762
-    0x56, 0x04, 0x16, 0x19, 0x98, 0x4d, 0x0b, 0x78, 0x6d, 0xd0, 0xa3, 0x74, 0x64, 0x98, 0x54, 0xf4,
763
-    0xa7, 0xd7, 0x1d, 0xa2, 0xff, 0x2a, 0xc3, 0x79, 0x00, 0xb2, 0x99, 0xe7, 0xe7, 0xbb, 0xd5, 0x06,
764
-    0xa2, 0xeb, 0x49, 0x33, 0x69, 0x67, 0x41, 0x01, 0x99, 0xad, 0x68, 0xb0, 0xd3, 0x7a, 0xf4, 0x95,
765
-    0xe0, 0xfd, 0x24, 0x88, 0x2a, 0x10, 0xe7, 0xa3, 0x68, 0xff, 0xad, 0x7b, 0xfa, 0xd9, 0xba, 0xf1,
766
-    0xa5, 0x7f, 0xca, 0x93, 0xa2, 0xce, 0x03, 0x37, 0x03, 0x66, 0x85, 0x93, 0x05, 0x1b, 0x31, 0xf6,
767
-    0x75, 0x82, 0x93, 0x2f, 0xd3, 0xf0, 0xda, 0x39, 0x37, 0x3d, 0x5f, 0xfe, 0xba, 0xcd, 0x9a, 0x70,
768
-    0xc0, 0x06, 0x8b, 0x22, 0xee, 0xa9, 0xce, 0x04, 0x6e, 0x24, 0x69, 0x3b, 0x16, 0x52, 0xa5, 0xc0,
769
-    0xf2, 0xc0, 0xae, 0x43, 0x70, 0x84, 0xbb, 0x21, 0x91, 0x43, 0xcb, 0xbb, 0xb7, 0xea, 0x5b, 0xba,
770
-    0x93, 0xe0, 0xb7, 0x77, 0x89, 0xef, 0x4d, 0x56, 0x04, 0x33, 0x5d, 0xce, 0x5c, 0x59, 0x31, 0xa7,
771
-    0xd7, 0x3b, 0x45, 0x56, 0x11, 0xcd, 0xae, 0xcb, 0x9b, 0x0e, 0xa0, 0xcf, 0xdc, 0x93, 0xa8, 0xca,
772
-    0xc5, 0x58, 0x78, 0x00, 0x05, 0xd9, 0x99, 0xab, 0xd6, 0x5e, 0x87, 0xea, 0x92, 0x73, 0x34, 0x54,
773
-    0xa3, 0x93, 0x18, 0xa4, 0x83, 0x30, 0x82, 0x04, 0xbb, 0x30, 0x82, 0x03, 0xa3, 0xa0, 0x03, 0x02,
774
-    0x01, 0x02, 0x02, 0x01, 0x02, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
775
-    0x01, 0x05, 0x05, 0x00, 0x30, 0x62, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
776
-    0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x41, 0x70,
777
-    0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06, 0x03, 0x55, 0x04,
778
-    0x0b, 0x13, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
779
-    0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
780
-    0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0d, 0x41, 0x70, 0x70, 0x6c, 0x65,
781
-    0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x30, 0x34,
782
-    0x32, 0x35, 0x32, 0x31, 0x34, 0x30, 0x33, 0x36, 0x5a, 0x17, 0x0d, 0x33, 0x35, 0x30, 0x32, 0x30,
783
-    0x39, 0x32, 0x31, 0x34, 0x30, 0x33, 0x36, 0x5a, 0x30, 0x62, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03,
784
-    0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a,
785
-    0x13, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24,
786
-    0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65, 0x72,
787
-    0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f,
788
-    0x72, 0x69, 0x74, 0x79, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0d, 0x41,
789
-    0x70, 0x70, 0x6c, 0x65, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22,
790
-    0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03,
791
-    0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xe4, 0x91, 0xa9,
792
-    0x09, 0x1f, 0x91, 0xdb, 0x1e, 0x47, 0x50, 0xeb, 0x05, 0xed, 0x5e, 0x79, 0x84, 0x2d, 0xeb, 0x36,
793
-    0xa2, 0x57, 0x4c, 0x55, 0xec, 0x8b, 0x19, 0x89, 0xde, 0xf9, 0x4b, 0x6c, 0xf5, 0x07, 0xab, 0x22,
794
-    0x30, 0x02, 0xe8, 0x18, 0x3e, 0xf8, 0x50, 0x09, 0xd3, 0x7f, 0x41, 0xa8, 0x98, 0xf9, 0xd1, 0xca,
795
-    0x66, 0x9c, 0x24, 0x6b, 0x11, 0xd0, 0xa3, 0xbb, 0xe4, 0x1b, 0x2a, 0xc3, 0x1f, 0x95, 0x9e, 0x7a,
796
-    0x0c, 0xa4, 0x47, 0x8b, 0x5b, 0xd4, 0x16, 0x37, 0x33, 0xcb, 0xc4, 0x0f, 0x4d, 0xce, 0x14, 0x69,
797
-    0xd1, 0xc9, 0x19, 0x72, 0xf5, 0x5d, 0x0e, 0xd5, 0x7f, 0x5f, 0x9b, 0xf2, 0x25, 0x03, 0xba, 0x55,
798
-    0x8f, 0x4d, 0x5d, 0x0d, 0xf1, 0x64, 0x35, 0x23, 0x15, 0x4b, 0x15, 0x59, 0x1d, 0xb3, 0x94, 0xf7,
799
-    0xf6, 0x9c, 0x9e, 0xcf, 0x50, 0xba, 0xc1, 0x58, 0x50, 0x67, 0x8f, 0x08, 0xb4, 0x20, 0xf7, 0xcb,
800
-    0xac, 0x2c, 0x20, 0x6f, 0x70, 0xb6, 0x3f, 0x01, 0x30, 0x8c, 0xb7, 0x43, 0xcf, 0x0f, 0x9d, 0x3d,
801
-    0xf3, 0x2b, 0x49, 0x28, 0x1a, 0xc8, 0xfe, 0xce, 0xb5, 0xb9, 0x0e, 0xd9, 0x5e, 0x1c, 0xd6, 0xcb,
802
-    0x3d, 0xb5, 0x3a, 0xad, 0xf4, 0x0f, 0x0e, 0x00, 0x92, 0x0b, 0xb1, 0x21, 0x16, 0x2e, 0x74, 0xd5,
803
-    0x3c, 0x0d, 0xdb, 0x62, 0x16, 0xab, 0xa3, 0x71, 0x92, 0x47, 0x53, 0x55, 0xc1, 0xaf, 0x2f, 0x41,
804
-    0xb3, 0xf8, 0xfb, 0xe3, 0x70, 0xcd, 0xe6, 0xa3, 0x4c, 0x45, 0x7e, 0x1f, 0x4c, 0x6b, 0x50, 0x96,
805
-    0x41, 0x89, 0xc4, 0x74, 0x62, 0x0b, 0x10, 0x83, 0x41, 0x87, 0x33, 0x8a, 0x81, 0xb1, 0x30, 0x58,
806
-    0xec, 0x5a, 0x04, 0x32, 0x8c, 0x68, 0xb3, 0x8f, 0x1d, 0xde, 0x65, 0x73, 0xff, 0x67, 0x5e, 0x65,
807
-    0xbc, 0x49, 0xd8, 0x76, 0x9f, 0x33, 0x14, 0x65, 0xa1, 0x77, 0x94, 0xc9, 0x2d, 0x02, 0x03, 0x01,
808
-    0x00, 0x01, 0xa3, 0x82, 0x01, 0x7a, 0x30, 0x82, 0x01, 0x76, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d,
809
-    0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d,
810
-    0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x1d, 0x06, 0x03, 0x55,
811
-    0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x2b, 0xd0, 0x69, 0x47, 0x94, 0x76, 0x09, 0xfe, 0xf4, 0x6b,
812
-    0x8d, 0x2e, 0x40, 0xa6, 0xf7, 0x47, 0x4d, 0x7f, 0x08, 0x5e, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d,
813
-    0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x2b, 0xd0, 0x69, 0x47, 0x94, 0x76, 0x09, 0xfe, 0xf4,
814
-    0x6b, 0x8d, 0x2e, 0x40, 0xa6, 0xf7, 0x47, 0x4d, 0x7f, 0x08, 0x5e, 0x30, 0x82, 0x01, 0x11, 0x06,
815
-    0x03, 0x55, 0x1d, 0x20, 0x04, 0x82, 0x01, 0x08, 0x30, 0x82, 0x01, 0x04, 0x30, 0x82, 0x01, 0x00,
816
-    0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x63, 0x64, 0x05, 0x01, 0x30, 0x81, 0xf2, 0x30, 0x2a,
817
-    0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1e, 0x68, 0x74, 0x74, 0x70,
818
-    0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f,
819
-    0x6d, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x63, 0x61, 0x2f, 0x30, 0x81, 0xc3, 0x06, 0x08, 0x2b,
820
-    0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x02, 0x30, 0x81, 0xb6, 0x1a, 0x81, 0xb3, 0x52, 0x65, 0x6c,
821
-    0x69, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x63, 0x65,
822
-    0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x62, 0x79, 0x20, 0x61, 0x6e, 0x79,
823
-    0x20, 0x70, 0x61, 0x72, 0x74, 0x79, 0x20, 0x61, 0x73, 0x73, 0x75, 0x6d, 0x65, 0x73, 0x20, 0x61,
824
-    0x63, 0x63, 0x65, 0x70, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65,
825
-    0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x62, 0x6c, 0x65,
826
-    0x20, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x20,
827
-    0x61, 0x6e, 0x64, 0x20, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6f,
828
-    0x66, 0x20, 0x75, 0x73, 0x65, 0x2c, 0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
829
-    0x74, 0x65, 0x20, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x63, 0x65,
830
-    0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x72, 0x61, 0x63,
831
-    0x74, 0x69, 0x63, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2e,
832
-    0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03,
833
-    0x82, 0x01, 0x01, 0x00, 0x5c, 0x36, 0x99, 0x4c, 0x2d, 0x78, 0xb7, 0xed, 0x8c, 0x9b, 0xdc, 0xf3,
834
-    0x77, 0x9b, 0xf2, 0x76, 0xd2, 0x77, 0x30, 0x4f, 0xc1, 0x1f, 0x85, 0x83, 0x85, 0x1b, 0x99, 0x3d,
835
-    0x47, 0x37, 0xf2, 0xa9, 0x9b, 0x40, 0x8e, 0x2c, 0xd4, 0xb1, 0x90, 0x12, 0xd8, 0xbe, 0xf4, 0x73,
836
-    0x9b, 0xee, 0xd2, 0x64, 0x0f, 0xcb, 0x79, 0x4f, 0x34, 0xd8, 0xa2, 0x3e, 0xf9, 0x78, 0xff, 0x6b,
837
-    0xc8, 0x07, 0xec, 0x7d, 0x39, 0x83, 0x8b, 0x53, 0x20, 0xd3, 0x38, 0xc4, 0xb1, 0xbf, 0x9a, 0x4f,
838
-    0x0a, 0x6b, 0xff, 0x2b, 0xfc, 0x59, 0xa7, 0x05, 0x09, 0x7c, 0x17, 0x40, 0x56, 0x11, 0x1e, 0x74,
839
-    0xd3, 0xb7, 0x8b, 0x23, 0x3b, 0x47, 0xa3, 0xd5, 0x6f, 0x24, 0xe2, 0xeb, 0xd1, 0xb7, 0x70, 0xdf,
840
-    0x0f, 0x45, 0xe1, 0x27, 0xca, 0xf1, 0x6d, 0x78, 0xed, 0xe7, 0xb5, 0x17, 0x17, 0xa8, 0xdc, 0x7e,
841
-    0x22, 0x35, 0xca, 0x25, 0xd5, 0xd9, 0x0f, 0xd6, 0x6b, 0xd4, 0xa2, 0x24, 0x23, 0x11, 0xf7, 0xa1,
842
-    0xac, 0x8f, 0x73, 0x81, 0x60, 0xc6, 0x1b, 0x5b, 0x09, 0x2f, 0x92, 0xb2, 0xf8, 0x44, 0x48, 0xf0,
843
-    0x60, 0x38, 0x9e, 0x15, 0xf5, 0x3d, 0x26, 0x67, 0x20, 0x8a, 0x33, 0x6a, 0xf7, 0x0d, 0x82, 0xcf,
844
-    0xde, 0xeb, 0xa3, 0x2f, 0xf9, 0x53, 0x6a, 0x5b, 0x64, 0xc0, 0x63, 0x33, 0x77, 0xf7, 0x3a, 0x07,
845
-    0x2c, 0x56, 0xeb, 0xda, 0x0f, 0x21, 0x0e, 0xda, 0xba, 0x73, 0x19, 0x4f, 0xb5, 0xd9, 0x36, 0x7f,
846
-    0xc1, 0x87, 0x55, 0xd9, 0xa7, 0x99, 0xb9, 0x32, 0x42, 0xfb, 0xd8, 0xd5, 0x71, 0x9e, 0x7e, 0xa1,
847
-    0x52, 0xb7, 0x1b, 0xbd, 0x93, 0x42, 0x24, 0x12, 0x2a, 0xc7, 0x0f, 0x1d, 0xb6, 0x4d, 0x9c, 0x5e,
848
-    0x63, 0xc8, 0x4b, 0x80, 0x17, 0x50, 0xaa, 0x8a, 0xd5, 0xda, 0xe4, 0xfc, 0xd0, 0x09, 0x07, 0x37,
849
-    0xb0, 0x75, 0x75, 0x21,
850
-];
... ...
@@ -0,0 +1,3 @@
1
+/target/
2
+/Cargo.lock
3
+/tests/
... ...
@@ -2,5 +2,11 @@
2 2
 name = "fairplay"
3 3
 version = "0.1.0"
4 4
 edition = "2024"
5
+description = "FairPlay page-key derivation and in-place encrypted region decryption"
5 6
 
6 7
 [dependencies]
8
+aes = { version = "0.9.1", features = ["zeroize"] }
9
+cbc = { version = "0.2", features = ["zeroize"] }
10
+md-5 = "0.10.6"
11
+thiserror = "2"
12
+zeroize = "1"
... ...
@@ -0,0 +1,59 @@
1
+# fairplay
2
+
3
+Clean Rust port of https://github.com/EthanArbuckle/fairplay-decrypt.
4
+
5
+A Rust library for the recovered FairPlay page-key algorithm and AES-128-CBC
6
+decryption of protected executable regions. It has no IPA, bundle, filesystem,
7
+Mach-O or device dependencies. The caller supplies the region and metadata.
8
+
9
+```rust
10
+use fairplay::{Decryptor, PageRecords, PAGE_SIZE};
11
+
12
+fn decrypt_selected_region(
13
+    credential: &[u8; 16],
14
+    sinf: &[u8],
15
+    supf: &[u8],
16
+    original_file_offset: u64,
17
+    encrypted_region: &mut [u8],
18
+) -> Result<usize, Box<dyn std::error::Error>> {
19
+    let decoder = Decryptor::from_sinf(credential, sinf)?;
20
+    let records = PageRecords::from_supf(supf, 0x0100000c, 0)?;
21
+    let first_page = u32::try_from(original_file_offset / PAGE_SIZE as u64)?;
22
+    Ok(decoder.decrypt_region_in_place(encrypted_region, first_page, records)?)
23
+}
24
+```
25
+
26
+Cache a `Decryptor` for binaries sharing a SINF. `from_sinf_fields` accepts an
27
+already parsed `SinfFields { name, iviv, private }`; `from_work_key` accepts the
28
+recovered 16-byte masked working key directly. A working key differs from the
29
+saved credential and from an individual page AES key.
30
+
31
+`PageRecords::from_bytes` borrows flat 32-byte records from an existing SUPF
32
+parser. `from_supf` provides optional metadata parsing and selects an exact CPU
33
+type/subtype; it supports SUPF 3/5 and tags 507/510/612. SINF decoding handles
34
+both 440-byte and 448-byte private records. No code parses the executable.
35
+
36
+## Caller responsibilities
37
+
38
+- Pass only the protected region, containing a nonzero whole number of
39
+  4096-byte pages. Decryption resets CBC with each record's IV and removes no
40
+  padding. Extra SUPF records are allowed.
41
+- Compute the first absolute page index from the original complete executable
42
+  offset. For a FAT binary this includes the architecture slice's file base:
43
+  `(slice_base + cryptoff) / 4096`. Do not reset it to zero for a section or slice.
44
+- Match the SUPF architecture and record range to the selected region. Records
45
+  start at the beginning of the protected region. For a later subregion, advance
46
+  both `first_page_index` and the record range via `records.slice(start..end)`.
47
+- Clear the executable's encryption flag only after decryption succeeds, and
48
+  handle bundle metadata, signing and output publication in the consuming code.
49
+
50
+For page-at-a-time or parallel processing, `PageRecords::get` provides a
51
+`PageRecord` for `decrypt_page_in_place`. `derive_page_key` is available when
52
+another component owns CBC decryption. The decoder can be shared across threads.
53
+
54
+Region decryption allocates no buffers. Size, record count and page-index
55
+validation happens before mutation. Those checks do not authenticate page
56
+ciphertext: the recovered scheme uses CBC without an authentication tag. The
57
+SINF private record's markers detect credentials that fail its decoding check.
58
+Secrets are omitted from Debug and temporary SINF keys/plaintext and AES key
59
+schedules use zeroization.
... ...
@@ -0,0 +1,118 @@
1
+use aes::cipher::{BlockModeDecrypt, KeyIvInit, block_padding::NoPadding};
2
+use md5::{Digest, Md5};
3
+use zeroize::Zeroizing;
4
+
5
+use crate::{Error, SinfFields};
6
+
7
+pub(crate) const WORK_MASK: [u8; 16] = [
8
+    0xc7, 0x62, 0x61, 0x10, 0xce, 0xcd, 0x15, 0x96, 0x3d, 0x85, 0x0f, 0x66, 0x05, 0xf1, 0x1c, 0x4b,
9
+];
10
+const ROUND_WORDS: [u32; 4] = [
11
+    0x6ee6b74f ^ 0x06b2cb61,
12
+    0x78b72abf ^ 0x06b2cb61,
13
+    0xd227c8ea ^ 0x06b2cb61,
14
+    0x0c0081bc ^ 0x06b2cb61,
15
+];
16
+const FINAL_WORDS: [u32; 4] = [0x5b7198c7, 0xeb5de22c, 0x0f8aa8fa, 0xf6e1bb3f];
17
+
18
+/// The caller guarantees complete AES blocks; no padding is added or removed.
19
+pub(crate) fn decrypt_cbc(key: &[u8; 16], iv: &[u8; 16], data: &mut [u8]) {
20
+    cbc::Decryptor::<aes::Aes128>::new(key.into(), iv.into())
21
+        .decrypt_padded::<NoPadding>(data)
22
+        .expect("validated whole AES blocks");
23
+}
24
+
25
+pub(crate) fn derive_work_key(
26
+    credential: &[u8; 16],
27
+    fields: SinfFields<'_>,
28
+) -> Result<[u8; 16], Error> {
29
+    let private = match fields.private.len() {
30
+        448 => fields.private,
31
+        440 if fields.private[432..] == [0; 8] => &fields.private[..432],
32
+        440 => return Err(Error::InvalidSinf("private record trailer is not zero")),
33
+        _ => {
34
+            return Err(Error::InvalidSinf(
35
+                "private record must be 440 or 448 bytes",
36
+            ));
37
+        }
38
+    };
39
+    let iviv: &[u8; 16] = fields
40
+        .iviv
41
+        .try_into()
42
+        .map_err(|_| Error::InvalidSinf("iviv must contain 16 bytes"))?;
43
+    let name_end = fields
44
+        .name
45
+        .iter()
46
+        .position(|byte| *byte == 0)
47
+        .unwrap_or(fields.name.len());
48
+    let mut hash = Md5::new();
49
+    hash.update(&fields.name[..name_end]);
50
+    hash.update(iviv);
51
+    let iv: [u8; 16] = hash.finalize().into();
52
+    let mut key = Zeroizing::new(*credential);
53
+    for byte in key.iter_mut() {
54
+        *byte ^= b'0';
55
+    }
56
+    let mut clear = Zeroizing::new(private.to_vec());
57
+    decrypt_cbc(&key, &iv, &mut clear);
58
+    if &clear[..4] != b"itun" || &clear[20..24] != b"key " || &clear[44..48] != b"iviv" {
59
+        return Err(Error::InvalidCredential);
60
+    }
61
+    Ok(std::array::from_fn(|index| {
62
+        clear[24 + index] ^ WORK_MASK[index]
63
+    }))
64
+}
65
+
66
+fn square_words(sums: [u32; 4]) -> [u32; 4] {
67
+    // Each sum has at most 17 bits. Multiplication wraps, but its carry
68
+    // correction is XORed back in; omitting it changes the recovered network.
69
+    std::array::from_fn(|i| sums[i].wrapping_mul(sums[i]) ^ (sums[i] >> 16) ^ ROUND_WORDS[i])
70
+}
71
+
72
+/// Four corrected-square rounds, folded 64-bit squares, then feedforward.
73
+/// Byte order is big-endian halfwords; packed round words are low half first.
74
+pub(crate) fn finish(input: &[u8; 16]) -> [u8; 16] {
75
+    let initial: [u32; 8] =
76
+        std::array::from_fn(|i| u32::from(u16::from_be_bytes([input[2 * i], input[2 * i + 1]])));
77
+    let [a, b, c, d] = square_words([
78
+        initial[0] + initial[1],
79
+        initial[2] + initial[3],
80
+        initial[4] + initial[5],
81
+        initial[6] + initial[7],
82
+    ]);
83
+    let [a, b, c, d] = square_words([
84
+        (b & 65535) + (a >> 16),
85
+        (a & 65535) + (b >> 16),
86
+        (c & 65535) + (d >> 16),
87
+        (d & 65535) + (c >> 16),
88
+    ]);
89
+    let [a, b, c, d] = square_words([
90
+        (b & 65535) + (a & 65535),
91
+        (c & 65535) + (a >> 16),
92
+        (d & 65535) + (b >> 16),
93
+        (d >> 16) + (c >> 16),
94
+    ]);
95
+    let [a, b, c, d] = square_words([
96
+        (a >> 16) + (b & 65535),
97
+        (c & 65535) + (a & 65535),
98
+        (d >> 16) + (b >> 16),
99
+        (d & 65535) + (c >> 16),
100
+    ]);
101
+    // Wrap before squaring; retain all 64 bits of each final square.
102
+    let sums = [
103
+        a.wrapping_add(b),
104
+        ((a & 65535) + (c & 65535)).wrapping_add(((b & 65535) + (d & 65535)) << 16),
105
+        ((a & 65535) + (c >> 16)).wrapping_add(((b >> 16) + (d >> 16)) << 16),
106
+        c.wrapping_add(d),
107
+    ];
108
+    let mut output = [0; 16];
109
+    for (i, sum) in sums.into_iter().enumerate() {
110
+        let square = u64::from(sum) * u64::from(sum);
111
+        let folded = square as u32 ^ (square >> 32) as u32 ^ FINAL_WORDS[i];
112
+        let low = (initial[2 * i] as u16 ^ folded as u16).to_be_bytes();
113
+        let high = (initial[2 * i + 1] as u16 ^ (folded >> 16) as u16).to_be_bytes();
114
+        output[4 * i..4 * i + 2].copy_from_slice(&low);
115
+        output[4 * i + 2..4 * i + 4].copy_from_slice(&high);
116
+    }
117
+    output
118
+}
... ...
@@ -1 +1,150 @@
1
+//! FairPlay page-key derivation and in-place decryption of selected regions.
2
+//!
3
+//! The caller owns archive traversal, executable parsing, selecting the protected
4
+//! region and clearing its encryption flag after successful decryption. Page
5
+//! indices refer to the original complete executable, including any FAT prefix.
6
+//! See [`Decryptor`] and [`PageRecords`] for the integration boundary.
7
+
8
+#![doc = include_str!("../README.md")]
9
+
10
+mod crypto;
11
+mod metadata;
12
+
13
+use aes::Aes128;
14
+use aes::cipher::{BlockCipherEncrypt, KeyInit};
15
+use zeroize::Zeroizing;
16
+
17
+pub use metadata::{PageRecord, PageRecords, SinfFields};
18
+
19
+/// Number of bytes independently encrypted with each SUPF page record.
20
+pub const PAGE_SIZE: usize = 4096;
21
+
22
+/// Errors detected before a region is modified.
23
+#[derive(Debug, thiserror::Error, PartialEq, Eq)]
24
+pub enum Error {
25
+    #[error("invalid SINF: {0}")]
26
+    InvalidSinf(&'static str),
27
+    #[error("credential does not decode this SINF private record")]
28
+    InvalidCredential,
29
+    #[error("invalid SUPF: {0}")]
30
+    InvalidSupf(&'static str),
31
+    #[error("SUPF does not contain CPU {cpu_type:#x}, subtype {cpu_subtype:#x}")]
32
+    ArchitectureNotFound { cpu_type: u32, cpu_subtype: u32 },
33
+    #[error("encrypted region must contain a nonzero whole number of 4096-byte pages")]
34
+    InvalidRegionLength,
35
+    #[error("need {required} SUPF page records, found {available}")]
36
+    InsufficientRecords { required: usize, available: usize },
37
+    #[error("absolute page indices exceed the 32-bit key derivation range")]
38
+    PageIndexOverflow,
39
+}
40
+
41
+/// A cached AES key schedule shared by all pages using the same SINF.
42
+///
43
+/// Construct from a saved 16-byte credential and SINF, or from an already
44
+/// recovered working key. No device calls, filesystem access or executable
45
+/// parsing are performed. This type intentionally does not expose keys in Debug.
46
+pub struct Decryptor {
47
+    cipher: Aes128,
48
+}
49
+
50
+impl Decryptor {
51
+    /// Decode the SINF private record and cache the page-derivation key schedule.
52
+    pub fn from_sinf(credential: &[u8; 16], sinf: &[u8]) -> Result<Self, Error> {
53
+        Self::from_sinf_fields(credential, SinfFields::parse(sinf)?)
54
+    }
55
+
56
+    /// Accept fields already extracted by the caller's SINF parser.
57
+    pub fn from_sinf_fields(credential: &[u8; 16], fields: SinfFields<'_>) -> Result<Self, Error> {
58
+        let work = Zeroizing::new(crypto::derive_work_key(credential, fields)?);
59
+        Ok(Self::from_work_key(&work))
60
+    }
61
+
62
+    /// Use the 16-byte working key returned by the recovered SINF algorithm.
63
+    ///
64
+    /// This is the masked working key, not the credential or a page AES key.
65
+    pub fn from_work_key(work: &[u8; 16]) -> Self {
66
+        let mut key = Zeroizing::new(*work);
67
+        for (byte, mask) in key.iter_mut().zip(crypto::WORK_MASK) {
68
+            *byte ^= mask;
69
+        }
70
+        Self {
71
+            cipher: Aes128::new((&*key).into()),
72
+        }
73
+    }
74
+
75
+    /// Derive a page AES key from its wrapped SUPF key and absolute page index.
76
+    pub fn derive_page_key(&self, wrapped: &[u8; 16], absolute_page_index: u32) -> [u8; 16] {
77
+        let offset = (u64::from(absolute_page_index) << 12).to_be_bytes();
78
+        // The recovered context masks cancel exactly:
79
+        // 3e4a45b664eba141 ^ 2d43fbf6ed1b8833 ^ 1309be4089f02972 == 0.
80
+        let mut blocks = [aes::cipher::Block::<Aes128>::default(); 3];
81
+        blocks[0][..8].copy_from_slice(&wrapped[8..]);
82
+        blocks[0][8..].copy_from_slice(&offset);
83
+        blocks[1].copy_from_slice(wrapped);
84
+        blocks[2][..8].copy_from_slice(&offset);
85
+        blocks[2][8..].copy_from_slice(&wrapped[..8]);
86
+        self.cipher.encrypt_blocks(&mut blocks);
87
+        let mut state = [0; 16];
88
+        for block in blocks {
89
+            for (byte, input) in state.iter_mut().zip(block) {
90
+                *byte ^= input;
91
+            }
92
+            state = crypto::finish(&state);
93
+        }
94
+        state
95
+    }
96
+
97
+    /// Decrypt one complete page in place; CBC restarts with the record's IV.
98
+    ///
99
+    /// `absolute_page_index` is `original_file_offset / PAGE_SIZE`, not the
100
+    /// page's position within a sliced region or within a FAT architecture.
101
+    pub fn decrypt_page_in_place(
102
+        &self,
103
+        page: &mut [u8; PAGE_SIZE],
104
+        absolute_page_index: u32,
105
+        record: PageRecord<'_>,
106
+    ) {
107
+        let key = Zeroizing::new(self.derive_page_key(record.wrapped_key(), absolute_page_index));
108
+        crypto::decrypt_cbc(&key, record.iv(), page);
109
+    }
110
+
111
+    /// Decrypt a caller-selected protected region without allocating a copy.
112
+    ///
113
+    /// `records` must start at the record for the first supplied page. For a
114
+    /// subregion use [`PageRecords::slice`]. Extra records are allowed. Every
115
+    /// size and index check completes before any byte is modified. Returns the
116
+    /// number of decrypted pages; headers and encryption flags are caller-owned.
117
+    pub fn decrypt_region_in_place(
118
+        &self,
119
+        region: &mut [u8],
120
+        first_page_index: u32,
121
+        records: PageRecords<'_>,
122
+    ) -> Result<usize, Error> {
123
+        if region.is_empty() || !region.len().is_multiple_of(PAGE_SIZE) {
124
+            return Err(Error::InvalidRegionLength);
125
+        }
126
+        let count = region.len() / PAGE_SIZE;
127
+        if records.len() < count {
128
+            return Err(Error::InsufficientRecords {
129
+                required: count,
130
+                available: records.len(),
131
+            });
132
+        }
133
+        let last = u32::try_from(count - 1).map_err(|_| Error::PageIndexOverflow)?;
134
+        first_page_index
135
+            .checked_add(last)
136
+            .ok_or(Error::PageIndexOverflow)?;
137
+        for (index, page) in region.chunks_exact_mut(PAGE_SIZE).enumerate() {
138
+            // Sizes and availability are validated above for the whole region.
139
+            self.decrypt_page_in_place(
140
+                page.try_into().expect("complete page"),
141
+                first_page_index + index as u32,
142
+                records.get(index).expect("validated record count"),
143
+            );
144
+        }
145
+        Ok(count)
146
+    }
147
+}
148
+
149
+/// Existing marker retained for compatibility with the original crate stub.
1 150
 pub trait FairPlayProxy {}
... ...
@@ -0,0 +1,153 @@
1
+use std::ops::Range;
2
+
3
+use crate::Error;
4
+
5
+/// Borrowed SINF fields, for callers that already parse the container.
6
+#[derive(Clone, Copy)]
7
+pub struct SinfFields<'a> {
8
+    pub name: &'a [u8],
9
+    pub iviv: &'a [u8],
10
+    pub private: &'a [u8],
11
+}
12
+
13
+impl<'a> SinfFields<'a> {
14
+    /// Parse one outer `sinf` atom containing exactly one `schi` container.
15
+    /// Required fields must each occur once. Unknown sibling atoms are allowed.
16
+    pub fn parse(sinf: &'a [u8]) -> Result<Self, Error> {
17
+        if sinf.len() < 8 || &sinf[4..8] != b"sinf" || be_u32(sinf) as usize != sinf.len() {
18
+            return Err(Error::InvalidSinf("expected one outer sinf atom"));
19
+        }
20
+        let schi = unique_atom(&sinf[8..], b"schi")?;
21
+        Ok(Self {
22
+            name: unique_atom(schi, b"name")?,
23
+            iviv: unique_atom(schi, b"iviv")?,
24
+            private: unique_atom(schi, b"priv")?,
25
+        })
26
+    }
27
+}
28
+
29
+fn be_u32(bytes: &[u8]) -> u32 {
30
+    u32::from_be_bytes(bytes[..4].try_into().expect("validated four-byte field"))
31
+}
32
+
33
+fn unique_atom<'a>(mut atoms: &'a [u8], tag: &[u8; 4]) -> Result<&'a [u8], Error> {
34
+    let mut found = None;
35
+    while !atoms.is_empty() {
36
+        if atoms.len() < 8 {
37
+            return Err(Error::InvalidSinf("truncated atom header"));
38
+        }
39
+        let size = be_u32(atoms) as usize;
40
+        if size < 8 || size > atoms.len() {
41
+            return Err(Error::InvalidSinf(
42
+                "atom size exceeds container or is shorter than header",
43
+            ));
44
+        }
45
+        if &atoms[4..8] == tag && found.replace(&atoms[8..size]).is_some() {
46
+            return Err(Error::InvalidSinf("duplicate required atom"));
47
+        }
48
+        atoms = &atoms[size..];
49
+    }
50
+    found.ok_or(Error::InvalidSinf("missing required atom"))
51
+}
52
+
53
+/// One borrowed 32-byte SUPF record: a wrapped page key followed by a CBC IV.
54
+#[derive(Clone, Copy)]
55
+pub struct PageRecord<'a>(&'a [u8; 32]);
56
+
57
+impl<'a> PageRecord<'a> {
58
+    pub fn from_bytes(bytes: &'a [u8; 32]) -> Self {
59
+        Self(bytes)
60
+    }
61
+
62
+    pub fn wrapped_key(self) -> &'a [u8; 16] {
63
+        self.0[..16].try_into().expect("fixed-size record")
64
+    }
65
+
66
+    pub fn iv(self) -> &'a [u8; 16] {
67
+        self.0[16..].try_into().expect("fixed-size record")
68
+    }
69
+}
70
+
71
+/// A validated, borrowed sequence of 32-byte page records, without allocations.
72
+#[derive(Clone, Copy)]
73
+pub struct PageRecords<'a>(&'a [u8]);
74
+
75
+impl<'a> PageRecords<'a> {
76
+    /// Accept raw records already selected by the caller's SUPF parser.
77
+    pub fn from_bytes(bytes: &'a [u8]) -> Result<Self, Error> {
78
+        if !bytes.len().is_multiple_of(32) {
79
+            return Err(Error::InvalidSupf("partial page record"));
80
+        }
81
+        Ok(Self(bytes))
82
+    }
83
+
84
+    /// Select an architecture by its exact Mach CPU type and subtype.
85
+    ///
86
+    /// Handles SUPF versions 3 and 5 and tags 507, 510 and 612. No executable
87
+    /// parsing is performed. For the supported arm64 path use CPU `0x0100000c`
88
+    /// and subtype `0`. The declared page count must fit in its architecture.
89
+    pub fn from_supf(supf: &'a [u8], cpu_type: u32, cpu_subtype: u32) -> Result<Self, Error> {
90
+        if supf.len() < 12
91
+            || !matches!(supf[0], 3 | 5)
92
+            || !matches!(&supf[1..4], b"507" | b"510" | b"612")
93
+        {
94
+            return Err(Error::InvalidSupf("unsupported version or tag"));
95
+        }
96
+        let header_size = if supf[0] == 3 { 32 } else { 12 };
97
+        let count = be_u32(&supf[8..]) as usize;
98
+        if !(1..=16).contains(&count) {
99
+            return Err(Error::InvalidSupf("invalid architecture count"));
100
+        }
101
+        let mut pos: usize = 12;
102
+        for _ in 0..count {
103
+            let header_end = pos
104
+                .checked_add(4 + header_size)
105
+                .filter(|end| *end <= supf.len())
106
+                .ok_or(Error::InvalidSupf("truncated architecture header"))?;
107
+            let length = be_u32(&supf[pos..]) as usize;
108
+            let end = pos
109
+                .checked_add(4)
110
+                .and_then(|start| start.checked_add(length))
111
+                .filter(|end| *end <= supf.len() && length >= header_size)
112
+                .ok_or(Error::InvalidSupf("invalid architecture length"))?;
113
+            let cpu = be_u32(&supf[pos + 4..]);
114
+            let subtype = be_u32(&supf[pos + 8..]);
115
+            if cpu == cpu_type && subtype == cpu_subtype {
116
+                let pages = be_u32(&supf[pos + header_size..]) as usize;
117
+                let records_end = pages
118
+                    .checked_mul(32)
119
+                    .and_then(|size| header_end.checked_add(size))
120
+                    .filter(|records_end| *records_end <= end)
121
+                    .ok_or(Error::InvalidSupf("incomplete architecture page records"))?;
122
+                return Ok(Self(&supf[header_end..records_end]));
123
+            }
124
+            pos = end;
125
+        }
126
+        Err(Error::ArchitectureNotFound {
127
+            cpu_type,
128
+            cpu_subtype,
129
+        })
130
+    }
131
+
132
+    pub fn len(self) -> usize {
133
+        self.0.len() / 32
134
+    }
135
+
136
+    pub fn is_empty(self) -> bool {
137
+        self.0.is_empty()
138
+    }
139
+
140
+    pub fn get(self, index: usize) -> Option<PageRecord<'a>> {
141
+        let start = index.checked_mul(32)?;
142
+        let bytes = self.0.get(start..start.checked_add(32)?)?;
143
+        Some(PageRecord(bytes.try_into().expect("complete record")))
144
+    }
145
+
146
+    /// Select records for a subregion, preserving their original order.
147
+    /// The caller must advance the absolute page index by the same start value.
148
+    pub fn slice(self, range: Range<usize>) -> Option<Self> {
149
+        self.0
150
+            .get(range.start.checked_mul(32)?..range.end.checked_mul(32)?)
151
+            .map(Self)
152
+    }
153
+}
... ...
@@ -4,6 +4,7 @@ mod app;
4 4
 mod heartbeat;
5 5
 mod identity;
6 6
 mod secondary_actions;
7
+pub mod tokens;
7 8
 mod url_switch;
8 9
 
9 10
 use crate::bundle_information::BundleInformation;
... ...
@@ -0,0 +1,23 @@
1
+use crate::AppToken;
2
+use serde::{Deserialize, Serialize};
3
+
4
+/// GrandSlam's password-equivalent token.
5
+#[derive(Clone, Serialize, Deserialize)]
6
+#[serde(transparent)]
7
+pub struct PasswordEquivalentToken(String);
8
+
9
+impl From<String> for PasswordEquivalentToken {
10
+    fn from(value: String) -> Self {
11
+        Self(value)
12
+    }
13
+}
14
+
15
+impl AsRef<str> for PasswordEquivalentToken {
16
+    fn as_ref(&self) -> &str {
17
+        &self.0
18
+    }
19
+}
20
+
21
+impl AppToken for PasswordEquivalentToken {
22
+    const APP_TOKEN_IDENTIFIER: &'static str = "com.apple.gs.idms.pet";
23
+}
... ...
@@ -1,32 +1,13 @@
1 1
 use adi::proxy::{ADIError, ADIResult};
2
+use grandslam::AccountHTTPSession;
2 3
 use grandslam::plist_request::dict_to_body;
3
-use grandslam::{AccountHTTPSession, AppToken};
4 4
 use plist::{Dictionary, Value};
5 5
 use plist_macros::dict;
6 6
 use reqwest::{Method, RequestBuilder};
7 7
 use serde::{Deserialize, Serialize};
8 8
 use thiserror::Error;
9 9
 
10
-/// GrandSlam's password-equivalent token. Only used to establish iCloud credentials.
11
-#[derive(Clone, Serialize, Deserialize)]
12
-#[serde(transparent)]
13
-pub struct PasswordEquivalentToken(String);
14
-
15
-impl From<String> for PasswordEquivalentToken {
16
-    fn from(value: String) -> Self {
17
-        Self(value)
18
-    }
19
-}
20
-
21
-impl AsRef<str> for PasswordEquivalentToken {
22
-    fn as_ref(&self) -> &str {
23
-        &self.0
24
-    }
25
-}
26
-
27
-impl AppToken for PasswordEquivalentToken {
28
-    const APP_TOKEN_IDENTIFIER: &'static str = "com.apple.gs.idms.pet";
29
-}
10
+pub use grandslam::tokens::PasswordEquivalentToken;
30 11
 
31 12
 /// Numeric account ID returned by iCloud, distinct from GrandSlam's alternate ID.
32 13
 #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
... ...
@@ -1,14 +0,0 @@
1
-[package]
2
-name = "purple-builder"
3
-version = "0.1.0"
4
-edition = "2024"
5
-
6
-[dependencies]
7
-adi = { workspace = true }
8
-elf-loader = { workspace = true }
9
-env_logger = "0.11.8"
10
-
11
-# gpui = "0.2"
12
-# gpui-component = "0.3"
13
-# # adabraka-ui = "0.2"
14
-# anyhow = "1.0.100"
... ...
@@ -1 +0,0 @@
1
-pub const APP_NAME: &str = "Purple Builder";
... ...
@@ -1,20 +0,0 @@
1
-mod identity;
2
-mod main_window;
3
-mod welcome_window;
4
-
5
-use crate::main_window::MainWindow;
6
-use crate::welcome_window::WelcomeWindow;
7
-use gpui::*;
8
-use gpui_component::{ActiveTheme as _, Root, TitleBar, theme};
9
-
10
-fn main() {
11
-    let application = Application::new();
12
-
13
-    application.run(|cx: &mut App| {
14
-        gpui_component::init(cx);
15
-        // theme::init(cx);
16
-
17
-        //WelcomeWindow::new(cx).expect("Could not create WelcomeWindow.");
18
-        MainWindow::new(cx).expect("Could not create MainWindow.");
19
-    });
20
-}
... ...
@@ -1,59 +0,0 @@
1
-use gpui::{
2
-    App, AppContext, Bounds, Context, Entity, IntoElement, ParentElement, Render, Styled, Window,
3
-    WindowBounds, WindowHandle, WindowKind, WindowOptions, div, px, size,
4
-};
5
-use gpui_component::dock::{DockArea, DockAreaState};
6
-use gpui_component::menu::AppMenuBar;
7
-use gpui_component::{Root, StyledExt};
8
-
9
-pub struct MainWindow;
10
-
11
-impl MainWindow {
12
-    pub(crate) fn new(cx: &mut App) -> anyhow::Result<WindowHandle<Root>> {
13
-        let bounds = Bounds::centered(None, size(px(600.), px(400.)), cx);
14
-
15
-        let window_options = WindowOptions {
16
-            window_bounds: Some(WindowBounds::Windowed(bounds)),
17
-            #[cfg(not(target_os = "linux"))]
18
-            titlebar: Some(gpui_component::TitleBar::title_bar_options()),
19
-            window_min_size: Some(gpui::Size {
20
-                width: px(640.),
21
-                height: px(480.),
22
-            }),
23
-            #[cfg(target_os = "linux")]
24
-            window_background: gpui::WindowBackgroundAppearance::Transparent,
25
-            #[cfg(target_os = "linux")]
26
-            window_decorations: Some(gpui::WindowDecorations::Client),
27
-            kind: WindowKind::Normal,
28
-            ..Default::default()
29
-        };
30
-
31
-        cx.open_window(window_options, |win, cx| {
32
-            let welcome_view = MainView::new();
33
-
34
-            let view = cx.new(|_| welcome_view);
35
-            cx.new(|cx| Root::new(view.into(), win, cx))
36
-        })
37
-    }
38
-}
39
-
40
-struct MainView {
41
-    title_bar: Entity<AppMenuBar>,
42
-    dock_area: Entity<DockArea>,
43
-    last_layout_state: Option<DockAreaState>,
44
-}
45
-
46
-impl MainView {
47
-    fn new() -> Self {
48
-        Self {}
49
-    }
50
-}
51
-
52
-impl Render for MainView {
53
-    fn render(&mut self, window: &mut Window, cx: &mut Context<Self>) -> impl IntoElement {
54
-        div()
55
-            .v_flex()
56
-            .size_full()
57
-            .child(div().flex().items_center().justify_center().child("Ready"))
58
-    }
59
-}
... ...
@@ -1,179 +0,0 @@
1
-use crate::identity::*;
2
-use gpui::*;
3
-use gpui_component::button::Button;
4
-use gpui_component::label::Label;
5
-use gpui_component::menu::AppMenuBar;
6
-use gpui_component::{Root, Theme, TitleBar, v_flex};
7
-
8
-pub struct WelcomeWindow;
9
-
10
-impl WelcomeWindow {
11
-    pub(crate) fn new(cx: &mut App) -> Result<WindowHandle<Root>> {
12
-        let bounds = Bounds::centered(None, size(px(600.), px(400.)), cx);
13
-
14
-        let window_options = WindowOptions {
15
-            window_bounds: Some(WindowBounds::Windowed(bounds)),
16
-            is_resizable: false,
17
-            // window_decorations: Some(WindowDecorations::Client),
18
-            // titlebar: Some(TitleBar::title_bar_options()),
19
-            ..Default::default()
20
-        };
21
-
22
-        cx.open_window(window_options, |win, cx| {
23
-            let welcome_view = WelcomeView::new();
24
-
25
-            let view = cx.new(|_| welcome_view);
26
-            cx.new(|cx| Root::new(view.into(), win, cx))
27
-        })
28
-    }
29
-}
30
-
31
-struct WelcomeView {
32
-    // recent_projects: Vec<String>,
33
-}
34
-
35
-impl WelcomeView {
36
-    pub(crate) fn new() -> Self {
37
-        Self {
38
-            // recent_projects: vec![
39
-            //     "MyApp".to_string(),
40
-            //     "MyGame".to_string(),
41
-            //     "MyLibrary".to_string(),
42
-            // ],
43
-        }
44
-    }
45
-}
46
-
47
-impl Render for WelcomeView {
48
-    fn render(&mut self, win: &mut Window, cx: &mut Context<Self>) -> impl IntoElement {
49
-        /*
50
-        let titlebar =
51
-            TitleBar::new()
52
-                .child(
53
-                    div()
54
-                        .flex()
55
-                        .items_center()
56
-                        .child(AppMenuBar::new(win, cx))
57
-                )
58
-                .child(
59
-                    div()
60
-                        .flex()
61
-                        .items_center()
62
-                        .justify_end()
63
-                        .gap_2()
64
-                        .child(win.window_title())
65
-                        // .child(Button::new("github")) // .icon(IconName::GitHub))
66
-                        // .child(Button::new("notifications")) // .icon(IconName::Bell))
67
-                );
68
-
69
-        // let state: Self = cx.;
70
-
71
-        /*
72
-        // Create editor state
73
-        let editor_state = cx.new(|cx| {
74
-            let mut state = EditorState::new(cx);
75
-            state.set_language(Language::Sql, cx);
76
-            state.set_content("SELECT * FROM users;", cx);
77
-            state
78
-        }); // */ // */
79
-
80
-        // Render editor
81
-
82
-        v_flex()
83
-            .size_full()
84
-            // .child(
85
-            //     div()
86
-            //         .child(
87
-            //             AppMenuBar::new(win, cx)
88
-            //         )
89
-            // )
90
-            .child(
91
-                div()
92
-                    .flex()
93
-                    .flex_row()
94
-                    .size_full()
95
-                    .p_4()
96
-                    .child(
97
-                        div()
98
-                            .flex()
99
-                            .flex_col()
100
-                            .size_full()
101
-                            .m_4()
102
-                            .gap_4()
103
-                            .child(
104
-                                div()
105
-                                    .flex()
106
-                                    .flex_col()
107
-                                    .gap_2()
108
-                                    .text_center()
109
-                                    .child(
110
-                                        Label::new(format!("Welcome to {}", APP_NAME))
111
-                                            .text_xl()
112
-                                            .font_weight(FontWeight::BOLD),
113
-                                    )
114
-                                    .child(
115
-                                        Label::new("Version 1.0.0")
116
-                                            .text_sm()
117
-                                            .text_color(rgb(0x666666)),
118
-                                    ),
119
-                            )
120
-                            .child(
121
-                                div()
122
-                                    .flex()
123
-                                    .flex_col()
124
-                                    .gap_2()
125
-                                    .child(
126
-                                        Button::new("create_project")
127
-                                            .text_left()
128
-                                            .label("Create New Project")
129
-                                            .on_click(|_, _, _| {
130
-                                                println!("Create New Project clicked")
131
-                                            }),
132
-                                    )
133
-                                    .child(
134
-                                        Button::new("open_project")
135
-                                            .text_left()
136
-                                            .label("Open Existing Project")
137
-                                            .on_click(|_, _, _| {
138
-                                                println!("Open Existing Project clicked")
139
-                                            }),
140
-                                    )
141
-                                    .child(
142
-                                        Button::new("clone_project")
143
-                                            .text_left()
144
-                                            .label("Clone Repository")
145
-                                            .on_click(|_, _, _| {
146
-                                                println!("Clone Repository clicked")
147
-                                            }),
148
-                                    ),
149
-                            ),
150
-                    )
151
-                    .child(
152
-                        div()
153
-                            .flex()
154
-                            .flex_col()
155
-                            .gap_2()
156
-                            .m_4()
157
-                            .child(
158
-                                Label::new("Recent Projects")
159
-                                    .text_lg()
160
-                                    .font_weight(FontWeight::SEMIBOLD),
161
-                            )
162
-                            .child(
163
-                                div().flex().flex_col().gap_1(), // .children(
164
-                                                                 //     state.recent_projects.iter().map(|project| {
165
-                                                                 //         div()
166
-                                                                 //             .p_2()
167
-                                                                 //             .rounded_md()
168
-                                                                 //             .hover(|s| s.bg(rgb(0xe5e5e5)))
169
-                                                                 //             .child(
170
-                                                                 //                 Label::new(project)
171
-                                                                 //                     .size_full()
172
-                                                                 //             )
173
-                                                                 //     })
174
-                                                                 // )
175
-                            ),
176
-                    ),
177
-            )
178
-    }
179
-}
... ...
@@ -1,10 +1,10 @@
1 1
 use adi::proxy::ADIProxy;
2
-use grandslam::bundle_information::APPLE_TV_BUNDLE_INFORMATION;
2
+use grandslam::bundle_information::AKD_BUNDLE_INFORMATION;
3 3
 use grandslam::device::Device;
4 4
 use grandslam::http_session::AnisetteHTTPSession;
5 5
 use grandslam::{AccountHTTPSession, AuthOutcome};
6 6
 use std::env;
7
-use xcode::{ViewDeveloperAction, XCODE_BUNDLE_INFORMATION, XcodeSession};
7
+use xcode::{ViewDeveloperAction, XcodeSession};
8 8
 
9 9
 fn build_device() -> Device {
10 10
     // Fake mac
... ...
@@ -51,7 +51,7 @@ async fn grandslam_test(
51 51
     // println!("{:#02X?}", proxy.get_all_provisioned_accounts());
52 52
 
53 53
     let http_session = AnisetteHTTPSession::new(
54
-        grandslam::http_session(device, XCODE_BUNDLE_INFORMATION).await?,
54
+        grandslam::http_session(device, AKD_BUNDLE_INFORMATION).await?,
55 55
         proxy,
56 56
     );
57 57
 
58 58