PSAM卡操作命令详解_第1页
PSAM卡操作命令详解_第2页
PSAM卡操作命令详解_第3页
PSAM卡操作命令详解_第4页
PSAM卡操作命令详解_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、 外部认证EXTERNAL AUTHENTICATION 命令1、命令功能描述    外部认证命令提供了利用卡片产生随机数,外部利用密钥设备对该数据进行计算完成对终端的数据认证功能,也就是卡片认证终端合法性的过程。    外部认证成功以后,将修改对应的安全状态为内部认证结果的安全状态,并且复位卡片内对应密钥的尝试计数器到初值。    如果验证失败,将对应密钥的尝试计数器值减一,直至减为0将密钥锁定不能再进行外部认证操作为止。    

2、由于外部认证过程中需要卡片产生的随机数,所以,在外部认证命令执行前终端必须向卡片发送一条随机数命令。  2、命令报文格式    命令的APDU内容如下所示:      代码              值       CLA    

3、             0x00       INS                 0x82       P1    

4、;              0x00       P2                  0x00       Lc  

5、;                0x10       Data                认证数据       Le 

6、60;                不存在    其中:DATA域长度为16Byte,前8Byte是外部计算后的认证结果,也就是需要卡片验证的数据,后8Byte是外部给出的分散向量,用来计算认证过程密钥。  3、响应报文数据    响应报文数据域不存在。  4、响应报文状态码   

7、60;此命令执行成功的状态码为0x9000。    对于异常情况,IC卡可能回送的错误码如下所示:       SW1     SW2      含义       0x63     0xCX      

8、;  认证失败,X表示对应密钥还能够尝试的次数       0x65     0x81        存储空间错误       0x67     0x00        Lc错误&

9、#160;      0x69     0x83        对应密钥锁定       0x69     0x84        随机数无效     

10、0; 0x69     0x85        不满足密钥使用条件       0x6A     0x80        数据域参数不正确       0x6A  

11、60;  0x86        P1、P2不正确       0x6A     0x88        密钥查找失败       0x6D     0x00  

12、;      INS错误       0x6E     0x00        CLA错误    5、命令实现的其他要求    外部认证命令是卡片认证终端过程,不同的应用可能会有不同的规定,如果要支持特殊应用的话,需要参与相关的应用需求,明确命令的数据的具体格

13、式和计算方法。  6、命令实现设计    对认证数据的处理包括了如下几个步骤:    * 随机数有效性检查。在数据处理前需要检查卡内是否事先存在4Byte有效的随机数。如果随机数有效的话,在随机数后补4Byte的0x00。    * 密码的查找。外部认证需要专门的密钥,是对称密钥,通常是3DES密钥,在当前文件的对称密钥文件中查找,查找条件包括密钥用途、密钥版本和密钥索引等,可以使用单一条件,也可以使用组合条件。密钥找到以后需要检查相应的使用条件是否满足,

14、密钥是否有效等等。    * 过程密钥生成。利用找到的认证密钥对命令数据域中后8Byte分散向量做3DES加密计算,结果为8Byte,即为此次外部认证的过程密钥。    * 卡内认证结果计算。将得到的过程密钥对补充0x00以后的随机数做DES加密计算,得到8Byte的卡片计算结果。    * 将卡内计算结果和命令数据域前8Byte的终端认证数据做比较,如果一致的话表示认证成功,将对应密钥的尝试计数器复位,同时修改对应的安全状态;如果数据不一致的话,表示认证失败,将对应密钥的尝

15、试计数器减一,对应的安全状态不变。    * 最后返回相应的结果。  7、命令使用示例   (1)预设环境    假设已经在卡片取得4Byte随机数。   (2)命令报文    进行外部认证的APDU:    00 82 00 00 10 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10  &

16、#160; 其中:    * 00 表示EXTERNAL AUTHENTICATION命令的CLA。    * 82 表示EXTERNAL AUTHENTICATION命令的INS。    * 00 表示EXTERNAL AUTHENTICATION命令的P1。    * 00 表示EXTERNAL AUTHENTICATION命令的P2。    * 10 表示EXTERNAL AUTH

17、ENTICATION命令的Lc,待验证数据和分散数据。    * 0102030405060708 表示EXTERNAL AUTHENTICATION命令的DATA前半部分,是终端计算得到的8Byte待验证数据。    * 090A0B0C0D0E0F10 表示EXTERNAL AUTHENTICATION命令的DATA后半部分,是终端产生的过程密钥分散数据。   (3)EXTERNAL AUTHENTICATION响应报文    卡片处理以后,

18、EXTERNAL AUTHENTICATION没有响应报文。二、验证密码VERIFY 命令1、命令功能描述    验证密码命令用以校验个人密码,是卡片安全控制的一个重要手段。    如果卡片支持多个PIN记录的话,需要支持选择PIN的校验。    PIN的校验结果会影响对应的卡片安全状态。如果PIN校验成功以后,将对应的安全状态修改为PIN记录中指定的值,同时PIN的尝试计数器复位;如果PIN校验失败以后,对应的安全状态不改变,PIN的尝试计数器减一,制止减为0将PIN锁定再

19、也不能进行该PIN的校验为止。  2、命令报文格式。    命令的APDU内容如下所示:      代码              值       CLA         

20、0;       0x00       INS                 0x20       P1         

21、60;        0x00       P2                  PIN ID       Lc       &

22、#160;          DATA域的长度       Data                PIN的内容       Le      

23、;            不存在     其中:    * P1指定要验证的ID号,如果P1为0x00表示对PIN文件的第一条记录进行校验,否则根据P1指定的PIN ID进行查找。    * DATA域包含的是要校验的PIN的内容,和PIN文件的格式一样,用BCD编码方式,不足字节用0xFF补齐。  3、响应报文数据 

24、   响应报文数据域不存在。  4、响应报文状态码    此命令执行成功的状态码为0x9000。    对于异常情况,IC卡可能回送的错误码如下所示:       SW1     SW2      含义       0x

25、63     0xCX        旧密码校验失败,X表示剩余的尝试次数       0x65     0x81        存储区错误       0x67   &

26、#160; 0x00        Lc错误       0x69     0x81        PIN文件没有找到       0x69     0x82  

27、0;     安全条件不满足       0x69     0x83        PIN记录被锁定       0x69     0x85       

28、60;命令执行条件不满足       0x6A     0x80        数据域参数不正确       0x6A     0x86        P1、P2不正确  

29、0;    0x6D     0x00        INS错误       0x6E     0x00        CLA错误   5、命令实现的其他要求   

30、60;命令实现无特殊要求。  6、命令实现设计    在实现过程中需要注意PIN记录状态和卡片安全状态的检查与相应的维护。  7、命令使用示例   (1)预设环境    假设PIN文件支持多个PIN记录,验证PIN示例对应的为添加命令示例中添加的PIN。   (2)命令报文    验证PIN记录的APDU:    00 20 00 01

31、02 12 34    其中:    * 00 表示VERIFY命令的CLA。    * 20 表示VERIFY命令的INS。    * 00 表示VERIFY命令的P1。    * 01 表示VERIFY命令的P2,即要验证的PIN的ID。    * 02 表示VERIFY命令的Lc,即数据域的长度。    * 12

32、34 表示要验证的PIN值。   (3)VERIFY响应报文    卡片处理以后,VERIFY没有响应报文。三、修改密码CHANGE PIN 命令1、命令功能描述    修改密码命令将PIN文件中指定的一条PIN内容替换为新的PIN内容。    修改PIN之前要求验证旧的PIN,而且只能够修改PIN的内容,不包括PIN的属性。由于PIN记录空间的限制,新的PIN长度有一定的限制。    新PIN添加成功以后

33、,需要将原PIN的尝试计数器复位。  2、命令报文格式    命令的APDU内容如下所示:      代码              值       CLA         

34、60;       0x80       INS                 0x5E       P1         &#

35、160;        0x01       P2                  PIN ID       Lc       

36、           DATA域的长度       Data                旧PIN |0xFF| 新PIN       Le    

37、              不存在     其中:    * P1指定要修改的ID号,如果P1为0x00表示对PIN文件的第一条记录进行修改,否则根据P1指定的PIN ID进行查找。    * DATA域包含的新旧PIN为PIN的内容,和PIN文件的格式一样,用BCD编码方式,不足字节用0xFF补齐。  3、

38、响应报文数据    响应报文数据域不存在。  4、响应报文状态码    此命令执行成功的状态码为0x9000。    对于异常情况,IC卡可能回送的错误码如下所示:       SW1     SW2      含义     &#

39、160; 0x63     0xCX        旧密码校验失败,X表示剩余的尝试次数       0x65     0x81        存储区错误       0x67 &

40、#160;   0x00        Lc错误       0x69     0x81        PIN文件没有找到       0x69     0x82

41、0;       安全条件不满足       0x69     0x83        PIN记录被锁定       0x69     0x85     

42、60;  命令执行条件不满足       0x6A     0x80        数据域参数不正确       0x6A     0x86        P1、P2不正确

43、0;      0x6D     0x00        INS错误       0x6E     0x00        CLA错误   5、命令实现的其他要求 

44、60;  修改密码命令在不同的应用中可能有不同的定义,这里给出的是一个通用的实现过程,具体的实现还可以参考相关的应用规范。  6、命令实现设计    修改密码操作的条件检查包括:命令格式的检查、PIN文件的查找、PIN记录的查找、PIN记录的使用条件检查、旧PIN的校验等。    新PIN写入过程中要特别注意的是,如果新PIN内容比旧PIN短的话,需要写入多个0xFF,以覆盖旧PIN多余的内容。  7、命令使用示例   (1)

45、预设环境    假设PIN文件支持多个PIN记录,修改PIN示例对应的为添加命令示例中添加的PIN。   (2)命令报文    修改PIN记录的APDU:    80 5E 01 01 05 12 34 FF 56 78    其中:    * 80 表示CHANGE PIN命令的CLA。    * 5E 表示CHANGE PI

46、N命令的INS。    * 01 表示CHANGE PIN命令的P1。    * 01 表示CHANGE PIN命令的P2,即要修改的PIN的ID。    * 05 表示CHANGE PIN命令的Lc,即数据域的长度。    * 1234 表示要修改的PIN的旧值。    * FF 表示新旧PIN之间的间隔符。    * 5678 表示要修改PIN的新值。&

47、#160;  (3)CHANGE PIN响应报文    卡片处理以后,CHANGE PIN没有响应报文。四、添加密码ADD PIN 1、命令功能描述    添加密码命令是向当前文件下的PIN文件中添加一条新的PIN记录。    添加PIN的过程应用必须给出PIN的内容和PIN的相关属性,具体的格式定义可以参考PIN文件记录的数据结构。  2、命令报文格式    命令的APDU内容如下所示:

48、0;     代码              值       CLA                 0x84     

49、  INS                 0xFC       P1                  0x00    

50、;   P2                  0x00       Lc                  DATA域的长度 &

51、#160;     Data                PIN记录+MAC       Le                  不存在&

52、#160;    其中:    * DATA域中PIN记录的具体内容和相应的格式定义可以参考PIN文件的记录格式。    * 为了保证PIN记录的完整性,命令需要带安全报文。  3、响应报文数据。    响应报文数据域为空。  4、响应报文状态码    此命令执行成功的状态码为0x9000。    对于异常情况,IC卡

53、可能回送的错误码如下所示:       SW1     SW2      含义       0x65     0x81        存储空间错误      &

54、#160;0x67     0x00        Lc错误       0x69     0x81        PIN文件没有找到       0x69   

55、0; 0x82        安全条件不满足       0x69     0x86        命令执行条件不满足       0x69     0x87  

56、0;     MAC丢失       0x69     0x88        MAC错误       0x6A     0x80        数据

57、域参数不正确       0x6A     0x84        文件中存储空间不足       0x6A     0x86        P1、P2不正确   

58、60;   0x6A     0x88        密钥查找失败       0x6D     0x00        INS错误       0x6E &#

59、160;   0x00        CLA错误   5、命令实现的其他要求    在PIN文件的文件描述块中通常包含了文件写操作的控制标识符,执行添加个人密码命令以前要求对应安全状态满足条件。    命令MAC用对应DF文件的主控密钥计算。  6、命令实现设计    在修改PIN文件之前需要依次检查MAC、命令格式、

60、PIN记录格式、PIN文件、安全状态和PIN文件空闲空间等等。  7、命令使用示例   (1)预设环境    假设PIN文件支持多个PIN记录。   (2)命令报文    添加PIN记录的APDU:    84 FC 00 00 0E 01 0F 08 04 33 12 34 FF FF FF 11 22 33 44    其中:  &#

