转自:http://bbs.ednchina.com/BLOG_ARTICLE_172027.HTM

3、终端传输层 
    
    本节描述了在终端和 IC 卡之间传输的命令和响应 APDU 的机制。APDU 是命令或响应报文。由于命令和响应报文都可以包含数据,TTL应能处理应用层定义的4种命令格式。C-APDU和R-APDU的组成在应用层描述。

TAL传送C-APDU到TTL。在发送到IC卡之前,应将其变换成传输协议认可的形式。IC卡处理完命令后,以R-APDU的格式将数据(如果存在的话)和状态码回送给TTL。

3.1 T="0协议下" APDU的传送 
    
    本节描述了 C-APDU 和 R-APDU 的映射方式,TTL 和 IC 卡之间的数据交换机制以及在命令情况2或4中如何使用GET RESPONSE命令取回IC卡的数据。

(1)C-APDU和 R-APDU的映射方式和数据交换

如何将 C-APDU 映射到 T="0" 命令头取决于命令情况。如何将 IC 卡回送的数据(如果存在)和状态码映射到R-APDU的形式取决于回送数据的长度。

由IC卡回送的过程字节SW1 SW2=’61xx’和SW1 SW2=’6Cxx’用来控制IC卡和TTL之间的数据交换,它不会回送给 TAL。过程字节 SW1 SW2=’61xx’或 SW1 SW2=’6Cxx’表示命
令在IC卡中的处理没有完成。

如果 IC 卡回送给 TTL 的状态码是 SW1 SW2=’9000’,表示正常完成了命令的处理。任何其它的状态码都表明 IC 卡中断了命令的处理,处理失败的原因在状态码中指出。TTL 收到来自 IC 卡的任何状态码(但不包括过程字节’61xx’和’6Cxx’)时,都结束命令的处理,不论是正常、警告还是错误情况。

以下描述的是将IC卡回送的数据和状态字节构造成R-APDU格式的方法,仅适用于IC 卡已成功完成了命令处理或全部数据(如果存在)在过程字节’61xx’和’6Cxx’的控制下已被IC卡返回的情况。INS、INS和’60’过程字节的详细使用在此不作描述。

a.情况1 
   
    C-APDU头映射到T=0命令头的前四个字节,T=0命令头的P3置为’00’。

交换流程如下:

* TTL发送T=0的命令头到IC卡; 
    * IC卡回送状态码给TTL。

完成命令处理后,由IC卡向TTL回送的状态码原样映射到R-APDU必备的尾域。

注:IC卡应分析T=0命令头,判断是命令情况1还是命令情况2在请求最大长度的响应数据。

b. 情况2

C-APDU 头被映射到 T="0" 命令头的前四个字节,长度字节’Le’从 C-APDU 的条件体被映射到T=0命令头的P3。

交换流程如下:

* TTL发送T=0的命令头到IC卡。 
    * 在过程字节的控制下,IC 卡向 TTL 回送数据和状态(在非正常处理时只返回状态)。

完成命令处理后,由 IC 卡向 TTL 回送的数据(如果存在)和状态按照下述方法映射到R-APDU:

(i) 如果Le≥Licc,回送数据被映射到R-TPDU的条件体,返回的状态无变化地被映射到R-APDU必备的尾域。 
   (ii) 如果Le<Licc,回送数据的前Le字节被映射到R-TPDU的条件体中,返回的状态无变化地被映射到R-APDU必备的尾域。

c. 情况3

C-APDU头被映射到T=0命令头的前四个字节,C-APDU条件体的长度字节’Lc’被映射到T=0命令头的P3。

交换流程如下:

* TTL发送T=0的命令头到IC卡。

* 如果 IC 卡回送一个过程字节而不是状态码,则在此过程字节的控制下,TTL向IC卡发送C-APDU条件体的部分数据。如果IC卡回送状态码SW1 SW2,TTL将中断命令处理过程。

* 如果处理过程没有在步骤2处中断,则IC卡返回命令处理结束后的状态。

