第一章 入门
1.1 智能卡
1.1.1 简史
1.1.2 优点
1.1.3 应用
1.2 Java在智能卡中的应用
1.2.1 Java卡技术的优点
1.2.2 Java卡技术的简史
第二章 智能卡基础
2.1 智能卡综述
2.2 基本卡类型
2.2.1 存储卡和微处理器卡
2.2.2 接触卡和非接触卡
2.3 智能卡硬件
2.3.1 智能卡触点引脚
2.3.2 智能卡中央处理器
2.3.3 智能卡协处理器
2.3.4 智能卡存储系统
2.4 智能卡通信
2.4.1 智能卡的读写器和主机应用
2.4.2 智能卡通信模型
2.4.3 APDU协议
2.4.4 TPDU协议
第三章 Java卡技术概述
3.1 系统结构概述
3.2 Java卡语言子集
3.2.1 Java卡虚拟机
3.2.2 CAP文件和输出文件
3.2.3 Java智能卡解释程序
3.3 Java智能卡安装器和离卡安装程序
3.4 Java智能卡运行环境
3.4.1 JCRE寿命
3.4.2 JCRE在读写器操作期间怎样工作?
3.4.3 Java智能卡的运行特点
3.5 Java智能卡API
3.5.1 Java.lang包
3.5.2 Javacard.framework包
3.5.3 Javacard.security包
3.6 Java智能卡Applet
3.7 包和Applet的命名习惯
3.8 Applet开发过程
3.9 Applet安装
3.9.1 ROM Applet
3.9.2 先发布Applet和后发布Applet
3.9.3 后发布Applet安装
3.9.4 在Applet安装期间的出错恢复
3.9.5 安装限制
第四章 Java智能卡对象
4.1 Java Card的存储模式
4.2 永久对象
4.3 临时对象
4.3.1 临时对象的特性
4.3.2 临时对象种类
4.3.3 建立临时对象
4.3.4 查询临时对象
4.4 对象的建立和声明
第五章 原子性和事务处理
5.1 原子性
5.2 数组中块数据的更新
5.3 事务处理
5.3.1 提交事务
5.3.2 终止事务
5.3.3 嵌套的事务
5.3.4 提交能力
5.3.5 事务处理异常TransactionException
5.3.6 事务处理中的局部变量和临时对象
第六章 Java智能卡异常及异常的处理
6.1 Java lang包中的异常
6.2 Java Card异常
6.2.1 Java Card异常的原因代码
6.2.2 Java Card平台上的异常抛出
6.2.3 ISOException异常
6.2.4 UserException异常
第七章 Java智能卡的Applet
7.1 Applet概述
7.1.1 Applet的安装和执行
7.1.2 Applet的通信机制
7.2 JavaCard.framework.Applet类
7.3 Install方法
7.3.1 在Applet的构造函数里建立对象
7.3.2 在JCRE里注册Applet实例
7.3.3 处理安装参数
7.3.4 Applet初始化的深入
7.4 Select方法
7.4.1 Select APDU格式和处理
7.4.2 默认的Applet
7.5 Deselect方法
7.6 Process方法
7.7 Applet类中的其他方法
第八章 APDU的工作
8.1 APDU类
8.1.1 APDU对象
8.1.2 APDU缓冲区大小
8.2 ISO7816界面
8.3 Applet里APDU的工作
8.3.1 搜索APDU缓冲区
8.3.2 检查命令APDU头
8.3.3 接收APDU命令数据
8.3.4 处理APDU命令,生成应答数据
8.3.5 返回APDU应答数据
8.3.6 返回状态字
8.4 协议规范的APDU处理
8.4.1 getProtocol方法
8.4.2 getInBlockSize方法
8.4.3 getOutBlockSize方法
8.4.4 setOutgoingNoChaining方法
8.4.5 getNAD方法
8.4.6 waitExtension方法
8.5 小结
第九章 Java智能卡的安全性
9.1 常用安全模型
9.1.1 MAC和DAC模型
9.1.2 访问控制
9.1.3 静态和动态模型
9.2 Java的安全性
9.2.1 Java语言和平台
9.2.2 基本安全结构
9.2.3 字节代码验证和类型安全
9.2.4 签名应用
9.3 Java卡平台的安全特性
9.4 Java卡平台安全机制
9.4.1 编译时间检查
9.4.2 类文件的证实和子集检查
9.4.3 CAP文件和出口文件验证
9.4.4 安装检查
9.4.5 使用密码加强信任链
9.4.6 运行安全保证
9.4.7 Java卡密码支持
第十章 Applet防火墙和对象共享
10.1 Applet防火墙
10.1.1 上下文(context)
10.1.2 对象所属
10.1.3 对象访问
10.1.4 临时(Transient)数组和上下文
10.1.5 静态域和方法
10.2 通过上下文的对象共享
10.2.1 上下文转换
10.2.2 JCRE权限
10.2.3 JCRE入口点对象
10.2.4 全局数组
10.2.5 对象共享界面机制
第十一章 加密编程
11.1 密码简介
11.2 常用的加密
11.2.1 单向散列函数(Hash)
11.2.2 对称密码
11.2.3 非对称密码
11.2.4 鉴别
11.2.5 移动代码
11.2.6 数字签名
11.2.7 随机数
11.3 智能卡应用中的加密实践
11.3.1 保证应用安全性
11.3.2 作为安全标志
11.3.3 总结
11.4 Java卡加密APIs
11.4.1 设计原则
11.4.2 体系结构
11.4.3 包结构
11.5 代码举例
11.5.1 计算一个信息鉴别
11.5.2 建造一个密钥
11.5.3 签名和验证签名
11.5.4 加密和解密数据
11.5.5 产生随机数字
第十二章 Java语言
12.1 Java编程概况
12.1.1 程序结构
12.1.2 注释
12.1.3 标识符
12.1.4 数据类型
12.1.5 表达式
12.1.6 Java流控制
12.2 Java变量和函数的实例
12.3 对象有效范围和垃圾自动回收
12.4 子类
12.5 this和super
12.6 类的类型
12.7 抽象类
12.8 接口
12.9 包(Packages)
12.10 异常
12.10.1 “异常”的类型
12.10.2 不捕捉“异常”
12.10.3 try与catch
12.10.4 多个catch子句
12.10.5 try语句的嵌套
12.10.6 throw语句
12.10.7 语句
12.10.8 finally
12.11 运行时刻异常
12.12 编码规范
12.12.1 命名规范
12.12.2 Java文件样式
12.12.3 代码编写格式
12.13 Java卡语言子集
12.13.1 不被支持的项目
12.13.2 支持的项目
12.13.3 可选支持项目
12.13.4 Java卡虚拟机的局限性
第十三章 Applet开发指南
13.1 Applet的设计
13.1.1 确定Applet要使用的函数
13.1.2 确定Applet的AID
13.1.3 定义Applet的结构和方法函数
13.1.4 定义Applet和主机程序之间的接口
13.2 编写Applet的代码
13.2.1 钱夹Applet源代码
13.2.2 实现错误检查
13.3 下一步做什么
第十四章 Applet优化
14.1 优化Applet的整体设计
14.2 优化卡上的执行时间
14.3 方法调用
14.4 在Applet中创建对象
14.5 可重用对象
14.6 删除冗余代码
14.7 访问数组
14.8 switch语句和if-else语句
14.9 算术语句
14.10 在Applet中优化变量
第十五章 使用Int数据类型
IS.1 32b算术操作
15.2 数组大小和数组下标
15.3 存储和计算int类型的值
15.4 总结