michael f9b0c1ea81 Merge feat/step-up-m2: Step-Up Milestone 2 — real Access Document round-trip
M2 verified GREEN on real card (J3R452 04555A4A0B2190) via PC/SC. Adds
spec-conformant mdoc DeviceResponse with cached Access Document over
ENVELOPE + GET RESPONSE chaining, real Reader Status sub-event over
EXCHANGE, cached IssuerAuth verification at personalization, and honest
signaling_bitmap. 22 commits across applet + harness + docs.

Phase summary:
- M2A: accessDocumentVerified flag + CoseVerifier (RFC 9052) + INS 0x25
       issuer pubkey + verify-at-finalize inside JCSystem.beginTransaction
- M2B: StructuralCbor.{decodeHeader,elementSpan,encodeUint/Bstr/Tstr}
- M2C: StepUpSession extraction + AliroGcm.setKeyAndIv consolidation
- M2D: DeviceRequestParser + DeviceResponseBuilder + stream-encrypted
       ENVELOPE + GET RESPONSE chaining for 388 B responses
- M2E: EXCHANGE Reader Status request validation + spec-shape response
- M2F: signaling_bitmap honesty + M1 stub sweep + DIAGNOSTICS_ENABLED=false
       + CAP converter int support
- M2G: harness --step-up asserts AD round-trip; PC/SC verdict GREEN
       (docs/verdicts/2026-06-12-m2-pcsc-verdict.log); ST vendor bug
       filed (docs/vendor-bugs/2026-06-12-st-xcube-aliro-*).
- M2H: INSTALL.md M2 acceptance + step_up_implementation_notes.md memory
       (architecture + 4 optimizations + transient pool budget table)

Verdict output (J3R452 04555A4A0B2190, NXP PR533 PC/SC):
  RESULT: OK -- applet round-trip on real hardware.
    0x5E signaling_bitmap: 0x0005
    APDU latencies (ms): select 23, auth0 667, auth1 3,258
  STEP-UP M2: OK -- EXCHANGE + ENVELOPE Access Document round-trip

Tests: 147 applet pass (3 pre-existing jcardsim-lacks-GCM errors) +
133 harness pass.

Nucleo / X-CUBE-ALIRO interop deferred until ST responds to the bug
report. PC/SC is the M2 demo + verification path.
2026-06-17 18:35:26 -07:00
Description
java card applet(s) for Aliro
42 MiB
Languages
C 89.7%
HTML 3.5%
Assembly 3.1%
CSS 2.1%
Java 0.7%
Other 0.9%