code wiki / (root) / nx_base64.nx

nx_base64.nx

buildroot/runtime/nx_base64.nx

6829 B179 linesdepth 0pulls 0 transitivereach 355 importersview sourcekind library
docsdependenciesstructsconstsfunctions

about

base64.nx -- RFC 4648 base64 encoder + decoder. Canonical: this is the substrate-wide canonical Base64 (RFC 4648 §4 standard alphabet) per [[feedback-no-tool-proliferation-bit- level]]. Variants that need URL-safe alphabet (RFC 4648 §5) are candidates for ONE distinct sibling primitive nx_base64_url.nx (queued) that imports THIS file's encode/decode skeleton; all other consumers compose THIS file's encode/decode primitives. Re-implementing the Base64 alphabet or quantum-loop inline is refused. Used for: - PEM decoding of X.509 certs (thin ASCII wrapper around DER) - TLS 1.3 pre-shared key encoding - HTTP Basic auth, OAuth tokens, JWT - Web content (data: URIs, JSON-embedded bytes) Standard alphabet (RFC 4648 §4): 0-25 : A-Z 26-51 : a-z 52-61 : 0-9 62 : + 63 : / pad : = URL-safe alphabet variant (§5) swaps +/ for -_; provided as b64url_encode / b64url_decode. Invariants: B1 Input/output lengths are predictable: encode(n bytes) -> 4 * ceil(n / 3) chars decode(n chars) -> 3 * (n / 4) - padding bytes B2 Decoder rejects invalid input (non-alphabet chars) by returning a negative length. No silent skip. B3 Decoder is tolerant of missing padding (RFC 4648 §3.2 permits this as "unpadded" variant). B4 Encoder is deterministic; same input -> same output. No trailing whitespace, no line breaks inserted. Callers that want MIME-style 76-char wrap do it outside.

dependencies 0 imports · 77 importers

nx_base64.nx _h2_multistream_curl_daemon.nx _h2_serve_curl_daemon.nx nx_audio_sfx_web.nx nx_audio_sfx_web_test.nx nx_audio_web.nx nx_audio_web_test.nx nx_authz_session_gate.nx nx_b64_cli.nx nx_basic_auth.nx nx_chip8_page.nx

diagram shows first 10 each side; +0 more imports, +67 more importers in the complete lists below.

imports: none

imported by: _h2_multistream_curl_daemon.nx_h2_serve_curl_daemon.nxnx_audio_sfx_web.nxnx_audio_sfx_web_test.nxnx_audio_web.nxnx_audio_web_test.nxnx_authz_session_gate.nxnx_b64_cli.nxnx_basic_auth.nxnx_chip8_page.nxnx_connect_device_client.nxnx_connect_e2e_client.nxnx_csrf_token.nxnx_email_dns_gate.nxnx_email_mime.nxnx_email_provision_lib.nxnx_email_send.nxnx_email_submit.nxnx_email_submit_gate.nxnx_game_gallery.nxnx_game_page_emit.nxnx_gen_explorer.nxnx_gsplat_showcase.nxnx_h2_test_leaf.nxnx_jwt.nxnx_listen_player.nxnx_login_gate_gate.nxnx_media_audio_page.nxnx_media_server.nxnx_mesh_gen.nxnx_meshview_page.nxnx_ng_gsview.nxnx_ng_world.nxnx_nxa_view_emit.nxnx_oauth2_pkce.nxnx_opaque_login.nxnx_pem.nxnx_pem_loader.nxnx_scene_demo.nxnx_scene_demo_test.nxnx_signed_cookie.nxnx_sim_page.nxnx_simlab_html.nxnx_site_auth.nxnx_site_auth_gate.nxnx_sitegen_studio_daemon.nxnx_solarsim_html.nxnx_ssh_lib.nxnx_status_daemon.nxnx_swgpu_showcase.nxnx_video_embed_bundle.nxnx_video_embed_bundle_gate.nxnx_video_embed_export_gate.nxnx_vn_pack.nxnx_wasm_adventure_html.nxnx_wasm_arcade_html.nxnx_wasm_charlab_html.nxnx_wasm_city_html.nxnx_wasm_diablo_html.nxnx_wasm_explodelab_html.nxnx_wasm_html.nxnx_wasm_html_fps.nxnx_wasm_html_vox3d.nxnx_wasm_mineworld_html.nxnx_wasm_mineworld_mp_html.nxnx_wasm_physlab_html.nxnx_wasm_pong_html.nxnx_wasm_racing_html.nxnx_wasm_shmup_html.nxnx_wasm_td_html.nxnx_wasm_thirdperson_html.nxnx_websocket_client_upgrade.nxnx_websocket_handshake.nxnx_wiki_admin_wiring.nxnx_wiki_edit_handler.nxnx_wiki_login_flow.nxnx_worldgen_showcase.nx

structs

none

consts

58const B64_PAD: i64 = 0x3D // '='

functions

61func b64_enc_char(n: i64) -> i64
called by 1: b64_encode
71func b64url_enc_char(n: i64) -> i64
82func b64_dec_char(c: i64) -> i64
called by 1: b64_grab
95func b64_encode(in_bytes: *u8, n: i64, out: *u8) -> i64
132func b64_grab(in_chars: *u8, n: i64, pos: *i64) -> i64
called by 1: b64_decode calls 1: b64_dec_char
151func b64_decode(in_chars: *u8, n: i64, out: *u8) -> i64