Java Card Technology for Smart Card's Architecture and Programmer's Guide (Zhiqun Chen)翻译版(PART 0)

这是一本Java Card开发者的Bible,本人在Amazon上花了45大刀还不算运费才搞到的,翻译过来给大家共享。如果您觉得书不错,或者我翻译的烂,请支持正版。

Java Card Technology for Smart Cards

Architecture and Programmer's Guide

Zhiqun Chen

 

目录
第 1 部分 绪论 ........................................................... 10
1.2.智能卡应用开发中的挑战.........................................................................................................11
1.3.把Java用于智能卡......................................................................................................................11
1.3.1.Java卡技术的好处...........................................................................................................11
1.3.2. Java卡技术的简史......................................................................................................... 12
第 2 部分 JAVA 卡技术..................................................... 13
第 3 章Java卡技术概述.................................................................................................................................
3.1  体系结构概述........................................................................................................................... 14
3.2 Java  卡语言子集....................................................................................................................... 14
3.3 Java  卡虚拟机........................................................................................................................... 15
3.3.1 CAP  文件和Export 文件.............................................................................................. 16
3.3.2 Java  卡  转换器(Converter)...................................................................................... 16
3.3.3 Java  卡  解释器(Interpreter)..................................................................................... 17
3.4 Java卡Installer和卡外安装程序................................................................................................ 17
3.5 Java  卡运行时环境................................................................................................................... 18
3.5.1 JCRE 生命周期.............................................................................................................. 20
3.5.2  在一个CAD Session  中JCRE如何工作? ..................................................................... 20
3.5.3 Java  卡运行时特性........................................................................................................ 21
3.6 Java  卡APIs............................................................................................................................... 21
3.6.1.java.lang 包............................................................................................................... 21
3.6.2.javacard.framework包..................................................................................................... 22
3.6.3.javacard.security 包........................................................................................................ 22
3.6.4.javacardx.crypto包.......................................................................................................... 22
3.7 Java  卡Applets .......................................................................................................................... 23
3.8  包和Applet命名约定................................................................................................................ 23
3.9 Applet下载过程......................................................................................................................... 24
3.10 Applet安装............................................................................................................................... 25
3.10.1 ROM Applets ................................................................................................................ 25
3.10.2  事前或事后发行Applets.............................................................................................. 25
3.10.3  事后发行的Applet  的安装......................................................................................... 26
3.10.4.Applet  安装期间的错误恢复...................................................................................... 26
3.10.5.  安装限制..................................................................................................................... 26
第 4 章Java 卡对象.......................................................................................................................................
4.1.Java卡存储模式......................................................................................................................... 28
4.2.永久对象.................................................................................................................................... 29
4.3.临时对象.................................................................................................................................... 29
4.3.1.临时对象的属性............................................................................................................. 29
4.3.2.临时对象的类型............................................................................................................. 30
4.3.3.建立临时对象................................................................................................................. 30
4.3.4.查询临时对象................................................................................................................. 31
4.4.关于对象建立和删除的几句话................................................................................................ 31
第 5 章 原子性和事物................................................................................................................................
5.1.原子性........................................................................................................................................ 33

5.2.数组中块数据修改.................................................................................................................... 33

