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}