OMA通道-3

news2025/1/12 1:51:17

4 Transport API
 

传输 API 作为开放移动 API 的一部分,为开放移动设备中可用的 SE 提供通信框架

4.1 概述


传输 API 的作用是为应用程序提供访问设备上可用的 SE 的方法。 提供的访问权限基于 ISO/IEC 7816-4 [ISO 7816-4] 定义的概念:
• APDU:与 SE 交换的消息格式,基本上是字节序列,被发送到 SE(或更准确地说是 SE 中的小程序),SE 以另一个字节序列响应。 有关此类字节序列的确切格式的详细信息,请参阅 [ISO 7816-4]。
• 基本和逻辑通道:这些通道在设备上的实体和SE 上的applet 之间提供逻辑链接。 可以随时打开多个逻辑通道,OMAPI 传输层负责任何必要的访问序列化

此 API 依赖于“连接”模式。 客户端应用程序(在连接到 SE 的设备上运行,例如电话)打开到 SE 的连接(“会话”),然后打开到 SE 中运行的小程序的逻辑或基本通道。 在此模式之上,还有许多由系统强制执行的约束。 Transport API 的一个主要优点是它使用 [ISO 7816-4] 中定义的通道管理 APDU 抽象了跨多个依赖应用程序的通信通道管理。 因此,禁止应用程序自己发送“通道管理”APDU,因为这会破坏通道提供的隔离功能。 一旦打开一个通道,它就会被分配与 SE 中的一个且仅一个小程序进行通信。 同理,终端应用不能发送SELECT by DF name APDU。

系统的限制应该在直接处理与 SE 通信的模块中实现,而不是在 API 本身中实现,以确保攻击者无法克服 APDU 过滤器。 因此,如果可能,基带应负责过滤或至少负责与基带通信的 RIL。 一旦一个逻辑信道被分配给一个移动应用程序,只有来自这个移动应用程序的 APDU 命令应该在这个逻辑信道上传输。

4.1.1 General Rules for Handling of Status Word
 

此规范基于 ISO 规范,以便与跨不同部门和应用程序(银行、运输、身份等)的任何小程序正确运行。 除了 ISO 7816 之外,OMAPI 规范没有集成任何其他规范的特定行为。 这是有意为之的,可确保与任何类型的应用程序兼容。

使用传输层 T=1
API 或底层实现应按照 ISO/IEC 7816-3 [ISO 7816-3] 中的规定处理协议 T=1,并将数据(如果可用)和接收到的状态字返回给应用程序。 API 或底层实现不应在接收到任何状态字时自动发出 GET-RESPONSE APDU。

使用传输层 T=0
除非另有说明,在发送命令 APDU 时,本规范要求对本文档中定义的所有方法进行以下状态字管理:

• 对于状态字{0x61, 0xXX},API 或底层实现应按照[ISO 7816-3] 中的规定发出GET RESPONSE 命令。 对于 SE 向 APDU 返回超过 256 字节的总体响应数据的情况,必须应用相同的行为。 如果接收到 GET RESPONSE 命令的错误 SW,则应丢弃目前收到的所有数据并返回错误 SW。
• 对于匹配{0x6C, 0xXX} 的状态字,API 或底层实现应按照[ISO 7816-3] 中的规定重新发出输入命令。 如果重新发出的命令收到错误 SW,则应丢弃目前收到的所有数据并返回错误 SW

• 对于 {0x61, 0xXX} 和 {0x6C, 0xXX} 以外的状态字,API(或底层实现)不得在内部处理接收到的状态字(例如,不得自动发送 GET RESPONSE)。 API(或底层实现)应提供状态字和数据,

• 处理状态字警告({0x62, 0xXX} 和{0x63, 0xXX})的具体规则

o 对于状态字 {0x62, 0xXX} 和 {0x63, 0xXX} 的 transmit() 方法,API 或底层实现应根据 setTransmitBehaviour(Boolean expectDataWithWarningSW) 方法设置的行为处理这些状态字。

o 如果有以下任何一种情况:
• openBasicChannel(byte[] aid)
• openBasicChannel(byte[] aid, byte P2)
• openLogicalChannel(byte[] aid)
• openLogicalChannel(byte[] aid, byte P2)
• 选择下一步()