IC卡完成命令处理后回送给TTL的状态码,或由IC卡返回的引起TTL中断命令处理的状态码,都不加改变地映射到R-APDU。

d. 情况4

C-APDU头被映射到T=0命令头的前四个字节,C-APDU条件体的长度字节’Lc’被映射到T=0命令头的P3。

交换流程如下:

* TTL发送T=0命令头到IC卡。

* 如果IC卡回送一个过程字节而不是状态码,则在此过程字节控制下,TTL给IC 卡发送 C-APDU 条件体的部分数据。如果 IC 卡回送状态码 SW1 SW2,TTL将中断命令处理过程。

* 如果处理过程在步骤2中没有中断,IC卡应回送过程字节’61xx’给TTL,请求TTL发出GET RESPONSE命令从IC卡取回数据。在命令处理的这个阶段中,IC卡不应回送状态码SW1 SW2=‘9000’。TTL应发送GET RESPONSE命令到IC卡取回提及的数据,小于或等于IC卡回送的过程字节’61xx’中的’xx’字节值的数据指定为GET RESPONSE命令的长度字节。这样,GET RESPONSE命令可以同情况2的命令一样处理。在过程字节控制下,IC卡向TTL回送数据和状态码(或在非正常处理情况下,只有状态码)。

完成命令处理后,IC 卡回送给 TTL 的数据(如果存在)和状态码,或仅是引起 TTL终止命令处理过程的状态码,按照下述规则映射到R-APDU:

(i)如果 Le≥Licc,回送的数据被映射到 R-TPDU 的条件体,返回的状态不做改变地被映射到R-APDU必备的尾域。 
   (ii)如果 Le<Licc,回送数据的前 Le 个字节被映射到 R-TPDU 的条件体,返回的状态不做改变地被映射到R-APDU必备的尾域。

(2) 过程字节’61xx’和’6Cxx’的使用

由IC卡回送到TTL的过程字节’61xx’和’6Cxx’指明了TTL取回当前正在处理的命令请求数据的方式。在T=0协议下,这些过程字节仅仅用在命令情况2和4中。

过程字节’61xx’通知TTL发出GET RESPONSE命令到IC卡。GET RESPONSE命令头的P3置为≤’xx’。

过程字节’6Cxx’通知TTL立即重发前条命令,同时命令头置为P3=‘xx’。

命令情况2和4在容错处理过程中,使用过程字节的规定如下。在发生错误时,IC卡回送错误或警告状态码而不是’61xx’或’6Cxx’。

a. 命令情况 2

如果IC卡收到一个命令情况2的头并且Le≠Licc,应回送过程字节’6CLicc’(或状态码指出一个警告或错误情况,而非 SW1 SW2=‘9000’)通知 TTL 立即重发 P3=Licc 的命令头。

如果 IC 卡收到命令情况 2 的头并且 Le="Licc",IC 卡在过程字节控制下或者回送请求的数据和相关状态码,或者回送过程字节’61xx’(或表明警告或错误情况的状态码,而非SW1 SW2=‘9000’)通知TTL按最大长度’xx’发出GET RESPONSE命令。

b. 命令情况 4

如果IC卡收到一个命令情况4的命令,处理完随C-APDU一同发送来的数据之后,应回送过程字节’61xx’,(或表明警告或错误情况的状态码,而非 SW1 SW2=‘9000’)通知TTL按最大长度’xx’发出GET RESPONSE命令。

(3) GET RESPONSE命令

TTL发出GET RESPONSE命令,是为了从IC卡取得对应于命令情况2和4的C-APDU的Le字节的数据。GET RESPONSE仅适用于T=0协议类型。

命令报文的结构如下:

字节          值  
        CLA         ‘00’ 
        INS         ‘C0’ 
         P1         ‘00’ 
         P2         ‘00’ 
         Le           预期数据的最大长度

正常处理结束后,IC卡回送状态码SW1 SW2=‘9000’和Licc字节的数据。

在错误情况发生时,错误状态码(SW1 SW2)的编码如下:

        SW1         SW2       含义  
          ‘64’       ‘00’     GET RESPONSE失败 
          ‘67’       ‘00’     域长度错误 
          ‘6A’       ‘86’     P1 P2≠’00’

