f9b0c1ea81d670fa50145224e2c293843dafbcc1
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.
Description
java card applet(s) for Aliro
Languages
C
89.7%
HTML
3.5%
Assembly
3.1%
CSS
2.1%
Java
0.7%
Other
0.9%