Java 卡技术体系结构与程序员指南
目录
第1 部分绪论
1.2.智能卡应用开发中的挑战
1.3.把Java 用于智能卡
1.3.1.Java 卡技术的好处
1.3.2. Java 卡技术的简史
第2 部分 JAVA 卡技术
第3 章Java 卡技术概述
3.1 体系结构概述
3.2 Java 卡语言子集
3.3 Java 卡虚拟机
3.3.1 CAP 文件和Export 文件
3.3.2 Java 卡转换器(Converter)
3.3.3 Java 卡解释器(Interpreter)
3.4 Java 卡Installer 和卡外安装程序
3.5 Java 卡运行时环境
3.5.1 JCRE 生命周期
3.5.2 在一个CAD Session 中JCRE 如何工作
3.5.3 Java 卡运行时特性
3.6 Java 卡APIs
3.6.1.java.lang 包
3.6.2.javacard.framework 包
3.6.3.javacard.security 包
3.6.4.javacardx.crypto 包
3.7 Java 卡Applets
3.8 包和Applet 命名约定
3.9 Applet 下载过程
3.10 Applet 安装
3.10.1 ROM Applets
3.10.2 事前或事后发行Applets
3.10.3 事后发行的Applet 的安装
3.10.4.Applet 安装期间的错误恢复
3.10.5. 安装限制
第4 章Java 卡对象
4.1.Java 卡存储模式
4.2.永久对象
4.3.临时对象
4.3.1.临时对象的属性
4.3.2.临时对象的类型
4.3.3.建立临时对象
4.3.4.查询临时对象
4.4.关于对象建立和删除的几句话
第5 章 原子性和事物
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.在一个事物期间的局部变量和临时对象
第6 章 Java 卡例外和例外处理
6.1. java.lang 包中的例外
6.2.Java 卡例外
6.2.1.Java 卡例外原因码
6.2.2.在Java 卡平台中抛出例外
6.2.3.ISOException
6.2.4.UserException.
第7 章Java 卡 Applets
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.类 javacard.framework.Applet 中的其它方法
第8 章处理 APDUs
8.1.APDU 类
8.1.1.APDU 对象
8.1.2.APDU Buffer 的大小
8.2.接口 ISO7816
8.3.在Applets 中使用APDUs
8.3.1.获取 APDU Buffer
8.3.2.检查命令 APDU 头
8.3.3.接收APDU 命令数据
8.3.3.1.接收长命令数据
8.3.4.处理APDU 命令与产生响应数据
8.3.5.返回 APDU 响应数据
8.3.5.1.从其它地方发送数据
8.3.5.2.发送长的响应数据
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.小结
第9 章Applet 防火墙和对象共享
9.1 Applet 防火墙
9.1.1 Contexts
9.1.2 对象的拥有关系
9.1.3 对象访问
9.1.4 临时数组和Context
9.1.5 静态域和方法
9.2 Contexts 间对象共享
9.2.1 Context 切换
9.2.2 JCRE 的特权
9.2.3 JCRE 入口点对象
9.2.4 全局数组
9.2.5 对象共享的接口机制
9.2.5.1 可共享的接口
9.2.5.2 可共享的接口对象
9.2.5.3 可共享接口机制背后的思考
9.2.5.4 Applets 间对象共享的一个例子
9.2.5.5 建立一个可共享的接口对象
9.2.5.6 请求一个可共享的接口对象
9.2.5.7 使用一个可共享的接口对象
9.2.5.8 在对象共享期间的Context 切换
9.2.5.9 可共享的接口方法中的参数类型和返回类型
9.2.5.10 认证客户 Applet
9.2.5.11 getPreviousContextAID 方法
9.2.5.12 小结
第10 章 密码技术编程
10.1.密码技术快速浏览
10.1.1.加密和解密
10.1.2.消息摘要
10.1.3.数字签名
10.1.4.随机数
10.2.智能卡应用中的密码技术实践
10.2.1.保正应用的安全性
10.2.2.作为安全Token
10.2.3.小结
10.3.Java 卡密码技术APIs
10.3.1.设计原则
10.3.2.体系结构
10.3.3.包的结构
10.4.代码举例
10.4.1.计算消息摘要
10.4.2.产生密钥
10.4.3.计算和验证签名
10.4.4.数据加密和解密
10.4.5.随机数据生成
第11 章Java 卡平台的安全性
11.1.Java 卡平台的安全特性
11.1.1.Java 语言的安全性
11.1.2.Java 卡平台的附加安全性
11.2.Java 卡平台的安全机制
11.2.1.编译时的检查
11.2.2.类文件验证和子集检查
11.2.3.CAP 文件和Export 文件验证
11.2.4.安装检查
11.2.5.密码技术加强了开发-安装链的信任度
11.2.6.运行时安全性的强制要求
11.2.7.Java 卡密码技术支持
11.3.Applet 的安全性
第3 部分程序设计指南与提示
第12 章 Applet 按步开发指南
12.1.设计 Applet
12.1.1.指定 Applet 的功能
12.1.2. 为Applet 指定AIDs
12.1.3.定义Applet 的类的结构和方法的功能
12.1.4.定义Applet 与其Host 应用之间的接口
12.1.4.1.SELECT APDU
12.1.4.2.VERIFY APDU
12.1.4.3.CREDIT APDU
12.1.4.4.DEBIT APDU
12.1.4.5.GET BALANCE APDU
12.2.编写applet 代码
12.2.1.Wallet applet 代码
12.2.2.实现错误检查
12.3.下一步该干什么?
第13 章 Applet 优化
13.1.优化一个applet 的概要设计
13.2.卡上执行时间
13.3.方法调用
13.4.建立Applets 中的对象
13.5.重用对象
13.6.消除冗余代码
13.7.访问数组
13.8. switch 语句和if-else 语句
13.9.算术计算语句
13.10.优化Applets 中的变量
第14 章使用 int 类型的数据
14.1.32-位算术操作
14.2.数组大小和索引
14.3.存储和计算int 值
14.4.小结
第4 部分:附录
A. Java 卡语言子集
A.1 不支持的项
A.1.1 不支持的特性
A.1.2 关键字(Keywords)
A.1.3 不支持的类型
A.1.4 类
A.1.5 System
A.2 支持的项目
A.2.1 特性
A.2.2 关键字
A.2.3 类型
A.2.4 类
A.3 Optionally Supported Items
A.3.1 int
A.4 Java 卡虚拟机的限制
A.4.1 类
A.4.2 对象
A.4.3 方法
A.4.4 Switch 语句
A.4.5 类初始化
B. Java 卡2.1 应用编程接口
B.1 包 java.lang
B.1.1 java.lang ArithmeticException 类
B.1.2 java.lang ArrayIndexOutOfBoundsException 类
B.1.3. java.lang ArrayStoreException 类
B.1.4 java.lang ClassCastException 类
B.1.5 java.lang Exception 类
B.1.6 java.lang IndexOutOfBoundsException 类
B.1.7 java.lang NegativeArraySizeException 类
B.1.8 java.lang NullPointerException 类
B.1.9 java.lang Object 类
B.1.10 java.lang RuntimeException 类
B.1.11 java.lang SecurityException 类
B.1.12 java.lang Throwable 类
B.2 包javacard.framework
B.2.1 javacard.framework AID 类
B.2.2 javacard.framework APDU 类
B.2.3 javacard.framework APDUException 类
B.2.4 javacard.framework Applet 类
B.2.5 javacard.framework CardException 类
B.2.6 javacard.framework CardRuntimeException 类
B.2.7 javacard.framework ISO7816 接口
B.2.8 javacard.framework ISOException 类
B.2.9 javacard.framework 类 JCSystem
B.2.10 javacard.framework OwnerPIN 类
B.2.11 javacard.framework PIN 接口
B.2.12 javacard.framework PINException 类
B.2.13 javacard.framework Shareable 接口
B.2.14 javacard.framework SystemException 类
B.2.15 javacard.framework TransactionException 类
B.2.16 javacard.framework 类 UserException
B.2.17 javacard.framework Util 类
B.3 包 javacard.security
B.3.1 javacard.security CryptoException 类
B.3.2 javacard.security DESKey 接口
B.3.3 javacard.security DSAKey 接口
B.3.4 javacard.security DSAPrivateKey 接口
B.3.5 javacard.security DSAPublicKey 接口
B.3.6 javacard.security Key 接口
B.3.7 javacard.security KeyBuilder 类
B.3.8 javacard.security MessageDigest 类
B.3.9 javacard.security PrivateKey 接口
B.3.10 javacard.security PublicKey 接口
B.3.11 javacard.security RandomData 类
B.3.12 javacard.security RSAPrivateCrtKey 接口
B.3.13 javacard.security RSAPrivateKey 接口
B.3.14 javacard.security RSAPublicKey 接口
B.3.15 javacard.security SecretKey 接口
B.4 包javacardx.crypto
B.4.1 javacardx.crypto Cipher 类
javacardx.crypto KeyEcryption 接口
参考文献