CN113760244A - 一种基于c语言方式实现多入口多接口的方法及*** - Google Patents
一种基于c语言方式实现多入口多接口的方法及*** Download PDFInfo
- Publication number
- CN113760244A CN113760244A CN202110914780.0A CN202110914780A CN113760244A CN 113760244 A CN113760244 A CN 113760244A CN 202110914780 A CN202110914780 A CN 202110914780A CN 113760244 A CN113760244 A CN 113760244A
- Authority
- CN
- China
- Prior art keywords
- language
- function module
- operating system
- application
- layer function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 147
- 230000006870 function Effects 0.000 claims description 63
- 230000008569 process Effects 0.000 claims description 28
- 238000011161 development Methods 0.000 claims description 3
- 230000007246 mechanism Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 6
- 238000009434 installation Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000004140 cleaning Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种基于C语言方式实现多入口多接口的方法及***,涉及IC卡领域,该方法包括创建可解析C语言的编译器以及可解析C语言字节码的操作***,且所述操作***包括多个用以支撑上层应用的功能模块;基于C语言,编写支持运行时入口方法的应用程序;通过编译器对编写的应用程序进行编译,生成字节码;将生成的字节码下载至操作***,操作***解析字节码并运行。本发明能够使得C语言编写的应用跨平台下载,使得应用升级更便利,扩展性更好。
Description
技术领域
本发明涉及IC卡领域,具体涉及一种基于C语言方式实现多入口多接口的方法及***。
背景技术
当前,IC(Integrated Circuit,集成电路)卡应用程序的编写语言一般包括C语言和Java语言。对于C语言或Java语言编写的应用程序主要存在以下问题:对于C语言编写的应用程序,其仅能通过Main方法作为入口,应用程序集成固化后修改难度较大且应用程序不支持跨平台下载和使用;对于Java语言编写的应用程序,其虽然能够支持跨平台下载和使用,但需要完全依赖于Java语言提供的配套基础环境,存在较大的局限性。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种基于C语言方式实现多入口多接口的方法及***,能够使得C语言编写的应用跨平台下载,使得应用升级更便利,扩展性更好。
为达到以上目的,本发明提供的一种基于C语言方式实现多入口多接口的方法,具体包括以下步骤:
创建可解析C语言的编译器以及可解析C语言字节码的操作***,且所述操作***包括多个用以支撑上层应用的功能模块;
基于C语言,编写支持运行时入口方法的应用程序;
通过编译器对编写的应用程序进行编译,生成字节码;
将生成的字节码下载至操作***,操作***解析字节码并运行。
在上述技术方案的基础上,所述功能模块包括硬件层功能模块、操作***层功能模块、虚拟机层功能模块、运行环境层功能模块、API接口层功能模块和应用层功能模块。
在上述技术方案的基础上,
所述硬件层功能模块用于硬件接口的驱动实现;
所述操作***层功能模块用于进行硬件与使用的衔接实现;
所述虚拟机层功能模块用于定义字节码规范以及实现Card虚拟机;
所述运行环境层功能模块用于定义卡片运行时规范、命令分发机制和防火墙规则;
所述API接口层功能模块用于定义应用开发接口;
所述应用层功能模块用于上层应用实现。
在上述技术方案的基础上,所述入口方法包括install方法、select方法、process方法、deselect方法和uninstall方法。
在上述技术方案的基础上,
所述install方法用于进行任务资源的申请以及应用程序的注册,且当install方法被调用时,每次仅注册一个应用程序;
所述select方法用于对应用程序进行选定;
所述process方法用于将逻辑通道中的APDU发送给被select方法选定的应用程序。
在上述技术方案的基础上,
所述deselect方法用于执行清除操作;
所述uninstall方法用于应用程序被删除前获取应用程序的关联关系。
在上述技术方案的基础上,所述应用程序包括头文件、变量的申明和定义,以及函数的声明和定义。
在上述技术方案的基础上,所述应用程序还可实现多个PROCESS入口,且每个PROCESS入口映射操作***的一个ID入口。
本发明提供的一种基于C语言方式实现多入口多接口的***,包括:
创建模块,其用于创建可解析C语言的编译器以及可解析C语言字节码的操作***,且所述操作***包括多个用以支撑上层应用的功能模块;
编写模块,其用于基于C语言,编写支持运行时入口方法的应用程序;
编译模块,其用于驱使编译器对编写的应用程序进行编译,生成字节码;
解析模块,其用于将生成的字节码下载至操作***,驱使操作***解析字节码并运行。
在上述技术方案的基础上,
所述功能模块包括硬件层功能模块、操作***层功能模块、虚拟机层功能模块、运行环境层功能模块、API接口层功能模块和应用层功能模块;
所述入口方法包括install方法、select方法、process方法、deselect方法和uninstall方法。
与现有技术相比,本发明的优点在于:应用程序在编写时增加入口方法,且应用程序的功能实现不再依赖于Java虚拟机、Java运行时环境和Java API(ApplicationProgramming Interface,应用程序编程接口),应用程序通过C语言方式编写后转换成可执行下载脚本下载到操作***,做到C语言编写的应用跨平台下载,使得应用升级更便利,扩展性更好。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中一种基于C语言方式实现多入口多接口的方法的流程图。
具体实施方式
本发明实施例提供一种基于C语言方式实现多入口多接口的方法,应用程序在编写时增加入口方法,且应用程序的功能实现不再依赖于Java虚拟机、Java运行时环境和Java API(Application Programming Interface,应用程序编程接口),应用程序通过C语言方式编写后转换成可执行下载脚本下载到操作***,做到C语言编写的应用跨平台下载,使得应用升级更便利,扩展性更好。本发明实施例相应地还提供了一种基于C语言方式实现多入口多接口的***。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
参见图1所示,本发明实施例提供的一种基于C语言方式实现多入口多接口的方法,通过支持C语言编译器生成字节码方式下载到IC卡运行环境,从而达到支持多入口、多接口方式目的,使得通过C语言实现的应用程序也能进行下载、安装、删除等操作。具体包括以下步骤:
S1:创建可解析C语言的编译器以及可解析C语言字节码的操作***,且所述操作***包括多个用以支撑上层应用的功能模块;
本发明实施例中,功能模块包括硬件层功能模块、操作***层功能模块、虚拟机层功能模块、运行环境层功能模块、API接口层功能模块和应用层功能模块,且不同的功能模块负责不同的功能。
具体的,硬件层功能模块用于硬件接口的驱动实现;操作***层功能模块用于进行硬件与使用的衔接实现;虚拟机层功能模块用于定义字节码规范以及实现Card(卡)虚拟机;运行环境层功能模块用于定义卡片运行时规范、命令分发机制和防火墙规则;API接口层功能模块用于定义应用开发接口;应用层功能模块用于上层应用实现。
S2:基于C语言,编写支持运行时入口方法的应用程序。
本发明实施例中,入口方法包括install方法、select方法、process方法、deselect方法和uninstall方法。应用的生命周期开始于install for install(为安装而安装),结束于delete package and applet(删除页面和小应用程序),本发明实施例中的应用程序支持5个运行时的install方法、select方法、process方法、deselect方法和uninstall方法。
S3:通过编译器对编写的应用程序进行编译,生成字节码;
S4:将生成的字节码下载至操作***,操作***解析字节码并运行。
只要实现了上述5个入口方法便可以当做一个可执行程序,通过编译器编译后下载到操作***后就可以运行,运行时操作***解析生成的字节码满足对应的功能,同时,操作***根据不用的生命周期进行管理。应用程序包括头文件、变量的申明和定义,以及函数的声明和定义,与标准C语言保持一致。
本发明实施例中,install方法用于进行任务资源的申请以及应用程序的注册,且当install方法被调用时,每次仅注册一个应用程序。具体的,当方法install方法被调用时,应用程序的实例还没有被创建,应用程序中的install方法的主要任务是资源的申请,并注册该应用程序。Install for install的数据域会传入install方法,然后可以从输入的字节数组参数中获得初始化参数,根据需要进行不同的个人化。典型的,一个应用创建各种对象,并用预先定义的值初始化它们,设置一些内部状态变量,如果安装失败,比如资源不足申请失败,此时不会抛出异常,而是提示安装失败,运行时环境在得到控制时,应该执行所有的清理工作,即所有被自动更新的永久对象应该恢复到调用install方法前的状态;如果安装成功,运行时环境应该标志这个应用程序可以被选定了。运行时环境调用install方法时,一次只有一个应用实例能够被成功注册。
本发明实施例中,select方法用于对应用程序进行选定。具体的,应用程序保持在一种挂起的状态,直到被显式地选定,当运行时环境接收到一个SELECT FILE APDU命令并且APDU(Application Protocol Data Unit,应用协议数据单元)命令中的名字数据与应用程序的AID相匹配时发生选定。调用select方法之前,运行时环境应该先取消选定对之前已选定应用程序的选定,运行时环境通过调用这个应用的deselect方法。应用程序可以通过在select方法中返回false(错误)或抛出异常来拒绝被选定,如果applet(采用Java编程语言编写的小应用程序)返回true(真),实际的SELECT FILE APDU命令将会通过后续的process方法的调用传递给应用程序,这样应用程序就能够检查APDU中的内容。applet可以像处理其它的APDU命令一样处理SELECT FILE APDU命令,它能够用数据对SELECT FILEAPDU命令做出响应,或者抛出用合适的返回状态字标识出的错误的ISOException(输入或输出异常),状态字和可选的数据返回给读卡器。如果应用程序拒绝被选定,运行时环境将返回APDU状态字ISO7816.SW_APPLET_SELECT_FAILED给读卡器,如果选定失败,运行时环境状态将被设置为没有应用程序被选定。应用程序被成功选定后,所有直接到指定逻辑通道中的APDU都将通过process方法分发给当前被选定的应用程序。
本发明实施例中,process方法用于将逻辑通道中的APDU发送给被select方法选定的应用程序,具体的,所有APDU都将被运行时环境接收到,并进行预处理。所有命令都将被封装到APDU类的一个实例中,并传递给当前被选定的应用程序的process方法。正常返回时,运行时环境将在applet返回的任何数据后自动追加0x9000状态字。在处理过程中的任何时候,applet都可以抛出带有相应状态字的ISOException,此时运行时环境捕捉到异常后会将其状态字返回给读卡器。在处理过程中如果有任何的其它异常被抛出,运行时环境将捕捉到这个异常,并返回状态字ISO7816.SW_UNKNOWN给读卡器。
本发明实施例中,deselect方法用于执行清除操作。具体的,当运行时环境接收到一个SELECT FILE APDU命令时,并且其中的名字与某个applet的AID(应用标识符)相匹配,运行时环境将会调用当前被选定的applet的deselect方法,允许applet执行任何以便其它applet能够执行的清除操作applet。
本发明实施例中,uninstall方法用于应用程序被删除前获取应用程序的关联关系。具体的,当运行时环境准备删除应用程序时,如果应实现了uninstall方法,那么运行时环境将调用uninstall方法,通知它删除请求。从uninstall方法返回后,运行时环境将在删除应用程序前检查参照关联关系。
本发明实施例中,应用程序还可实现多个PROCESS入口,且每个PROCESS入口映射操作***的一个ID(Identity Document,身份标识号)入口。即为适配不同的外部IO(Input/Output,输入/输出)接口,应用可以实现多个PROCESS(进程)入口,如PROCESS_A、PROCESS_B等,每个入口映射操作***的一个ID入口,操作***可以根据不同的协议来自动选择不同的入口。例如,PROCESS_A通过1444-3或7816协议对应IO接口,PROCESS_B通过I2C(Inter-Integrated Circuit,两线式串行总线)协议对应IO接口,PROCESS_C通过SPI(Serial Peripheral Interface,串行外设接口)协议对应IO接口。
应用程序实现通过C语言方式实现包含5个运行时入口install方法、select方法、process方法、deselect方法和uninstall方法的C文件及对应应用功能,配合特定的虚拟机、运行时环境和API接口。同时支持配置方式通过多个PROCESS方式为多种外部接口(I2C、SPI等)进行适配,使得同一个应用可以下载到不同的IO场景上直接运行,不需要应用做修改。
本发明实施例的基于C语言方式实现多入口多接口的方法,应用程序在编写时增加入口方法,且应用程序的功能实现不再依赖于Java虚拟机、Java运行时环境和Java API(Application Programming Interface,应用程序编程接口),应用程序通过C语言方式编写后转换成可执行下载脚本下载到操作***,做到C语言编写的应用跨平台下载,使得应用升级更便利,扩展性更好。
本发明实施例还提供了一种基于C语言方式实现多入口多接口的***,包括创建模块、编写模块、编译模块和解析模块。创建模块用于创建可解析C语言的编译器以及可解析C语言字节码的操作***,且所述操作***包括多个用以支撑上层应用的功能模块;编写模块用于基于C语言,编写支持运行时入口方法的应用程序;编译模块用于驱使编译器对编写的应用程序进行编译,生成字节码;解析模块用于将生成的字节码下载至操作***,驱使操作***解析字节码并运行。
本发明实施例中,功能模块包括硬件层功能模块、操作***层功能模块、虚拟机层功能模块、运行环境层功能模块、API接口层功能模块和应用层功能模块;入口方法包括install方法、select方法、process方法、deselect方法和uninstall方法。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
本发明是参照根据本发明实施例的方法、设备(***)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
Claims (10)
1.一种基于C语言方式实现多入口多接口的方法,其特征在于,具体包括以下步骤:
创建可解析C语言的编译器以及可解析C语言字节码的操作***,且所述操作***包括多个用以支撑上层应用的功能模块;
基于C语言,编写支持运行时入口方法的应用程序;
通过编译器对编写的应用程序进行编译,生成字节码;
将生成的字节码下载至操作***,操作***解析字节码并运行。
2.如权利要求1所述的一种基于C语言方式实现多入口多接口的方法,其特征在于:所述功能模块包括硬件层功能模块、操作***层功能模块、虚拟机层功能模块、运行环境层功能模块、API接口层功能模块和应用层功能模块。
3.如权利要求2所述的一种基于C语言方式实现多入口多接口的方法,其特征在于:
所述硬件层功能模块用于硬件接口的驱动实现;
所述操作***层功能模块用于进行硬件与使用的衔接实现;
所述虚拟机层功能模块用于定义字节码规范以及实现Card虚拟机;
所述运行环境层功能模块用于定义卡片运行时规范、命令分发机制和防火墙规则;
所述API接口层功能模块用于定义应用开发接口;
所述应用层功能模块用于上层应用实现。
4.如权利要求1所述的一种基于C语言方式实现多入口多接口的方法,其特征在于:所述入口方法包括install方法、select方法、process方法、deselect方法和uninstall方法。
5.如权利要求4所述的一种基于C语言方式实现多入口多接口的方法,其特征在于:
所述install方法用于进行任务资源的申请以及应用程序的注册,且当install方法被调用时,每次仅注册一个应用程序;
所述select方法用于对应用程序进行选定;
所述process方法用于将逻辑通道中的APDU发送给被select方法选定的应用程序。
6.如权利要求4所述的一种基于C语言方式实现多入口多接口的方法,其特征在于:
所述deselect方法用于执行清除操作;
所述uninstall方法用于应用程序被删除前获取应用程序的关联关系。
7.如权利要求1所述的一种基于C语言方式实现多入口多接口的方法,其特征在于:所述应用程序包括头文件、变量的申明和定义,以及函数的声明和定义。
8.如权利要求1所述的一种基于C语言方式实现多入口多接口的方法,其特征在于:所述应用程序还可实现多个PROCESS入口,且每个PROCESS入口映射操作***的一个ID入口。
9.一种基于C语言方式实现多入口多接口的***,其特征在于,包括:
创建模块,其用于创建可解析C语言的编译器以及可解析C语言字节码的操作***,且所述操作***包括多个用以支撑上层应用的功能模块;
编写模块,其用于基于C语言,编写支持运行时入口方法的应用程序;
编译模块,其用于驱使编译器对编写的应用程序进行编译,生成字节码;
解析模块,其用于将生成的字节码下载至操作***,驱使操作***解析字节码并运行。
10.如权利要求9所述的一种基于C语言方式实现多入口多接口的***,其特征在于:
所述功能模块包括硬件层功能模块、操作***层功能模块、虚拟机层功能模块、运行环境层功能模块、API接口层功能模块和应用层功能模块;
所述入口方法包括install方法、select方法、process方法、deselect方法和uninstall方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110914780.0A CN113760244A (zh) | 2021-08-10 | 2021-08-10 | 一种基于c语言方式实现多入口多接口的方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110914780.0A CN113760244A (zh) | 2021-08-10 | 2021-08-10 | 一种基于c语言方式实现多入口多接口的方法及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113760244A true CN113760244A (zh) | 2021-12-07 |
Family
ID=78788913
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110914780.0A Pending CN113760244A (zh) | 2021-08-10 | 2021-08-10 | 一种基于c语言方式实现多入口多接口的方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113760244A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023142535A1 (zh) * | 2022-01-26 | 2023-08-03 | ***股份有限公司 | 一种ic卡应用的硬件调用方法、装置及智能ic卡 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111880800A (zh) * | 2020-06-19 | 2020-11-03 | 深圳融卡智能科技有限公司 | 应用下载方法与应用下载*** |
-
2021
- 2021-08-10 CN CN202110914780.0A patent/CN113760244A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111880800A (zh) * | 2020-06-19 | 2020-11-03 | 深圳融卡智能科技有限公司 | 应用下载方法与应用下载*** |
Non-Patent Citations (1)
Title |
---|
中国人民银行移动支付技术标准课题研究组编: "《***支付技术标准体系研究报告》", 中国金融出版社, pages: 29 - 30 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023142535A1 (zh) * | 2022-01-26 | 2023-08-03 | ***股份有限公司 | 一种ic卡应用的硬件调用方法、装置及智能ic卡 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110597531B (zh) | 分布式的模块升级方法、装置及存储介质 | |
CN105657191B (zh) | 一种基于Android***的应用增量升级方法及*** | |
CN102915247B (zh) | Apk插件化管理方法 | |
CN109062617B (zh) | 一种支持多类型设备的平台的应用方法、移动终端 | |
US20090327996A1 (en) | Framework for Programming Embedded System Applications | |
CN106020873B (zh) | 补丁包加载方法及装置 | |
US10846073B2 (en) | Methods, apparatuses, terminals, servers, and systems for container generation | |
KR20000052759A (ko) | 마이크로컨트롤러를 이용한 고급 프로그래밍 언어 사용 | |
CN106598647B (zh) | 一种智能装置开发平台 | |
CN112882732A (zh) | 一种软件开发工具包sdk中功能代码的更新方法和装置 | |
KR100489783B1 (ko) | 선택적 애플릿 관리가 가능한 스마트카드 및 그 운용방법 | |
CN112114896A (zh) | 一种插件框架及业务功能扩展的方法 | |
CN113760244A (zh) | 一种基于c语言方式实现多入口多接口的方法及*** | |
CN111651169A (zh) | 基于web容器的区块链智能合约运行方法及*** | |
CN111427617B (zh) | 数据处理方法、装置及设备 | |
CN103677933A (zh) | 一种为智能卡打补丁的方法和*** | |
EP1280051A1 (en) | Information processing method and system | |
CN114072765B (zh) | 用于基于容器的虚拟化***的方法 | |
CN114490103A (zh) | 一种操作***接口调用方法、装置以及电子设备 | |
CN116643761A (zh) | 一种定制化镜像制作及部署方法、装置、终端及介质 | |
CN109933355B (zh) | 应用程序升级方法及装置 | |
CN108694048B (zh) | 一种批量发布服务的实现方法 | |
CN114398102B (zh) | 一种应用程序包生成方法、装置、编译服务器及计算机可读存储介质 | |
CN113553068B (zh) | 一种下载应用包的方法、装置和电子设备 | |
US20020038454A1 (en) | Method of compiling code in an object oriented programming language |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |