1use picky_asn1::tag::{TagClass, TagPeeker};
2use picky_asn1::wrapper::{
3 Asn1SequenceOf, BitStringAsn1, ExplicitContextTag0, ExplicitContextTag1, ExplicitContextTag2, ExplicitContextTag3,
4 ImplicitContextTag0, ImplicitContextTag1, ImplicitContextTag2, IntegerAsn1, ObjectIdentifierAsn1, OctetStringAsn1,
5 Optional,
6};
7use picky_asn1_x509::AlgorithmIdentifier;
8use serde::{Deserialize, Serialize, de, ser};
9
10use crate::data_types::{Checksum, KerberosTime, PrincipalName, Realm};
11
12#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
13pub struct Pku2uNegoReqMetadata {
14 pub inner: ImplicitContextTag0<OctetStringAsn1>,
15}
16
17#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
18pub struct Pku2uNegoBody {
19 pub realm: ExplicitContextTag0<Realm>,
20 pub sname: ExplicitContextTag1<PrincipalName>,
21}
22
23#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
24pub struct Pku2uNegoReq {
25 pub metadata: ExplicitContextTag0<Asn1SequenceOf<Pku2uNegoReqMetadata>>,
26 pub body: ExplicitContextTag1<Pku2uNegoBody>,
27}
28
29#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
30pub struct Pku2uNegoRep {
31 pub metadata: ExplicitContextTag0<Asn1SequenceOf<Pku2uNegoReqMetadata>>,
32}
33
34#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
43pub struct ExternalPrincipalIdentifier {
44 #[serde(default)]
45 pub subject_name: Optional<Option<ImplicitContextTag0<OctetStringAsn1>>>,
46 #[serde(default)]
47 pub issuer_and_serial_number: Optional<Option<ImplicitContextTag1<OctetStringAsn1>>>,
48 #[serde(default)]
49 pub subject_key_identifier: Optional<Option<ImplicitContextTag2<OctetStringAsn1>>>,
50}
51
52#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
61pub struct PaPkAsReq {
62 pub signed_auth_pack: ImplicitContextTag0<OctetStringAsn1>,
63 #[serde(default)]
64 pub trusted_certifiers: Optional<Option<ExplicitContextTag1<Asn1SequenceOf<ExternalPrincipalIdentifier>>>>,
65 #[serde(default)]
66 pub kdc_pk_id: Optional<Option<ImplicitContextTag2<OctetStringAsn1>>>,
67}
68
69#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
79pub struct PkAuthenticator {
80 pub cusec: ExplicitContextTag0<IntegerAsn1>,
81 pub ctime: ExplicitContextTag1<KerberosTime>,
82 pub nonce: ExplicitContextTag2<IntegerAsn1>,
83 #[serde(default)]
84 pub pa_checksum: Optional<Option<ExplicitContextTag3<OctetStringAsn1>>>,
85}
86
87pub type DhNonce = OctetStringAsn1;
92
93#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Clone)]
100pub struct ValidationParams {
101 seed: BitStringAsn1,
102 pg_gen_counter: IntegerAsn1,
103}
104
105#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Clone)]
115pub struct DhDomainParameters {
116 pub p: IntegerAsn1,
117 pub g: IntegerAsn1,
118 pub q: IntegerAsn1,
119 #[serde(default)]
120 pub j: Optional<Option<IntegerAsn1>>,
121 #[serde(default)]
122 pub validation_params: Optional<Option<ValidationParams>>,
123}
124
125#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
126pub struct DhReqKeyInfo {
127 pub identifier: ObjectIdentifierAsn1,
128 pub key_info: DhDomainParameters,
129}
130
131#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
132pub struct DhReqInfo {
133 pub key_info: DhReqKeyInfo,
134 pub key_value: BitStringAsn1,
135}
136
137#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
147pub struct AuthPack {
148 pub pk_authenticator: ExplicitContextTag0<PkAuthenticator>,
149 #[serde(default)]
150 pub client_public_value: Optional<Option<ExplicitContextTag1<DhReqInfo>>>,
151 #[serde(default)]
152 pub supported_cms_types: Optional<Option<ExplicitContextTag2<Asn1SequenceOf<AlgorithmIdentifier>>>>,
153 #[serde(default)]
154 pub client_dh_nonce: Optional<Option<ExplicitContextTag3<DhNonce>>>,
155}
156
157#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
165pub struct DhRepInfo {
166 pub dh_signed_data: ImplicitContextTag0<OctetStringAsn1>,
167 #[serde(default)]
168 pub server_dh_nonce: Optional<Option<ExplicitContextTag1<DhNonce>>>,
169}
170
171#[derive(Debug, PartialEq, Eq, Clone)]
179pub enum PaPkAsRep {
180 DhInfo(ExplicitContextTag0<DhRepInfo>),
181 EncKeyPack(ImplicitContextTag1<OctetStringAsn1>),
182}
183
184impl<'de> Deserialize<'de> for PaPkAsRep {
185 fn deserialize<D>(deserializer: D) -> Result<Self, <D as de::Deserializer<'de>>::Error>
186 where
187 D: de::Deserializer<'de>,
188 {
189 use std::fmt;
190
191 struct Visitor;
192
193 impl<'de> de::Visitor<'de> for Visitor {
194 type Value = PaPkAsRep;
195
196 fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
197 formatter.write_str("a valid DER-encoded SpcLink")
198 }
199
200 fn visit_seq<A>(self, mut seq: A) -> Result<Self::Value, A::Error>
201 where
202 A: de::SeqAccess<'de>,
203 {
204 let tag_peeker: TagPeeker = seq.next_element()?.ok_or_else(|| {
205 de::Error::invalid_value(
206 de::Unexpected::Other("[PaPkAsRep] choice tag is missing"),
207 &"valid choice tag",
208 )
209 })?;
210
211 let pa_pk_as_rep = match tag_peeker.next_tag.class_and_number() {
212 (TagClass::ContextSpecific, 0) => PaPkAsRep::DhInfo(seq.next_element()?.ok_or_else(|| {
213 de::Error::invalid_value(
214 de::Unexpected::Other("[PaPkAsRep] dhInfo is missing"),
215 &"valid dhInfo",
216 )
217 })?),
218 (TagClass::ContextSpecific, 1) => PaPkAsRep::EncKeyPack(seq.next_element()?.ok_or_else(|| {
219 de::Error::invalid_value(
220 de::Unexpected::Other("[PaPkAsRep] encKeyPack is missing"),
221 &"valid encKeyPack",
222 )
223 })?),
224 _ => {
225 return Err(de::Error::invalid_value(
226 de::Unexpected::Other("[PaPkAsRep] unknown choice value"),
227 &"a supported PA-PK-AS-REP choice",
228 ));
229 }
230 };
231
232 Ok(pa_pk_as_rep)
233 }
234 }
235
236 deserializer.deserialize_enum("PA-PK-AS-REP", &["dhInfo", "encKeyPack"], Visitor)
237 }
238}
239
240impl ser::Serialize for PaPkAsRep {
241 fn serialize<S>(&self, serializer: S) -> Result<<S as ser::Serializer>::Ok, S::Error>
242 where
243 S: ser::Serializer,
244 {
245 match self {
246 PaPkAsRep::DhInfo(dh_info) => dh_info.serialize(serializer),
247 PaPkAsRep::EncKeyPack(enc_key_pack) => enc_key_pack.serialize(serializer),
248 }
249 }
250}
251
252#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
261pub struct KdcDhKeyInfo {
262 pub subject_public_key: ExplicitContextTag0<BitStringAsn1>,
263 pub nonce: ExplicitContextTag1<IntegerAsn1>,
264 #[serde(default)]
265 pub dh_key_expiration: Optional<Option<ExplicitContextTag2<KerberosTime>>>,
266}
267
268#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
275pub struct KrbFinished {
276 pub gss_mic: ExplicitContextTag1<Checksum>,
277}
278
279#[cfg(test)]
280mod tests {
281 use picky_asn1::restricted_string::Ia5String;
282 use picky_asn1::wrapper::{
283 Asn1SequenceOf, ExplicitContextTag0, ExplicitContextTag1, ImplicitContextTag0, ImplicitContextTag1,
284 IntegerAsn1, OctetStringAsn1, Optional,
285 };
286
287 use crate::data_types::{KerberosStringAsn1, PrincipalName};
288 use crate::pkinit::DhRepInfo;
289
290 use super::{PaPkAsRep, PaPkAsReq, Pku2uNegoBody, Pku2uNegoRep, Pku2uNegoReq, Pku2uNegoReqMetadata};
291
292 #[test]
293 fn pku2u_nego_req_encode() {
294 let message = Pku2uNegoReq {
295 metadata: ExplicitContextTag0::from(Asn1SequenceOf::from(vec![
296 Pku2uNegoReqMetadata {
297 inner: ImplicitContextTag0::from(OctetStringAsn1::from(vec![
298 48, 77, 49, 75, 48, 73, 6, 3, 85, 4, 3, 30, 66, 0, 77, 0, 83, 0, 45, 0, 79, 0, 114, 0, 103, 0,
299 97, 0, 110, 0, 105, 0, 122, 0, 97, 0, 116, 0, 105, 0, 111, 0, 110, 0, 45, 0, 80, 0, 50, 0, 80,
300 0, 45, 0, 65, 0, 99, 0, 99, 0, 101, 0, 115, 0, 115, 0, 32, 0, 91, 0, 50, 0, 48, 0, 50, 0, 49,
301 0, 93,
302 ])),
303 },
304 Pku2uNegoReqMetadata {
305 inner: ImplicitContextTag0::from(OctetStringAsn1::from(vec![
306 48, 77, 49, 75, 48, 73, 6, 3, 85, 4, 3, 30, 66, 0, 77, 0, 83, 0, 45, 0, 79, 0, 114, 0, 103, 0,
307 97, 0, 110, 0, 105, 0, 122, 0, 97, 0, 116, 0, 105, 0, 111, 0, 110, 0, 45, 0, 80, 0, 50, 0, 80,
308 0, 45, 0, 65, 0, 99, 0, 99, 0, 101, 0, 115, 0, 115, 0, 32, 0, 91, 0, 50, 0, 48, 0, 50, 0, 49,
309 0, 93,
310 ])),
311 },
312 ])),
313 body: ExplicitContextTag1::from(Pku2uNegoBody {
314 realm: ExplicitContextTag0::from(KerberosStringAsn1::from(
315 Ia5String::from_string("WELLKNOWN:PKU2U".into()).unwrap(),
316 )),
317 sname: ExplicitContextTag1::from(PrincipalName {
318 name_type: ExplicitContextTag0::from(IntegerAsn1::from(vec![2])),
319 name_string: ExplicitContextTag1::from(Asn1SequenceOf::from(vec![
320 KerberosStringAsn1::from(Ia5String::from_string("TERMSRV".into()).unwrap()),
321 KerberosStringAsn1::from(Ia5String::from_string("AZRDOWN-W10".into()).unwrap()),
322 ])),
323 }),
324 }),
325 };
326
327 let encoded = picky_asn1_der::to_vec(&message).unwrap();
328
329 assert_eq!(
330 &[
331 48, 129, 230, 160, 129, 169, 48, 129, 166, 48, 81, 128, 79, 48, 77, 49, 75, 48, 73, 6, 3, 85, 4, 3, 30,
332 66, 0, 77, 0, 83, 0, 45, 0, 79, 0, 114, 0, 103, 0, 97, 0, 110, 0, 105, 0, 122, 0, 97, 0, 116, 0, 105,
333 0, 111, 0, 110, 0, 45, 0, 80, 0, 50, 0, 80, 0, 45, 0, 65, 0, 99, 0, 99, 0, 101, 0, 115, 0, 115, 0, 32,
334 0, 91, 0, 50, 0, 48, 0, 50, 0, 49, 0, 93, 48, 81, 128, 79, 48, 77, 49, 75, 48, 73, 6, 3, 85, 4, 3, 30,
335 66, 0, 77, 0, 83, 0, 45, 0, 79, 0, 114, 0, 103, 0, 97, 0, 110, 0, 105, 0, 122, 0, 97, 0, 116, 0, 105,
336 0, 111, 0, 110, 0, 45, 0, 80, 0, 50, 0, 80, 0, 45, 0, 65, 0, 99, 0, 99, 0, 101, 0, 115, 0, 115, 0, 32,
337 0, 91, 0, 50, 0, 48, 0, 50, 0, 49, 0, 93, 161, 56, 48, 54, 160, 17, 27, 15, 87, 69, 76, 76, 75, 78, 79,
338 87, 78, 58, 80, 75, 85, 50, 85, 161, 33, 48, 31, 160, 3, 2, 1, 2, 161, 24, 48, 22, 27, 7, 84, 69, 82,
339 77, 83, 82, 86, 27, 11, 65, 90, 82, 68, 79, 87, 78, 45, 87, 49, 48
340 ],
341 encoded.as_slice()
342 );
343 }
344
345 #[test]
346 fn pku2u_nego_rep_encode() {
347 let nego_rep = Pku2uNegoRep {
348 metadata: ExplicitContextTag0::from(Asn1SequenceOf::from(vec![
349 Pku2uNegoReqMetadata {
350 inner: ImplicitContextTag0::from(OctetStringAsn1::from(vec![
351 48, 77, 49, 75, 48, 73, 6, 3, 85, 4, 3, 30, 66, 0, 77, 0, 83, 0, 45, 0, 79, 0, 114, 0, 103, 0,
352 97, 0, 110, 0, 105, 0, 122, 0, 97, 0, 116, 0, 105, 0, 111, 0, 110, 0, 45, 0, 80, 0, 50, 0, 80,
353 0, 45, 0, 65, 0, 99, 0, 99, 0, 101, 0, 115, 0, 115, 0, 32, 0, 91, 0, 50, 0, 48, 0, 50, 0, 49,
354 0, 93,
355 ])),
356 },
357 Pku2uNegoReqMetadata {
358 inner: ImplicitContextTag0::from(OctetStringAsn1::from(vec![
359 48, 35, 49, 33, 48, 31, 6, 3, 85, 4, 3, 19, 24, 84, 111, 107, 101, 110, 32, 83, 105, 103, 110,
360 105, 110, 103, 32, 80, 117, 98, 108, 105, 99, 32, 75, 101, 121,
361 ])),
362 },
363 ])),
364 };
365
366 let encoded = picky_asn1_der::to_vec(&nego_rep).unwrap();
367
368 assert_eq!(
369 &[
370 48, 129, 128, 160, 126, 48, 124, 48, 81, 128, 79, 48, 77, 49, 75, 48, 73, 6, 3, 85, 4, 3, 30, 66, 0,
371 77, 0, 83, 0, 45, 0, 79, 0, 114, 0, 103, 0, 97, 0, 110, 0, 105, 0, 122, 0, 97, 0, 116, 0, 105, 0, 111,
372 0, 110, 0, 45, 0, 80, 0, 50, 0, 80, 0, 45, 0, 65, 0, 99, 0, 99, 0, 101, 0, 115, 0, 115, 0, 32, 0, 91,
373 0, 50, 0, 48, 0, 50, 0, 49, 0, 93, 48, 39, 128, 37, 48, 35, 49, 33, 48, 31, 6, 3, 85, 4, 3, 19, 24, 84,
374 111, 107, 101, 110, 32, 83, 105, 103, 110, 105, 110, 103, 32, 80, 117, 98, 108, 105, 99, 32, 75, 101,
375 121
376 ],
377 encoded.as_slice()
378 );
379 }
380
381 #[test]
382 fn pku2u_nego_rep_decode() {
383 let raw_data = [
384 48, 129, 171, 160, 129, 168, 48, 129, 165, 48, 81, 128, 79, 48, 77, 49, 75, 48, 73, 6, 3, 85, 4, 3, 30, 66,
385 0, 77, 0, 83, 0, 45, 0, 79, 0, 114, 0, 103, 0, 97, 0, 110, 0, 105, 0, 122, 0, 97, 0, 116, 0, 105, 0, 111,
386 0, 110, 0, 45, 0, 80, 0, 50, 0, 80, 0, 45, 0, 65, 0, 99, 0, 99, 0, 101, 0, 115, 0, 115, 0, 32, 0, 91, 0,
387 50, 0, 48, 0, 50, 0, 49, 0, 93, 48, 39, 128, 37, 48, 35, 49, 33, 48, 31, 6, 3, 85, 4, 3, 19, 24, 84, 111,
388 107, 101, 110, 32, 83, 105, 103, 110, 105, 110, 103, 32, 80, 117, 98, 108, 105, 99, 32, 75, 101, 121, 48,
389 39, 128, 37, 48, 35, 49, 33, 48, 31, 6, 3, 85, 4, 3, 19, 24, 84, 111, 107, 101, 110, 32, 83, 105, 103, 110,
390 105, 110, 103, 32, 80, 117, 98, 108, 105, 99, 32, 75, 101, 121,
391 ];
392
393 let pku2u_nego_rep: Pku2uNegoRep = picky_asn1_der::from_bytes(&raw_data).unwrap();
394
395 assert_eq!(
396 Pku2uNegoRep {
397 metadata: ExplicitContextTag0::from(Asn1SequenceOf::from(vec![
398 Pku2uNegoReqMetadata {
399 inner: ImplicitContextTag0::from(OctetStringAsn1::from(vec![
400 48, 77, 49, 75, 48, 73, 6, 3, 85, 4, 3, 30, 66, 0, 77, 0, 83, 0, 45, 0, 79, 0, 114, 0, 103,
401 0, 97, 0, 110, 0, 105, 0, 122, 0, 97, 0, 116, 0, 105, 0, 111, 0, 110, 0, 45, 0, 80, 0, 50,
402 0, 80, 0, 45, 0, 65, 0, 99, 0, 99, 0, 101, 0, 115, 0, 115, 0, 32, 0, 91, 0, 50, 0, 48, 0,
403 50, 0, 49, 0, 93
404 ]))
405 },
406 Pku2uNegoReqMetadata {
407 inner: ImplicitContextTag0::from(OctetStringAsn1::from(vec![
408 48, 35, 49, 33, 48, 31, 6, 3, 85, 4, 3, 19, 24, 84, 111, 107, 101, 110, 32, 83, 105, 103,
409 110, 105, 110, 103, 32, 80, 117, 98, 108, 105, 99, 32, 75, 101, 121
410 ]))
411 },
412 Pku2uNegoReqMetadata {
413 inner: ImplicitContextTag0::from(OctetStringAsn1::from(vec![
414 48, 35, 49, 33, 48, 31, 6, 3, 85, 4, 3, 19, 24, 84, 111, 107, 101, 110, 32, 83, 105, 103,
415 110, 105, 110, 103, 32, 80, 117, 98, 108, 105, 99, 32, 75, 101, 121
416 ]))
417 },
418 ]))
419 },
420 pku2u_nego_rep
421 );
422 }
423
424 #[test]
425 fn pa_pk_as_req_decode() {
426 let raw_data = [
427 48, 130, 7, 246, 128, 130, 7, 242, 48, 130, 7, 238, 2, 1, 3, 49, 11, 48, 9, 6, 5, 43, 14, 3, 2, 26, 5, 0,
428 48, 130, 2, 31, 6, 7, 43, 6, 1, 5, 2, 3, 1, 160, 130, 2, 18, 4, 130, 2, 14, 48, 130, 2, 10, 160, 57, 48,
429 55, 160, 5, 2, 3, 6, 219, 251, 161, 17, 24, 15, 50, 48, 50, 50, 48, 53, 49, 55, 50, 48, 50, 53, 53, 57, 90,
430 162, 3, 2, 1, 0, 163, 22, 4, 20, 197, 143, 17, 64, 61, 203, 186, 45, 19, 30, 175, 125, 106, 6, 209, 5, 36,
431 69, 144, 97, 161, 130, 1, 167, 48, 130, 1, 163, 48, 130, 1, 23, 6, 7, 42, 134, 72, 206, 62, 2, 1, 48, 130,
432 1, 10, 2, 129, 129, 0, 255, 255, 255, 255, 255, 255, 255, 255, 201, 15, 218, 162, 33, 104, 194, 52, 196,
433 198, 98, 139, 128, 220, 28, 209, 41, 2, 78, 8, 138, 103, 204, 116, 2, 11, 190, 166, 59, 19, 155, 34, 81,
434 74, 8, 121, 142, 52, 4, 221, 239, 149, 25, 179, 205, 58, 67, 27, 48, 43, 10, 109, 242, 95, 20, 55, 79, 225,
435 53, 109, 109, 81, 194, 69, 228, 133, 181, 118, 98, 94, 126, 198, 244, 76, 66, 233, 166, 55, 237, 107, 11,
436 255, 92, 182, 244, 6, 183, 237, 238, 56, 107, 251, 90, 137, 159, 165, 174, 159, 36, 17, 124, 75, 31, 230,
437 73, 40, 102, 81, 236, 230, 83, 129, 255, 255, 255, 255, 255, 255, 255, 255, 2, 1, 2, 2, 129, 128, 127, 255,
438 255, 255, 255, 255, 255, 255, 228, 135, 237, 81, 16, 180, 97, 26, 98, 99, 49, 69, 192, 110, 14, 104, 148,
439 129, 39, 4, 69, 51, 230, 58, 1, 5, 223, 83, 29, 137, 205, 145, 40, 165, 4, 60, 199, 26, 2, 110, 247, 202,
440 140, 217, 230, 157, 33, 141, 152, 21, 133, 54, 249, 47, 138, 27, 167, 240, 154, 182, 182, 168, 225, 34,
441 242, 66, 218, 187, 49, 47, 63, 99, 122, 38, 33, 116, 211, 27, 246, 181, 133, 255, 174, 91, 122, 3, 91, 246,
442 247, 28, 53, 253, 173, 68, 207, 210, 215, 79, 146, 8, 190, 37, 143, 243, 36, 148, 51, 40, 246, 115, 41,
443 192, 255, 255, 255, 255, 255, 255, 255, 255, 3, 129, 133, 0, 2, 129, 129, 0, 219, 78, 185, 183, 129, 7, 4,
444 73, 79, 203, 237, 216, 60, 162, 113, 232, 36, 233, 162, 75, 8, 200, 168, 109, 49, 32, 207, 86, 26, 198,
445 121, 143, 205, 90, 248, 169, 6, 178, 153, 1, 237, 156, 2, 145, 162, 150, 218, 232, 144, 183, 193, 58, 7,
446 27, 217, 215, 160, 30, 69, 15, 211, 28, 18, 216, 145, 196, 14, 47, 119, 76, 163, 178, 243, 136, 213, 190,
447 122, 108, 59, 140, 94, 32, 75, 114, 17, 239, 99, 81, 208, 221, 232, 214, 193, 129, 129, 135, 191, 117, 72,
448 254, 44, 211, 92, 124, 203, 235, 196, 113, 1, 123, 74, 139, 101, 121, 212, 210, 119, 162, 26, 230, 153,
449 254, 123, 68, 151, 135, 52, 29, 163, 34, 4, 32, 72, 91, 60, 222, 24, 28, 4, 155, 141, 138, 44, 10, 136, 54,
450 202, 60, 146, 234, 183, 130, 109, 34, 94, 10, 87, 237, 162, 55, 173, 100, 115, 43, 160, 130, 3, 236, 48,
451 130, 3, 232, 48, 130, 2, 208, 160, 3, 2, 1, 2, 2, 16, 101, 97, 27, 230, 41, 155, 188, 234, 76, 173, 92,
452 163, 84, 82, 236, 140, 48, 13, 6, 9, 42, 134, 72, 134, 247, 13, 1, 1, 11, 5, 0, 48, 77, 49, 75, 48, 73, 6,
453 3, 85, 4, 3, 30, 66, 0, 77, 0, 83, 0, 45, 0, 79, 0, 114, 0, 103, 0, 97, 0, 110, 0, 105, 0, 122, 0, 97, 0,
454 116, 0, 105, 0, 111, 0, 110, 0, 45, 0, 80, 0, 50, 0, 80, 0, 45, 0, 65, 0, 99, 0, 99, 0, 101, 0, 115, 0,
455 115, 0, 32, 0, 91, 0, 50, 0, 48, 0, 50, 0, 49, 0, 93, 48, 30, 23, 13, 50, 50, 48, 53, 49, 55, 50, 48, 50,
456 48, 53, 57, 90, 23, 13, 50, 50, 48, 53, 49, 55, 50, 49, 50, 53, 53, 57, 90, 48, 129, 151, 49, 52, 48, 50,
457 6, 10, 9, 146, 38, 137, 147, 242, 44, 100, 1, 25, 22, 36, 52, 99, 53, 97, 53, 101, 99, 49, 45, 57, 97, 99,
458 53, 45, 52, 54, 49, 50, 45, 57, 98, 52, 99, 45, 54, 98, 101, 100, 49, 55, 56, 98, 98, 54, 53, 97, 49, 60,
459 48, 58, 6, 3, 85, 4, 3, 12, 51, 83, 45, 49, 45, 49, 50, 45, 49, 45, 49, 53, 53, 50, 51, 56, 50, 57, 56, 45,
460 49, 51, 48, 51, 48, 53, 52, 50, 55, 52, 45, 50, 53, 48, 51, 53, 49, 55, 51, 49, 51, 45, 51, 54, 52, 54, 56,
461 55, 56, 55, 54, 53, 49, 33, 48, 31, 6, 3, 85, 4, 3, 12, 24, 109, 97, 109, 111, 114, 101, 97, 117, 64, 100,
462 111, 119, 110, 104, 105, 108, 108, 112, 114, 111, 46, 120, 121, 122, 48, 130, 1, 34, 48, 13, 6, 9, 42, 134,
463 72, 134, 247, 13, 1, 1, 1, 5, 0, 3, 130, 1, 15, 0, 48, 130, 1, 10, 2, 130, 1, 1, 0, 194, 219, 35, 14, 127,
464 114, 121, 75, 42, 40, 170, 236, 117, 106, 194, 196, 210, 255, 45, 9, 73, 94, 25, 168, 112, 152, 56, 139,
465 223, 248, 20, 133, 255, 44, 102, 133, 240, 101, 221, 72, 127, 80, 230, 220, 137, 41, 199, 165, 66, 146,
466 235, 21, 59, 219, 83, 181, 107, 163, 33, 225, 17, 18, 38, 232, 38, 163, 178, 191, 144, 202, 9, 145, 190,
467 252, 5, 194, 130, 72, 63, 31, 19, 101, 67, 206, 134, 119, 194, 82, 119, 201, 110, 222, 198, 249, 254, 178,
468 166, 33, 81, 18, 136, 206, 131, 26, 131, 52, 205, 68, 179, 202, 45, 189, 197, 67, 56, 113, 191, 223, 174,
469 106, 56, 49, 29, 108, 182, 203, 94, 192, 127, 120, 204, 3, 152, 248, 24, 76, 86, 1, 193, 242, 174, 173,
470 203, 238, 184, 231, 84, 211, 111, 212, 56, 84, 68, 175, 119, 167, 107, 161, 185, 252, 229, 44, 127, 93,
471 207, 140, 170, 87, 23, 92, 30, 119, 233, 113, 255, 165, 146, 56, 219, 193, 150, 120, 182, 209, 182, 204,
472 42, 195, 58, 205, 119, 221, 208, 164, 245, 44, 47, 113, 155, 70, 92, 255, 251, 208, 239, 176, 67, 111, 84,
473 220, 146, 164, 21, 38, 233, 249, 73, 64, 255, 158, 67, 170, 17, 172, 128, 244, 58, 234, 107, 198, 197, 228,
474 47, 109, 182, 34, 202, 162, 173, 13, 14, 227, 50, 22, 164, 156, 246, 11, 199, 233, 235, 159, 67, 24, 157,
475 191, 2, 3, 1, 0, 1, 163, 121, 48, 119, 48, 14, 6, 3, 85, 29, 15, 1, 1, 255, 4, 4, 3, 2, 5, 160, 48, 51, 6,
476 3, 85, 29, 17, 4, 44, 48, 42, 160, 40, 6, 10, 43, 6, 1, 4, 1, 130, 55, 20, 2, 3, 160, 26, 12, 24, 109, 97,
477 109, 111, 114, 101, 97, 117, 64, 100, 111, 119, 110, 104, 105, 108, 108, 112, 114, 111, 46, 120, 121, 122,
478 48, 19, 6, 3, 85, 29, 37, 4, 12, 48, 10, 6, 8, 43, 6, 1, 5, 5, 7, 3, 2, 48, 27, 6, 9, 43, 6, 1, 4, 1, 130,
479 55, 21, 10, 4, 14, 48, 12, 48, 10, 6, 8, 43, 6, 1, 5, 5, 7, 3, 2, 48, 13, 6, 9, 42, 134, 72, 134, 247, 13,
480 1, 1, 11, 5, 0, 3, 130, 1, 1, 0, 52, 19, 83, 79, 242, 219, 247, 152, 173, 207, 131, 233, 36, 186, 213, 25,
481 104, 89, 172, 106, 112, 21, 31, 25, 139, 186, 54, 131, 147, 126, 67, 185, 59, 165, 22, 61, 147, 69, 118,
482 54, 212, 229, 232, 3, 126, 50, 47, 77, 180, 165, 8, 54, 246, 20, 89, 126, 35, 253, 179, 73, 109, 45, 146,
483 74, 93, 64, 173, 178, 113, 103, 240, 177, 6, 97, 76, 171, 140, 27, 192, 114, 120, 77, 24, 203, 203, 122,
484 219, 171, 132, 229, 111, 70, 63, 121, 17, 89, 172, 191, 204, 169, 52, 16, 123, 41, 236, 116, 145, 236, 224,
485 25, 216, 62, 58, 195, 117, 105, 150, 46, 183, 197, 180, 51, 165, 97, 11, 247, 243, 139, 18, 176, 65, 137,
486 203, 78, 51, 164, 138, 202, 142, 134, 80, 75, 95, 139, 135, 86, 147, 108, 27, 126, 168, 174, 55, 197, 69,
487 92, 151, 206, 207, 73, 125, 101, 119, 99, 130, 136, 18, 105, 77, 7, 28, 178, 113, 171, 58, 202, 173, 12,
488 124, 32, 63, 234, 131, 127, 88, 17, 210, 29, 218, 175, 125, 34, 237, 219, 106, 207, 136, 126, 112, 70, 59,
489 229, 13, 23, 13, 243, 1, 5, 255, 222, 59, 190, 227, 219, 157, 219, 211, 96, 170, 168, 82, 127, 41, 47, 239,
490 51, 249, 69, 151, 69, 229, 9, 67, 243, 105, 206, 127, 3, 188, 159, 80, 19, 35, 156, 162, 196, 106, 47, 15,
491 109, 17, 253, 117, 14, 126, 160, 49, 130, 1, 199, 48, 130, 1, 195, 2, 1, 1, 48, 97, 48, 77, 49, 75, 48, 73,
492 6, 3, 85, 4, 3, 30, 66, 0, 77, 0, 83, 0, 45, 0, 79, 0, 114, 0, 103, 0, 97, 0, 110, 0, 105, 0, 122, 0, 97,
493 0, 116, 0, 105, 0, 111, 0, 110, 0, 45, 0, 80, 0, 50, 0, 80, 0, 45, 0, 65, 0, 99, 0, 99, 0, 101, 0, 115, 0,
494 115, 0, 32, 0, 91, 0, 50, 0, 48, 0, 50, 0, 49, 0, 93, 2, 16, 101, 97, 27, 230, 41, 155, 188, 234, 76, 173,
495 92, 163, 84, 82, 236, 140, 48, 9, 6, 5, 43, 14, 3, 2, 26, 5, 0, 160, 61, 48, 22, 6, 9, 42, 134, 72, 134,
496 247, 13, 1, 9, 3, 49, 9, 6, 7, 43, 6, 1, 5, 2, 3, 1, 48, 35, 6, 9, 42, 134, 72, 134, 247, 13, 1, 9, 4, 49,
497 22, 4, 20, 102, 68, 227, 41, 95, 65, 130, 138, 235, 245, 189, 250, 152, 141, 108, 239, 191, 39, 172, 175,
498 48, 13, 6, 9, 42, 134, 72, 134, 247, 13, 1, 1, 1, 5, 0, 4, 130, 1, 0, 6, 97, 27, 199, 212, 1, 132, 104, 88,
499 138, 94, 98, 29, 14, 122, 189, 62, 172, 78, 2, 208, 64, 141, 218, 173, 137, 36, 101, 172, 75, 136, 159,
500 133, 134, 37, 136, 127, 128, 177, 114, 108, 138, 53, 41, 125, 213, 123, 231, 149, 112, 215, 248, 240, 15,
501 20, 141, 9, 63, 18, 80, 2, 93, 126, 125, 229, 208, 142, 219, 196, 111, 110, 121, 50, 171, 57, 164, 95, 41,
502 181, 78, 215, 151, 226, 247, 93, 60, 224, 85, 152, 93, 251, 78, 73, 67, 85, 143, 42, 44, 166, 162, 187,
503 135, 124, 27, 55, 145, 134, 45, 75, 252, 22, 191, 193, 63, 30, 158, 83, 198, 188, 187, 220, 121, 40, 9,
504 223, 210, 9, 69, 121, 182, 193, 153, 144, 169, 235, 7, 244, 38, 135, 155, 241, 140, 192, 226, 175, 163,
505 157, 233, 65, 108, 215, 223, 232, 195, 159, 136, 194, 43, 247, 102, 143, 37, 56, 209, 56, 95, 55, 127, 6,
506 253, 154, 29, 163, 53, 56, 152, 106, 138, 128, 47, 129, 19, 103, 170, 72, 208, 221, 95, 111, 26, 123, 174,
507 85, 164, 85, 237, 168, 190, 145, 129, 213, 212, 110, 143, 199, 57, 35, 78, 12, 134, 159, 94, 82, 191, 241,
508 132, 31, 112, 46, 40, 225, 103, 146, 254, 108, 56, 160, 208, 176, 166, 214, 161, 1, 143, 105, 169, 183,
509 149, 222, 225, 246, 119, 193, 223, 54, 175, 234, 92, 143, 197, 93, 158, 242, 226, 254, 27,
510 ];
511
512 let pa_pk_as_req: PaPkAsReq = picky_asn1_der::from_bytes(&raw_data).unwrap();
513
514 assert_eq!(
515 PaPkAsReq {
516 signed_auth_pack: ImplicitContextTag0::from(OctetStringAsn1::from(vec![
517 48, 130, 7, 238, 2, 1, 3, 49, 11, 48, 9, 6, 5, 43, 14, 3, 2, 26, 5, 0, 48, 130, 2, 31, 6, 7, 43, 6,
518 1, 5, 2, 3, 1, 160, 130, 2, 18, 4, 130, 2, 14, 48, 130, 2, 10, 160, 57, 48, 55, 160, 5, 2, 3, 6,
519 219, 251, 161, 17, 24, 15, 50, 48, 50, 50, 48, 53, 49, 55, 50, 48, 50, 53, 53, 57, 90, 162, 3, 2,
520 1, 0, 163, 22, 4, 20, 197, 143, 17, 64, 61, 203, 186, 45, 19, 30, 175, 125, 106, 6, 209, 5, 36, 69,
521 144, 97, 161, 130, 1, 167, 48, 130, 1, 163, 48, 130, 1, 23, 6, 7, 42, 134, 72, 206, 62, 2, 1, 48,
522 130, 1, 10, 2, 129, 129, 0, 255, 255, 255, 255, 255, 255, 255, 255, 201, 15, 218, 162, 33, 104,
523 194, 52, 196, 198, 98, 139, 128, 220, 28, 209, 41, 2, 78, 8, 138, 103, 204, 116, 2, 11, 190, 166,
524 59, 19, 155, 34, 81, 74, 8, 121, 142, 52, 4, 221, 239, 149, 25, 179, 205, 58, 67, 27, 48, 43, 10,
525 109, 242, 95, 20, 55, 79, 225, 53, 109, 109, 81, 194, 69, 228, 133, 181, 118, 98, 94, 126, 198,
526 244, 76, 66, 233, 166, 55, 237, 107, 11, 255, 92, 182, 244, 6, 183, 237, 238, 56, 107, 251, 90,
527 137, 159, 165, 174, 159, 36, 17, 124, 75, 31, 230, 73, 40, 102, 81, 236, 230, 83, 129, 255, 255,
528 255, 255, 255, 255, 255, 255, 2, 1, 2, 2, 129, 128, 127, 255, 255, 255, 255, 255, 255, 255, 228,
529 135, 237, 81, 16, 180, 97, 26, 98, 99, 49, 69, 192, 110, 14, 104, 148, 129, 39, 4, 69, 51, 230, 58,
530 1, 5, 223, 83, 29, 137, 205, 145, 40, 165, 4, 60, 199, 26, 2, 110, 247, 202, 140, 217, 230, 157,
531 33, 141, 152, 21, 133, 54, 249, 47, 138, 27, 167, 240, 154, 182, 182, 168, 225, 34, 242, 66, 218,
532 187, 49, 47, 63, 99, 122, 38, 33, 116, 211, 27, 246, 181, 133, 255, 174, 91, 122, 3, 91, 246, 247,
533 28, 53, 253, 173, 68, 207, 210, 215, 79, 146, 8, 190, 37, 143, 243, 36, 148, 51, 40, 246, 115, 41,
534 192, 255, 255, 255, 255, 255, 255, 255, 255, 3, 129, 133, 0, 2, 129, 129, 0, 219, 78, 185, 183,
535 129, 7, 4, 73, 79, 203, 237, 216, 60, 162, 113, 232, 36, 233, 162, 75, 8, 200, 168, 109, 49, 32,
536 207, 86, 26, 198, 121, 143, 205, 90, 248, 169, 6, 178, 153, 1, 237, 156, 2, 145, 162, 150, 218,
537 232, 144, 183, 193, 58, 7, 27, 217, 215, 160, 30, 69, 15, 211, 28, 18, 216, 145, 196, 14, 47, 119,
538 76, 163, 178, 243, 136, 213, 190, 122, 108, 59, 140, 94, 32, 75, 114, 17, 239, 99, 81, 208, 221,
539 232, 214, 193, 129, 129, 135, 191, 117, 72, 254, 44, 211, 92, 124, 203, 235, 196, 113, 1, 123, 74,
540 139, 101, 121, 212, 210, 119, 162, 26, 230, 153, 254, 123, 68, 151, 135, 52, 29, 163, 34, 4, 32,
541 72, 91, 60, 222, 24, 28, 4, 155, 141, 138, 44, 10, 136, 54, 202, 60, 146, 234, 183, 130, 109, 34,
542 94, 10, 87, 237, 162, 55, 173, 100, 115, 43, 160, 130, 3, 236, 48, 130, 3, 232, 48, 130, 2, 208,
543 160, 3, 2, 1, 2, 2, 16, 101, 97, 27, 230, 41, 155, 188, 234, 76, 173, 92, 163, 84, 82, 236, 140,
544 48, 13, 6, 9, 42, 134, 72, 134, 247, 13, 1, 1, 11, 5, 0, 48, 77, 49, 75, 48, 73, 6, 3, 85, 4, 3,
545 30, 66, 0, 77, 0, 83, 0, 45, 0, 79, 0, 114, 0, 103, 0, 97, 0, 110, 0, 105, 0, 122, 0, 97, 0, 116,
546 0, 105, 0, 111, 0, 110, 0, 45, 0, 80, 0, 50, 0, 80, 0, 45, 0, 65, 0, 99, 0, 99, 0, 101, 0, 115, 0,
547 115, 0, 32, 0, 91, 0, 50, 0, 48, 0, 50, 0, 49, 0, 93, 48, 30, 23, 13, 50, 50, 48, 53, 49, 55, 50,
548 48, 50, 48, 53, 57, 90, 23, 13, 50, 50, 48, 53, 49, 55, 50, 49, 50, 53, 53, 57, 90, 48, 129, 151,
549 49, 52, 48, 50, 6, 10, 9, 146, 38, 137, 147, 242, 44, 100, 1, 25, 22, 36, 52, 99, 53, 97, 53, 101,
550 99, 49, 45, 57, 97, 99, 53, 45, 52, 54, 49, 50, 45, 57, 98, 52, 99, 45, 54, 98, 101, 100, 49, 55,
551 56, 98, 98, 54, 53, 97, 49, 60, 48, 58, 6, 3, 85, 4, 3, 12, 51, 83, 45, 49, 45, 49, 50, 45, 49, 45,
552 49, 53, 53, 50, 51, 56, 50, 57, 56, 45, 49, 51, 48, 51, 48, 53, 52, 50, 55, 52, 45, 50, 53, 48, 51,
553 53, 49, 55, 51, 49, 51, 45, 51, 54, 52, 54, 56, 55, 56, 55, 54, 53, 49, 33, 48, 31, 6, 3, 85, 4, 3,
554 12, 24, 109, 97, 109, 111, 114, 101, 97, 117, 64, 100, 111, 119, 110, 104, 105, 108, 108, 112, 114,
555 111, 46, 120, 121, 122, 48, 130, 1, 34, 48, 13, 6, 9, 42, 134, 72, 134, 247, 13, 1, 1, 1, 5, 0, 3,
556 130, 1, 15, 0, 48, 130, 1, 10, 2, 130, 1, 1, 0, 194, 219, 35, 14, 127, 114, 121, 75, 42, 40, 170,
557 236, 117, 106, 194, 196, 210, 255, 45, 9, 73, 94, 25, 168, 112, 152, 56, 139, 223, 248, 20, 133,
558 255, 44, 102, 133, 240, 101, 221, 72, 127, 80, 230, 220, 137, 41, 199, 165, 66, 146, 235, 21, 59,
559 219, 83, 181, 107, 163, 33, 225, 17, 18, 38, 232, 38, 163, 178, 191, 144, 202, 9, 145, 190, 252, 5,
560 194, 130, 72, 63, 31, 19, 101, 67, 206, 134, 119, 194, 82, 119, 201, 110, 222, 198, 249, 254, 178,
561 166, 33, 81, 18, 136, 206, 131, 26, 131, 52, 205, 68, 179, 202, 45, 189, 197, 67, 56, 113, 191,
562 223, 174, 106, 56, 49, 29, 108, 182, 203, 94, 192, 127, 120, 204, 3, 152, 248, 24, 76, 86, 1, 193,
563 242, 174, 173, 203, 238, 184, 231, 84, 211, 111, 212, 56, 84, 68, 175, 119, 167, 107, 161, 185,
564 252, 229, 44, 127, 93, 207, 140, 170, 87, 23, 92, 30, 119, 233, 113, 255, 165, 146, 56, 219, 193,
565 150, 120, 182, 209, 182, 204, 42, 195, 58, 205, 119, 221, 208, 164, 245, 44, 47, 113, 155, 70, 92,
566 255, 251, 208, 239, 176, 67, 111, 84, 220, 146, 164, 21, 38, 233, 249, 73, 64, 255, 158, 67, 170,
567 17, 172, 128, 244, 58, 234, 107, 198, 197, 228, 47, 109, 182, 34, 202, 162, 173, 13, 14, 227, 50,
568 22, 164, 156, 246, 11, 199, 233, 235, 159, 67, 24, 157, 191, 2, 3, 1, 0, 1, 163, 121, 48, 119, 48,
569 14, 6, 3, 85, 29, 15, 1, 1, 255, 4, 4, 3, 2, 5, 160, 48, 51, 6, 3, 85, 29, 17, 4, 44, 48, 42, 160,
570 40, 6, 10, 43, 6, 1, 4, 1, 130, 55, 20, 2, 3, 160, 26, 12, 24, 109, 97, 109, 111, 114, 101, 97,
571 117, 64, 100, 111, 119, 110, 104, 105, 108, 108, 112, 114, 111, 46, 120, 121, 122, 48, 19, 6, 3,
572 85, 29, 37, 4, 12, 48, 10, 6, 8, 43, 6, 1, 5, 5, 7, 3, 2, 48, 27, 6, 9, 43, 6, 1, 4, 1, 130, 55,
573 21, 10, 4, 14, 48, 12, 48, 10, 6, 8, 43, 6, 1, 5, 5, 7, 3, 2, 48, 13, 6, 9, 42, 134, 72, 134, 247,
574 13, 1, 1, 11, 5, 0, 3, 130, 1, 1, 0, 52, 19, 83, 79, 242, 219, 247, 152, 173, 207, 131, 233, 36,
575 186, 213, 25, 104, 89, 172, 106, 112, 21, 31, 25, 139, 186, 54, 131, 147, 126, 67, 185, 59, 165,
576 22, 61, 147, 69, 118, 54, 212, 229, 232, 3, 126, 50, 47, 77, 180, 165, 8, 54, 246, 20, 89, 126, 35,
577 253, 179, 73, 109, 45, 146, 74, 93, 64, 173, 178, 113, 103, 240, 177, 6, 97, 76, 171, 140, 27, 192,
578 114, 120, 77, 24, 203, 203, 122, 219, 171, 132, 229, 111, 70, 63, 121, 17, 89, 172, 191, 204, 169,
579 52, 16, 123, 41, 236, 116, 145, 236, 224, 25, 216, 62, 58, 195, 117, 105, 150, 46, 183, 197, 180,
580 51, 165, 97, 11, 247, 243, 139, 18, 176, 65, 137, 203, 78, 51, 164, 138, 202, 142, 134, 80, 75, 95,
581 139, 135, 86, 147, 108, 27, 126, 168, 174, 55, 197, 69, 92, 151, 206, 207, 73, 125, 101, 119, 99,
582 130, 136, 18, 105, 77, 7, 28, 178, 113, 171, 58, 202, 173, 12, 124, 32, 63, 234, 131, 127, 88, 17,
583 210, 29, 218, 175, 125, 34, 237, 219, 106, 207, 136, 126, 112, 70, 59, 229, 13, 23, 13, 243, 1, 5,
584 255, 222, 59, 190, 227, 219, 157, 219, 211, 96, 170, 168, 82, 127, 41, 47, 239, 51, 249, 69, 151,
585 69, 229, 9, 67, 243, 105, 206, 127, 3, 188, 159, 80, 19, 35, 156, 162, 196, 106, 47, 15, 109, 17,
586 253, 117, 14, 126, 160, 49, 130, 1, 199, 48, 130, 1, 195, 2, 1, 1, 48, 97, 48, 77, 49, 75, 48, 73,
587 6, 3, 85, 4, 3, 30, 66, 0, 77, 0, 83, 0, 45, 0, 79, 0, 114, 0, 103, 0, 97, 0, 110, 0, 105, 0, 122,
588 0, 97, 0, 116, 0, 105, 0, 111, 0, 110, 0, 45, 0, 80, 0, 50, 0, 80, 0, 45, 0, 65, 0, 99, 0, 99, 0,
589 101, 0, 115, 0, 115, 0, 32, 0, 91, 0, 50, 0, 48, 0, 50, 0, 49, 0, 93, 2, 16, 101, 97, 27, 230, 41,
590 155, 188, 234, 76, 173, 92, 163, 84, 82, 236, 140, 48, 9, 6, 5, 43, 14, 3, 2, 26, 5, 0, 160, 61,
591 48, 22, 6, 9, 42, 134, 72, 134, 247, 13, 1, 9, 3, 49, 9, 6, 7, 43, 6, 1, 5, 2, 3, 1, 48, 35, 6, 9,
592 42, 134, 72, 134, 247, 13, 1, 9, 4, 49, 22, 4, 20, 102, 68, 227, 41, 95, 65, 130, 138, 235, 245,
593 189, 250, 152, 141, 108, 239, 191, 39, 172, 175, 48, 13, 6, 9, 42, 134, 72, 134, 247, 13, 1, 1, 1,
594 5, 0, 4, 130, 1, 0, 6, 97, 27, 199, 212, 1, 132, 104, 88, 138, 94, 98, 29, 14, 122, 189, 62, 172,
595 78, 2, 208, 64, 141, 218, 173, 137, 36, 101, 172, 75, 136, 159, 133, 134, 37, 136, 127, 128, 177,
596 114, 108, 138, 53, 41, 125, 213, 123, 231, 149, 112, 215, 248, 240, 15, 20, 141, 9, 63, 18, 80, 2,
597 93, 126, 125, 229, 208, 142, 219, 196, 111, 110, 121, 50, 171, 57, 164, 95, 41, 181, 78, 215, 151,
598 226, 247, 93, 60, 224, 85, 152, 93, 251, 78, 73, 67, 85, 143, 42, 44, 166, 162, 187, 135, 124, 27,
599 55, 145, 134, 45, 75, 252, 22, 191, 193, 63, 30, 158, 83, 198, 188, 187, 220, 121, 40, 9, 223, 210,
600 9, 69, 121, 182, 193, 153, 144, 169, 235, 7, 244, 38, 135, 155, 241, 140, 192, 226, 175, 163, 157,
601 233, 65, 108, 215, 223, 232, 195, 159, 136, 194, 43, 247, 102, 143, 37, 56, 209, 56, 95, 55, 127,
602 6, 253, 154, 29, 163, 53, 56, 152, 106, 138, 128, 47, 129, 19, 103, 170, 72, 208, 221, 95, 111, 26,
603 123, 174, 85, 164, 85, 237, 168, 190, 145, 129, 213, 212, 110, 143, 199, 57, 35, 78, 12, 134, 159,
604 94, 82, 191, 241, 132, 31, 112, 46, 40, 225, 103, 146, 254, 108, 56, 160, 208, 176, 166, 214, 161,
605 1, 143, 105, 169, 183, 149, 222, 225, 246, 119, 193, 223, 54, 175, 234, 92, 143, 197, 93, 158, 242,
606 226, 254, 27
607 ])),
608 trusted_certifiers: Optional::from(None),
609 kdc_pk_id: Optional::from(None),
610 },
611 pa_pk_as_req
612 );
613 }
614
615 #[test]
616 fn pa_pk_as_rep_encode_enc_key_pack() {
617 let pa_pk_as_rep = PaPkAsRep::EncKeyPack(ImplicitContextTag1::from(OctetStringAsn1::from(vec![
618 94, 82, 191, 241, 132, 31, 112, 46, 40, 225, 103, 146, 254, 108, 56, 160, 208, 176, 166, 214, 161,
619 ])));
620
621 let encoded = picky_asn1_der::to_vec(&pa_pk_as_rep).unwrap();
622
623 assert_eq!(
624 &[
625 129, 21, 94, 82, 191, 241, 132, 31, 112, 46, 40, 225, 103, 146, 254, 108, 56, 160, 208, 176, 166, 214,
626 161
627 ],
628 encoded.as_slice()
629 );
630 }
631
632 #[test]
633 fn pa_pk_as_rep_encode_dh_info() {
634 let pa_pk_as_rep = PaPkAsRep::DhInfo(ExplicitContextTag0::from(DhRepInfo {
635 dh_signed_data: ImplicitContextTag0::from(OctetStringAsn1::from(vec![
636 221, 28, 174, 247, 196, 69, 212, 187, 37, 162, 198, 33, 238, 127, 68, 191, 239, 233, 46, 240, 67, 151,
637 40, 76, 232, 41, 137, 233, 117, 199, 11, 95, 201, 123, 246, 188, 44, 122, 105, 175, 179, 204, 127, 221,
638 57, 190, 66,
639 ])),
640 server_dh_nonce: Optional::from(Some(ExplicitContextTag1::from(OctetStringAsn1::from(vec![
641 197, 87, 1, 68, 61, 12, 232, 203, 120, 225, 215, 208, 224, 194, 49,
642 ])))),
643 }));
644
645 let encoded = picky_asn1_der::to_vec(&pa_pk_as_rep).unwrap();
646
647 assert_eq!(
648 &[
649 160, 70, 48, 68, 128, 47, 221, 28, 174, 247, 196, 69, 212, 187, 37, 162, 198, 33, 238, 127, 68, 191,
650 239, 233, 46, 240, 67, 151, 40, 76, 232, 41, 137, 233, 117, 199, 11, 95, 201, 123, 246, 188, 44, 122,
651 105, 175, 179, 204, 127, 221, 57, 190, 66, 161, 17, 4, 15, 197, 87, 1, 68, 61, 12, 232, 203, 120, 225,
652 215, 208, 224, 194, 49
653 ],
654 encoded.as_slice()
655 );
656 }
657
658 #[test]
659 fn pa_pk_as_rep_decode_enc_key_pack() {
660 let raw_data = [
661 129, 21, 94, 82, 191, 241, 132, 31, 112, 46, 40, 225, 103, 146, 254, 108, 56, 160, 208, 176, 166, 214, 161,
662 ];
663
664 let pa_pk_as_rep: PaPkAsRep = picky_asn1_der::from_bytes(&raw_data).unwrap();
665
666 assert_eq!(
667 PaPkAsRep::EncKeyPack(ImplicitContextTag1::from(OctetStringAsn1::from(vec![
668 94, 82, 191, 241, 132, 31, 112, 46, 40, 225, 103, 146, 254, 108, 56, 160, 208, 176, 166, 214, 161,
669 ]))),
670 pa_pk_as_rep
671 );
672 }
673
674 #[test]
675 fn pa_pk_as_rep_decode_dh_info() {
676 let raw_data = [
677 160, 130, 6, 103, 48, 130, 6, 99, 128, 130, 6, 59, 48, 130, 6, 55, 2, 1, 3, 49, 11, 48, 9, 6, 5, 43, 14, 3,
678 2, 26, 5, 0, 48, 129, 162, 6, 7, 43, 6, 1, 5, 2, 3, 2, 160, 129, 150, 4, 129, 147, 48, 129, 144, 160, 129,
679 136, 3, 129, 133, 0, 2, 129, 129, 0, 218, 76, 235, 63, 222, 122, 67, 6, 210, 4, 219, 144, 10, 253, 105,
680 197, 87, 1, 68, 61, 12, 232, 203, 120, 225, 215, 208, 224, 194, 49, 162, 89, 251, 216, 82, 14, 92, 119,
681 236, 147, 132, 225, 80, 117, 104, 218, 221, 117, 104, 149, 33, 9, 225, 159, 16, 243, 57, 44, 147, 221, 164,
682 8, 131, 5, 43, 219, 70, 8, 7, 60, 118, 39, 124, 30, 48, 205, 41, 150, 112, 133, 151, 136, 121, 91, 56, 12,
683 251, 210, 239, 155, 85, 63, 244, 177, 112, 133, 181, 245, 110, 164, 31, 197, 241, 14, 137, 195, 223, 226,
684 23, 158, 68, 27, 66, 118, 200, 170, 122, 33, 156, 104, 103, 155, 136, 28, 247, 8, 54, 20, 161, 3, 2, 1, 0,
685 160, 130, 3, 179, 48, 130, 3, 175, 48, 130, 2, 151, 160, 3, 2, 1, 2, 2, 16, 85, 47, 30, 63, 139, 118, 224,
686 166, 140, 108, 227, 232, 117, 255, 59, 249, 48, 13, 6, 9, 42, 134, 72, 134, 247, 13, 1, 1, 11, 5, 0, 48,
687 77, 49, 75, 48, 73, 6, 3, 85, 4, 3, 30, 66, 0, 77, 0, 83, 0, 45, 0, 79, 0, 114, 0, 103, 0, 97, 0, 110, 0,
688 105, 0, 122, 0, 97, 0, 116, 0, 105, 0, 111, 0, 110, 0, 45, 0, 80, 0, 50, 0, 80, 0, 45, 0, 65, 0, 99, 0, 99,
689 0, 101, 0, 115, 0, 115, 0, 32, 0, 91, 0, 50, 0, 48, 0, 50, 0, 49, 0, 93, 48, 30, 23, 13, 50, 50, 48, 53,
690 49, 55, 49, 57, 50, 52, 48, 54, 90, 23, 13, 50, 50, 48, 53, 49, 56, 49, 57, 50, 57, 48, 54, 90, 48, 101,
691 49, 52, 48, 50, 6, 10, 9, 146, 38, 137, 147, 242, 44, 100, 1, 25, 22, 36, 52, 99, 53, 97, 53, 101, 99, 49,
692 45, 57, 97, 99, 53, 45, 52, 54, 49, 50, 45, 57, 98, 52, 99, 45, 54, 98, 101, 100, 49, 55, 56, 98, 98, 54,
693 53, 97, 49, 45, 48, 43, 6, 3, 85, 4, 3, 12, 36, 99, 99, 51, 100, 57, 54, 98, 52, 45, 48, 97, 48, 100, 45,
694 52, 97, 53, 100, 45, 56, 98, 102, 98, 45, 56, 100, 54, 101, 97, 56, 100, 57, 53, 53, 100, 50, 48, 130, 1,
695 34, 48, 13, 6, 9, 42, 134, 72, 134, 247, 13, 1, 1, 1, 5, 0, 3, 130, 1, 15, 0, 48, 130, 1, 10, 2, 130, 1, 1,
696 0, 199, 77, 166, 39, 80, 222, 84, 115, 41, 66, 75, 180, 150, 219, 181, 13, 3, 102, 176, 46, 8, 194, 243,
697 198, 233, 126, 112, 105, 214, 207, 85, 254, 186, 228, 217, 23, 28, 232, 31, 209, 227, 99, 220, 60, 28, 78,
698 168, 51, 162, 48, 63, 120, 240, 186, 203, 224, 154, 164, 227, 78, 224, 4, 120, 160, 170, 134, 185, 124,
699 156, 51, 235, 206, 20, 62, 191, 51, 182, 195, 7, 184, 139, 80, 198, 103, 40, 37, 155, 219, 95, 56, 162,
700 242, 152, 249, 204, 236, 191, 67, 64, 180, 223, 13, 207, 32, 242, 203, 172, 126, 77, 90, 197, 6, 32, 162,
701 179, 253, 86, 158, 233, 147, 176, 44, 132, 150, 128, 103, 128, 157, 185, 157, 131, 50, 142, 248, 67, 68,
702 217, 122, 154, 103, 143, 101, 207, 136, 219, 79, 226, 0, 159, 117, 200, 43, 80, 95, 163, 247, 218, 117, 69,
703 248, 88, 64, 5, 181, 63, 109, 247, 80, 141, 174, 38, 220, 64, 250, 3, 82, 187, 52, 243, 151, 141, 237, 115,
704 115, 17, 199, 29, 213, 4, 197, 242, 40, 177, 141, 170, 241, 173, 179, 212, 100, 73, 102, 21, 255, 74, 213,
705 158, 11, 241, 110, 82, 139, 142, 209, 118, 197, 15, 240, 243, 50, 39, 23, 243, 172, 152, 170, 75, 97, 102,
706 169, 23, 245, 147, 180, 29, 22, 58, 3, 100, 35, 6, 98, 92, 164, 55, 39, 81, 87, 58, 25, 22, 31, 234, 173,
707 200, 213, 2, 3, 1, 0, 1, 163, 115, 48, 113, 48, 14, 6, 3, 85, 29, 15, 1, 1, 255, 4, 4, 3, 2, 5, 160, 48,
708 45, 6, 3, 85, 29, 17, 4, 38, 48, 36, 130, 11, 65, 90, 82, 68, 79, 87, 78, 45, 87, 49, 48, 130, 11, 65, 90,
709 82, 68, 79, 87, 78, 45, 87, 49, 48, 130, 8, 49, 48, 46, 49, 46, 48, 46, 52, 48, 19, 6, 3, 85, 29, 37, 4,
710 12, 48, 10, 6, 8, 43, 6, 1, 5, 5, 7, 3, 1, 48, 27, 6, 9, 43, 6, 1, 4, 1, 130, 55, 21, 10, 4, 14, 48, 12,
711 48, 10, 6, 8, 43, 6, 1, 5, 5, 7, 3, 1, 48, 13, 6, 9, 42, 134, 72, 134, 247, 13, 1, 1, 11, 5, 0, 3, 130, 1,
712 1, 0, 124, 211, 121, 241, 39, 108, 96, 140, 158, 149, 109, 212, 59, 78, 203, 168, 204, 137, 19, 171, 77,
713 67, 61, 166, 94, 122, 197, 145, 118, 157, 192, 156, 113, 249, 60, 110, 33, 188, 169, 75, 137, 57, 64, 130,
714 5, 128, 58, 248, 87, 211, 139, 50, 157, 138, 176, 226, 159, 239, 15, 103, 84, 126, 26, 147, 246, 82, 12,
715 80, 56, 61, 192, 231, 75, 104, 125, 95, 59, 52, 28, 236, 7, 195, 239, 242, 49, 105, 113, 168, 210, 102,
716 192, 207, 212, 185, 185, 100, 137, 250, 219, 180, 75, 84, 139, 15, 115, 187, 165, 170, 227, 48, 245, 58,
717 91, 137, 220, 197, 161, 180, 99, 195, 82, 92, 119, 170, 199, 3, 161, 221, 211, 177, 124, 92, 195, 92, 210,
718 165, 117, 41, 98, 234, 175, 123, 44, 252, 230, 121, 151, 208, 210, 165, 67, 150, 152, 200, 243, 21, 85,
719 209, 223, 217, 73, 243, 38, 166, 60, 3, 6, 140, 26, 170, 243, 114, 205, 210, 117, 111, 235, 38, 42, 43,
720 217, 170, 118, 150, 180, 38, 218, 39, 198, 156, 157, 182, 223, 198, 200, 13, 255, 101, 56, 124, 126, 126,
721 10, 255, 166, 203, 26, 251, 140, 248, 229, 41, 19, 94, 135, 210, 18, 185, 30, 55, 23, 195, 54, 88, 140,
722 174, 87, 65, 250, 143, 243, 163, 172, 142, 207, 190, 111, 113, 157, 204, 246, 0, 119, 11, 253, 208, 155,
723 101, 40, 217, 188, 10, 14, 89, 120, 146, 49, 130, 1, 199, 48, 130, 1, 195, 2, 1, 1, 48, 97, 48, 77, 49, 75,
724 48, 73, 6, 3, 85, 4, 3, 30, 66, 0, 77, 0, 83, 0, 45, 0, 79, 0, 114, 0, 103, 0, 97, 0, 110, 0, 105, 0, 122,
725 0, 97, 0, 116, 0, 105, 0, 111, 0, 110, 0, 45, 0, 80, 0, 50, 0, 80, 0, 45, 0, 65, 0, 99, 0, 99, 0, 101, 0,
726 115, 0, 115, 0, 32, 0, 91, 0, 50, 0, 48, 0, 50, 0, 49, 0, 93, 2, 16, 85, 47, 30, 63, 139, 118, 224, 166,
727 140, 108, 227, 232, 117, 255, 59, 249, 48, 9, 6, 5, 43, 14, 3, 2, 26, 5, 0, 160, 61, 48, 22, 6, 9, 42, 134,
728 72, 134, 247, 13, 1, 9, 3, 49, 9, 6, 7, 43, 6, 1, 5, 2, 3, 2, 48, 35, 6, 9, 42, 134, 72, 134, 247, 13, 1,
729 9, 4, 49, 22, 4, 20, 207, 84, 215, 76, 61, 237, 27, 245, 186, 203, 116, 211, 41, 149, 95, 129, 147, 149,
730 136, 166, 48, 13, 6, 9, 42, 134, 72, 134, 247, 13, 1, 1, 1, 5, 0, 4, 130, 1, 0, 111, 17, 1, 8, 116, 231,
731 197, 34, 227, 186, 92, 57, 120, 101, 232, 20, 207, 52, 39, 202, 112, 40, 194, 203, 86, 55, 75, 186, 92, 52,
732 55, 244, 26, 119, 58, 46, 200, 251, 185, 76, 244, 242, 18, 149, 207, 17, 126, 4, 41, 216, 89, 14, 137, 100,
733 190, 70, 0, 183, 138, 152, 26, 56, 162, 219, 146, 159, 128, 68, 195, 190, 195, 32, 2, 64, 118, 220, 182,
734 183, 218, 219, 145, 62, 246, 216, 214, 182, 244, 251, 97, 78, 232, 123, 167, 187, 154, 212, 10, 222, 244,
735 232, 249, 194, 202, 26, 149, 174, 109, 15, 218, 247, 45, 209, 232, 92, 5, 87, 249, 192, 249, 91, 240, 160,
736 7, 202, 196, 8, 161, 2, 41, 10, 242, 107, 43, 100, 45, 5, 75, 49, 222, 172, 249, 252, 196, 68, 71, 250,
737 195, 11, 185, 161, 184, 39, 65, 22, 44, 78, 245, 132, 193, 63, 231, 94, 113, 116, 125, 210, 243, 106, 48,
738 201, 50, 14, 177, 43, 168, 94, 39, 44, 221, 97, 60, 94, 230, 117, 248, 57, 143, 88, 117, 139, 75, 113, 97,
739 48, 39, 13, 168, 2, 247, 89, 110, 216, 96, 161, 47, 183, 168, 204, 145, 221, 28, 174, 247, 196, 69, 212,
740 187, 37, 162, 198, 33, 238, 127, 68, 191, 239, 233, 46, 240, 67, 151, 40, 76, 232, 41, 137, 233, 117, 199,
741 11, 95, 201, 123, 246, 188, 44, 122, 105, 175, 179, 204, 127, 221, 57, 190, 66, 161, 34, 4, 32, 160, 135,
742 139, 83, 106, 40, 32, 75, 125, 12, 23, 191, 191, 163, 215, 162, 217, 132, 196, 80, 212, 102, 88, 251, 252,
743 135, 151, 137, 121, 58, 199, 71,
744 ];
745
746 let pa_pk_as_rep: PaPkAsRep = picky_asn1_der::from_bytes(&raw_data).unwrap();
747
748 assert_eq!(
749 PaPkAsRep::DhInfo(ExplicitContextTag0::from(DhRepInfo {
750 dh_signed_data: ImplicitContextTag0::from(OctetStringAsn1::from(vec![
751 48, 130, 6, 55, 2, 1, 3, 49, 11, 48, 9, 6, 5, 43, 14, 3, 2, 26, 5, 0, 48, 129, 162, 6, 7, 43, 6, 1,
752 5, 2, 3, 2, 160, 129, 150, 4, 129, 147, 48, 129, 144, 160, 129, 136, 3, 129, 133, 0, 2, 129, 129,
753 0, 218, 76, 235, 63, 222, 122, 67, 6, 210, 4, 219, 144, 10, 253, 105, 197, 87, 1, 68, 61, 12, 232,
754 203, 120, 225, 215, 208, 224, 194, 49, 162, 89, 251, 216, 82, 14, 92, 119, 236, 147, 132, 225, 80,
755 117, 104, 218, 221, 117, 104, 149, 33, 9, 225, 159, 16, 243, 57, 44, 147, 221, 164, 8, 131, 5, 43,
756 219, 70, 8, 7, 60, 118, 39, 124, 30, 48, 205, 41, 150, 112, 133, 151, 136, 121, 91, 56, 12, 251,
757 210, 239, 155, 85, 63, 244, 177, 112, 133, 181, 245, 110, 164, 31, 197, 241, 14, 137, 195, 223,
758 226, 23, 158, 68, 27, 66, 118, 200, 170, 122, 33, 156, 104, 103, 155, 136, 28, 247, 8, 54, 20, 161,
759 3, 2, 1, 0, 160, 130, 3, 179, 48, 130, 3, 175, 48, 130, 2, 151, 160, 3, 2, 1, 2, 2, 16, 85, 47, 30,
760 63, 139, 118, 224, 166, 140, 108, 227, 232, 117, 255, 59, 249, 48, 13, 6, 9, 42, 134, 72, 134, 247,
761 13, 1, 1, 11, 5, 0, 48, 77, 49, 75, 48, 73, 6, 3, 85, 4, 3, 30, 66, 0, 77, 0, 83, 0, 45, 0, 79, 0,
762 114, 0, 103, 0, 97, 0, 110, 0, 105, 0, 122, 0, 97, 0, 116, 0, 105, 0, 111, 0, 110, 0, 45, 0, 80, 0,
763 50, 0, 80, 0, 45, 0, 65, 0, 99, 0, 99, 0, 101, 0, 115, 0, 115, 0, 32, 0, 91, 0, 50, 0, 48, 0, 50,
764 0, 49, 0, 93, 48, 30, 23, 13, 50, 50, 48, 53, 49, 55, 49, 57, 50, 52, 48, 54, 90, 23, 13, 50, 50,
765 48, 53, 49, 56, 49, 57, 50, 57, 48, 54, 90, 48, 101, 49, 52, 48, 50, 6, 10, 9, 146, 38, 137, 147,
766 242, 44, 100, 1, 25, 22, 36, 52, 99, 53, 97, 53, 101, 99, 49, 45, 57, 97, 99, 53, 45, 52, 54, 49,
767 50, 45, 57, 98, 52, 99, 45, 54, 98, 101, 100, 49, 55, 56, 98, 98, 54, 53, 97, 49, 45, 48, 43, 6, 3,
768 85, 4, 3, 12, 36, 99, 99, 51, 100, 57, 54, 98, 52, 45, 48, 97, 48, 100, 45, 52, 97, 53, 100, 45,
769 56, 98, 102, 98, 45, 56, 100, 54, 101, 97, 56, 100, 57, 53, 53, 100, 50, 48, 130, 1, 34, 48, 13, 6,
770 9, 42, 134, 72, 134, 247, 13, 1, 1, 1, 5, 0, 3, 130, 1, 15, 0, 48, 130, 1, 10, 2, 130, 1, 1, 0,
771 199, 77, 166, 39, 80, 222, 84, 115, 41, 66, 75, 180, 150, 219, 181, 13, 3, 102, 176, 46, 8, 194,
772 243, 198, 233, 126, 112, 105, 214, 207, 85, 254, 186, 228, 217, 23, 28, 232, 31, 209, 227, 99, 220,
773 60, 28, 78, 168, 51, 162, 48, 63, 120, 240, 186, 203, 224, 154, 164, 227, 78, 224, 4, 120, 160,
774 170, 134, 185, 124, 156, 51, 235, 206, 20, 62, 191, 51, 182, 195, 7, 184, 139, 80, 198, 103, 40,
775 37, 155, 219, 95, 56, 162, 242, 152, 249, 204, 236, 191, 67, 64, 180, 223, 13, 207, 32, 242, 203,
776 172, 126, 77, 90, 197, 6, 32, 162, 179, 253, 86, 158, 233, 147, 176, 44, 132, 150, 128, 103, 128,
777 157, 185, 157, 131, 50, 142, 248, 67, 68, 217, 122, 154, 103, 143, 101, 207, 136, 219, 79, 226, 0,
778 159, 117, 200, 43, 80, 95, 163, 247, 218, 117, 69, 248, 88, 64, 5, 181, 63, 109, 247, 80, 141, 174,
779 38, 220, 64, 250, 3, 82, 187, 52, 243, 151, 141, 237, 115, 115, 17, 199, 29, 213, 4, 197, 242, 40,
780 177, 141, 170, 241, 173, 179, 212, 100, 73, 102, 21, 255, 74, 213, 158, 11, 241, 110, 82, 139, 142,
781 209, 118, 197, 15, 240, 243, 50, 39, 23, 243, 172, 152, 170, 75, 97, 102, 169, 23, 245, 147, 180,
782 29, 22, 58, 3, 100, 35, 6, 98, 92, 164, 55, 39, 81, 87, 58, 25, 22, 31, 234, 173, 200, 213, 2, 3,
783 1, 0, 1, 163, 115, 48, 113, 48, 14, 6, 3, 85, 29, 15, 1, 1, 255, 4, 4, 3, 2, 5, 160, 48, 45, 6, 3,
784 85, 29, 17, 4, 38, 48, 36, 130, 11, 65, 90, 82, 68, 79, 87, 78, 45, 87, 49, 48, 130, 11, 65, 90,
785 82, 68, 79, 87, 78, 45, 87, 49, 48, 130, 8, 49, 48, 46, 49, 46, 48, 46, 52, 48, 19, 6, 3, 85, 29,
786 37, 4, 12, 48, 10, 6, 8, 43, 6, 1, 5, 5, 7, 3, 1, 48, 27, 6, 9, 43, 6, 1, 4, 1, 130, 55, 21, 10, 4,
787 14, 48, 12, 48, 10, 6, 8, 43, 6, 1, 5, 5, 7, 3, 1, 48, 13, 6, 9, 42, 134, 72, 134, 247, 13, 1, 1,
788 11, 5, 0, 3, 130, 1, 1, 0, 124, 211, 121, 241, 39, 108, 96, 140, 158, 149, 109, 212, 59, 78, 203,
789 168, 204, 137, 19, 171, 77, 67, 61, 166, 94, 122, 197, 145, 118, 157, 192, 156, 113, 249, 60, 110,
790 33, 188, 169, 75, 137, 57, 64, 130, 5, 128, 58, 248, 87, 211, 139, 50, 157, 138, 176, 226, 159,
791 239, 15, 103, 84, 126, 26, 147, 246, 82, 12, 80, 56, 61, 192, 231, 75, 104, 125, 95, 59, 52, 28,
792 236, 7, 195, 239, 242, 49, 105, 113, 168, 210, 102, 192, 207, 212, 185, 185, 100, 137, 250, 219,
793 180, 75, 84, 139, 15, 115, 187, 165, 170, 227, 48, 245, 58, 91, 137, 220, 197, 161, 180, 99, 195,
794 82, 92, 119, 170, 199, 3, 161, 221, 211, 177, 124, 92, 195, 92, 210, 165, 117, 41, 98, 234, 175,
795 123, 44, 252, 230, 121, 151, 208, 210, 165, 67, 150, 152, 200, 243, 21, 85, 209, 223, 217, 73, 243,
796 38, 166, 60, 3, 6, 140, 26, 170, 243, 114, 205, 210, 117, 111, 235, 38, 42, 43, 217, 170, 118, 150,
797 180, 38, 218, 39, 198, 156, 157, 182, 223, 198, 200, 13, 255, 101, 56, 124, 126, 126, 10, 255, 166,
798 203, 26, 251, 140, 248, 229, 41, 19, 94, 135, 210, 18, 185, 30, 55, 23, 195, 54, 88, 140, 174, 87,
799 65, 250, 143, 243, 163, 172, 142, 207, 190, 111, 113, 157, 204, 246, 0, 119, 11, 253, 208, 155,
800 101, 40, 217, 188, 10, 14, 89, 120, 146, 49, 130, 1, 199, 48, 130, 1, 195, 2, 1, 1, 48, 97, 48, 77,
801 49, 75, 48, 73, 6, 3, 85, 4, 3, 30, 66, 0, 77, 0, 83, 0, 45, 0, 79, 0, 114, 0, 103, 0, 97, 0, 110,
802 0, 105, 0, 122, 0, 97, 0, 116, 0, 105, 0, 111, 0, 110, 0, 45, 0, 80, 0, 50, 0, 80, 0, 45, 0, 65, 0,
803 99, 0, 99, 0, 101, 0, 115, 0, 115, 0, 32, 0, 91, 0, 50, 0, 48, 0, 50, 0, 49, 0, 93, 2, 16, 85, 47,
804 30, 63, 139, 118, 224, 166, 140, 108, 227, 232, 117, 255, 59, 249, 48, 9, 6, 5, 43, 14, 3, 2, 26,
805 5, 0, 160, 61, 48, 22, 6, 9, 42, 134, 72, 134, 247, 13, 1, 9, 3, 49, 9, 6, 7, 43, 6, 1, 5, 2, 3, 2,
806 48, 35, 6, 9, 42, 134, 72, 134, 247, 13, 1, 9, 4, 49, 22, 4, 20, 207, 84, 215, 76, 61, 237, 27,
807 245, 186, 203, 116, 211, 41, 149, 95, 129, 147, 149, 136, 166, 48, 13, 6, 9, 42, 134, 72, 134, 247,
808 13, 1, 1, 1, 5, 0, 4, 130, 1, 0, 111, 17, 1, 8, 116, 231, 197, 34, 227, 186, 92, 57, 120, 101, 232,
809 20, 207, 52, 39, 202, 112, 40, 194, 203, 86, 55, 75, 186, 92, 52, 55, 244, 26, 119, 58, 46, 200,
810 251, 185, 76, 244, 242, 18, 149, 207, 17, 126, 4, 41, 216, 89, 14, 137, 100, 190, 70, 0, 183, 138,
811 152, 26, 56, 162, 219, 146, 159, 128, 68, 195, 190, 195, 32, 2, 64, 118, 220, 182, 183, 218, 219,
812 145, 62, 246, 216, 214, 182, 244, 251, 97, 78, 232, 123, 167, 187, 154, 212, 10, 222, 244, 232,
813 249, 194, 202, 26, 149, 174, 109, 15, 218, 247, 45, 209, 232, 92, 5, 87, 249, 192, 249, 91, 240,
814 160, 7, 202, 196, 8, 161, 2, 41, 10, 242, 107, 43, 100, 45, 5, 75, 49, 222, 172, 249, 252, 196, 68,
815 71, 250, 195, 11, 185, 161, 184, 39, 65, 22, 44, 78, 245, 132, 193, 63, 231, 94, 113, 116, 125,
816 210, 243, 106, 48, 201, 50, 14, 177, 43, 168, 94, 39, 44, 221, 97, 60, 94, 230, 117, 248, 57, 143,
817 88, 117, 139, 75, 113, 97, 48, 39, 13, 168, 2, 247, 89, 110, 216, 96, 161, 47, 183, 168, 204, 145,
818 221, 28, 174, 247, 196, 69, 212, 187, 37, 162, 198, 33, 238, 127, 68, 191, 239, 233, 46, 240, 67,
819 151, 40, 76, 232, 41, 137, 233, 117, 199, 11, 95, 201, 123, 246, 188, 44, 122, 105, 175, 179, 204,
820 127, 221, 57, 190, 66
821 ])),
822 server_dh_nonce: Optional::from(Some(ExplicitContextTag1::from(OctetStringAsn1::from(vec![
823 160, 135, 139, 83, 106, 40, 32, 75, 125, 12, 23, 191, 191, 163, 215, 162, 217, 132, 196, 80, 212,
824 102, 88, 251, 252, 135, 151, 137, 121, 58, 199, 71
825 ]))))
826 })),
827 pa_pk_as_rep
828 );
829 }
830}