JCRE-逻辑通道

概述

卡以APDU的形式接收来自CAD的服务请求。JCRE使用SELECT FILE APDU和MANAGE CHANNEL OPEN APDU来指定逻辑通道会话的活动Applet。一旦被选中,一个Applet实例将接收分派到该逻辑通道的所有后续APDU,直到该小程序实例被取消变成Desectected状态。

Javacard 平台支持的IO接口配置有:

  • 符合ISO7816 1-4规范的 Contacted 接口
  • 符合ISO7816-4 的media接口
  • 符合ISO14443 的Contactless 接口也可以是通过SWP
  • Dual I/O 接口

注意:要同时在接触和非接触接口上建立卡会话,在ISO7816-2定义的重置信号输入(RST)触点重置卡上,CAD必须首先启动接触会话。即使正在进行非接触式会话,接触式接口上的电源丢失或卡重置也会导致卡撕裂和卡重置事件。非接触式接口上的射频信号丢失或逻辑重置不能影响正在进行的接触式会话。

JCRE按顺序处理APDU,无论是通过相同的I/O接口还是通过两个不同的I/O接口进行顺序处理。I/O子系统必须将并发接收的APDU依次呈现到JCRE命令调度程序,使同时接收的APDU命令按顺序进行的仲裁,以及用于确保与CAD(接触)和接近耦合设备PCD(非接触)进行适当同步的机制,在本规范中没有规定。I/O子系统必须确保通过非接触式I/O接口接收的APDU命令具有更高的优先级,但不会导致接触式I/O接口导致任何同时接收的APDU命令超时。本规范中没有指定用于此目的的算法。

为JavaCard 3平台编写的小程序可以设计为利用逻辑通道支持。这样的小程序可以利用多会话功能,可以在不同的逻辑通道上与另一个小程序同时选择,甚至可以在不同的逻辑通道上同时选择多次。如图4-1所示:不同应用程序的逻辑通道,一个实现可以支持每个I/O接口上的1到20个逻辑通道,每个逻辑通道都有自己不同的CLEAR_ON_DESELECT瞬时内存段

在板卡重置后,在接触的I/O接口上,只有一个逻辑通道,即逻辑通道编号0(基本逻辑通道)处于活动状态。类似地,在PICC激活序列之后,在非接触式I/O接口上,只有一个逻辑通道,即逻辑0(基本逻辑通道)被激活。可以在此逻辑通道上发出管理通道APDU命令,以指示板卡打开一个新的逻辑通道。可以使用选择FILE APDU命令在不同的逻辑通道上选择Applet实例,就像在单个逻辑通道环境中一样。管理通道APDU命令也用于关闭逻辑通道。请注意,基本逻辑通道是永久的,只要I/O接口保持激活,就永远无法关闭

在能够同时在两个接口上维持逻辑通道会话的卡上,可能有两组20个逻辑通道。在已接触的I/O接口上的逻辑通道号0与在非接触的I/O接口上的逻辑通道号0不相同。在接触的I/O接口上的逻辑通道上选择的小程序实例通常将只从接触的I/O接口接收APDU。但是,只有在非接触式I/O接口上的逻辑通道上同时选择小程序实例时,它也可以从非接触式I/O接口接收APDU。多选择规则适用于第4.3节中所述的多选择应用程序。

为运行在Java Card 3平台上的Java卡平台2.1版本编写的遗留小程序不需要知道逻辑通道支持才能正确工作。JCRE必须确保未被设计为知道多个会话的小程序不会被选择多次,或与同一包中的另一个小程序同时选择。

支持多个逻辑通道(具有Muti-Selected Applet实例)需要更改Java Card平台2.1版选定的Applet的概念。由于可以同时选择多个Applet实例,并且可以在不同的逻辑通道上同时选择一个Applet实例,因此有必要更详细地区分这些小程序实例的状态。

