code wiki / _hdl_build / nx_vault_lease.nx

nx_vault_lease.nx source

↩ module page · 40 lines · 1648 B

1// nx_vault_lease.nx -- sovereign LEASE / TTL / auto-expiry (HashiCorp Vault "leasing" gap from 2// vault_capability_census.tsv). Every issued secret carries a lease: issued_at + ttl, capped by a hard 3// max_ttl, renewable, revocable. Time-bound access with auto-expiry is what BOUNDS the blast radius when a 4// secret leaks -- a stolen lease dies on its own. Pure deterministic logic: "now" is INJECTED, never 5// wall-clock (correct for a gate AND for replay). license_tier: ORIGINAL 6import "nx_syscalls.nx" 7 8const LEASE_OK: i64 = 1 9const LEASE_EXPIRED: i64 = 0 10const LEASE_REVOKED: i64 = 0 - 1 11 12// is the lease valid at `now`? a revoke overrides time. 13func lease_valid(now: i64, issued_at: i64, ttl: i64, revoked: i64) -> i64 { 14 if revoked == 1 { return 0 } 15 if now < issued_at + ttl { return 1 } 16 return 0 17} 18 19// seconds remaining (0 if expired or revoked). 20func lease_remaining(now: i64, issued_at: i64, ttl: i64, revoked: i64) -> i64 { 21 if revoked == 1 { return 0 } 22 let exp: i64 = issued_at + ttl 23 if now >= exp { return 0 } 24 return exp - now 25} 26 27// renew: extend the expiry to now+ttl, but NEVER past issued_at+max_ttl (the hard cap). returns new expiry. 28func lease_renew_expiry(now: i64, issued_at: i64, ttl: i64, max_ttl: i64) -> i64 { 29 var want: i64 = now + ttl 30 let cap: i64 = issued_at + max_ttl 31 if want > cap { want = cap } 32 return want 33} 34 35// classify the lease (OK / EXPIRED / REVOKED) for reporting. 36func lease_state(now: i64, issued_at: i64, ttl: i64, revoked: i64) -> i64 { 37 if revoked == 1 { return LEASE_REVOKED } 38 if now < issued_at + ttl { return LEASE_OK } 39 return LEASE_EXPIRED 40}