61、160; * 84 表示ADD PIN命令的CLA。    * FC 表示ADD PIN命令的INS。    * 00 表示ADD PIN命令的P1。    * 00 表示ADD PIN命令的P2。    * 0E 表示ADD PIN命令的Lc,即PIN记录的长度。    * 01 表示ADD PIN命令的ID。    * 0F 表示PIN命令的使

62、用安全条件。    * 08 表示PIN验证成功之后的安全状态。    * 04 表示PIN的最短长度4位。    * 33 表示PIN的计数器,第一个3表示允许尝试的最大次数,第二个3表示剩余的尝试次数。    * 1234 表示PIN的值。    * FFFFFF表示PIN值填充的内容。    * 11223344表示ADD PIN命令的MAC。

63、0;  (3)ADD PIN响应报文    卡片处理以后,ADD PIN没有响应报文。五、内部认证INTERNAL AUTHENTICATION1、命令功能描述    内部认证命令提供了利用终端设备发来的随机数和自身存储的密钥进行数据认证的功能,也就是终端认证卡片合法性的过程。  2、命令报文格式    命令的APDU内容如下所示:      代码  

64、60;           值       CLA                 0x00       INS     

65、0;           0x88       P1                  0x00       P2    

66、0;             0x00       Lc                  0x10       Data  &#

67、160;             认证数据       Le                  0x00    其中:    * DATA域

68、长度为16Byte,前8Byte是外部产生的随机数,也就是验证的中间数据,后8Byte是外部给出的分散向量,用来计算认证过程密钥。  3、响应报文数据    如果命令执行成功以后,响应报文数据域给出来卡片的计算结果供终端认证,长度为8Byte。  4、响应报文状态码    此命令执行成功的状态码为0x9000。    对于异常情况,IC卡可能回送的错误码如下所示:      &

69、#160;SW1     SW2      含义       0x62     0x81        回送数据可能有错       0x64     0x00 

70、;       标志状态位没有改变       0x67     0x00        Lc错误       0x68     0x82      

71、  不支持安全报文       0x69     0x01        命令执行条件不满足       0x69     0x85        不满足密钥使用条件 &

72、#160;     0x6A     0x80        数据域参数不正确       0x6A     0x86        P1、P2不正确      

73、; 0x6A     0x88        密钥查找失败       0x6D     0x00        INS错误       0x6E   

74、0; 0x00        CLA错误  5、命令实现的其他要求    内部认证命令是终端认证卡片的过程,不同的应用可能会有不同的规定,如果要支持特殊应用的话,需要参考相关的应用需求,明确命令的数据的具体格式和计算方法。  6、命令实现设计    对认证数据的计算包括了如下几个步骤:    * 密码的查找。内部认证需要专门的密钥,是对称密钥,通常

75、为3DES密钥,在当前文件的对称密钥文件中查找,查找条件包括密钥用途、密钥版本和密钥索引等,可以使用单一条件,也可以使用组合条件。    * 过程密钥生成。利用找到的认证密钥对命令数据域中后8Byte分散向量做3DES加密计算,结果为8Byte,即为此次内部认证的过程密钥。    * 认证结果计算。将得到的过程密钥对命令数据域中前8Byte外部终端给出的随机数做DES加密计算,得到8Byte认证结果,返回。  7、命令使用示例   (1)预设环境 

76、0;  除了需要有相应密钥外无其他特殊环境要求。   (2)命令报文    进行内部认证的APDU:    00 88 00 00 10 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10    其中:    * 00 表示INTERNAL AUTHENTICATION命令的CLA。    * 88 表示

77、INTERNAL AUTHENTICATION命令的INS。    * 00 表示INTERNAL AUTHENTICATION命令的P1。    * 00 表示INTERNAL AUTHENTICATION命令的P2。    * 10 表示INTERNAL AUTHENTICATION命令的Lc,验证数据和分散数据。    * 0102030405060708 表示INTERNAL AUTHENTICATION命令的DATA前半部分,