如果一个Applet实例当前至少在一个逻辑通道中选择,最多40个,则该Applet实例被视为活动小程序实例。来自不同包的每个活动Applet实例都使用不同的CLEAR_ON_DESELECT瞬时内存段执行(请参见图4-1:不同应用程序的逻辑通道)。只有当一个小程序实例正在处理当前命令时,该小程序实例才是当前选定的小程序实例。在一个给定的时间内,只能有一个当前选定的小程序实例。

具有同时在多个逻辑通道上选择同时选择属于同一包的其他小程序能力的小程序称为多可选择Applet。(请参见图4-2:同一软件包中的不同Applet实例。)

默认选择Applet

通常情况下,只有通过成功地选择“文件”命令才能选择小程序实例。然而,一些智能卡CAD应用程序需要一个默认的卡小程序实例,以便在每次卡重置后被隐式选择。此外,当打开一个新的逻辑通道时,一些CAD应用程序可能还需要一个默认的小程序选择。

以类似的方式,一些智能卡接近耦合设备(PCD)应用程序需要在接近卡(PICC)激活序列成功完成后,隐式地选择一个默认的卡小程序实例。此外,在非接触式会话期间打开的每个新逻辑通道也可能需要默认的小程序选择

Java卡平台允许卡实现者为卡支持的每个逻辑通道指定一个默认的小程序实例。对于任何逻辑通道,卡实现都可以指定一个小程序实例为该逻辑通道的默认小程序实例。或者,对于任何逻辑通道,实现可以选择不指定默认的小程序实例。逻辑通道可以与多个通道的默认小程序实例共享相同的小程序实例。

在接触接口上的卡复位或者在非接触接口上完成PICC激活序列后,只有基本逻辑通道(通道0)自动打开。因此,接触接口的默认卡小程序实例,如果有的话,则是接触接口上的逻辑通道0的默认小程序实例。类似地,非接触接口的默认卡小程序实例,如果有的话,因此是非接触接口上的逻辑通道0的默认小程序实例。同时支持两个I/O接口的卡可以指定相同的小程序实例或不同的小程序实例作为每个接口的默认卡小程序实例。

接触界面卡片复位行为:

  1. 在接触的I/O接口上的卡复位(或通电,这是一种复位形式)后,JCRE执行其初始化,并检查其内部状态是否表明特定的小程序实例是基本逻辑通道的默认小程序实例。如果是这样,Java卡RE会将此小程序实例作为基本逻辑通道上当前选择的小程序实例,并调用该小程序的Select()方法。如果此方法抛出异常或返回false,或在小程序启动的事务进行时返回true,则JCRE将其设置的状态设置为表示在基本逻辑通道上没有小程序处于活动状态。当默认Applet实例在卡重置时激活时,不需要调用其处理方法。在默认小程序选择期间没有调用小程序实例的Process()方法,因为没有选择FILE APDU。
  2. JCRE确保发送了重置的答案(ATR),并且该卡现在已经准备好接受APDU命令了。

非接触界面卡片复位行为:

  1. 在成功完成非接触接口上的PICC激活序列后,如果接触接口尚未激活,Java卡RE执行其初始化,然后检查其内部状态是否表明特定小程序实例是非接触I/O接口上基本逻辑通道的默认小程序实例。如果默认小程序不是muti-Selected Applet(参见第4.3节多选择小程序),并且默认小程序的实例已经在接触接口上活动,或者来自同一包的另一个小程序实例在接触接口上活动,则Java卡RE将其状态设置为指示基本逻辑通道上没有小程序处于活动状态。否则,Java卡RE将此小程序实例作为非接触I/O接口的基本逻辑通道上当前选择的小程序实例,并通知小程序实例的上下文是活动的,则调用方法Multisectable.select,以指示同一小程序实例是否已经激活,否则,如果小程序的状态。当默认卡小程序实例在成功完成非接触接口上的PICC激活序列后成为激活状态时,不需要调用其处理方法。在默认小程序选择期间没有调用小程序实例的进程方法,因为没有SELECT FILE APDU。
  2. Java卡RE确保发送了选择(ATS)的答案,如果适用,并且该卡现在已经准备好接受APDU命令。

