code wiki / (root) / nx_site_publish_sized_guard_gate.nx

nx_site_publish_sized_guard_gate.nx source

↩ module page · 56 lines · 4442 B

1// Real NXA payload qualification in an exclusively created scratch directory. 2import "nx_site_publish_gate.nx" 3func main(argc: i64,argv: *i64) -> i64 { 4 if argc != 5 { return 2 } 5 let count: i64=pb_sized_bytes(argv[4] as *u8) 6 if count <= FSX_READ_CAP { return 2 } 7 var an: i64=0;var bn: i64=0 8 let a: *u8=sys_read_file(argv[2] as *u8,&an) 9 let b: *u8=sys_read_file(argv[3] as *u8,&bn) 10 if (a as i64)==0 || (b as i64)==0 || an<=0 || bn!=count { return 3 } 11 if pb_same_bytes(a,an,b,bn)==1 { return 3 } 12 if sys_mkdir(argv[1] as *u8,0x1ed)!=0 || sys_chdir(argv[1] as *u8)!=0 { return 4 } 13 sys_mkdir("sites" as *u8,0x1ed);sys_mkdir("sites/gatesite" as *u8,0x1ed);sys_mkdir("knowledge" as *u8,0x1ed) 14 if fsx_write("sites/gatesite/model.nxa" as *u8,a,an)<0 || fsx_write("candidate.nxa" as *u8,b,bn)<0 { return 5 } 15 let ha: *u8=sys_mmap(PB_SHA_HEX+1);let hb: *u8=sys_mmap(PB_SHA_HEX+1) 16 pb_hash(a,an,ha);pb_hash(b,bn,hb) 17 let av: *i64=sys_mmap((PB_GUARDED_SIZED_ARGC+1)*__size_of(i64)) as *i64 18 av[0]="nx_site_publish" as *u8 as i64;av[1]="publish-guarded" as *u8 as i64 19 av[2]="candidate.nxa" as *u8 as i64;av[3]="gatesite" as *u8 as i64;av[4]="model.nxa" as *u8 as i64 20 av[5]=hb as i64;av[6]=ha as i64;av[7]=argv[4] 21 if sp_main(PB_GUARDED_SIZED_ARGC,av)!=FSX_RC_DENIED { return 6 } 22 let conf: *u8="gatesite\tsites/gatesite\tknowledge/pub-\thttps://example.invalid\tGate\tprivate/\n" 23 if ss_writefile("knowledge/pub_sites.conf" as *u8,conf,ss_len(conf))!=0 { return 7 } 24 let row: *i64=ss_begin_cap(64);ss_add(row,1,"q:n" as *u8,"0" as *u8,1) 25 if ss_commit("knowledge/pub-" as *u8,row,ss_next_segid("knowledge/pub-" as *u8))!=0 { return 7 } 26 if pl_register_asset("knowledge/pub-" as *u8,"model.nxa" as *u8,"real binary guarded size gate" as *u8)!=1 { return 7 } 27 av[5]=ha as i64 28 if sp_main(PB_GUARDED_SIZED_ARGC,av)!=PB_RC_CONFLICT || sg_eq_bytes("sites/gatesite/model.nxa" as *u8,a,an)!=1 { return 8 } 29 av[5]=hb as i64;av[6]="absent" as *u8 as i64 30 if sp_main(PB_GUARDED_SIZED_ARGC,av)!=PB_RC_CONFLICT || sg_absent("sites/gatesite/model.nxa.prev" as *u8)!=1 { return 9 } 31 av[6]=ha as i64;av[7]="1" as *u8 as i64 32 if sp_main(PB_GUARDED_SIZED_ARGC,av)!=PB_RC_CONFLICT || sg_eq_bytes("sites/gatesite/model.nxa" as *u8,a,an)!=1 { return 10 } 33 av[7]=argv[4] 34 if sp_main(PB_GUARDED_SIZED_ARGC,av)!=0 || sg_eq_bytes("sites/gatesite/model.nxa" as *u8,b,bn)!=1 || sg_eq_bytes("sites/gatesite/model.nxa.prev" as *u8,a,an)!=1 { return 11 } 35 if sp_main(PB_GUARDED_SIZED_ARGC,av)!=0 || sg_eq_bytes("sites/gatesite/model.nxa.prev" as *u8,a,an)!=1 { return 12 } 36 let changed:*u8=sys_mmap(bn+1) 37 var i:i64=0;while i<bn {changed[i]=b[i];i=i+1} 38 changed[bn]=173 as u8 39 if fsx_write("candidate.nxa" as *u8,changed,bn+1)<0 {return 13} 40 if sp_main(PB_GUARDED_SIZED_ARGC,av)!=PB_RC_CONFLICT || sg_eq_bytes("sites/gatesite/model.nxa" as *u8,b,bn)!=1 {return 14} 41 if fsx_write("candidate.nxa" as *u8,b,bn-1)<0 {return 15} 42 if sp_main(PB_GUARDED_SIZED_ARGC,av)!=PB_RC_CONFLICT || sg_eq_bytes("sites/gatesite/model.nxa" as *u8,b,bn)!=1 {return 16} 43 changed[bn-1]=((changed[bn-1] as i64)^1) as u8 44 let hc:*u8=sys_mmap(PB_SHA_HEX+1);pb_hash(changed,bn,hc) 45 if fsx_write("equal.nxa" as *u8,changed,bn)<0 {return 17} 46 av[2]="equal.nxa" as *u8 as i64;av[5]=hc as i64;av[6]=hb as i64 47 if sp_main(PB_GUARDED_SIZED_ARGC,av)!=0 || sg_eq_bytes("sites/gatesite/model.nxa" as *u8,changed,bn)!=1 || sg_eq_bytes("sites/gatesite/model.nxa.prev" as *u8,b,bn)!=1 {return 18} 48 if sp_main(PB_GUARDED_SIZED_ARGC,av)!=0 || sg_eq_bytes("sites/gatesite/model.nxa.prev" as *u8,b,bn)!=1 {return 19} 49 if fsx_write("original.nxa" as *u8,a,an)<0 {return 20} 50 let extent:*u8=sys_mmap(NXI_BUF);let en:i64=nxi_buf(extent,0,an);extent[en]=0 as u8 51 av[2]="original.nxa" as *u8 as i64;av[5]=ha as i64;av[6]=hc as i64;av[7]=extent as i64 52 if sp_main(PB_GUARDED_SIZED_ARGC,av)!=0 || sg_eq_bytes("sites/gatesite/model.nxa" as *u8,a,an)!=1 || sg_eq_bytes("sites/gatesite/model.nxa.prev" as *u8,changed,bn)!=1 {return 21} 53 fsx_puts("SIZED-GUARDED 11/11 real artifacts: registry, artifact digest, prior digest, extent, replacement, retry, source growth refusal, source truncation refusal, equal-size change, equal retry and reverse-size change\n") 54 fsx_puts("prior_bytes=");fsx_putn(an);fsx_puts(" incoming_bytes=");fsx_putn(bn);fsx_puts("\n") 55 return 0 56}