nx_aes256_gcm_gate.nx
buildroot/runtime/nx_aes256_gcm_gate.nx
about
nx_aes256_gcm_gate.nx -- SOVEREIGN KAT referee for AES-256-GCM vs NIST SP 800-38D / McGrew GCM test vectors.
TC14: zero key/IV, 16-byte zero PT, no AAD -> CT=cea7403d.. Tag=d0d1c8a7..
TC16: real key/IV + 20-byte AAD + 60-byte PT (ragged, exercises multi-block + tail) -> CT=522dc1f0.. Tag=76fc6ece..
T1 seal(TC14) == CT+Tag ; T2 open(TC14) recovers PT + tag OK ; T3 seal(TC16) == CT+Tag ; T4 open(TC16) recovers PT
T5 NEG: open(TC16) with a corrupted tag -> -1 (authentication rejects) ; T6 aes256 KAT block (FIPS-197 C.3)
GREEN iff 6/6. license_tier: ORIGINAL expect_exit: 0
dependencies 3 imports · 0 importers
imports: nx_syscalls.nxnx_aes256_gcm.nxnx_gate_verdict.nx
imported by: nobody (leaf or entry point)
call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown
structs
| none |
consts
| none |
functions
| 11 | func gw(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 } |
| 12 | func gn(v: i64) -> i64 { let b: *u8 = sys_mmap(24); var m: i64 = v; if m < 0 { gw("-" as *u8); m = 0 - m }; let t: *u8 = sys_mmap(24); var k: i64 = 0; if m == 0 { t[0] = 48 as u8; k = 1 }; while m > 0 { t[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 }; var i: i64 = 0; while i < k { b[i] = t[k - 1 - i]; i = i + 1 }; sys_write(1, b, k); return 0 } |
| 13 | func grow(name: *u8, ok: i64) -> i64 { if ok == 1 { gw(" PASS " as *u8) } else { gw(" FAIL " as *u8) } gw(name); gw("\n" as *u8); return ok } |
| 15 | func hx(c: i64) -> i64 { if c>=48 { if c<=57 { return c-48 } } if c>=97 { if c<=102 { return c-87 } } if c>=65 { if c<=70 { return c-55 } } return 0 } called by 1: h2b |
| 17 | func h2b(s: *u8, out: *u8) -> i64 |
| 22 | func beq(a: *u8, b: *u8, n: i64) -> i64 { var i: i64 = 0; while i < n { if (a[i] as i64) != (b[i] as i64) { return 0 } i = i + 1 } return 1 } called by 1: main |
| 24 | func main() -> i64 |