pki-server/src/service.nu — HTTP routes & request handlers.
: ~ s g_ca_cert_path ./certs/ca.crt``: ~ s g_ca_key_path ./certs/ca.key``: ~ s g_crl_file_path ./certs/ca.crl``: ~ s g_index_file_path ./certs/index.txt``: ~ s g_serial_file_path ./certs/serial``: ~ s g_initial_certs_dir ./certs/initial``: ~ s g_device_certs_dir ./certs/certificates``: ~ s g_device_init_key your-device-init-key``: ~ s g_management_key your-management-key-here``: ~ s g_ca_cn Private PKI CA``: ~ i g_ca_handle 0@ pki_service_init s ca_cert s ca_key s crl_file s index_file s serial_file s initial_dir s device_dir s init_key s mgmt_key s ca_cn → b@ _resp_json i status String json_str → HttpResponse@ _resp_err_json i status s msg → HttpResponse@ _resp_html i status String html → HttpResponse@ _sanitize_device_id s raw → StringSanitize device ID to [a-zA-Z0-9-._] and prevent directory traversal
@ _wants_json HttpRequest req → bCheck if request prefers JSON (via header or content-type)
@ handle_health HttpRequest req Params p → HttpResponseGET /health
@ handle_ca_cert HttpRequest req Params p → HttpResponseGET /ca-cert
@ handle_crl HttpRequest req Params p → HttpResponseGET /crl
@ handle_init HttpRequest req Params p → HttpResponsePOST /init
@ handle_renew_initial_cert HttpRequest req Params p → HttpResponsePOST /renew_initial_cert
@ handle_request_cert_get HttpRequest req Params p → HttpResponseGET /request-cert
@ handle_request_cert_post HttpRequest req Params p → HttpResponsePOST /request-cert
@ handle_revoke_get HttpRequest req Params p → HttpResponseGET /revoke
@ handle_revoke_post HttpRequest req Params p → HttpResponsePOST /revoke
@ handle_index HttpRequest req Params p → HttpResponseGET /
@ handle_api_docs HttpRequest req Params p → HttpResponseGET /api
@ handle_style_css HttpRequest req Params p → HttpResponseGET /css/style.css
@ handle_favicon HttpRequest req Params p → HttpResponseGET /favicon.ico
@ pki_build_app → *HttpApppki-server/src/auth.nu — API Key & Device Key authentication helpers.
@ auth_check_api_key HttpRequest req s management_key → bCheck if request carries a valid Management API key
@ auth_check_device_key s provided_key s expected_key → bCheck if provided initialization key matches configured key
pki-server/src/pki.nu — Pure-NURL PKI Engine & CA Operations.
& c @ nurl_rand_fill *u buf i n → i: PkiCert: PkiCert {
String cert_pem
String key_pem
String serial_hex
String expires_iso
}
@ pki_cert_free PkiCert c → v: PkiCertInfo: PkiCertInfo {
String serial_hex
String cn
b ok
}
@ pki_cert_info_free PkiCertInfo i → v: PkiCa: PkiCa {
( Vec u ) scalar
( Vec u ) pubkey
String cert_pem
String key_pem
String cn
}
@ pki_ca_new → *PkiCa@ pki_ca_free * PkiCa ca → v@ _pki_rand_bytes i n → ( Vec u )@ _pki_scalar_ok ( Vec u ) d → b@ _pki_nibble i n → i@ _pki_bytes_to_hex ( Vec u ) b → String@ _pki_tlv i tag ( Vec u ) content → ( Vec u )@ _pki_int ( Vec u ) mag → ( Vec u )@ _pki_int1 i v → ( Vec u )@ _pki_int_hex s hex → ( Vec u )@ _pki_oid s hex → ( Vec u )@ _pki_bitstring ( Vec u ) content → ( Vec u )@ _pki_bool_true → ( Vec u )@ _pki_push2 String st i v → v@ _pki_utctime i unix → ( Vec u )@ pki_iso_timestamp i unix → String@ _pki_name s cn → ( Vec u )@ _pki_alg_ecdsa_sha256 → ( Vec u )@ _pki_spki ( Vec u ) pub65 → ( Vec u )@ _pki_extensions s cn b is_ca → ( Vec u )@ _pki_sig_der ( Vec u ) rs → ( Vec u )@ _pki_pem s label ( Vec u ) der → String@ pki_generate_ca s cn i validity_days → *PkiCa@ pki_load_or_create_ca s ca_cert_path s ca_key_path s ca_cn → *PkiCa@ pki_issue_device_cert * PkiCa ca s device_id i validity_days → PkiCert@ pki_verify_cert ( Vec u ) ca_pubkey s cert_pem s expected_cn → b@ pki_extract_cert_info s cert_pem → PkiCertInfo@ pki_generate_crl * PkiCa ca ( Vec String ) revoked_serials ( Vec i ) revoked_times → String@ pki_record_revocation s index_file_path s crl_file_path * PkiCa ca s serial_hex s cn → String@ pki_load_crl s crl_file_path * PkiCa ca s index_file_path → String@ pki_invalidate_initial_cert s initial_dir s device_id → bpki-server/src/ui.nu — Server-rendered Web Interface for PKI management.
@ _ui_wrap s title String body String active_nav → StringBase layout wrapper
@ ui_render_index → String@ ui_render_request_cert s error_msg → String@ ui_render_cert_result s device_id s cert s key s ca_cert s expires → String@ ui_render_revoke_cert s error_msg → String@ ui_render_revoke_result s message s serial s revocation_time s crl → String@ ui_render_api_docs → String@ ui_default_css → Stringpki-server/src/main.nu — Pure-NURL Private PKI Server.
@ _env_or s name s default_val → StringHelper: env var or default
@ main → i