78、是终端产生的8Byte随机数。    * 090A0B0C0D0E0F10 表示INTERNAL AUTHENTICATION命令的DATA后半部分,是终端产生的过程密钥分散数据。   (3)INTERNAL AUTHENTICATION响应报文    卡片处理以后,INTERNAL AUTHENTICATION的响应报文为卡片计算得到的8Byte验证数据。六、取随机数(GET CHALLENGE)1、命令功能描述    该命令从卡片中取得一个任

79、意长度(小于256Byte)的随机数,用于安全相关过程。    除非发生掉电、进行了文件(应用)选择操作或者又发生了一条取随机数命令,取得的随机数保存在卡内一直有效。  2、命令报文格式    命令的APDU内容如下所示:      代码              值  

80、0;    CLA                 0x00       INS                 0x84  &#

81、160;    P1                  0x00       P2                  0x00&#

82、160;      Lc                  不存在       Data                不存在&#

83、160;      Le                  随机数长度    其中:Le指定了要取得的随机数的长度,用字节表示。  3、响应报文数据    如果命令执行成功以后,响应报文数据域给出来卡片产生的随机数,长度为Le字节。  4、

84、响应报文状态码    此命令执行成功的状态码为0x9000。    对于异常情况,IC卡可能回送的错误码如下所示:       SW1     SW2      含义       0x6A     0x81 &

85、#160;      不支持此功能       0x6A     0x86        P1、P2不正确       0x6D     0x00      &

86、#160; INS错误       0x6E     0x00        CLA错误  5、命令实现的其他要求    在IC卡的安全应用中,随机数一般用于命令安全报文的计算,临时密钥的分散等操作中,通常需要的长度为4Byte。较长的随机数生成一般用于PKI卡中的密钥生成,如果卡片不支持PKI功能的话,可以选择只实现4Byte

87、随机数生成。  6、命令实现设计    由于随机数在卡片安全体系中发挥了非常重要的作用,应用对卡片生成的随机数的随机性和安全性要求非常高。    一般的,卡片的芯片都带有硬件实现的随机数发生器,可以使用芯片这个功能得到一个固定长度的随机数,如果应用要求的随机数长度较长的话可以通过芯片重复取随机数拼接而成。在利用硬件随机数发生器之前需要检查产生随机数的质量,如果质量较高的话(随机性能较好,具体的评价指标可以参考相关文档)可以直接利用,否则可以选择将产生的随机数作为随机数种子,利用软件进行二次随机处

88、理。    随机数在卡内产生以后需要进行缓存,并且由COS来维护该随机数的有效性。  7、命令使用示例   (1)预设环境    无使用环境要求。   (2)命令报文    取4Byte随机数的APDU。    00 84 00 00 04    其中:    * 80 表示GE

89、T CHALLENGE命令的CLA。    * 84 表示GET CHALLENGE命令的INS。    * 00 表示GET CHALLENGE命令的P1。    * 00 表示GET CHALLENGE命令的P2。    * 04 表示GET CHALLENGE命令的Lc,即要取得的随机数的长度。   (3)GET CHALLENGE响应报文    卡片处理以后,

90、GET CHALLENGE的响应报文为取得的4Byte随机数值。七、写记录(UPDATE RECORD)1、命令功能描述    写记录命令用于写记录文件的记录内容,包括两类操作,一是对原有记录的修改,二是添加新的记录。    对记录文件写操作前需要满足记录文件描述块中关于写操作的安全控制的要求。  2、命令报文格式    命令的APDU内容如下所示:      代码  

91、0;           值       CLA                 0x00       INS      

92、;           0xDC       P1                  记录标识符       P2    

93、0;             应用控制参数       Lc                  DATA域的数据长度       Data 

94、               记录体       Le                  不存在    其中:    *

95、 P1表示要修改的记录标识符,如果P1为0xFF表示进行添加新的记录操作。    * P2高5字节表示记录文件的SFI。    * P2的低3字节含义定义如下所示:     B1      B2      B3      含义     &#

96、160;1        0         0        更新P1指定标识符的记录      0        0       

97、60; 0        更新具有P1指定标识符的第一个记录      0        0         1        更新具有P1指定标识符的最后一个记录   

98、   0        1         0        更新具有P1指定标识符的下一个记录      0        1    &#

99、160;    1        更新具有P1指定标识符的上一个记录  3、响应报文数据    响应报文数据为空。  4、响应报文状态码    此命令执行成功的状态码为0x9000。    对于异常情况,IC卡可能回送的错误码如下所示:       

