JAVA卡文件系统详细设计.doc
《JAVA卡文件系统详细设计.doc》由会员分享,可在线阅读,更多相关《JAVA卡文件系统详细设计.doc(30页珍藏版)》请在沃文网上搜索。
1、 JAVA卡文件系统详细设计1 结构体、变量及常量描述1.1 结构体1.1.1 DF文件头的基本结构1)DF文件头固定部分结构struct DFHEAD u16 fid; / DF IDmemref efhead;/ Handle of the first EF under current DFmemref child_df;/ Handle of the first DF under current DFmemref buddy_df;/ Handle of the next DF which has the same parentmemref parent_df;/ parent DFu8
2、 flag;/ applet dfu8 length; / 后续可变文件头长度;/ 20 bytes参数说明:Flag :DF标志Bit7-bit1 : RUFBit0 : 0 公共DF,1 与APPLET链接的DF2)DF文件头中可变部分结构存放顺序为:u8 aid_length;u8 aidaid_length;DF AIDu8 length_of_extension;u8 extensionlength_of_extension;DF 属性1.1.2 EF文件头的基本结构1)EF文件头固定部分结构struct EFHEAD u16 fid; / EF IDu8 type;/ EF typ
3、e and sfiu8 stu;/ EF memref efhead;/ Handle of the next EF under same parentu8 origin;/ EF current record pointeru8 lenlh;/ EF length, high byteu8 lenll;/ EF length, low byteu8 length_of_ext; / 后续可变文件头长度;/ 11 bytes参数说明:type 的编码格式:0 | file type (2 bit) | SFI(5 bit),file type: = 00,二进制文件 = 01,变长记录文件 =
4、 10,定长记录文件 = 11,循环定长记录文件origin:如果是循环记录文件,则为最近一条记录对应的物理记录号(从1开始编号),如果为0,表示没有记录存在;如果是定长和非定长记录文件,则为文件当前的记录数。lenlh:对定长和循环记录文件,为记录数lenll:对定长和循环记录文件,为记录长度2)EF文件头中可变部分结构存放顺序为:u8 extensionlength_of_extension;EF 属性1.2 变量定义u8 d_nextlen;u8 d_currecno;/ 记录指针u8 d_fileheadSIZE_FILE_HEADER;/ DF/EF 的文件头memref d_dfp
5、ointer;/ 当前DF指针memref d_efpointer;/ 当前EF指针memref d_nextaddr;1.3 常量定义1.3.1 文件头长度#define SIZE_FILE_HEADER(sizeof(u16)+4*sizeof(memref)+2*sizeof(u8) 1.3.2 文件信息/ DF文件头中固定部分结构#define DF_DFHAND0#define DF_EFHAND 4#define DF_NEXTDF8#define DF_PARENTDF12#define DF_FID 16#define DF_FLAG18#define DF_LENGTH19#
6、define DF_AIDLEN SIZE_FILE_HEADER#define DF_AID (SIZE_FILE_HEADER+1)/ DF文件头中可变部分结构#define DF_EXTLENGTH 9#define DF_AC0#define DF_ATR1#define DF_AMD3#define DF_DIR5#define DF_STU6#define DF_BS7#define DF_TYPE 8/ EF文件头中固定部分结构#define EF_FID 0#define EF_TYPE 2#define EF_STU 3#define EF_EFHAND 4#define E
7、F_ORIGIN 8#define EF_LENLH9#define EF_LENLL 10#define EF_EXTLEN 11/ EF文件头中可变部分#define EF_EXTLENGTH 4#define EF_SUBTYPE0#define EF_AC11#define EF_AC22#define EF_AC331.3.3 EF文件类型/文件类型#define EFTYPE_BIN0x00/ Binary file#define EFTYPE_LINEAR0x40/ Linear fixed#define EFTYPE_CHANGE0x20/ Variable file#defi
8、ne EFTYPE_CYCLIC0x60/ Cyclic file/文件类型#define EF_TYPE_BIN0x00/ Binary file#define EF_TYPE_LINEAR0x01/ Linear fixed#define EF_TYPE_CHANGE0x02/ Variable file#define EF_TYPE_CYCLIC0x03/ Cyclic file/ 文件子类型/ EF文件子类型#define EF_SUB_BASIC 0x00/基本文件#define EF_SUB_OBJ 0x01/数据对象文件#define EF_SUB_KEY 0x02/密钥文件#d
9、efine EF_SUB_SK 0x03/私钥文件类型 #define EF_SUB_PK 0x04/公钥文件类型 #define EF_SUB_CER0x05/证书文件类型 #define EF_SUB_PURSE 0x07/银行标准钱包文件#define EF_SUB_DEPOSIT 0x08/银行标准存折文件#define EF_SUB_ENCRYPT 0x09/加密公钥文件类型 #define EF_SUB_DECRYPT 0x0A/解密私钥文件类型 #define EF_SUB_ECCSK0x0B/#define EF_SUB_ECCPK0x0C/ 1.3.4 密钥信息/ 密钥结构#
10、define KEY_ID(0)/ 密钥 ID#define KEY_VERSION(1)/ 密钥版本号#define KEY_ALG(2)/ 密钥算法标识#define KEY_TYPE(3)/ 密钥类型#define KEY_USE_AC(4)/ 密钥使用条件#define KEY_TO_AC(5)/ 密钥后续状态#define KEY_CHG_AC(6)/ 密钥修改条件#define KEY_MAX_COUNT(7)/ 最大错误次数#define KEY_CUR_COUNTKEY_MAX_COUNT/ 当前错误次数#define KEY_VALUE(8)/ 密钥值#define KEY_
11、VALUE1KEY_VALUE/ 密钥1的值#define KEY_VALUE2(16)/ 密钥2的值#define KEY_CHK(24)/ 校验和#define KEY_LENGTH(25)/ Key 记录长度/ 密钥类型(电子钱包应用)#define DPK0x00/ 消费 Key 类型#define DLK0x01/ 圈存 Key 类型#define DTK0x02/ TAC Key#define DULK0x03/ 圈提 Key 类型#define DUK0x04/ 修改透支 Key 类型#define DAMK0x05/ 应用维护 Key 类型#define DPUK0x06/ P
12、IN 解锁 Key 类型#define DRPK0x07/ PIN 重装 Key 类型#define EXTAUTK0x08/ 外部认证 Key 类型#define INTAUTK0x09/ 内部认证 Key 类型#define CRYPTK0x0A/ 加密 Key 类型#define PIN0x0B/ PIN#define DUKK0x0C/ 联机解扣Key 类?#define STEMP 0x0D/ 临时过程Key 类?/ 密钥类型(借记贷记应用)#define ACUDK0x00/ 应用密文密钥类型#define MACUDK0x01/ 安全报文认证(MAC)密钥类型#define EN
13、CUDK0x02/ 安全报文加密密钥类型#define PINUDK0x03/ PIN1.3.5 应用类型#define DF_PURSE0x00 / PBOC2电子钱包应用#define DF_REFUL0x01 / PBOC2电子钱包扩展应用#define DF_PBOC20x02 / PBOC2借记贷记应用#define DF_VISA0x03 / VISA借记贷记应用#define DF_PKI 0x04 / PKI应用2 文件系统API接口描述2.1 文件创建和删除函数2.1.1 fs_CreateDF功能:创建DF并链接到文件系统中函数接口定义:u16 fs_CreateDF(u1
14、6 fid, u8 flag, u8 aid_length, u8* aid, u8 ext_length, u8* ext)输入:l fid DF文件标识l flag DF标志:0:公共DF,1:与APPLET关联的DFl aid_length 文件名长度l aid DF文件名bufferl ext_length 扩展参数长度l ext 扩展参数bufferl 全局变量d_dfpointer输出:状态码l SW6A80 未创建MF不允许创建其他DF; MF已创建,其他DF的fid不能为3f00;已存在相同fid或aid的DF;l SW6A84 空间不足l SW9000 执行成功l 全局变量d
15、_dfpointer流程图:2.1.2 fs_CreateEF功能:创建EF并链接到文件系统中函数接口定义:u16 fs_CreateEF(u8* ef_header)输入:l ef_header EF文件头信息buffer(19字节)l 全局变量d_dfpointer输出:状态码l SW6A80 已存在相同fid或sfi的EF;l SW6A84 空间不足l SW9000 执行成功l 全局变量d_efpointer流程图:2.1.3 fs_DeleteFile功能:在当前应用下按文件标识删除EF或DF函数接口定义:u16 fs_DeleteFile(u16 fid , u8 type)输入:l
16、 fid EF/DF文件标识l type 文件类型:00(DF),01(EF)l 全局变量d_dfpointer输出:状态码l SW6A82 未找到相同文件标识的DF或EF;l SW9000 执行成功流程图:2.1.4 fs_Initialize功能:设置当前DF。函数接口定义:void fs_Initialize(memref ee_addr)输入:l ee_addr 当前DF地址输出:无流程:给d_dfpointer赋值。2.1.5 fs_IsMFExist功能:判断MF是否创建。函数接口定义:fs_IsMFExist()输入:无输出:l 0 MF已创建;l 1 MF未创建流程:2.2 获
17、取文件信息的函数2.2.1 fs_GetDFid()功能:获取当前DF的文件标识符信息。函数接口定义:u16 fs_GetDFid()输入:无输出:当前DF的文件标识符信息流程:返回d_dfpointer指向的DF的文件标识符2.2.2 fs_GetDFAttrBytes功能:按索引号获取当前DF的专有(扩展)数据信息。函数接口定义:u8 fs_GetDFAttrBytes(u8 index)输入:l index DF的专有(扩展)数据的索引号,从0开始输出:当前DF的专有(扩展)数据信息流程:1. 如果index大于专有数据个数,返回02. 计算当前DF的专有(扩展)数据在文件头中的位置3.
18、 按索引号返回当前DF的专有(扩展)数据信息2.2.3 fs_GetFileAttrByte功能:按索引号获取当前EF的专有(扩展)数据信息。函数接口定义:u8 fs_GetFileAttrByte(u8 index)输入:l index EF的专有(扩展)数据的索引号,从0开始输出:当前EF的专有(扩展)数据信息流程:1. 如果index大于专有数据个数,返回02. 计算当前EF的专有(扩展)数据在文件头中的位置3. 按索引号返回当前EF的专有(扩展)数据信息2.2.4 fs_GetFileType功能:获取当前EF的类型信息。函数接口定义:u8 fs_GetFileType()输入:无输出
19、:当前EF的类型信息l 00 二进制文件l 01 定长记录文件l 02 变长记录文件l 03 循环定长记录文件流程:返回d_efpointer指向的EF的文件类型2.2.5 fs_GetFileSfi功能:获取当前EF的短文件标识符信息。函数接口定义:u8 fs_GetFileSfi()输入:无输出:当前EF的短文件标识符信息(取值范围:131)流程:返回d_efpointer指向的EF的短文件标识符2.2.6 fs_GetFileId功能:获取当前EF的文件标识符信息。函数接口定义:u16 fs_GetFileId()输入:无输出:当前EF的文件标识符信息流程:返回d_efpointer指向
20、的EF的文件标识符2.2.7 fs_GetFileSize功能:获取当前EF的文件大小信息。函数接口定义:u16 fs_GetFileSize()输入:无输出:当前EF占用EE空间大小,只包括文件体。流程:根据文件类型计算当前EF占用EE的大小。2.3 设置文件信息的函数2.3.1 fs_SetDFAttrByte功能:按索引号设置当前DF的专有(扩展)数据。函数接口定义:void fs_SetDFAttrByte(u8 index, u8 value)输入:l index DF的专有(扩展)数据的索引号,从1开始l value 专有(扩展)数据的值输出:无流程:1. 如果index大于专有数
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 文件系统 详细 设计
