Hi all,
I'm validating a JavaCard applet on SIM hardware with no carrier involved,
across both the eUICC and physical-UICC paths, and would value a steer from
anyone who has done either end to end.
Planned eUICC setup (from the eUICC manual + mode51 RSP series):
- osmo-smdpp as a self-hosted SM-DP+ (test keys)
- pySim / lpac as the LPA
- a test-CI eUICC in plastic form factor (sysmoEUICC1-C2T, since a
production-CI card rejects a test-signed SM-DP+)
Planned physical-SIM setup:
- a developer UICC where I hold the GP/ADM keys (looking at sysmoUSIM-SJA2
or a Thales/G+D dev kit)
- applet load via pySim / GlobalPlatform
Question 1 — loading a custom applet, both paths
eUICC: the manual covers profile transport and the auth/download handshake
well, but not how to author a profile package that carries a custom
JavaCard applet (load file, GP install params, signing it so osmo-smdpp
serves it). Is bundling the applet in the eUICC Profile Package the right
carrier-free route, or is post-issuance GP load over a profile-supplied SD
more practical for dev/test? Physical: for a dev UICC where I hold the
keys, is pySim/GlobalPlatform load the expected route? A working reference
for the profile-authoring step with a non-trivial applet is the one gap I
can't close from the docs.
Question 2 — crypto API exposed to the applet
Independently of provisioning: does the JavaCard runtime on sysmoEUICC1,
and on the physical sysmoUSIM line (or any dev/test card people here have
actually probed), expose secp256k1 as a custom EC Fp curve with arbitrary
domain parameters (via ECPrivateKey/ECPublicKey setters) AND plain ECDSA
over an externally supplied 32-byte digest — ALG_ECDSA_PLAIN-style, no
on-card hashing? The digest is Keccak-256 computed off-card, so
hash-then-sign or P-256-only builds won't work. Two things would be
especially useful: a reliable way to probe a card's crypto API empirically
over APDU (instantiate the keypair, see what throws), and whether this
capability is known to differ between the eUICC and physical product lines.
I've gone through the eUICC manual, the osmo-smdpp wiki, and the mode51
walkthroughs before posting. Pointers, partial answers, or a hard "no,
because X" are all welcome.
Thanks,
Francis Abuga