如果 SW 警告 ({0x62, 0xXX}, {0x63, 0xXX}) 作为 SELECT 命令的第一个响应收到,并且与 setTransmitBehaviour(Boolean expectDataWithWarningSW) 方法中的设置无关,也应发送 Le = 0x00 的 GET RESPONSE .

请注意,上面指定的 GET RESPONSE 处理意味着 API(或底层实现)应处理响应数据,即使它超过 256 字节。

注意:打算从 Open Mobile API 使用的 Card Applets 的开发人员应该避免实现需要使用 expectDataWithWarningSW 的警告行为,以避免设备应用程序开发人员可能对案例 4 的这种特殊情况处理的操作产生混淆

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WIN提权 烂土豆dll劫持

烂土豆配合令牌劫持提权(win2012及以下版本可以尝试) 两者配合使用可以直接从web权限提升到system权限 msf反弹后监听 上传文件Potato.exe upload /home/yx/桌面/Potato.exe上传至目标主机目录 烂土豆也很鸡肋 在shell中使用 whoami /priv 查看当…

2023年电工杯报名队伍破万!!!!

截止2023年5月24日凌晨0:56分,刚刚使用账号进行电工杯队伍注册,电工杯报名队伍已经达到10600只队伍,作为本年度上半学年,最后一场大型认可度较高的比赛,本次比赛的时间设置、报名费免费等优势使得,这场比赛…

C++ 图像线特征提取及匹配(LineSegmentMatching)

C++ 线特征提取及匹配【LineSegmentMatching】 1 源码下载2 环境配置2.1 添加预定义设置:2.2.配置项目环境2.1 C/C++ --》常规--》附加包含目录:2.2 链接器-》常规--》附加库目录:2.3 链接器-》常规--》输入:3 编译时踩坑记录4.匹配效果输入两幅图像,分别提取两幅图像中的…

【学习日记2023.5.23】 之 Redis入门未入坑

文章目录 1. Redis入门1.1 Redis简介1.2 Redis下载与安装1.2.1 Redis下载1.2.2 Redis安装 1.3 Redis服务启动与停止1.3.1 服务启动命令1.3.2 客户端连接命令1.3.3 修改Redis配置文件1.3.4 Redis客户端图形工具 2. Redis数据类型2.1 五种常用数据类型介绍2.2 各种数据类型特点 3…

shell sed命令

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 sed 命令sed 编辑器sed 的工作流程的三个过程命定格式常用选项常用操作 实验操作打印内容使用地址删除行替换插入 sed 命令 sed 编辑器 sed是一种流编辑器&#x…

什么是 Java 中的数据库连接池?为什么使用连接池来管理数据库连接?

文章目录 1. 数据库连接池的好处1.1 提高性能1.2 连接的重用1.3 连接管理和监控 2. 代码演示2.1 新建maven项目2.2 配置maven地址2.3 配置 Druid 数据源2.4 编写测试代码2.4.1 创建一个 Druid 数据源连接池和获取连接2.4.2 编写测试类2.4.3 新建数据库表2.4.4 运行截图 3. 完整…

进程控制-进程的替换

回顾 对于进程,我们已经有了初步的了解,我们学会了进程的终止,进程的等待,还有如果创建子进程。 这次,我们来学习如何把一个进程运行的代码和数据替换成其他的代码和数据。 进程的替换 为什么要进程替换&#xff0…

Spark大数据处理讲课笔记----Spark任务调度

零、本节学习目标 理解DAG概念了解Stage划分了解RDD在Spark中的运行流程 一、有向无环图 (一)DAG概念 DAG(Directed Acyclic Graph)叫做有向无环图,Spark中的RDD通过一系列的转换算子操作和行动算子操作形成了一个…

进程控制--进程的等待

回顾 之前我们已经学习了进程的状态和进程的退出如果你没有这些基础知识,应先去了解进程的相关基础知识。 这次我们主要来学习如何让进程等待子进程的退出。 为什么要等待子进程? 之前我们在学习进程的状态的时候,我们知道了进程有一种状态…

JavaEE——阻塞式队列