100、SW1     SW2      含义       0x65     0x81        存储区写错误,更新失败       0x67     0x00 &

101、#160;      长度错误(Lc域不存在)       0x69     0x81        命令和文件格式不相容       0x69     0x82     

102、;   不满足安全状态       0x69     0x85        使用条件不满足       0x69     0x86        不满足命令执行条件(当

103、前EF错误)       0x6A     0x81        不支持此功能       0x6A     0x82        文件没有找到    &#

104、160;  0x6A     0x83        记录没有找到       0x6A     0x84        文件内存储空间不足       0x6A 

105、60;   0x86        P1、P2不正确       0x6D     0x00        INS错误       0x6E     0x00 

106、       CLA错误       0x93     0x03        应用永久锁定     5、命令实现的其他要求    一次写记录操作只能够对一条记录进行更新。  6、命令实现说明  &#

107、160; 对于不同类型的记录文件,实现的手段都不相同。    实现过程中需要注意记录指针的动态维护,特别是环形记录文件逻辑位置和物理位置常常都不相符。    如果是添加文件操作,定长记录文件和变长记录文件都不能无限制的添加,需要检查记录空间的大小是否能够容纳新的记录,包括记录数据内容和记录标志位。  7、命令使用示例   (1)预设环境    假设有环形记录文件,SFI为0x06,记录长度为0x10,总记录条数为0x

108、05。   (2)命令报文    更新第3条记录的APDU:    00 DC 03 30 10 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10    其中:    * 00 表示UPDATE RECORD 命令的CLA。    * DC 表示UPDATE RECORD 命令的INS。   

109、 * 03 表示UPDATE RECORD 命令的P1,即第3条记录。    * 30 表示UPDATE RECORD 命令的P2,高5字节0x06表示文件的SFI,低3字节0x00表示更新P1标识的第1条记录。    * 10 表示UPDATE RECORD 命令的Lc,即更新数据的长度。    * 0102030405060708090A0B0C0D0E0F10表示更新的数据内容。   (3)UPDATE RECORD 响应报文&#

110、160;   卡片处理以后,UPDATE RECORD 的响应报文可以根据应用的具体情况决定。八、读记录(READ RECORD)1、命令功能描述    读记录命令用于读取记录文件的记录内容。    对记录文件读取操作前需要满足记录文件描述块中关于读操作的安全控制要求。  2、命令报文格式    命令的APDU内容如下所示:      代码  &#

111、160;           值       CLA                 0x00       INS     

112、60;           0xB2       P1                  记录标识符       P2    &#

113、160;             应用控制参数       Lc                  不存在       Data  

114、;              不存在       Le                  0x00    其中:    * P2高

115、5字节表示记录文件的SFI。    * P1为记录标识符,P2的低3字节含义如下所示:     B1      B2      B3      含义      1        0 

116、;        0        读P1指定标识符的记录      1        0         1        读从

117、P1指定标识符到文件结束的全部记录      1        1         0        读从开始到P1指定标识符的全部记录      0      

118、0; 0         0        读具有P1指定标识符的第一个记录      0        0         1     &

119、#160;  读具有P1指定标识符的最后一个记录      0        1         0        读具有P1指定标识符的下一个记录      0    

120、    1         1        读具有P1指定标识符的上一个记录  3、响应报文数据    响应报文由读取成功以后的记录内容组成。  4、响应报文状态码    此命令执行成功的状态码为0x9000。    对于异常情

121、况,IC卡可能回送的错误码如下所示:       SW1     SW2      含义       0x62     0x81        回送的数据中部分内容可能出错    

122、   0x64     0x00        标志状态位没有改变       0x67     0x00        长度错误(Lc域不存在)       0x69&

123、#160;    0x81        命令和文件格式不相容       0x69     0x82        不满足安全状态       0x69    

124、0;0x85        使用条件不满足       0x69     0x86        不满足命令执行条件(当前EF错误)       0x6A     0x81  &#

125、160;     不支持此功能       0x6A     0x82        文件没有找到       0x6A     0x83       

126、0;记录没有找到       0x6A     0x86        P1、P2不正确       0x6D     0x00        INS错误    

127、;   0x6E     0x00        CLA错误       0x93     0x03        应用永久锁定     5、命令实现的其他要求  