5.3.事物............................................................................................................................................ 34
5.3.1.提交事物......................................................................................................................... 34
5.3.2.废除事物......................................................................................................................... 34
5.3.3.嵌套的事物..................................................................................................................... 35
5.3.4.提交能力......................................................................................................................... 35
5.3.5.TransactionException例外.............................................................................................. 35
5.3.6.在一个事物期间的局部变量和临时对象..................................................................... 36
6 章 Java 卡例外和例外处理.................................................................................................................38
6.2.Java  卡例外............................................................................................................................... 38
6.2.1.Java  卡例外原因码........................................................................................................ 39
6.2.2.在Java卡平台中抛出例外.............................................................................................. 39
6.2.3.ISOException. ................................................................................................................. 40
6.2.4.UserException. ................................................................................................................ 40
7 章Java 卡 Applets. ...............................................................................................................................42
7.1.Applet  概述............................................................................................................................... 42
7.1.1.Applet 安装与执行........................................................................................................ 42
7.1.2.Applet 通信.................................................................................................................... 42
7.2.类 javacard.framework.Applet. ................................................................................................. 43
7.3.install  方法................................................................................................................................ 44
7.3.1.在Applet构造函数中建立对象...................................................................................... 45
7.3.2.向JCRE注册Applet 实例............................................................................................... 45
7.3.3.处理安装参数................................................................................................................. 46
7.3.4. Applet进一步初始化..................................................................................................... 47
7.4.select  方法................................................................................................................................. 48
7.4.1.SELECT APDU  格式和处理......................................................................................... 48
7.4.2.缺省Applet. ..................................................................................................................... 48
7.5.deselect 方法............................................................................................................................. 49
7.6.process 方法.............................................................................................................................. 49
7.7.类 javacard.framework.Applet中的其它方法.......................................................................... 50
8 章  处理APDUs .....................................................................................................................................51
8.1.APDU  类................................................................................................................................... 51
8.1.1.APDU  对象.................................................................................................................... 51
8.1.2.APDU Buffer  的大小..................................................................................................... 51
8.2.接口 ISO7816 ........................................................................................................................... 52
8.3.在Applets中使用APDUs ........................................................................................................... 52
8.3.1.获取 APDU Buffer. ........................................................................................................ 52
8.3.2.检查命令 APDU  头...................................................................................................... 52
8.3.3.接收APDU  命令数据. ................................................................................................... 53
8.3.3.1.接收长命令数据.................................................................................................. 54
8.3.4.处理APDU  命令与产生响应数据................................................................................ 56
8.3.5.返回 APDU  响应数据.................................................................................................. 56
8.3.5.1.从其它地方发送数据.......................................................................................... 57
8.3.5.2.发送长的响应数据.............................................................................................. 58
8.3.6.返回状态字..................................................................................................................... 59
8.4.协议相关的APDU  处理........................................................................................................... 59
8.4.1.方法getProtocol. ............................................................................................................. 60

8.4.2.方法getInBlockSize. ....................................................................................................... 60
8.4.3.方法getOutBlockSize...................................................................................................... 61
8.4.4.方法setOutgoingNoChaining. ......................................................................................... 62
8.4.5.方法 getNAD. ................................................................................................................ 62
8.4.6.方法 waitExtension. ....................................................................................................... 62
小结............................................................................................................................................ 62
Applet  防火墙和对象共享...............................................................................................................6
Applet  防火墙........................................................................................................................... 64
9.1.1 Contexts........................................................................................................................... 64
9.1.2  对象的拥有关系............................................................................................................ 65
9.1.3  对象访问........................................................................................................................ 65
9.1.4  临时数组和Context ....................................................................................................... 66
9.1.5  静态域和方法................................................................................................................ 67
Contexts 间对象共享................................................................................................................ 67
9.2.1 Context  切换.................................................................................................................. 67
9.2.2 JCRE 的特权................................................................................................................. 68
9.2.3 JCRE 入口点对象.......................................................................................................... 68
9.2.4  全局数组........................................................................................................................ 69
9.2.5  对象共享的接口机制.................................................................................................... 69
9.2.5.1  可共享的接口..................................................................................................... 70
9.2.5.2  可共享的接口对象............................................................................................. 70
9.2.5.3  可共享接口机制背后的思考............................................................................. 70
9.2.5.4 Applets  间对象共享的一个例子........................................................................ 71
9.2.5.5  建立一个可共享的接口对象............................................................................. 72
9.2.5.6  请求一个可共享的接口对象............................................................................. 73
9.2.5.7  使用一个可共享的接口对象............................................................................. 74
9.2.5.8  在对象共享期间的Context  切换...................................................................... 76
9.2.5.9  可共享的接口方法中的参数类型和返回类型................................................. 77
9.2.5.10  认证客户 Applet .............................................................................................. 78
9.2.5.11 getPreviousContextAID  方法............................................................................ 81
9.2.5.12  小结................................................................................................................... 82
 密码技术编程..............................................................................................................................8