打开新通道时的默认小程序选择行为

Multiselectable Applets

以下列表描述了两种多选择的情况:

  1. 当多选择来自同一包中的两个不同的小程序实例时,每个小程序实例共享相同的CLEAR_ON_DESELECT内存瞬时段。小程序实例共享上下文防火墙中的对象以及它们的瞬态数据。在取消选择包中的所有小程序实例之前,Java卡RE不得重置此CLEAR_ON_DESELECT瞬态对象,请参见图4-2:同一包中的不同applet实例。
  2. 当同时在两个不同的逻辑通道上多选择同一个小程序实例时,它将跨逻辑通道共享CLEAR_ON_DESELECT内存段空间。在取消选择包中的所有小程序实例之前,Java卡RE不得重置CLEAR_ON_取消选择临时对象,见图4-3:在多个逻辑通道上选择相同的小程序实例。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/207438.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

机器人AGV小车避障传感器测距

一、A22超声波传感器 该模块是基于机器人自动控制应用而设计的超声波避障传感器,针对目前市场上对于超声波传感器模组盲区大、测量角度大、响应时间长、安装适配性差等问题而着重设计。 具备了盲区小、测量角度小、响应时间短、过滤同频干扰、体积小、安装适配性高…

【从删库到跑路 | MySQL总结篇】索引的详细使用

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】🎈 本专栏旨在分享学习MySQL的一点学习心得,欢迎大家在评论区讨论💌 目录 一、索引…

KMP基础架构

前言 Kotlin可以用来开发全栈, 我们所熟悉的各个端几乎都支持(除了鸿蒙) 而我们要开发好KMP项目需要一个好的基础架构,这样不仅代码更清晰,而且能共享更多的代码 正文 我们可以先将KMP分为前端和服务端 它们两端也能共享一些代码,比如接口声明,bean类,基础工具类等 前端和…

【Linux】TCP套接字编程

目录 前言 UDP服务器的完善 线程的封装 结构定义 接口实现 环形队列 结构定义 接口实现 加锁 信号量的申请与释放 入队与出队 整体组装 初始化与析构 信息接收线程 消息发送线程 TCP套接字 创建套接字 listen accept 收发操作 客户端的编写 进一步完善 …

centos8 在线安装、离线安装cmake

在线安装 yum install -y cmake make 离线安装 通过finalshell 上传离线安装包 离线安装 进入到程序所在路径下执行命令进行安装 rpm -Uvh --force --nodeps *.rpm

单元测试与白盒测试的区别

测试技术: 1. 白盒测试和单元测试的区别: l 单元测试和白盒测试是不同的,虽然单元测试和白盒测试都是关注功能虽然他们都需要代码支持,但是级别不同,白盒测试关注的是类中一个方法的功能是更小的单位,但是完成一个单元测试可能需要N多类,所以说作单元测试需要什么写驱动和稳定…

【SpringBoot系列】SpringBoot时间字段格式化

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

java设计模式学习之【单例模式】

文章目录 引言单例模式简介定义与用途实现方式:饿汉式懒汉式 UML 使用场景优势与劣势单例模式在spring中的应用饿汉式实现懒汉式实现数据库连接示例代码地址 引言 单例模式是一种常用的设计模式,用于确保在一个程序中一个类只有一个实例,并且…

【蓝桥杯选拔赛真题71】Scratch绘制彩虹 少儿编程scratch图形化编程 蓝桥杯创意编程选拔赛真题解析

目录 scratch绘制彩虹 一、题目要求 编程实现 二、案例分析 1、角色分析

C陷阱与缺陷——第8章建议

不要说服自己相信”皇帝的新装“,有些看上去正确的语句实际是有问题的直接了当地表明意图,当你写的代码有可能被误解成其他含义时,可以通过加注释等方式让你的意图更加清晰;有些错误可以做到事先预防 4. 考察最简单的特例&#xf…

修改el-table表头样式

<style lang"scss" scoped> ::v-deep .el-table {.el-table__header-wrapper, .el-table__fixed-header-wrapper {th {word-break: break-word;background-color: #f8f8f9;color: #515a6e;height: 40px;font-size: 13px;}} } </style>

光伏电站卫星测绘的优缺点有哪些?

由于环境保护和能源安全的重要性日益凸显&#xff0c;光伏发电作为一种清洁、可再生、分布式的能源形式&#xff0c;已经成为全球能源领域的热门话题。 光伏电站&#xff0c;是指一种利用太阳光能、采用特殊材料诸如晶硅板、逆变器等电子元件组成的发电体系&#xff0c;与电网相…

电话号码的字母组合(C++实现)

电话号码的字母组合 题目代码思路及代码讲解代码&#xff08;有注释版&#xff09; 题目 电话号码的字母组合 代码 class Solution {const char* numsStrArr[10]{"","","abc","def","ghi","jkl","mno"…

使用调研工具做好问卷调查的方法与策略

提起问卷调查大家应该都不陌生&#xff0c;学校会使用问卷调查收集学生信息或意见、企业使用问卷调查了解市场、深入用户。和其他的调查方式相比&#xff0c;问卷调查更能贴近被调查者真实想法&#xff0c;反馈真实数据。而互联网的崛起也使得大家纷纷从线下问卷转战到线上问卷…

ubantu配置网卡ip

1.ifconfig查看网卡 2. vi /etc/network/interfaces auto ens33 # 网卡名 iface ens33 inet static # 注意网卡名 address 192.168.43.10 # 配置ip地址 netmask 255.255.255.0 # 掩码 gateway 192.168.43.1 # 网关 3.重启网卡 ifconfig ens33 down ifco…

GoLong的学习之路,进阶,微服务之原理,RPC

其实我早就很想写这篇文章了&#xff0c;RPC是一切现代计算机应用中非常重要的思想。也是微服务和分布式的总体设计思想。只能说是非常中要&#xff0c;远的不说&#xff0c;就说进的这个是面试必问的。不管用的上不&#xff0c;但是就是非常重要。 文章目录 RPC的原理本地调用…

【JavaScript】3.4 JavaScript在现代前端开发中的应用

文章目录 1. 用户交互2. 动态内容3. 前端路由4. API 请求总结 JavaScript 是现代前端开发的核心。无论是交互效果&#xff0c;还是复杂的前端应用&#xff0c;JavaScript 都发挥着关键作用。在本章节中&#xff0c;我们将探讨 JavaScript 在现代前端开发中的应用&#xff0c;包…

【PixPin】媲美QQ/Snipaste截图贴图OCR工具

PixPin PixPin是一款截图工具&#xff0c;它集成了截图、长截图、贴图、标注、OCR识别等众多功能&#xff0c;软件体积小巧&#xff0c;使用简单&#xff0c;是一款非常棒的截图工具。之前使用过Snipaste工具的小伙伴用起来应该是得心应手。 从左往右的功能依次是&#xff1a;…

你好!插值查找【JAVA】

1.初次相识 插值查找&#xff08;interpolation search&#xff09;是一种根据待查找关键字在有序数组中的大致位置决定查找范围的查找算法。插值查找与二分查找类似&#xff0c;区别在于插值查找对于待查找关键字在数组中的位置进行估计&#xff0c;从而更精准地定位到待查找关…

数据结构-03-栈

1-栈的结构和特点 先进后出&#xff0c;后进先出 是栈的特点&#xff1b; 从图中&#xff0c;我们看到A入栈先放入底部&#xff0c;然后依次B和C&#xff1b;出栈的顺序依次是C-B-A&#xff1b;这种结构只能在一端操作。所以当某个数据集合只涉及在一端插入和删除数据&#xf…