128、60; 记录的读操作可以进行简化,例如只支持单条记录的读操作,不需要下一条、上一条等检索操作等等。  6、命令实现说明    在命令执行完成以后,需要动态的维护文件的记录指针。  7、命令使用示例   (1)预设环境    假设有环形记录文件,SFI为0x06,记录长度为0x10,总记录条数为0x05。   (2)命令报文    读所有记录的APDU: &#

129、160;  00 B2 01 35 00    其中:    * 00 表示READ RECORD命令的CLA。    * B2 表示READ RECORD命令的INS。    * 01 表示READ RECORD命令的P1,表示从第一条记录开始。    * 35 表示READ RECORD命令的P2,高5字节0x06表示文件的SFI,低3字节0x05表示读取P1开始的所有记录

130、。    * 00 表示READ RECORD命令的Le,即读取最大长度的数据。   (3)READ RECORD响应报文    卡片处理以后,READ RECORD的响应报文可以根据应用的具体情况决定。九、写二进制(UPDATE BINARY)1、命令功能描述    写二进制命令用于更新二进制文件的全部或部分内容。    每次更新内容在256Byte以内,如果需要更新超过256Byte的内容的话,需要通过

131、多次操作完成。    对二进制文件写操作前需要满足二进制文件描述块中关于写操作的安全控制的要求。  2、命令报文格式    命令的APDU内容如下所示:      代码              值       CLA 

132、                0x00       INS                 0xD6       P1 

133、;                 应用控制参数       P2                  应用控制参数     

134、60; Lc                  DATA域的数据长度       Data                要更新的新的数据内容   &

135、#160;   Le                  不存在    其中:    * 如果P1的最高位b8为1时,b6和b7位必须为0,b5-b1位表示待更新的EF文件的SFI;这时P2表示要更新数据起始位置在文件中的偏移量。    * 如果P1的最高位为0时,P1的

136、后7位和P2相连共同组成了一个超过256的整数,表示待更新数据块的起始位置在文件中的偏移量,可以用于超过256Byte文件的读取。    * 在DATA域中只包含要更新的纯数据内容。  3、响应报文数据    响应报文数据为空。  4、响应报文状态码    此命令执行成功的状态码为0x9000。    对于异常情况,IC卡可能回送的错误码如下所示:    &

137、#160;  SW1     SW2      含义       0x65     0x81        存储区写错误,修改失败       0x67    

138、 0x00        Lc域为空       0x69     0x81        命令和文件格式不相容       0x69     0x85   &

139、#160;    命令临时锁定,使用条件不满足       0x69     0x86        不满足命令执行条件(当前EF错误)       0x6A     0x81     &#

140、160;  不支持此功能       0x6A     0x82        文件没有找到       0x6A     0x86        P1、P2不正确 &#

141、160;     0x6B     0x00        偏移地址错误       0x6D     0x00        INS错误       

142、;0x6E     0x00        CLA错误       0x93     0x03        应用永久锁定     5、命令实现的其他要求    如果卡片不支持大文

143、件的读写操作,可以不实现超过256Byte数据操作。    为了加强安全控制,可以选择采用带MAC的命令格式,这里CLA为0x04,DATA域为该更新的新数据内容加上4Byte的MAC。  6、命令实现说明    如果支持大文件读写操作的话,对文件的写操作将通过一个命令链来完成,命令链的第一条命令中将给出文件的SFI,并且只能对小于256Byte的区域进行写操作,后续命令可以操作超过256Byte部分,不需要继续给出文件的SFI。为了实现这样的功能,在写操作第一条命令成功执行以后,卡片需要记下操

144、作的文件的SFI,也就是维护一个当前EF的标志。对当前EF标志最关键的地方在于不继续对该EF操作时,必须将标志清除掉。  7、命令使用示例   (1)预设环境    假设有二进制文件,SFI为0x05,总长度为0x400。   (2)命令报文    写文件前5Byte的APDU:    00 D6 05 00 05 01 02 03 04 05    其中:    * 00 表示UPDATE BINARY命令的CLA。    * D6 表示UPDATE BINARY命令的INS。    * 05 表示UPDATE BINARY命令的P1,为要更新文件的SFI。    * 00 表示UPDATE BINARY

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论