从一个最小的 Applet 开始
Java Card 的资料不缺,但大多分散在 PDF 规范、论坛帖子和各个项目的 README 里。真正卡住第一次上手的问题往往特别具体:SDK 装哪个版本、CAP 怎么打包、装上去之后 gp -l 看不到应用、发一条 APDU 回来的是 6A82 而不是 9000。
所以这个站没有先铺一套“完整文档”,而是先把最小闭环跑通:一个 Applet、一次安装、一条命令、一个响应。
最小闭环长什么样
Section titled “最小闭环长什么样”首页上那十几行 HelloWorldApplet 已经包含了 Java Card Applet 的全部骨架:
install()—— 卡管理器加载 CAP 之后调用,负责把 Applet 实例注册进 JCRE;register()—— 把实例和一个 AID 绑定起来,之后 SELECT 才有东西可选;process()—— 每条 APDU 的入口,selectingApplet()为真时是 SELECT 本身;setOutgoingAndSend()—— 把响应写进 APDU 缓冲区并发回去。
把这四件事看明白,剩下的都是在这副骨架上加东西:状态机、安全通道、持久化数据、密码学。
接下来会写什么
Section titled “接下来会写什么”先补的是能直接解决“跑不起来”的内容:环境与 SDK 选择、用 ant-javacard 打包 CAP、用 GlobalPlatformPro 安装与删除、状态字对照与排查顺序。之后才是概念性的部分,比如 APDU 的四种 case、T=0 下的 61xx 与 GET RESPONSE、CAP 文件结构、SCP02 与 SCP03 的区别。
这些内容现在还没写,因为它们应该由实际操作中的问题驱动,而不是先摆一排空页面。
怎么读这个站
Section titled “怎么读这个站”站点只有一页文档,直接看首页就行,那是最小的可运行版本。博客这边用来记录更新、工具链变动和踩过的坑——比改文档更及时,也更容易写清楚“为什么这么做”。