MCPcopy Create free account
hub / github.com/DNSCrypt/encrypted-dns-server / appendix3_vectors

Function appendix3_vectors

src/pq.rs:314–521  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

312 // wire format and key schedule against the reference generator.
313 #[test]
314 fn appendix3_vectors() {
315 unsafe {
316 assert!(sodium_init() >= 0);
317 }
318
319 // ---- pinned inputs ----
320 let mut resolver_seed = [0u8; 32];
321 iota(&mut resolver_seed, 0x20);
322 let mut eseed = [0u8; 64];
323 iota(&mut eseed, 0x40);
324 let client_magic = [0xa1, 0xb2, 0xc3, 0xd4, 0xe5, 0xf6, 0x07, 0x18u8];
325 let es_version = PQ_ES_VERSION;
326 let minor = [0x00, 0x00u8];
327 let serial = [0x00, 0x00, 0x00, 0x01u8];
328 let ts_start = [0x68, 0x00, 0x00, 0x00u8];
329 let ts_end = [0x68, 0x01, 0x51, 0x80u8];
330 let mut q_nonce = [0u8; 12];
331 iota(&mut q_nonce, 0xb0);
332 let mut r_nonce = [0u8; 12];
333 iota(&mut r_nonce, 0xc0);
334 let mut tk_key = [0u8; 32];
335 iota(&mut tk_key, 0x80);
336 let tk = TicketKey {
337 id: [0x00, 0x00, 0x00, 0x01],
338 key: SharedKey::from_bytes(tk_key),
339 };
340 let mut ticket_nonce = [0u8; 24];
341 iota(&mut ticket_nonce, 0xd0);
342 let ticket_expiry: u32 = 0x6800_0258;
343 let ticket_lifetime: u32 = 0x0000_012c;
344 let mut rq_nonce = [0u8; 12];
345 iota(&mut rq_nonce, 0xf0);
346 let mut rr_nonce = [0u8; 12];
347 iota(&mut rr_nonce, 0x10);
348 let extensions = profile_extension();
349 assert_eq!(hexd(&extensions), "505144010003010104c00460");
350
351 let dns_query = hex_to_vec("12340100000100000000000003777777076578616d706c6503636f6d0000010001");
352 let dns_response = hex_to_vec("12348180000100010000000003777777076578616d706c6503636f6d00000100\
35301c00c0001000100000e1000045db8d822");
354
355 // ---- KEM keygen + encapsulation (client side, deterministic) ----
356 let kp = XWingKeyPair::from_seed(resolver_seed);
357 let resolver_pk = kp.public_key_bytes();
358 let mut ct_bytes = [0u8; XWING_CT_SIZE];
359 let mut kem_ss = [0u8; 32];
360 let rc = unsafe {
361 crypto_kem_xwing_enc_deterministic(
362 ct_bytes.as_mut_ptr(),
363 kem_ss.as_mut_ptr(),
364 resolver_pk.as_ptr(),
365 eseed.as_ptr(),
366 )
367 };
368 assert_eq!(rc, 0);
369 assert_eq!(
370 hexd(&kem_ss),
371 "8dac8602d4ce5e27e81335b54b25fdcaea86e56613214ee0522db4a5e0a38d50"

Callers

nothing calls this directly

Calls 15

iotaFunction · 0.85
profile_extensionFunction · 0.85
hex_to_vecFunction · 0.85
cert_contextFunction · 0.85
derive_shared_keyFunction · 0.85
pad7816Function · 0.85
newFunction · 0.85
resume_secretFunction · 0.85
sha256Function · 0.85
ticket_plainFunction · 0.85
seal_ticketFunction · 0.85
control_blockFunction · 0.85

Tested by

no test coverage detected