code wiki / (root) / nx_sign_ceremony_gate.nx

nx_sign_ceremony_gate.nx source

↩ module page · 66 lines · 2746 B

1// nx_sign_ceremony_gate.nx -- INDEPENDENT gate for the Sign ceremony (imports the SAME 2// shipped nx_sign_ceremony_lib = atlas validation edge). Tests: consent-gate BOTH ways, 3// audit-head advance, determinism, signer-tamper, cert determinism + uniqueness. 4// SELF-PUBLISHES knowledge/status/office_ceremony_gate.log (needle "VERDICT="). 5// license_tier: ORIGINAL 6 7import "nx_sign_ceremony_lib.nx" 8 9func scg_eq69(a: *u8, b: *u8) -> i64 { 10 var i: i64 = 0 11 while i < 69 { if a[i] != b[i] { return 0 } i = i + 1 } 12 return 1 13} 14 15func main() -> i64 { 16 var pass: i64 = 0 17 let g: *u8 = sys_mmap(40) 18 se_genesis(g) 19 let h: *u8 = sys_mmap(40) 20 // T1 no-consent -> REFUSED 21 if sc_sign("E" as *u8, 0, "X" as *u8, 1, "no" as *u8, g, h) == 0 { pass = pass + 1 } 22 // T2 consent -> SIGNED 23 if sc_sign("E" as *u8, 0, "X" as *u8, 1, "yes" as *u8, g, h) == 1 { pass = pass + 1 } 24 // T3 audit head advanced 25 if se_eq32(g, h) == 0 { pass = pass + 1 } 26 // T4 determinism: same sign -> same head 27 let hd: *u8 = sys_mmap(40) 28 sc_sign("E" as *u8, 0, "X" as *u8, 1, "yes" as *u8, g, hd) 29 if se_eq32(h, hd) == 1 { pass = pass + 1 } 30 // T5 signer-tamper: different signer -> different head 31 let hy: *u8 = sys_mmap(40) 32 sc_sign("E" as *u8, 0, "Y" as *u8, 1, "yes" as *u8, g, hy) 33 if se_eq32(h, hy) == 0 { pass = pass + 1 } 34 // T6 cert deterministic 35 let hh: *u8 = sys_mmap(80) 36 se_hex(h, hh) 37 let c1: *u8 = sys_mmap(2048) 38 let l1: i64 = sc_cert("E" as *u8, "doc" as *u8, "2" as *u8, hh, c1) 39 let cid1: *u8 = sys_mmap(80) 40 cid_of(c1, l1, cid1) 41 let c2: *u8 = sys_mmap(2048) 42 let l2: i64 = sc_cert("E" as *u8, "doc" as *u8, "2" as *u8, hh, c2) 43 let cid2: *u8 = sys_mmap(80) 44 cid_of(c2, l2, cid2) 45 if scg_eq69(cid1, cid2) == 1 { pass = pass + 1 } 46 // T7 cert uniqueness: different signer count -> different cid 47 let c3: *u8 = sys_mmap(2048) 48 let l3: i64 = sc_cert("E" as *u8, "doc" as *u8, "3" as *u8, hh, c3) 49 let cid3: *u8 = sys_mmap(80) 50 cid_of(c3, l3, cid3) 51 if scg_eq69(cid1, cid3) == 0 { pass = pass + 1 } 52 53 let out: *u8 = sys_mmap(512) 54 var o: i64 = 0 55 o = se_catcopy(out, o, "OFFICE-CEREMONY-GATE tests=7 pass=" as *u8) 56 o = se_catn(out, o, pass) 57 o = se_catcopy(out, o, " consent-gate-both+head-advance+determinism+signer-tamper+cert-det+cert-uniq VERDICT=" as *u8) 58 if pass == 7 { o = se_catcopy(out, o, "GREEN" as *u8) } 59 if pass != 7 { o = se_catcopy(out, o, "RED" as *u8) } 60 out[o] = 10 as u8 61 o = o + 1 62 ss_writefile("knowledge/status/office_ceremony_gate.log" as *u8, out, o) 63 sys_write(1, out, o) 64 if pass == 7 { return __syscall(93, 0, 0, 0, 0, 0, 0) } 65 return __syscall(93, 60 + pass, 0, 0, 0, 0, 0) 66}