1.密码技术快速浏览.................................................................................................................. 84
10.1.1.加密和解密................................................................................................................... 84
10.1.2.消息摘要....................................................................................................................... 86
10.1.3.数字签名....................................................................................................................... 87
10.1.4.随机数........................................................................................................................... 87
2.智能卡应用中的密码技术实践.............................................................................................. 88
10.2.1.保正应用的安全性....................................................................................................... 88
10.2.2.作为安全Token............................................................................................................. 88
10.2.3.小结............................................................................................................................... 88
3.Java卡密码技术APIs............................................................................................................... 89
10.3.1.设计原则....................................................................................................................... 89
10.3.2.体系结构....................................................................................................................... 89
10.3.3.包的结构....................................................................................................................... 90
10.4.代码举例.................................................................................................................................. 91

10.4.1.计算消息摘要............................................................................................................... 91
10.4.2.产生密钥....................................................................................................................... 93
10.4.3.计算和验证签名........................................................................................................... 94
10.4.4.数据加密和解密........................................................................................................... 95
10.4.5.随机数据生成............................................................................................................... 96
第 11 章Java 卡平台的安全性.....................................................................................................................97
11.1.Java卡平台的安全特性........................................................................................................... 97
11.1.1.Java 语言的安全性...................................................................................................... 97
11.2.Java  卡平台的安全机制......................................................................................................... 98
11.2.1.编译时的检查............................................................................................................... 98
11.2.2.类文件验证和子集检查............................................................................................... 99
11.2.3.CAP 文件和Export  文件验证..................................................................................... 99
11.2.4.安装检查..................................................................................................................... 101
11.2.5.密码技术加强了开发-安装链的信任度.................................................................... 102
11.2.6.运行时安全性的强制要求......................................................................................... 103
11.2.7.Java卡密码技术支持.................................................................................................. 104
11.3.Applet的安全性..................................................................................................................... 104
第 3 部分 程序设计指南与提示............................................... 106
第 12 章  Applet按步开发指南.................................................................................................................107
12.1.设计 Applet ........................................................................................................................... 107
12.1.1.指定 Applet  的功能.................................................................................................. 107
12.1.4.1.SELECT APDU................................................................................................ 109
12.1.4.2.VERIFY APDU................................................................................................ 109
12.1.4.3.CREDIT APDU.................................................................................................110
12.1.4.4.DEBIT APDU....................................................................................................110
12.4.1.5.GET BALANCE APDU....................................................................................110
12.2.编写applet  代码.....................................................................................................................111
12.2.1.Wallet applet代码.........................................................................................................111
12.2.2.实现错误检查..............................................................................................................116
12.3.下一步该干什么?.................................................................................................................117
第 13 章  Applet  优化...............................................................................................................................118
13.1.优化一个applet的概要设计...................................................................................................118
13.2.卡上执行时间.........................................................................................................................118
13.3.方法调用.................................................................................................................................118
13.4.建立Applets中的对象............................................................................................................118
13.5.重用对象.................................................................................................................................119
13.6.消除冗余代码........................................................................................................................ 120
13.7.访问数组................................................................................................................................120
13.8. switch 语句和if-else  语句.................................................................................................. 121
13.9.算术计算语句........................................................................................................................ 123
13.10.优化Applets中的变量......................................................................................................... 123
第 14 章  使用int类型的数据......................................................................................................................125
14.1.32-位算术操作...................................................................................................................... 125
14.2.数组大小和索引.................................................................................................................... 133
14.4.小结........................................................................................................................................ 137
第 4 部分:附录 ......................................................... 138