文章目录 一、阻塞式队列二、生产者消费者模型1.发送方和接受方之间的 “解耦合”2. “削峰填谷”保证系统稳定性3、代码实现阻塞式队列 一、阻塞式队列 阻塞式队列,顾名思义也是一个队列,这个队列遵循的是先进先出的原则。 这里简单提一个特殊的队列&…

chatgpt赋能Python-python_output用法

Python Output 用法介绍 Python 是一种非常流行的编程语言,其简单而有效的语法和丰富的功能集使其成为了各种应用程序和数据分析项目的首选工具。 Python 在输出方面有非常灵活的方式,本文将介绍 Python Output 的用法。 使用 print 函数输出 Python …

python爬虫之request库的使用(友好版)

以下所有爬取的网站都是可以爬取的,爬取时请先学学法律哦~ 如有侵权,私信删除~ 本章目录~。~ 一,request库简介: 二,requests使用方法 1.GET请求 1.1,发起一个get请求 1.2,利用GET请求发…

三、数据仓库实践-拉链表设计

1 写在开头的话 拉链表,学名叫缓慢变化维(Slowly Changing Dimensions),简称渐变维(SCD),俗称拉链表,是为了记录关键字段的历史变化而设计出来的一种数据存储模型,常见于…

蓝奏云软件库源码分享下载(后端源码)

正文: FreePlus后台管理系统是一个基于[Thinkphp]的后台管理系统,提供了基本的应用管理、用户管理 、卡密管理 、笔记管理 、邮箱管理 、商城管理 、论坛管理 、附件管理、软件库、工具箱等功能。#### 软件架构thinkphp5.1mysql实现#### 安装教程(php必…

Spark大数据处理讲课笔记--- RDD持久化机制

零、本讲学习目标 理解RDD持久化的必要性了解RDD的存储级别学会如何查看RDD缓存 一、RDD持久化 (一)引入持久化的必要性 Spark中的RDD是懒加载的,只有当遇到行动算子时才会从头计算所有RDD,而且当同一个RDD被多次使用时&#…

基于SpringBoot的家乡特色推荐系统的设计与实现

背景 设计一个家乡特色推荐系统,通过这个系统能够满足家乡特色文章的管理功能。系统的主要功能包括首页,个人中心,用户管理,文章分类管理,文章分享管理,系统管理等。 管理员可以根据系统给定的账号进行登…

堪比ChatGPT,Claude注册和使用教程

新建了一个网站 https://ai.weoknow.com/ 每天给大家更新可用的国内可用chatGPT资源 Claude简介 Claude是一款人工智能聊天机器人。主要有以下特征: 使用自己的模型与训练方法,而不是基于GPT-3等开源框架。模型采用Transformer编码器与解码器的结构,并使用对话上下文的双向…

Spark大数据处理讲课笔记---RDD容错机制

零、本讲学习目标 了解RDD容错机制理解RDD检查点机制的特点与用处理解共享变量的类别、特点与使用 一、RDD容错机制 当Spark集群中的某一个节点由于宕机导致数据丢失,则可以通过Spark中的RDD进行容错恢复已经丢失的数据。RDD提供了两种故障恢复的方式&#xff0c…

全国大学生数据统计与分析竞赛2021年【研究生组】-B题:“互联网+教育”用户消费行为分析预测模型(附获奖论文和python代码实现)

目录 摘要 1 问题重述 2 问题分析 3 符号说明 4 模型建立与求解 4.1 问题一 4.1.1 数据预处理 4.1.2 处理结果 4.2 问题二 4.2.1 城市分布情况 4.2.2 用户登录情况 4.3 问题三 4.3.1 模型建立 4.3.2 模型求解 4.3.3 模型优化 4.4 问题四 4.4.1 模型建立 4.4.…

Windows 编译 OpenCV 头疼 ? 已编译好的,你要不要吧

一、使用官方编译好的 【Qt】opencv源码&官方编译好的opencv在windows下使用的区别_外来务工人员徐某的博客-CSDN博客 官方替我们编译好了,可以直接拿来用,但是看到下面这两个文件夹就知道,官方是用msvc编译器编译的,所以还是…