writeonce/compiler/src
shoney.arickathil 1ef4e463ec feat(crypto): AES-GCM via AES-NI + PCLMULQDQ (rv2 8 phase B, ids 113/114)
- aes_gcm_seal/open, AES-128 and AES-256 (variant by key length 16/32),
  nonce 12 bytes, out = ciphertext||tag; open returns nil on auth failure
- hardware path only (phase B): AES-NI key schedule (128/256) + block, GHASH
  via PCLMULQDQ with the fast GF(2^128) reduction, GCM mode (J0, CTR from
  counter 2, GHASH over aad|pad|ct|pad|len, tag = GHASH ^ AES(J0))
- constant-time by hardware; target-attributed functions + __builtin_cpu_supports
  gate so the binary stays portable -- no AES-NI traps with a clear message
  (bitsliced software + ARMv8 paths are phase C)
- wiring: wob.h ids + WO_B_MAX 114; builtin.c crypto range; loader arity 4;
  emit.ml (ids/arity/return/name); types.ml (register + return type)
- VERIFIED: matches NIST SP 800-38D cases 4 (AES-128) and 16 (AES-256) and the
  python cryptography reference byte-for-byte; KAT-gated in test_crypto (36/0);
  ASan/UBSan clean; runtime battery + compiler 557/0 green

(cherry picked from commit f12a745a3c1313847f9d7f65e53bcd8093758af9)
2026-09-15 01:15:31 +02:00
..
ast.ml feat(woc): @table durable/resident arguments, defaults preserve behaviour 2026-08-26 23:03:36 +02:00
CODE-LOGIC.md feat(serve+view): file serving, downloads, supported systems; rename 2026-08-25 04:41:00 +02:00
diag.ml feat: milestone 1 complete — .wob emitter, conformance corpus, single binary; GC redesign specced 2026-08-11 19:31:26 +02:00
disasm.ml feat(wob): v7 — class descriptor carries durability and residency 2026-08-26 23:22:26 +02:00
dump.ml feat(woc): @table durable/resident arguments, defaults preserve behaviour 2026-08-26 23:03:36 +02:00
dune refactor(compiler): inference is one library pass, Gcinfer.infer 2026-08-18 19:00:11 +02:00
emit.ml feat(crypto): AES-GCM via AES-NI + PCLMULQDQ (rv2 8 phase B, ids 113/114) 2026-09-15 01:15:31 +02:00
gcinfer.ml feat: spawn / send / actor M — the unified actor surface (arc T3) 2026-08-20 07:21:24 +02:00
lexer.ml feat(lang+wo-html): raw text literals, component layer, MVC samples 2026-08-25 03:58:41 +02:00
owner.ml feat: monitor + time.after (ids 89/90) — the lifecycle slice completes 2026-08-23 08:56:48 +02:00
parser.ml feat(wob): v7 — class descriptor carries durability and residency 2026-08-26 23:22:26 +02:00
token.ml feat(lang+wo-html): raw text literals, component layer, MVC samples 2026-08-25 03:58:41 +02:00
types.ml feat(crypto): AES-GCM via AES-NI + PCLMULQDQ (rv2 8 phase B, ids 113/114) 2026-09-15 01:15:31 +02:00