A. Java  卡语言子集....................................................................................................................................139
A.1  不支持的项............................................................................................................................ 139
A.1.1 不支持的特性.............................................................................................................. 139
A.1.2  关键字(Keywords)................................................................................................. 140
A.1.3  不支持的类型............................................................................................................. 140
A.1.4  类................................................................................................................................. 140
A.1.5 System.......................................................................................................................... 140
A.2  支持的项目............................................................................................................................ 140
A.2.1  特性............................................................................................................................. 141
A.2.2  关键字......................................................................................................................... 141
A.2.3  类型............................................................................................................................. 142
A.2.4  类................................................................................................................................. 142
A.3 Optionally Supported Items..................................................................................................... 142
A.3.1 int.................................................................................................................................. 142
A.4 Java  卡虚拟机的限制............................................................................................................ 142
A.4.1  类................................................................................................................................. 143
A.4.2  对象............................................................................................................................. 143
A.4.3  方法............................................................................................................................. 143
A.4.4 Switch 语句................................................................................................................. 144
A.4.5  类初始化..................................................................................................................... 144
B. Java 卡 2.1 应用编程接口.....................................................................................................................145
B.1 包 java.lang............................................................................................................................. 145
B.1.1 java.lang ArithmeticException类................................................................................. 145
B.1.2 java.lang ArrayIndexOutOfBoundsException类.......................................................... 146
B.1.3. java.lang ArrayStoreException类................................................................................ 147
B.1.4 java.lang ClassCastException类................................................................................... 147
B.1.5 java.lang Exception类.................................................................................................. 148
B.1.6 java.lang IndexOutOfBoundsException类................................................................... 149
B.1.7 java.lang NegativeArraySizeException类.................................................................... 149
B.1.8 java.lang NullPointerException类................................................................................ 150
B.1.9 java.lang Object类........................................................................................................ 151
B.1.10 java.lang RuntimeException类................................................................................... 152
B.1.11 java.lang SecurityException类................................................................................... 153
B.1.12 java.lang Throwable类............................................................................................... 153
B.2  包javacard.framework ............................................................................................................ 154
B.2.1 javacard.framework AID类.......................................................................................... 155
B.2.2 javacard.framework APDU类...................................................................................... 157
B.2.3 javacard.framework APDUException类...................................................................... 166
B.2.4 javacard.framework Applet类...................................................................................... 169
B.2.5 javacard.framework CardException类......................................................................... 174
B.2.6 javacard.framework CardRuntimeException类............................................................ 176
B.2.7 javacard.framework ISO7816 接口.............................................................................. 177
B.2.8 javacard.framework ISOException类........................................................................... 181
B.2.9 javacard.framework 类 JCSystem.............................................................................. 183
B.2.10 javacard.framework OwnerPIN类.............................................................................. 190
B.2.11 javacard.framework PIN接口..................................................................................... 193

B.2.12 javacard.framework PINException类......................................................................... 195
B.2.13 javacard.framework Shareable接口........................................................................... 196
B.2.14 javacard.framework SystemException类................................................................... 197
B.2.15 javacard.framework TransactionException类............................................................ 199
B.2.16 javacard.framework 类 UserException..................................................................... 200
B.2.17 javacard.framework Util类......................................................................................... 202
B.3  包 javacard.security............................................................................................................... 207
B.3.1 javacard.security CryptoException类........................................................................... 208
B.3.2 javacard.security DESKey接口.................................................................................... 209
B.3.3 javacard.security DSAKey接口....................................................................................211
B.3.4 javacard.security DSAPrivateKey接口........................................................................ 213
B.3.5 javacard.security DSAPublicKey接口......................................................................... 215
B.3.6 javacard.security Key接口........................................................................................... 216
B.3.7 javacard.security KeyBuilder类................................................................................... 217
B.3.8 javacard.security MessageDigest类.............................................................................. 220
B.3.9 javacard.security PrivateKey接口................................................................................ 223
B.3.10 javacard.security PublicKey接口............................................................................... 223
B.3.11 javacard.security RandomData类............................................................................... 224
B.3.12 javacard.security RSAPrivateCrtKey接口................................................................. 225
B.3.13 javacard.security RSAPrivateKey接口...................................................................... 230
B.3.14 javacard.security RSAPublicKey接口........................................................................ 232
B.3.15 javacard.security SecretKey接口............................................................................... 234
B.3.16 javacard.security Signature类..................................................................................... 234
B.4  包javacardx.crypto ................................................................................................................. 241
B.4.1 javacardx.crypto Cipher类............................................................................................ 242
词汇 .................................................................. 249
参考文献............................................................... 251
索引 .................................................................. 252
 
 

你可能感兴趣的:(java,exception,防火墙,平台,applet,installer)