code wiki / _hdl_build / nx_vault_lease_test.nx

nx_vault_lease_test.nx source

↩ module page · 47 lines · 3314 B

1// nx_vault_lease_test.nx -- LEASEGATE: proves the lease/TTL/auto-expiry engine. GREEN iff: valid within 2// ttl; auto-EXPIRES at the boundary; remaining computed; renew extends; renew is CAPPED at max_ttl (can't 3// renew forever); revoke invalidates IMMEDIATELY (overrides time); state classified. exit 0 on 7/7. 4import "nx_vault_lease.nx" 5import "nx_syscalls.nx" 6 7func lg_puts(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 } 8func lg_num(v: i64) -> i64 { let b: *u8 = sys_mmap(28); var m: i64=v; if m<0 {m=0-m;sys_write(1,"-" as *u8,1)}; let t: *u8 = sys_mmap(28); var k: i64=0; if m==0 {t[0]=48;k=1}; while m>0 {t[k]=48+(m%10); 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 } 9 10func main() -> i64 { 11 lg_puts("=== SOVEREIGN LEASE / TTL / AUTO-EXPIRY ===\n" as *u8) 12 let issued: i64 = 1000 13 let ttl: i64 = 100 14 let max_ttl: i64 = 300 15 16 let valid_mid: i64 = lease_valid(1050, issued, ttl, 0) // within ttl 17 let valid_atexp: i64 = lease_valid(1100, issued, ttl, 0) // exactly at expiry -> expired 18 let rem_mid: i64 = lease_remaining(1050, issued, ttl, 0) // 50 left 19 let renew_mid: i64 = lease_renew_expiry(1050, issued, ttl, max_ttl)// min(1150, 1300) = 1150 20 let renew_cap: i64 = lease_renew_expiry(1250, issued, ttl, max_ttl)// min(1350, 1300) = 1300 (capped) 21 let valid_revk: i64 = lease_valid(1050, issued, ttl, 1) // revoked -> invalid despite time 22 let st_ok: i64 = lease_state(1050, issued, ttl, 0) 23 let st_exp: i64 = lease_state(1100, issued, ttl, 0) 24 let st_rev: i64 = lease_state(1050, issued, ttl, 1) 25 26 lg_puts(" valid@1050=" as *u8); lg_num(valid_mid); lg_puts(" valid@1100=" as *u8); lg_num(valid_atexp) 27 lg_puts(" remaining@1050=" as *u8); lg_num(rem_mid); lg_puts(" renew@1050=" as *u8); lg_num(renew_mid) 28 lg_puts(" renew@1250(capped)=" as *u8); lg_num(renew_cap); lg_puts(" valid-when-revoked=" as *u8); lg_num(valid_revk); lg_puts("\n" as *u8) 29 30 let r: *i64 = sys_mmap(8*8) as *i64 31 r[0] = 0; if valid_mid == 1 { r[0] = 1 } // valid within ttl 32 r[1] = 0; if valid_atexp == 0 { r[1] = 1 } // auto-expires at boundary 33 r[2] = 0; if rem_mid == 50 { r[2] = 1 } // remaining computed 34 r[3] = 0; if renew_mid == 1150 { r[3] = 1 } // renew extends 35 r[4] = 0; if renew_cap == 1300 { r[4] = 1 } // renew CAPPED at max_ttl 36 r[5] = 0; if valid_revk == 0 { r[5] = 1 } // revoke invalidates immediately 37 r[6] = 0; if st_ok == LEASE_OK { if st_exp == LEASE_EXPIRED { if st_rev == LEASE_REVOKED { r[6] = 1 } } } 38 39 var pass: i64 = 0; var i: i64 = 0 40 while i < 7 { pass = pass + r[i]; i = i + 1 } 41 lg_puts("----\n passed " as *u8); lg_num(pass); lg_puts("/7\n" as *u8) 42 if pass == 7 { 43 lg_puts("LEASEGATE valid_in_ttl=1 auto_expiry=1 remaining=1 renew=1 renew_capped_at_max_ttl=1 revoke_immediate=1 state=1 exceed[sovereign time-bound secrets w/ hard max-ttl cap = HashiCorp leasing-class; deterministic injected-clock = replayable] verdict=GREEN\n" as *u8) 44 sys_exit(0); return 0 45 } 46 lg_puts("LEASEGATE verdict=RED\n" as *u8); sys_exit(1); return 1 47}