CN117528519B - 一种实现智能卡扩展的方法及装置 - Google Patents

一种实现智能卡扩展的方法及装置 Download PDF

Info

Publication number
CN117528519B
CN117528519B CN202410008624.1A CN202410008624A CN117528519B CN 117528519 B CN117528519 B CN 117528519B CN 202410008624 A CN202410008624 A CN 202410008624A CN 117528519 B CN117528519 B CN 117528519B
Authority
CN
China
Prior art keywords
certificate
token
signature
smart card
key
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.)
Active
Application number
CN202410008624.1A
Other languages
English (en)
Other versions
CN117528519A (zh
Inventor
许可
陆舟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Feitian Technologies Co Ltd
Original Assignee
Feitian Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Feitian Technologies Co Ltd filed Critical Feitian Technologies Co Ltd
Priority to CN202410008624.1A priority Critical patent/CN117528519B/zh
Publication of CN117528519A publication Critical patent/CN117528519A/zh
Application granted granted Critical
Publication of CN117528519B publication Critical patent/CN117528519B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/06Authentication
    • H04W12/069Authentication using certificates or pre-shared keys
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3226Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/30Security of mobile devices; Security of mobile applications
    • H04W12/35Protecting application or service provisioning, e.g. securing SIM application provisioning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/60Context-dependent security
    • H04W12/69Identity-dependent
    • H04W12/72Subscriber identity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/80Wireless

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开一种实现智能卡扩展的方法及装置,适用于iOS系统或iPadOS系统的终端设备,终端设备包含宿主应用及依赖于宿主应用的扩展程序,当终端设备与智能卡设备建立连接之后,宿主应用将智能卡设备中设备证书注册到令牌配置中;扩展程序被第三方应用调用时使用令牌配置初始化智能卡令牌,扩展程序中的PIN码认证接口被第三方应用调用时,扩展程序枚举智能卡令牌中的证书对象标识和密钥对象标识并提示用户进行选择,当接收到用户选择信息时将PIN码发送给智能卡设备进行验证;扩展程序中的签名接口被第三方应用调用时,如扩展程序判断PIN码已验证成功则将签名接口中的待签名数据发送给智能卡设备进行签名。

Description

一种实现智能卡扩展的方法及装置
技术领域
本发明涉及信息安全领域,尤其涉及一种实现智能卡扩展的方法及装置。
背景技术
随着苹果公司的迅速崛起,iPhone智能手机凭借其超强的性能和高品质的工业设计赢得了众多用户的青睐。苹果手机搭载了苹果公司研发的iOS操作系统。现有技术中在iOS设备或iPadOS设备上无法使用智能卡功能(比如SSL双向认证服务、PDF文件签名等),故亟需提供一种可以解决上述问题的方法。
发明内容
本发明的目的是为了克服现有技术的不足,提供一种实现智能卡扩展的方法及装置。
第一方面,本发明实施例提供了一种实现智能卡扩展的方法,适用于iOS系统或iPadOS系统的终端设备,所述终端设备包含宿主应用及依赖于所述宿主应用的扩展程序,当所述终端设备与智能卡设备建立连接之后,所述方法包括:
步骤S1:所述宿主应用选择所述智能卡设备中的智能卡应用,通过预设的筛选条件读取所述智能卡设备中的设备对象,对所述设备对象中的设备证书计算哈希得到证书哈希值;
步骤S2:所述宿主应用获取设备配置信息,判断所述证书哈希值是否在所述设备配置信息中的已配置的令牌配置中,是则报错,否则将所述证书哈希值写入到所述令牌配置中,执行步骤S3;
步骤S3:所述宿主应用创建证书模板,将所述设备证书中的数据存入证书模板得到新的设备证书,判断新的设备证书是否有效,是则执行步骤S4,否则报错;
步骤S4:所述宿主应用根据所述新的设备证书生成证书对象和密钥对象,创建对应的证书对象标识和密钥对象标识,将所述证书对象标识、所述证书对象、所述密钥对象标识和所述密钥对象写入到所述令牌配置中;
步骤S5:当所述扩展程序被第三方应用调用时,所述扩展程序获取传入的令牌配置参数,根据所述令牌配置参数获取对应的令牌配置,根据所述令牌配置初始化创建的智能卡令牌;
步骤S6:当所述扩展程序的PIN码认证接口被所述第三方应用调用时,所述扩展程序枚举所述智能卡令牌中的证书对象标识和密钥对象标识并提示用户进行选择,当接收到用户选择的证书对象标识和密钥对象标识时提示用户输入PIN码,将接收到的PIN码发送给所述智能卡设备进行验证;
步骤S7:当所述扩展程序的签名接口被所述第三方应用调用时,所述扩展程序判断是否已成功验证PIN码,是则确定签名算法,根据用户选择的证书对象标识及对应的证书对象、用户选择的密钥对象标识及对应的密钥对象、所述签名算法和签名接口参数中的待签名数据生成签名指令并发送给所述智能卡设备,否则报错;
步骤S8:当所述扩展程序接收到所述智能卡设备返回的签名数据时,将所述签名数据返回给所述第三方应用。
第二方面,本发明实施例又提供一种实现智能卡扩展的装置,设置于iOS系统或iPadOS系统的终端设备中,所述装置包含宿主应用模块及依赖于所述宿主应用模块的扩展程序模块,所述宿主应用模块包括:读取计算单元、获取判断单元、创建判断单元和生成写入单元,所述扩展程序模块包括:枚举获取单元、第一接收发送单元、判断确定单元、第一生成发送单元和第二接收发送单元;
所述读取计算单元,用于当所述终端设备与智能卡设备建立连接之后,选择所述智能卡设备中的智能卡应用,通过预设的筛选条件读取所述智能卡设备中的设备对象,对所述设备对象中的设备证书计算哈希得到证书哈希值;
所述获取判断单元,用于获取设备配置信息,判断所述证书哈希值是否在所述设备配置信息中的已配置的令牌配置中,是则报错,否则将所述证书哈希值写入到所述令牌配置中,触发所述创建判断单元;
所述创建判断单元,用于创建证书模板,将所述设备证书中的数据存入证书模板得到新的设备证书,判断新的设备证书是否有效,是则触发所述生成写入单元,否则报错;
所述生成写入单元,用于根据所述新的设备证书生成证书对象和密钥对象,创建对应的证书对象标识和密钥对象标识,将所述证书对象标识、所述证书对象、所述密钥对象标识和所述密钥对象写入到所述令牌配置中;
所述枚举获取单元,用于当所述扩展程序模块被第三方应用调用时,获取传入的令牌配置参数,根据所述令牌配置参数获取对应的令牌配置,根据所述令牌配置初始化创建的智能卡令牌;
所述第一接收发送单元,用于所述扩展程序模块中的PIN码认证接口被第三方应用调用时,枚举所述智能卡令牌中的证书对象标识和密钥对象标识并提示用户进行选择,当接收到用户选择的证书对象标识和密钥对象标识时提示用户输入PIN码,将接收到的PIN码发送给所述智能卡设备进行验证;
所述判断确定单元,用于当所述扩展程序模块中的签名接口被第三方应用调用时,判断是否已成功验证PIN码,是则确定签名算法,否则报错;
所述第一生成发送单元,用于根据用户选择的证书对象标识及对应的证书对象、用户选择的密钥对象标识及对应的密钥对象、所述签名算法和签名接口参数中的待签名数据生成签名指令并发送给所述智能卡设备;
所述第二接收发送单元,用于接收所述智能卡设备返回的签名数据,将所述签名数据返回给所述第三方应用。
第三方面,本发明实施例又提供一种电子设备,所述电子设备包括至少一个处理器、存储器及存储在所述存储器上并可被所述至少一个处理器执行的指令,所述至少一个处理器执行所述指令以实现上述的实现智能卡扩展的方法。
第四方面,本发明实施例又提供一种计算机可读存储介质,所述计算机可读存储介质包括计算机程序,当所述计算机程序在电子设备上运行时,使得所述电子设备执行上述的实现智能卡扩展的方法。
第五方面,本发明实施例又提供一种芯片系统,包括芯片,所述芯片与存储器耦合,用于执行所述存储器中存储的计算机程序,以执行上述的实现智能卡扩展的方法。
本发明与现有技术相比,具有以下优点:
本发明技术方案通过扩展程序和宿主应用结合使用,扩大智能卡设备(例如智能卡(可结合读卡器)、KEY)在iOS设备或iPadOS设备上的使用范围,无需对智能卡设备做改动,兼容性更好,使用更方便。
附图说明
图1为本发明实施例一提供的一种实现智能卡扩展的方法的流程图;
图2为本发明实施例二提供的一种实现智能卡扩展的方法的流程图;
图3为本发明实施例三提供的一种实现智能卡扩展的方法的流程图。
具体实施方式
本申请提出了一种实现智能卡扩展的方法及装置,下面结合附图,对本申请具体实施方式进行详细说明。所述实施例的示例在附图中示出。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明实施方式作进一步地详细描述。
实施例一
本发明实施例一提供一种实现智能卡扩展的方法,如图1所示,包括:
步骤S1:宿主应用选择智能卡设备中的智能卡应用,通过预设的筛选条件读取智能卡设备中的设备对象,对设备对象中的设备证书计算哈希得到证书哈希值;
具体的,在本实施例中,通过预设的筛选条件读取智能卡设备中的设备对象,包括:宿主应用保存智能卡应用的上下文对象,通过上下文对象获取卡槽数组,遍历卡槽数组,从卡槽数组中读取设备名称,通过设备名称读取智能卡设备中的设备对象。
通过上下文对象获取卡槽数组,包括:通过上下文对象和第一接口获取卡槽数组;
通过设备名称读取智能卡设备中的设备对象,包括:通过第二接口和设备名称得到设备对象。
对设备对象中的设备证书计算哈希得到证书哈希值,包括:通过第五接口读取设备对象中的设备证书,根据预设算法对设备证书计算哈希得到证书哈希值;
步骤S2:宿主应用获取设备配置信息,判断证书哈希值是否在设备配置信息中的已配置的令牌配置中,是则报错,否则将证书哈希值写入到令牌配置中,执行步骤S3;
具体的,在本实施例中,步骤S2包括:
步骤B1:宿主应用获取设备配置信息,根据预置的扩展接口文件标识从设备配置信息中获取驱动配置类型对象,从驱动配置类型对象中获取令牌驱动配置数据、令牌密钥钥匙串数据和系统令牌驱动配置上下文;
步骤B2:宿主应用根据系统令牌驱动配置上下文从设备配置信息中的字典对象中获取键值为预设名称的令牌配置;
步骤B3:宿主应用判断证书哈希值是否在令牌配置中,是则报错,否则将证书哈希值、令牌驱动配置数据和令牌密钥钥匙串数据保存到令牌配置中,执行步骤S3;
步骤S3:宿主应用创建证书模板,将设备证书中的数据存入证书模板得到新的设备证书,判断新的设备证书是否有效,是则执行步骤S4,否则报错
步骤S4:宿主应用根据新的设备证书生成证书对象和密钥对象,创建对应的证书对象标识和密钥对象标识,将证书对象标识、证书对象、密钥对象标识和密钥对象写入到令牌配置中;
具体的,在本实施例中,步骤S4,包括:
步骤C1:宿主应用根据新的设备证书生成证书对象,根据设备证书中的密钥生成密钥对象,创建对应的证书对象标识和密钥对象标识,设置密钥可签名、解密、登录;
步骤C2:宿主应用将证书对象标识、证书对象、密钥对象标识和密钥对象作为钥匙串项目,创建一个以证书哈希值作为键值、钥匙串项目作为名称的令牌配置;
步骤C3:宿主应用将令牌配置添加到字典对象中;
步骤S5:当扩展程序被第三方应用调用时,扩展程序获取传入的令牌配置参数,根据令牌配置参数获取对应的令牌配置,根据令牌配置初始化创建的智能卡令牌;
在本实施例中,扩展程序封装为一个接口,第三方应用根据令牌配置参数调用扩展程序;
步骤S6:当扩展程序的PIN码认证接口被第三方应用调用时,扩展程序枚举智能卡令牌中的证书对象标识和密钥对象标识并提示用户进行选择,当接收到用户选择的证书对象标识和密钥对象标识时提示用户输入PIN码,将接收到的PIN码发送给智能卡设备进行验证;
步骤S7:当扩展程序的签名接口被第三方应用调用时,扩展程序判断是否已成功验证PIN码,是则确定签名算法,根据用户选择的证书对象标识及对应的证书对象、用户选择的密钥对象标识及对应的密钥对象、签名算法和签名接口参数中的待签名数据生成签名指令并发送给智能卡设备,否则报错;
步骤S8:当扩展程序接收到智能卡设备返回的签名数据时,将签名数据返回给第三方应用。
可选的,在本实施例中,步骤S5-步骤S8有不同实现方式,例如,第三方应用为浏览器,实现方式一:
步骤S5包括:
步骤S5-1:当扩展程序被浏览器调用时,根据预设接口标识枚举对应的扩展应用接口,获取扩展应用接口的令牌配置参数,根据令牌配置参数获取对应的令牌配置,根据令牌配置初始化创建的智能卡令牌;
步骤S5-2:扩展程序根据智能卡令牌创建令牌会话并对令牌会话进行初始化,将令牌会话与智能卡令牌绑定。
相应的,步骤S6包括:
步骤S6-1:当扩展程序的PIN码认证接口被浏览器调用时,扩展程序枚举出智能卡令牌中的证书对象标识和密钥对象标识并提示用户进行选择,当接收到用户选择的证书对象标识和密钥对象标识后通过浏览器弹出的PIN码输入框提示用户输入PIN码;
步骤S6-2:当扩展程序接收到用户输入的PIN码后通过Lighting通讯方式将PIN码发送给对应的智能卡设备;
步骤S6-3:扩展程序接收智能卡设备返回的验PIN结果并返回给浏览器;
验PIN结果包括验PIN结果成功或验PIN结果失败。
相应的,步骤S7包括:
步骤S7-1:当扩展程序的签名接口被浏览器调用时,扩展程序判断是否已成功验证PIN码,是则执行步骤S7-2,否则报错;
步骤S7-2:扩展程序与令牌会话协商签名算法;
步骤S7-3:扩展程序根据用户选择的证书对象标识和密钥对象标识分别获取智能卡令牌中对应的证书对象和密钥对象,根据证书对象标识、证书对象、密钥对象标识、密钥对象、签名算法和签名接口参数中的待签名数据生成签名指令并通过Lighting通讯方式发送给智能卡设备。
可选的,步骤S5-步骤S8的实现方式二:
步骤S1之前还包括:扩展程序注册通知,宿主应用建立通知的监听并创建应用程序组;
步骤S5包括:
步骤S51:当扩展程序被浏览器调用时,根据预设接口标识枚举对应的扩展应用接口,获取扩展应用接口的令牌配置参数,根据令牌配置参数获取对应的令牌配置,根据令牌配置初始化创建的智能卡令牌;
步骤S52:扩展程序根据智能卡令牌创建令牌会话并对令牌会话进行初始化,将令牌会话与智能卡令牌绑定。
相应的,步骤S6包括:
步骤S61:当扩展程序的PIN码认证接口被浏览器调用时,扩展程序枚举出智能卡令牌中的证书对象标识和密钥对象标识并提示用户进行选择,当接收到用户选择的证书对象标识和密钥对象标识后通过浏览器弹出的PIN码输入框提示用户输入PIN码;
步骤S62:扩展程序将接收到的PIN码以通知方式发送给宿主应用,阻塞等待宿主应用返回数据;
步骤S63:宿主应用根据PIN码生成验PIN指令,将验PIN指令发送给智能卡设备;
步骤S64:宿主应用接收智能卡设备返回的验PIN结果并缓存在应用程序组中,发送广播;
步骤S65:当扩展程序接收到广播并监听到应用程序组中存储数据发生变化时将应用程序组中的验PIN结果返回给浏览器;
本实施例中,验PIN结果包括验PIN结果成功或验PIN结果失败。
相应的,步骤S7包括:
步骤S71:当扩展程序的签名接口被浏览器调用时,扩展程序判断是否已成功验证PIN码,是则执行步骤S72,否则报错;
步骤S72:扩展程序与令牌会话协商签名算法;
步骤S73:扩展程序根据用户选择的证书对象标识和密钥对象标识分别获取智能卡令牌中对应的证书对象和密钥对象,根据证书对象标识及对应的证书对象、密钥对象标识及对应的密钥对象、证书标识、签名算法和签名接口参数中的待签名数据进行封装得到封装结果,将封装结果以通知方式发送给宿主应用,阻塞等待宿主应用返回数据;
步骤S74:当宿主应用监听到封装结果时对封装结果进行解析,根据解析得到的证书对象标识、证书对象、密钥对象标识、密钥对象、签名算法和待签名数据生成签名指令,将签名指令发送给智能卡设备;
具体的,通过USB/BLE/NFC/Lighting等通讯方式将签名指令发送给智能卡设备;
相应的,步骤S8包括:
步骤S81:宿主应用将接收到的智能卡设备返回的签名结果缓存到应用程序组中并发送广播;
在本实施例中,签名结果包括签名失败信息或签名数据;
步骤S82:当扩展程序接收到广播并监听到应用程序组中存储数据发生变化时,判断应用程序组中是否有签名数据,是则执行步骤S83,否则报错;
步骤S83:扩展程序获取应用程序组中的签名数据并返回给浏览器。
本发明技术方案通过扩展程序和宿主应用结合使用,扩大智能卡设备(例如智能卡(可结合读卡器)、KEY)在iOS设备或iPadOS设备上的使用范围,无需对智能卡设备做改动,兼容性更好,使用更方便。
实施例二
本发明实施例二提供一种实现智能卡扩展的方法,适用于iOS系统和iPadOS系统的终端设备,终端设备包含宿主应用和扩展程序,扩展程序依赖宿主应用进行工作,本实施例具体以通过智能卡设备进行SSL登录操作的实现过程为例进行说明,如图2所示,本实施例的方法包括:
步骤201:当宿主应用检测到有智能卡设备接入终端设备时选择智能卡应用,保存上下文对象;
本实施例中的宿主应用用于将设备证书保存到对应智能卡令牌中的证书对象和密钥对象中,供扩展程序调用证书对象和密钥对象;
步骤202:宿主应用通过上下文对象获取卡槽数组;
具体的,在本实施例中,通过上下文对象和第一接口获取卡槽数组;
例如,第一接口为;TKSmartCardSlotManager * manager =[TKSmartCardSlotManager defaultManager];
步骤203:宿主应用遍历卡槽数组,从卡槽数组中读取设备名称,通过设备名称读取智能卡设备中的设备对象;
具体的,在本实施例中,通过第二接口和获取的名称读取智能卡设备中的设备对象;
例如,第二接口为:TKSmartCard *m_TKsc = [[manager slotnamed:"设备名称"]makeSmartCard];
或,通过第四接口,根据卡槽数组中的第一个设备名称读取智能卡设备中的设备对象;
例如,第四接口为:TKSmartCard *m_TKsc=[[manager slotnamed:manager.slotNames.firstObject] makeSmartCard];其中,manager.slotNames为卡槽数组;
步骤204:宿主应用对设备对象中的设备证书计算哈希得到证书哈希值:
具体的,在本实施例中,通过第五接口读取设备对象中的设备证书,根据sha256算法对设备证书计算哈希得到证书哈希值(certSHA256Value);
例如,第五接口为:[m_TKsc transmitRequest:读取证书apdu reply:^(NData*certData,NSError* error){}],其中,certData为设备证书;
步骤205:宿主应用获取设备配置信息,枚举设备配置信息中的已配置的令牌配置,判断证书哈希值是否在令牌配置中,是则报错,否则执行步骤206;
在本实施例中,枚举设备配置信息中的已配置的令牌配置,包括:
步骤B1:根据预置的扩展接口文件标识(com.apple.ctk.class-id)从设备配置信息(TKTokenDriverConfiguration类)中获取驱动配置类型对象,获取驱动配置类型对象中的令牌驱动配置数据、令牌密钥钥匙串数据和系统令牌驱动配置上下文;
在本实施例中,驱动配置(TKTokenDriverConfiguration)类型对象中存储有证书哈希值的对象;
具体的,宿主应用通过NSDictionary *driverConfigDict=[TKTokenDriverConfiguration driverConfigurations]获取系统令牌驱动配置上下文;
步骤B2:宿主应用根据系统令牌驱动配置上下文从字典对象中获取键值为预设名称的令牌配置;
在本实施例中,预设名称为com.ftsafe.SCManager.ProviderToken;
其中,字典对象为一个二维数组,第一列为关键字key,第二列为项目Item,Item列可以放各种类型变量;
步骤206:宿主应用将证书哈希值、令牌驱动配置数据和令牌密钥钥匙串数据保存到令牌配置中;
步骤207:宿主应用创建证书模板,将设备证书中的数据写入到证书模板中得到新的设备证书,判断新的设备证书是否有效,是则根据新的设备证书生成证书对象,根据新的设备证书中的密钥生成密钥对象,创建对应的证书对象标识和密钥对象标识,将证书对象标识及对应的证书对象、密钥对象标识及对应的密钥对象写入到令牌配置中,执行步骤208,否则报错;
在本实施例中,步骤207中根据新的设备证书生成证书对象,根据新的设备证书中的密钥生成密钥对象,创建对应的证书对象标识和密钥对象标识,将证书对象标识、证书对象、密钥对象标识、密钥对象和证书哈希值写入到令牌配置中,包括:
步骤207-1:根据新的设备证书生成证书对象,根据新的设备证书中的密钥生成密钥对象,创建证书对象标识和密钥对象标识;
步骤207-2:设置密钥可以签名、解密、登录;
步骤207-3:将证书对象标识、证书对象、密钥对象标识和密钥对象作为钥匙串项目;
步骤207-4:创建一个以证书哈希值作为键值、钥匙串项目作为名称的令牌配置;
步骤207-5:把令牌配置添加到字典对象中;
步骤208:当扩展程序被浏览器调用时,扩展程序获取传入的令牌配置参数,根据令牌配置参数获取对应的令牌配置,通过令牌配置初始化创建的智能卡令牌,根据智能卡令牌创建令牌会话并对令牌会话进行初始化,将令牌会话与智能卡令牌绑定;
在本实施例中,扩展程序封装成接口,浏览器可通过令牌配置参数调用扩展程序;
本实施例中的宿主应用用于注册智能卡设备的证书对象和密钥对象到令牌配置中,本实施例中浏览器调用扩展应用接口,通过访问令牌配置获取证书对象并通过Lighting等通信方式与智能卡设备进行通讯,使用智能卡设备调用扩展程序中的接口完成验PIN、签名或者加解密等操作;
在本实施例中,扩展程序安装后被系统加载,当宿主应用调用智能卡相关服务时调用到对应的扩展程序,比如浏览器支持SSL登录,当用户触发SSL登录时浏览器调用对应的扩展程序执行SSL登录操作;
步骤209:当扩展程序中的PIN码认证接口被浏览器调用时,扩展程序枚举出智能卡令牌对中的证书对象标识和密钥对象标识,并提示用户进行选择,当接收到用户选择的证书对象标识和密钥对象标识后通过浏览器弹出PIN码输入框并提示用户输入PIN码;
步骤210:扩展程序通过Lighting通讯方式将接收到的PIN码发送给对应的智能卡设备,执行步骤211;
步骤211:智能卡设备对接收到的PIN码进行验证,如验证成功则将验PIN结果设置为成功并返回给扩展程序,如验证失败则将验PIN结果设置为失败并返回给扩展程序;
步骤212:扩展程序将接收到的验PIN结果返回给浏览器;
步骤213:当扩展程序中的签名接口被浏览器调用时,扩展程序根据验PIN结果判断是否已成功验证PIN码,是则执行步骤214,否则报错;
可选的,在步骤213中判断为否时还包括:扩展程序通过浏览器弹出PIN码输入框并提示用户输入PIN码,扩展程序通过Lighting通讯方式将接收到的用户输入的PIN码发送给对应的智能卡设备,如接收到智能卡设备返回的成功验PIN结果时执行步骤214;
具体的,扩展程序根据验PIN结果判断是否已成功验证PIN码,包括:判断扩展程序验PIN结果是否为成功,是则已成功验证PIN码,否则未成功验证PIN码;
步骤214:扩展程序扩展程序与令牌会话协商签名算法,根据用户选择的证书对象标识和密钥对象标识获取智能卡令牌中的证书对象和密钥对象,根据证书对象标识、证书对象、密钥对象标识、密钥对象、签名算法和签名接口参数中的待签名数据生成签名指令,通过Lighting通讯方式将签名指令发送给智能卡设备;
在本实施例中,步骤214中的根据用户选择的证书对象标识和密钥对象标识获取智能卡令牌中的证书对象和密钥对象之前还包括:扩展程序判断用户选择的密钥对象标识是否合法,是则根据用户选择的证书对象标识和密钥对象标识获取智能卡令牌中的证书对象和密钥对象,否则报错;
具体的,判断密钥对象标识是否合法,包括:判断用户选择的密钥对象标识是否与设置的密钥对象标识匹配,是则合法,否则不合法;
可选的,在本实施例中,待签名数据可以是待签名原数据(二进制数据),也可以是待签名原数据的hash值;
步骤215:智能卡设备接收签名指令并进行解析得到证书对象标识、证书对象、密钥对象标识、密钥对象、签名算法和待签名数据,判断密钥对象标识是否合法,是则执行步骤216,否则给扩展程序返回签名失败信息,执行步骤217;
具体的,判断密钥对象标识是否合法,包括:判断接收到的密钥对象标识是否与智能卡设备中密钥对象中的密钥对象标识匹配,是则合法,否则不合法;
步骤216:智能卡设备根据证书对象、密钥对象、密钥对象标识、证书对象标识确定签名私钥,使用签名私钥根据签名算法对待签名数据进行签名得到签名数据,将签名数据返回给扩展程序,执行步骤217;
具体的,在本实施例中,步骤216包括:智能卡设备对接收到的待签名数据进行签名,根据签名数据组成APDU信息数据,将APDU信息数据返回给扩展程序,执行步骤217;
例如,智能卡设备对接收到的待签名数据进行签名得到dataToSign,把dataToSign组成APDU信息数据,通过以下发送方式将APDU信息数据返回给扩展程序;
发送方式:[m_TKsc2 transmitRequest:apdu数据 reply:^(NSData *response,NSError *error){}];
步骤217:扩展程序判断接收到的智能卡设备返回的数据是否为签名数据,是则将签名数据返回给浏览器,否则报错;
可选的,该步骤中的报错可以为提示登录失败。
实施例三
本发明实施例三提供一种在iOS上实现智能卡扩展的方法,适用于iOS系统和iPadOS系统的终端设备,终端设备包含宿主应用和扩展程序,扩展程序依赖宿主应用进行工作,本实施例具体以通过智能卡设备进行SSL登录操作的实现过程为例进行说明,如图3所示,该方法包括:
步骤300:扩展程序注册通知,宿主应用建立通知的监听并创建应用程序组;
在步骤300之前,由用户将宿主应用及其扩展程序添加到同一个Apple Group(苹果组),通过智Apple Group的名字初始化应用程序组;
在本实施例中,应用程序组(NSuserDefault)用于存储数据,宿主应用和扩展程序均可访问应用程序组中的数据;
本实施例中的宿主应用用于将设备证书保存到对应智能卡令牌中的证书对象和密钥对象中,供扩展程序调用证书对象和密钥对象,还负责与智能卡设备的通信,与智能卡设备共同完成加解密和签名验签等操作;
步骤301:当宿主应用检测到有智能卡设备连接到终端设备时选择智能卡应用,保存上下文对象,通过上下文对象获取卡槽数组;
具体的,在本实施例中,选择对应应用具体为:宿主应用给智能卡下发的选应用指令,智能卡对选应用指令进行处理,并选择对应于选应用指令的应用然后给宿主应用返回选择成功信息;
例如,选应用的指令为APDU格式,具体为00A40400 0B A0 00 00 03 08 00 00 1000 01 00,其中00A40400为指令头,0B为数据域长度(即应用标识长度),A0 00 00 03 0800 00 10 00 01 00为数据域中的数据(即应用标识);
步骤302:宿主应用遍历卡槽数组,从卡槽数组中读取设备名称,通过设备名称读取智能卡设备中的设备对象;
步骤303:宿主应用对设备对象中的设备证书计算哈希得到证书哈希值,获取设备配置信息,并枚举设备配置信息中的已配置的令牌配置;
具体的,在本实施例中,枚举设备配置信息中的已配置的令牌配置的实现过程与实施例二相同,在此不再赘述;
步骤304:宿主应用判断证书哈希值是否在令牌配置中,是则报错,否则执行步骤305;
步骤305:宿主应用将证书哈希值、令牌驱动配置数据和令牌密钥钥匙串数据保存到令牌配置中;
优选的,在步骤305中宿主应用将令牌驱动配置数据和令牌密钥钥匙串数据组成钥匙串列表并保存到令牌配置中;
例如,本实施例中的钥匙串列表为keychainItems,令牌配置为TKTokenConfiguration;
步骤306:宿主应用创建证书模板,将设备证书中的数据写入到证书模板中得到新的设备证书,判断新的设备证书是否有效,是则执行步骤307,否则报错;
步骤307:宿主应用根据新的设备证书生成证书对象,根据新的设备证书中的密钥生成密钥对象,创建对应的证书对象标识和密钥对象标识,将证书对象标识及对应的证书对象、密钥对象标识及对应的密钥对象写入到令牌配置中,执行步骤308;
具体的,在本实施例中,将证书对象标识、证书对象、密钥对象标识、密钥对象和证书哈希值写入到令牌配置中包括:宿主应用将证书对象标识、证书对象、密钥对象标识、密钥对象组装到令牌钥匙串列表(TKTokenKeychainItem)中,将令牌钥匙串列表封装成令牌配置,并使用证书哈希值设置对应令牌钥匙串列表的键值,在进行签名时可以通过键值找到对应的设备私钥和设备证书;
步骤308:当扩展程序被浏览器调用时,扩展程序获取传入的令牌配置参数,根据令牌配置参数获取对应的令牌配置,通过令牌配置初始化创建的智能卡令牌,根据智能卡令牌创建令牌会话并对令牌会话进行初始化,将令牌会话与智能卡令牌绑定;
在本实施例中,扩展程序封装为接口被浏览器调用;
在本实施例中,扩展程序安装后被系统加载,当宿主应用调用智能卡相关服务时调用到对应的扩展程序,比如浏览器支持SSL登录,当用户触发SSL登录时浏览器调用对应的扩展程序执行SSL登录操作;
本实施例的扩展程序用于作为宿主应用与浏览器之间的通讯桥梁;
步骤309:当扩展程序中的PIN码认证接口被浏览器调用时,扩展程序枚举出智能卡令牌中的证书对象标识和密钥对象标识,提示用户进行选择;
步骤310:当扩展程序接收到用户选择的证书对象标识和密钥对象标识后通过浏览器弹出PIN码输入框并提示用户输入PIN码,将接收到的PIN码以通知方式发送给宿主应用;
在本实施例中,步骤310之后还包括:扩展程序循环监听应用程序组是否有数据返回;
步骤311:宿主应用根据PIN码生成验PIN指令,将验PIN指令发送给智能卡设备;
在本实施例中,宿主应用支持通过以下通讯方式将验PIN指令发送给智能卡设备:NFC、BLE、USB、Lighting;
步骤312:智能卡设备对接收到的验PIN指令中的PIN码进行验证,如验证成功则将验PIN结果设置为成功并返回给宿主应用,宿主应用将验PIN结果成功缓存在应用程序组中并发送广播,执行步骤313,如验证失败则将验PIN结果设置为失败并返回给宿主应用,宿主应用将验PIN结果失败缓存在应用程序组中并发送广播,执行步骤313;
在本实施例中,应用程序组(NSUserDefaults)缓存数据后,定时将缓存的数据写入磁盘,防止出现在数据成功写入NSUserDefaults,程序退出后导致的数据丢失的情形,可以在数据成功写入NSUserDefaults后使用synchronize强制立即将数据写入磁盘;
步骤313:当扩展程序接收到广播并监听到应用程序组中存储数据发生变化时,将应用程序组中的验PIN结果返回给浏览器;
步骤314:当扩展程序中的签名接口被浏览器调用时,扩展程序根据验PIN结果判断是否已成功验证PIN码,是则执行步骤315,否则报错;
可选的,在本实施例中,步骤314中判断为否时还包括:
步骤T:扩展程序再次弹出PIN码输入框并将接收到的PIN码以通知方式发送给宿主应用,宿主应用根据PIN码生成验PIN指令,将验PIN指令发送给智能卡设备,智能卡设备对接收到的验PIN指令中的PIN码进行验证,如验证成功则将验PIN结果设置为成功并返回给宿主应用,宿主应用将验PIN结果成功缓存在应用程序组中并发送广播,如验证失败则将验PIN结果设置为失败并返回给宿主应用,宿主应用将验PIN结果失败缓存在应用程序组中并发送广播;当扩展程序接收到广播并监听到应用程序组中存储数据发生变化时,如应用程序组中存储的数据为验PIN结果成功则执行步骤315;
可选的,如判断验证信息为验证失败之后还包括:扩展程序判断验证失败次数是否达到预设值,是则报错,结束,否则执行步骤T;
可选的,步骤313还包括:扩展程序检测到有广播时,保存应用程序组中的数据并清空应用程序组;
步骤315:扩展程序与令牌会话协商签名算法,根据用户选择的证书对象标识和密钥对象标识分别获取智能卡令牌中对应的证书对象和密钥对象,根据证书对象标识、证书对象、密钥对象标识、密钥对象、签名算法和签名接口参数中的待签名数据进行封装得到封装结果,将封装结果以通知方式发送给宿主应用,阻塞等待宿主应用返回数据;
在本实施例中,步骤315中的根据证书对象标识、证书对象、密钥对象标识、密钥对象、签名算法和签名接口参数中的待签名数据进行封装得到封装结果之前还包括:扩展程序判断签名接口参数中的待签名数据的格式是否符合浏览器的要求,是则继续,否则报错;
在本实施例中,步骤315之后还包括:扩展程序循环监听应用程序组是否有数据返回;
步骤316:当宿主应用监听到封装结果时对该封装结果进行解析,根据解析得到的证书对象标识、证书对象、密钥对象标识、密钥对象、签名算法和待签名数据生成签名指令,将签名指令发送给智能卡设备;
在本实施例中,将签名指令发送给智能卡设备包括:通过USB/BLE/NFC/Lighting等通讯方式将签名指令发送给智能卡设备;
步骤317:智能卡设备对签名指令进行解析得到证书对象、密钥对象、证书对象标识、密钥对象标识、签名算法和待签名数据,判断密钥对象标识是否合法,是则根据证书对象、密钥对象、密钥对象标识、证书对象标识确定签名私钥,使用签名私钥根据签名算法对待签名数据进行签名得到签名数据,将签名数据返回给宿主应用,执行步骤318,否则给宿主应用返回签名失败信息,执行步骤318;
步骤318:宿主应用将接收到的智能卡返回的签名结果缓存到应用程序组中并发送广播;
本实施例中的签名结果为签名失败信息或签名数据;
在本实施例中,应用程序组缓存数据后,定时将缓存的数据写入磁盘,防止出现在数据成功写入NSUserDefaults,程序退出后导致的数据丢失的情形,可以在数据成功写入NSUserDefaults后使用synchronize强制立即将数据写入磁盘;
步骤319:当扩展程序接收到广播并监听到应用程序组中存储数据发生变化时,判断应用程序组中是否有签名数据,是则执行步骤320,否则报错;
在本实施例中,该步骤的报错可以为提示登录失败;
步骤319还包括:扩展程序接收到有广播时,保存应用程序组(中的数据并清空应用程序组;
步骤320:扩展程序将签名数据返回给浏览器。
具体的,以对PDF文件进行签名为例进行详述本发明的实现过程;
步骤T1:宿主应用检测到有智能卡设备接入终端设备时,根据智能卡设备内的设备证书生成证书对象和密钥对象并注册到令牌配置中;
具体的,步骤T1具体过程参见步骤201-步骤207或步骤301-步骤307;
步骤T2:Adobe传入令牌配置参数调用调用扩展程序打开待签名的文件,弹出签名按钮提示用户进行确认签名操作;
步骤T3:Adobe接收到用户点击数字签名按钮信息时,扩展程序根据传入的令牌配置参数获取对应的令牌配置,通过令牌配置初始化创建的智能卡令牌,Adobe调用扩展程序的PIN码认证接口,执行验PIN操作,Adobe调用扩展程序的签名接口,如验PIN成功则扩展程序执行签名操作;
具体的,执行验PIN操作和签名操作的实现过程参考步骤209-步骤217或步骤309-步骤320;
若签名成功则Adobe将数字签名信息以信息戳的形式添加到当前文件,并且Adobe会组织验证签名信息的有效性,若签名失败则Adobe提示对应错误信息。
在本实施例中,第三方应用(例如浏览器)还可调用扩展程序中的加密接口实现加密操作,其实现过程可参考签名操作过程(即将签名算法和待签名数据替换为加密算法和待加密数据),在此不再赘述。
实施例四
本发明实施例四提供一种实现智能卡扩展的装置,其设置于iOS系统或iPadOS系统的终端设备中,该装置包含宿主应用模块及依赖于宿主应用模块的扩展程序模块,宿主应用模块包括:读取计算单元、获取判断单元、创建判断单元和生成写入单元,扩展程序模块包括:枚举获取单元、第一接收发送单元、判断确定单元、第一生成发送单元和第二接收发送单元;
读取计算单元,用于当终端设备与智能卡设备建立连接之后,选择智能卡设备中的智能卡应用,通过预设的筛选条件读取智能卡设备中的设备对象,对设备对象中的设备证书计算哈希得到证书哈希值;
获取判断单元,用于获取设备配置信息,判断证书哈希值是否在设备配置信息中的令牌配置中,是则报错,否则将证书哈希值写入到令牌配置中,触发创建判断单元;
创建判断单元,用于创建证书模板,将设备证书中的数据存入证书模板得到新的设备证书,判断新的设备证书是否有效,是则触发生成写入单元,否则报错;
生成写入单元,用于根据新的设备证书生成证书对象和密钥对象,创建对应的证书对象标识和密钥对象标识,将证书对象标识、证书对象、密钥对象标识和密钥对象写入到令牌配置中;
枚举获取单元,用于当扩展程序模块被第三方应用调用时,获取传入的令牌配置参数,根据令牌配置参数获取对应的令牌配置,根据令牌配置初始化创建的智能卡令牌;
第一接收发送单元,用于扩展程序模块中的PIN码认证接口被第三方应用调用时,枚举智能卡令牌中的证书对象标识和密钥对象标识并提示用户进行选择,当接收到用户选择的证书对象标识和密钥对象标识时提示用户输入PIN码,将接收到的PIN码发送给智能卡设备进行验证;
判断确定单元,用于当扩展程序模块中的签名接口被第三方应用调用时,判断是否已成功验证PIN码,是则确定签名算法,否则报错;
第一生成发送单元,用于根据用户选择的证书对象标识及对应的证书对象、用户选择的密钥对象标识及对应的密钥对象、签名算法和签名接口参数中的待签名数据生成签名指令并发送给智能卡设备;
第二接收发送单元,用于当接收到智能卡设备返回的签名数据时,将签名数据返回给第三方应用。
在本实施例中,读取计算单元,用于通过预设的筛选条件读取智能卡设备中的设备对象,包括:宿主应用具体用于保存智能卡应用的上下文对象,通过上下文对象获取卡槽数组,遍历卡槽数组,从卡槽数组中读取设备名称,通过设备名称读取智能卡设备中的设备对象。
更进一步地,读取计算单元具体用于保存智能卡应用的上下文对象,通过上下文对象和第一接口获取卡槽数组,遍历卡槽数组,从卡槽数组中读取设备名称,通过第二接口和设备名称得到设备对象。
在本实施例中,读取计算单元用于对设备对象中的设备证书计算哈希得到证书哈希值,包括:读取计算单元具体用于通过第五接口读取设备对象中的设备证书,根据预设算法对设备证书计算哈希得到证书哈希值。
在本实施例中,获取判断单元包括:
第一获取子单元,用于获取设备配置信息,根据预置的扩展接口文件标识从设备配置信息中获取驱动配置类型对象,从驱动配置类型对象中获取令牌驱动配置数据、令牌密钥钥匙串数据和系统令牌驱动配置上下文;
第二获取子单元,用于根据系统令牌驱动配置上下文从设备配置信息中的字典对象中获取键值为预设名称的令牌配置;
判断保存子单元,用于判断证书哈希值是否在令牌配置中,是则报错,否则将证书哈希值、令牌驱动配置数据和令牌密钥钥匙串数据保存到令牌配置中。
在本实施例中,生成写入单元包括:
生成设置子单元,用于根据新的设备证书生成证书对象,根据新的设备证书中的密钥生成密钥对象,创建对应的证书对象标识和密钥对象标识,设置密钥可签名、解密、登录;
第二创建子单元,用于将证书对象标识及对应的证书对象和密钥对象标识及对应的密钥对象作为钥匙串项目,创建一个以证书哈希值作为键值、钥匙串项目作为名称的令牌配置;
添加子单元,用于将令牌配置添加到字典对象中。
可选的,在本实施例中,枚举获取单元包括:
第一枚举获取子单元,用于当扩展程序模块被第三方应用调用时,获取传入的令牌配置参数,根据令牌配置参数获取对应的令牌配置,根据令牌配置初始化创建的智能卡令牌;
第一创建绑定子单元,用于根据智能卡令牌创建令牌会话并对令牌会话进行初始化,将令牌会话与智能卡令牌绑定。
可选的,第一接收发送单元,具体用于当扩展程序模块中的PIN码认证接口被浏览器调用时,枚举出智能卡令牌中的证书对象标识和密钥对象标识并提示用户进行选择,当接收到用户选择的证书对象标识和密钥对象标识后通过浏览器弹出PIN码输入框提示用户输入PIN码,当接收到用户输入的PIN码后通过Lighting通讯方式将PIN码发送给对应的智能卡设备。
相应的,判断确定单元具体用于当扩展程序模块中的签名接口被第三方应用调用时,判断是否已成功验证PIN码,是则与令牌会话协商签名算法,否则报错;
相应地,第一生成发送单元,具体用于根据用户选择的证书对象标识和密钥对象标识分别获取智能卡令牌中对应的证书对象和密钥对象,将证书对象标识、证书对象、密钥对象标识、密钥对象、签名算法和和签名接口参数中的待签名数据生成签名指令并通过Lighting通讯方式发送给智能卡设备。
可选的,在本实施例中,扩展程序模块还包括注册单元,用于注册通知;宿主应用模块还包括:建立创建单元,用于建立通知的监听并创建应用程序组。
可选的,在本实施例中,第一接收发送单元,具体用于当扩展程序模块中的PIN码认证接口被浏览器调用时,枚举出智能卡令牌中的证书对象标识和密钥对象标识并提示用户进行选择,当接收到用户选择的证书对象标识和密钥对象标识后通过浏览器弹出PIN码输入框提示用户输入PIN码,将接收到的PIN码以通知方式发送给宿主应用模块,阻塞等待宿主应用模块返回数据;
相应的,宿主应用模块还包括:
第二生成发送单元,用于根据PIN码生成验PIN指令,将验PIN指令发送给智能卡设备;
接收缓存发送单元,用于接收智能卡设备返回的验PIN结果并缓存在应用程序组中,发送广播;
本实施例中,验PIN结果包括验PIN结果成功或验PIN结果失败;
扩展程序模块还包括:第一转发模块,用于当接收到广播并监听到应用程序组中存储数据发生变化时将应用程序组中的验PIN结果返回给浏览器。
在本实施例中,接收确定单元具体用于当扩展程序模块中的签名接口被浏览器调用时,判断是否已成功验证PIN码,是则与令牌会话协商签名算法,否则报错;
第一生成发送单元具体用于根据用户选择的证书对象标识和密钥对象标识分别获取智能卡令牌中的证书对象和密钥对象,根据证书对象标识、证书对象、密钥对象标识、密钥对象、签名算法和签名接口参数中的待签名数据进行封装得到封装结果,将封装结果以通知方式发送给宿主应用模块,阻塞等待宿主应用模块返回数据;
宿主应用模块还包括:
解析发送单元,用于当监听到封装结果时对封装结果进行解析,根据解析得到的证书对象标识、证书对象、密钥对象标识、密钥对象、签名算法和待签名数据生成签名指令,将签名指令发送给智能卡设备;
第二接收缓存发送单元,用于将接收到的智能卡设备返回的签名结果缓存到应用程序组中并发送广播;
在本实施例中,签名结果包括签名失败信息或签名数据;
第二接收发送单元,具体用于当接收到广播并监听到应用程序组中存储数据发生变化时,判断应用程序组中是否有签名数据,是则获取应用程序组中的签名数据并返回给第三方应用,否则报错。
可选的,本申请的实施例还提供了一种电子设备,电子设备包括至少一个处理器、存储器及存储在该存储器上并可被至少一个处理器执行的指令,至少一个处理器执行该指令以实现上述实施例中的一种实现智能卡扩展的方法。该电子设备是芯片系统时,可以由芯片构成,也可以包含芯片和其他分立器件,本申请实施例对此不作具体限定;该芯片与存储器耦合,用于执行存储器中存储的计算机程序,以执行上述实施例中公开的一种实现智能卡扩展的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机程序。在电子设备上加载和执行计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。该计算机程序可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个基站、电子设备、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个基站、电子设备、服务器或数据中心进行传输。所述计算机可读存储介质可以是电子设备能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、 或者半导体介质(例如固态硬盘(solid state disk,SSD))等。本申请实施例中,电子设备可以包括前面所述的装置。
尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (18)

1.一种实现智能卡扩展的方法,其特征在于,适用于iOS系统或iPadOS系统的终端设备,所述终端设备包含宿主应用及依赖于所述宿主应用的扩展程序,当所述终端设备与智能卡设备建立连接之后,所述方法包括:
步骤S1:所述宿主应用选择所述智能卡设备中的智能卡应用,通过预设的筛选条件读取所述智能卡设备中的设备对象,对所述设备对象中的设备证书计算哈希得到证书哈希值;
步骤S2:所述宿主应用获取设备配置信息,判断所述证书哈希值是否在所述设备配置信息中的已配置的令牌配置中,是则报错,否则将所述证书哈希值写入到所述令牌配置中,执行步骤S3;
步骤S3:所述宿主应用创建证书模板,将所述设备证书中的数据存入证书模板得到新的设备证书,判断新的设备证书是否有效,是则执行步骤S4,否则报错;
步骤S4:所述宿主应用根据所述新的设备证书生成证书对象和密钥对象,创建对应的证书对象标识和密钥对象标识,将所述证书对象标识、所述证书对象、所述密钥对象标识和所述密钥对象写入到所述令牌配置中;
步骤S5:当所述扩展程序被第三方应用调用时,所述扩展程序获取传入的令牌配置参数,根据所述令牌配置参数获取对应的令牌配置,根据所述令牌配置初始化创建的智能卡令牌;
步骤S6:当所述扩展程序的PIN码认证接口被所述第三方应用调用时,所述扩展程序枚举所述智能卡令牌中的证书对象标识和密钥对象标识并提示用户进行选择,当接收到用户选择的证书对象标识和密钥对象标识时提示用户输入PIN码,将接收到的PIN码发送给所述智能卡设备进行验证;
步骤S7:当所述扩展程序的签名接口被所述第三方应用调用时,所述扩展程序判断是否已成功验证PIN码,是则确定签名算法,根据用户选择的证书对象标识及对应的证书对象、用户选择的密钥对象标识及对应的密钥对象、所述签名算法和签名接口参数中的待签名数据生成签名指令并发送给所述智能卡设备,否则报错;
步骤S8:当所述扩展程序接收到所述智能卡设备返回的签名数据时,将所述签名数据返回给所述第三方应用。
2.如权利要求1所述的方法,其特征在于,所述通过预设的筛选条件读取所述智能卡设备中的设备对象,包括:
所述宿主应用保存智能卡应用的上下文对象,通过所述上下文对象获取卡槽数组,遍历所述卡槽数组,从所述卡槽数组中读取设备名称,通过所述设备名称读取所述智能卡设备中的设备对象。
3.如权利要求2所述的方法,其特征在于,所述通过所述上下文对象获取卡槽数组,包括:通过所述上下文对象和第一接口获取卡槽数组;
所述通过所述设备名称读取所述智能卡设备中的设备对象,包括:通过第二接口和所述设备名称得到设备对象。
4.如权利要求1所述的方法,其特征在于,所述对所述设备对象中的设备证书计算哈希得到证书哈希值,包括:通过第五接口读取所述设备对象中的设备证书,根据预设算法对所述设备证书计算哈希得到证书哈希值。
5.如权利要求1所述的方法,其特征在于,所述步骤S2包括:
步骤B1:所述宿主应用获取设备配置信息,根据预置的扩展接口文件标识从所述设备配置信息中获取驱动配置类型对象,从所述驱动配置类型对象中获取令牌驱动配置数据、令牌密钥钥匙串数据和系统令牌驱动配置上下文;
步骤B2:所述宿主应用根据所述系统令牌驱动配置上下文从所述设备配置信息中的字典对象中获取键值为预设名称的令牌配置;
步骤B3:所述宿主应用判断所述证书哈希值是否在所述令牌配置中,是则报错,否则将所述证书哈希值、所述令牌驱动配置数据和所述令牌密钥钥匙串数据保存到令牌配置中,执行步骤S3。
6.如权利要求1所述的方法,其特征在于,所述步骤S4包括:
步骤C1:所述宿主应用根据所述新的设备证书生成证书对象,根据所述新的设备证书中的密钥生成密钥对象,创建对应的证书对象标识和密钥对象标识,设置密钥可签名、解密、登录;
步骤C2:所述宿主应用将所述证书对象标识、所述证书对象、所述密钥对象标识和所述密钥对象作为钥匙串项目,创建一个以所述证书哈希值作为键值、钥匙串项目作为名称的令牌配置;
步骤C3:所述宿主应用将所述令牌配置添加到字典对象中。
7.如权利要求1所述的方法,其特征在于,所述步骤S5包括:
步骤S5-1:当所述扩展程序被浏览器调用时,根据预设接口标识枚举对应的扩展应用接口,获取扩展应用接口的令牌配置参数,根据所述令牌配置参数获取对应的令牌配置,根据所述令牌配置初始化创建的智能卡令牌;
步骤S5-2:所述扩展程序根据所述智能卡令牌创建令牌会话并对所述令牌会话进行初始化,将所述令牌会话与所述智能卡令牌绑定。
8.如权利要求7所述的方法,其特征在于,所述步骤S6包括:
步骤S6-1:当所述扩展程序的PIN码认证接口被所述浏览器调用时,所述扩展程序枚举出所述智能卡令牌中的证书对象标识和密钥对象标识并提示用户进行选择,当接收到用户选择的证书对象标识和密钥对象标识后通过所述浏览器弹出的PIN码输入框提示用户输入PIN码;
步骤S6-2:当所述扩展程序接收到用户输入的PIN码后通过Lighting通讯方式将PIN码发送给对应的智能卡设备;
步骤S6-3:所述扩展程序接收所述智能卡设备返回的验PIN结果并返回给所述浏览器;
所述验PIN结果包括验PIN结果成功或验PIN结果失败。
9.如权利要求8所述的方法,其特征在于,所述步骤S7包括:
步骤S7-1:当所述扩展程序的签名接口被所述浏览器调用时,所述扩展程序判断是否已成功验证PIN码,是则执行步骤S7-2,否则报错;
步骤S7-2:所述扩展程序与所述令牌会话协商签名算法;
步骤S7-3:所述扩展程序分别根据用户选择的证书对象标识和密钥对象标识获取所述智能卡令牌中对应的证书对象和密钥对象,根据所述证书对象标识、所述证书对象、所述密钥对象标识、所述密钥对象、所述签名算法和签名接口参数中的待签名数据生成签名指令并通过Lighting通讯方式发送给所述智能卡设备。
10.如权利要求1所述的方法,其特征在于,所述步骤S1之前还包括:所述扩展程序注册通知,所述宿主应用建立所述通知的监听并创建应用程序组。
11.如权利要求10所述的方法,其特征在于,所述步骤S5包括:
步骤S51:当所述扩展程序被浏览器调用时,根据预设接口标识枚举对应的扩展应用接口,获取扩展应用接口的令牌配置参数,根据所述令牌配置参数获取对应的令牌配置,根据所述令牌配置初始化创建的智能卡令牌;
步骤S52:所述扩展程序根据所述智能卡令牌创建令牌会话并对所述令牌会话进行初始化,将所述令牌会话与所述智能卡令牌绑定。
12.如权利要求11所述的方法,其特征在于,所述步骤S6包括:
步骤S61:当所述扩展程序的PIN码认证接口被所述浏览器调用时,所述扩展程序枚举出所述智能卡令牌中的证书对象标识和密钥对象标识并提示用户进行选择,当接收到用户选择的证书对象标识和密钥对象标识后通过所述浏览器弹出的PIN码输入框提示用户输入PIN码;
步骤S62:所述扩展程序将接收到的PIN码以通知方式发送给所述宿主应用,阻塞等待所述宿主应用返回数据;
步骤S63:所述宿主应用根据所述PIN码生成验PIN指令,将所述验PIN指令发送给所述智能卡设备;
步骤S64:所述宿主应用接收智能卡设备返回的验PIN结果并缓存在所述应用程序组中,发送广播;
步骤S65:当所述扩展程序接收到广播并监听到所述应用程序组中存储数据发生变化时将所述应用程序组中的验PIN结果返回给所述浏览器;
所述验PIN结果包括验PIN结果成功或验PIN结果失败。
13.如权利要求12所述的方法,其特征在于,所述步骤S7包括:
步骤S71:当所述扩展程序的签名接口被所述浏览器调用时,所述扩展程序判断是否已成功验证PIN码,是则执行步骤S72,否则报错;
步骤S72:所述扩展程序与所述令牌会话协商签名算法;
步骤S73:所述扩展程序根据用户选择的证书对象标识和密钥对象标识分别获取所述智能卡令牌中对应的证书对象和密钥对象,根据所述证书对象标识、所述证书对象、所述密钥对象标识、所述密钥对象、所述签名算法和签名接口参数中的待签名数据进行封装得到封装结果,将所述封装结果以通知方式发送给所述宿主应用,阻塞等待所述宿主应用返回数据;
步骤S74:当所述宿主应用监听到所述封装结果时对所述封装结果进行解析,根据解析得到的所述证书对象、所述证书对象标识、所述密钥对象、所述密钥对象标识、所述签名算法和所述待签名数据生成签名指令,将所述签名指令发送给所述智能卡设备。
14.如权利要求13所述的方法,其特征在于,所述步骤S8包括:
步骤S81:所述宿主应用将接收到的所述智能卡设备返回的签名结果缓存到所述应用程序组中并发送广播,所述签名结果包括签名失败信息或签名数据;
步骤S82:当所述扩展程序接收到广播并监听到所述应用程序组中存储数据发生变化时,判断所述应用程序组中是否有签名数据,是则执行步骤S83,否则报错;
步骤S83:所述扩展程序获取所述应用程序组中的所述签名数据并返回给所述浏览器。
15.一种实现智能卡扩展的装置,其特征在于,设置于iOS系统或iPadOS系统的终端设备中,所述装置包含宿主应用模块及依赖于所述宿主应用模块的扩展程序模块,所述宿主应用模块包括:读取计算单元、获取判断单元、创建判断单元和生成写入单元,所述扩展程序模块包括:枚举获取单元、第一接收发送单元、判断确定单元、第一生成发送单元和第二接收发送单元;
所述读取计算单元,用于当所述终端设备与智能卡设备建立连接之后,选择所述智能卡设备中的智能卡应用,通过预设的筛选条件读取所述智能卡设备中的设备对象,对所述设备对象中的设备证书计算哈希得到证书哈希值;
所述获取判断单元,用于获取设备配置信息,判断所述证书哈希值是否在所述设备配置信息中的已配置的令牌配置中,是则报错,否则将所述证书哈希值写入到所述令牌配置中,触发所述创建判断单元;
所述创建判断单元,用于创建证书模板,将所述设备证书中的数据存入证书模板得到新的设备证书,判断新的设备证书是否有效,是则触发所述生成写入单元,否则报错;
所述生成写入单元,用于根据所述新的设备证书生成证书对象和密钥对象,创建对应的证书对象标识和密钥对象标识,将所述证书对象标识、所述证书对象、所述密钥对象标识和所述密钥对象写入到所述令牌配置中;
所述枚举获取单元,用于当所述扩展程序模块被第三方应用调用时,获取传入的令牌配置参数,根据所述令牌配置参数获取对应的令牌配置,根据所述令牌配置初始化创建的智能卡令牌;
所述第一接收发送单元,用于所述扩展程序模块中的PIN码认证接口被第三方应用调用时,枚举所述智能卡令牌中的证书对象标识和密钥对象标识并提示用户进行选择,当接收到用户选择的证书对象标识和密钥对象标识时提示用户输入PIN码,将接收到的PIN码发送给所述智能卡设备进行验证;
所述判断确定单元,用于当所述扩展程序模块中的签名接口被第三方应用调用时,判断是否已成功验证PIN码,是则确定签名算法,否则报错;
所述第一生成发送单元,用于根据用户选择的证书对象标识及对应的证书对象、用户选择的密钥对象标识及对应的密钥对象、所述签名算法和签名接口参数中的待签名数据生成签名指令并发送给所述智能卡设备;
所述第二接收发送单元,用于接收所述智能卡设备返回的签名数据,将所述签名数据返回给所述第三方应用。
16.一种电子设备,其特征在于,所述电子设备包括至少一个处理器、存储器及存储在所述存储器上并可被所述至少一个处理器执行的指令,所述至少一个处理器执行所述指令以实现权利要求1至14任一项所述的方法。
17.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括计算机程序,当所述计算机程序在电子设备上运行时,使得所述电子设备执行如权利要求1至14任一项所述的方法。
18.一种芯片系统,其特征在于,包括芯片,所述芯片与存储器耦合,用于执行所述存储器中存储的计算机程序,以执行权利要求1至14任一项所述的方法。
CN202410008624.1A 2024-01-04 2024-01-04 一种实现智能卡扩展的方法及装置 Active CN117528519B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410008624.1A CN117528519B (zh) 2024-01-04 2024-01-04 一种实现智能卡扩展的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410008624.1A CN117528519B (zh) 2024-01-04 2024-01-04 一种实现智能卡扩展的方法及装置

Publications (2)

Publication Number Publication Date
CN117528519A CN117528519A (zh) 2024-02-06
CN117528519B true CN117528519B (zh) 2024-03-08

Family

ID=89766869

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410008624.1A Active CN117528519B (zh) 2024-01-04 2024-01-04 一种实现智能卡扩展的方法及装置

Country Status (1)

Country Link
CN (1) CN117528519B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104092745A (zh) * 2014-06-30 2014-10-08 飞天诚信科技股份有限公司 一种生成利用智能卡登录远程计算机的判据的方法
CN109088733A (zh) * 2018-07-11 2018-12-25 飞天诚信科技股份有限公司 一种智能卡应用扩展的实现方法及装置
CN115913579A (zh) * 2023-02-21 2023-04-04 飞天诚信科技股份有限公司 一种智能卡证书的注册应用方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10212152B2 (en) * 2016-05-19 2019-02-19 Sugarcrm Inc. Advanced application security utilizing an application key

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104092745A (zh) * 2014-06-30 2014-10-08 飞天诚信科技股份有限公司 一种生成利用智能卡登录远程计算机的判据的方法
CN109088733A (zh) * 2018-07-11 2018-12-25 飞天诚信科技股份有限公司 一种智能卡应用扩展的实现方法及装置
CN115913579A (zh) * 2023-02-21 2023-04-04 飞天诚信科技股份有限公司 一种智能卡证书的注册应用方法及装置

Also Published As

Publication number Publication date
CN117528519A (zh) 2024-02-06

Similar Documents

Publication Publication Date Title
CN107122258B (zh) 用于测试接口的状态码校验的方法及设备
CN111311251B (zh) 绑定处理方法、装置及设备
US10878212B2 (en) Two-dimensional code scanning interaction methods and apparatuses
CN105472052A (zh) 一种跨域服务器的登录方法和系统
US20200233786A1 (en) Default mock implementations at a server
CN103974250A (zh) 配置方法和设备
CN104580112A (zh) 一种业务认证方法、系统及服务器
CN104660401A (zh) 验证方法、系统和终端
CN104935435A (zh) 登录方法、终端及应用服务器
CN111565179B (zh) 身份校验方法、装置、电子设备及存储介质
CN113360301A (zh) 一种消息传输系统及方法
CN112866193A (zh) 设备部署方法、装置、设备及存储介质
US20240129727A1 (en) Method and apparatus for managing event for smart secure platform
CN113010858B (zh) 一种用于在用户设备中登录应用的方法与设备
CN108512889B (zh) 一种基于http的应用响应推送方法及代理服务器
CN117528519B (zh) 一种实现智能卡扩展的方法及装置
CN111050326B (zh) 基于区块链的短信验证方法、装置、设备及介质
CN115858320A (zh) 操作日志记录方法、装置、介质及产品
CN110852744A (zh) 一种切换交易通道的方法、装置、终端设备及介质
CN113099025B (zh) 一种在社交应用中添加好友的方法与设备
CN109543398B (zh) 一种应用程序账户迁移方法、装置和电子设备
CN114978551B (zh) 访问令牌下发方法、获取方法、装置、系统、设备及介质
CN109960924A (zh) 一种子系统登录方法、装置、系统及电子设备
CN114760350B (zh) 5g网络间接通信场景下服务实现方法、装置、设备和介质
CN112437052B (zh) 用于处理信息的方法、装置、电子设备和计算机可读介质

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
GR01 Patent grant
GR01 Patent grant