3.2 T="1协议下" APDU的传送

C-APDU 从 TAL 传送到 TTL,TTL 将其不加变化地映射到 C-APDU 的一个 I 块的 INF域中,然后把这个I块发送到IC卡。IC卡在I块的INF域中向TTL回送响应数据(如果存在)和状态码,I块的INF域的内容不加变化地被映射到R-APDU,然后返回给TAL。

如果有必要,C-APDU和响应数据/状态码可以分成多个数据块的INF域的链接。

4、应用层

应用协议由TAL和TTL之间一组有序的数据交换组成,本节的后续部分定义了应用协议。

应用层交换的每一步由命令响应对组成,其中 TAL 通过 TTL 给 IC 卡发送命令,IC卡处理该命令后通过TTL返回一个响应给TAL。每一个特定的命令都与一个特定的响应相匹配。一个APDU就是一个命令报文或一个响应报文。 命令报文和响应报文都可以包含数据,传输协议通过TTL来管理四种命令情况的情 况,如下所示:

           APDU中数据存在的情况:

情况     命令数据     响应数据 
         1           无         无 
         2           无         有 
         3           有          无 
         4           有         有

需要注意的是,应用层中有一种特殊的报文叫安全报文,它在原有命令的基础上添加了安全数据MAC,所以安全报文传送总有数据要送往IC卡,因此仅适用于命令情况3和4的情况。当使用安全报文传送时,情况1的命令就变为情况3,情况2的命令就变为情况4。

4.1  C-APDU

C-APDU 包含一个必备的连续四字节的命令头,用 CLA、INS、P1 和 P2 表示,同时包括一个可变长度的条件体。

命令头定义如下:

* CLA:指令类型,1Byte;除’FF’外可赋任何值。 
    * INS:指令类型的指令码,1Byte。只有在低半字节为0,且高半字节既不是‘6’也不是’9’时,INS才有效。 
    * P1 P2:参数字节,分别1Byte,根据不同的INS来定义。

条件体定义如下:

* Lc 占一个字节,定义了在 C-APDU 中发送数据的字节数。Lc 的取值范围从 1到255。 
    * Le 占一个字节,指出 R-APDU 中期望返回的最大字节数。Le 的取值范围从 0到255;如果Le=0,期望返回数据的字节数的最大长度是256。

可能的C-APDU结构的四种情况如下:

     情况               结构 
         1                CLA INS P1 P2 
         2                CLA INS P1 P2 Le 
         3                CLA INS P1 P2 Lc Data 
         4                CLA INS P1 P2 Lc Data Le

4.2  R-APDU

R-APDU 是一串字节,这一串字节由一个条件体以及必备的两字节状态码 SW1 SW2组成。条件体是一串数据字节,其最大长度在C-APDU中的Le中定义。 必备的状态码标明IC卡在处理完命令后的状态。

SW1 SW2的编码遵循下述规定:

* SW1的高半字节是’6’或’9’; 
    * 禁止SW1的值为’60’; 
    * SW1的值为’61’或’6C’时,应作为一个错误来处理; 
    * 命令正常结束时,SW1 SW2的取值为’9000’; 
    * 当SW1的高半字节为’9’,且低半字节不为’0’时,其含义依赖于相关的应用; 
    * 当SW1的高半字节为’6’,且低半字节不为’0’时,SW1的含义与应用无关。

IC卡的传输协议(3)【转】相关推荐

  1. iso14443 非接触式IC卡协议

    转自百度百科 http://baike.baidu.com/link?url=Y1koEW6mX0AgDV5kt37i7M5RaV0g_WwxU163dO-VKUbR5w4qEHv0OMOnbw1BT ...

  2. RS232串口IC卡读写器控制协议

    //发卡器介绍: https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-17663462238.26.12fce728BgBT3g&id=1 ...

  3. 同方微电子3S理念护航金融IC卡

    2011年3月15日,中国人民银行发布<中国人民银行关于推进金融IC卡应用工作的意见>(以下简称<意见>),决定在全国范围内正式启动银行卡芯片迁移工作,"十二五&qu ...

  4. IC卡历史及分类命名

    磁卡 .条形码 . 射频卡 射频卡包括 ID卡 IC卡 等(射频识别技术(Radio Frequency Identification,缩写RFID) 射频卡工作频率 不同特性 不同频段的RFID产品 ...

  5. RFID第一期——各种IC卡ID卡详解

    起因 放假闲来无事,在B站冲浪,看到有人在讨论IC卡,我在这方面刚好还是有这么一点了解,就拿MF1卡给别人举了个例子,然后MF1卡就被开除出IC卡籍了. 有点气,但是仔细想想,网上关于这些卡的介绍知识 ...

  6. sam卡、M1卡、PSAM卡、IC卡区别

    1.M1卡 M1芯片全称为NXP Mifare1系列,为飞利浦旗下公司恩智浦出品,常用的有S50(容量位1KB)和S70(容量位4KB)两种型号,兼容国产芯片有复旦的M1卡,和华鸿的M1卡. 2.M1 ...

  7. 一卡通技术IC卡概述及分类

    1.IC卡定义 IC卡是集成电路卡(Integrated Circuit Card)的简称,是镶嵌集成电路芯片的塑料卡片,其外形和尺寸都遵循国际标准(ISO).芯片一般采用不易挥发性的存储器(ROM. ...

  8. IC卡电表及用电信息管理系统

    IC卡电表及用电信息管理系统 摘 要:介绍了IC卡电表及用电信息管理系统各部分的组成,它包括IC卡.IC卡电表.刷卡电路和信息管理系统四部分,给出了结构框图和软件流程图,在实約hiτ弥写锏搅嗽て诘哪康 ...

  9. 【IoT】加密与安全:NFC 读写 IC 卡以及密码安全验证

    虽然 IC 卡本身的加密安全性能一般,但仍然有必要了解一下. 1.主要指标 1.1.S50 非接触式 IC 卡性能简介(M1) 参考:IC 卡 S50 简介 1)容量为 8K 位 EEPROM(1K ...

最新文章

  1. 人工智能学习框架TensorFlow渐近分析
  2. 网络扫描信息收集基于(Windows)
  3. winFrom简单引用Webservice
  4. 基于案例贯通 Spark Streaming 流计算框架的运行源码
  5. php excel 导入 显示,php Excel 导入
  6. DOM包裹wrap()方法
  7. USACO详细介绍 全球中小学生均可参加
  8. TCGA肿瘤基因数据的访问(二)
  9. Python demjson 下载并安装
  10. 淘宝中间件借阿里云对外 日均调千亿次
  11. JavaScript创建对象:深入理解编程原理
  12. 使用静态库的一些问题 -all_load
  13. 基于LabVIEW和PCI板卡的运动控制实现
  14. ADS笔记 | 史密斯圆进行阻抗匹配,并用ADS仿真结果
  15. Reeder 5 for Mac(RSS阅读器)
  16. qbo_webi: cherry server 有效url
  17. 工业互联网企业蘑菇物联获数千万元A轮融资,元禾原点资本领投...
  18. hyper-v自带坑
  19. 【历史上的今天】7 月 20 日:人类登上月球;数据仓库之父诞生;Mac OS X Lion 发布
  20. java读取微信消息_微信公众平台开发中使用Java如何实现获取用户的信息

热门文章

  1. 关于阿里云服务器ping不通可以如何解决
  2. NPM私服搭建步骤及使用
  3. 【服务熔断】服务熔断完整说明
  4. python一元运算符,python 重载一元运算符
  5. python鼠标键盘同时监听
  6. 157、基于STM32单片机的设施农业(大棚种植)远程监控系统设计
  7. 电工学习笔记——DC/DC转换器回路设计指南
  8. 国外交友网站即时通讯支持多语言社交网站源码
  9. 贩妖记 第四十六章,阴间唯一
  10. 计算机组成部分有cpu吗,CPU的主要组成部分有哪些?