pcsc协议中文版.docx
- 文档编号:8724459
- 上传时间:2023-05-14
- 格式:DOCX
- 页数:13
- 大小:21.05KB
pcsc协议中文版.docx
《pcsc协议中文版.docx》由会员分享,可在线阅读,更多相关《pcsc协议中文版.docx(13页珍藏版)》请在冰点文库上搜索。
pcsc协议中文版
竭诚为您提供优质文档/双击可除
pcsc协议中文版
篇一:
pcsc规范介绍
pc/sc规范介绍
1.简介:
pc/sc规范由微软公司与世界其它著名的智能卡厂商组成的pc/sc工作组提出的。
pc/sc规范是一个基于windows平台的一个标准用户接口(ap1),提供了一个从个人电脑(personalcomputer)到智能卡(smartcard)的整合环境,虽然到目前为止,wondows是唯一支持pc/sc标准的操作系统平台,但由于windows的影响力,pc/sc规范也为智能卡业界所接收。
到目前为止,pc/sc规范的最新版本是pc/scspecifications1.0。
pc/sc规范建立在工业标准-iso7816和emV标准的基础上,但它对底层的设备接口和独立于设备的应用api接口(例如用来允许多个应用共享使用系统同一张智能卡的资源管理器)做了更详尽的补充。
它的提出主要是为了达到以下目标:
遵从现在icc和pc的标准并在适当的地方予在扩充
跨平台的可操作性,使该规范可在多种硬件和软件平台上实现
应用程序可以采用不同厂商提供的产品(独立于厂商)
建立应用级的智能卡服务接口,推广icc在pc上的应用,并促成pc采用icc作主标准设备。
2.pc/sc体系的主要组成:
pc/sc体系由三个主要部件组成,分别规定的操作系统厂商、读写器(iFd)厂商、智能卡(icc)厂商的职责。
(即读写器)控制器是由iFd厂商提供的可安装部件。
ii.Resourcemanager(资源管理器)使用win32api函数实现,是由操作系统厂商提供的系统级部件。
iii.serviceproviders(服务提供者),服务程序是由厂商提供的可安装部件,用于提供访问特殊服务的手段,其使用的是基本com的界面方式。
3.cRw系列ic读卡器pc/sc驱程序的安装
支持pc/sc规范的cRw系列ic读卡器包装盒有一个pc/sc驱动程序安装软盘。
运行安装程序setup.exe
驱动程序会自动安装到系统中,就可以按pc/sc规范使用cRw系列读卡器。
4.pc/sc的api函数使用方法及示例
pc/sc的api函数由操作系统提供,在微软公司提供的msdn(2000年10月版)有相关帮助(路径\\msdn\platformsdk\security\smartcard),函数声明在winscard.h中,所用的库是scarddlg.lib,这里只是摘录其中一个来说明:
scardconnect。
scardconnect函数用来建立应用程序与插在读卡器中的智能卡的连接。
如果在指定的读卡器中没有卡片,则返回一个错误。
longscardcommect(inscaRdcontexthcontext,inlpctstRszReader,indwoRddwsharemode,indwoRddwpreferredprotocols,outlpscaRdhandlephcard,outlpdwoRdpdwactiveprotocol);
参数:
hcontext:
标识资源管理器环境的句柄,这个资源管理器环境是预先调用scardestablishcontext来设置的。
szReader:
与目标卡相连的读卡器名字
dwsharemode:
用来标识其它应用程序是否与该卡相连的标志。
可以取以下值取值含义
scaRd_shaRe_shaRed本应用程序将与其它应用程序共享这张卡
scaRd_shaRe_exclusiVe本应用程序将不会与其它应用程序共享这张卡
scaRd_shaRe_diRect本应用程序指定读卡器为私有,并直接控制卡片,其它应用程序不能访问它
dwpreferredprotocols:
连接时,所能接收的协议位标志。
可以取以下值,也可以进行oR操作
取值含义
scaRd_pRotocol_tot=0是可能接收的协议
scaRd_pRotocol_t1t=1是可能接收的协议
0该参数只有当dwsharemode设置为scaRd_shaRe_diRect时,才可能为零。
因此,由驱动来完成无协议的通讯直到scardcontrol发送控制指示
ioctl_smaRtcaRd_set_pRotocol
phcard:
返回一个句柄,标识智能卡与指写读卡器的连接
pdwactiveprotocol:
返回一个标识,标识确定有效的协议,可以取以下值取值含义
scaRd_pRotocol_tot=0是有效的协议
scaRd_pRotocol_t1t=1是有效的协议
scaRd_pRotocol_undeFined已经指定为scaRd_shaRe_diRect
篇二:
pcsc标准综述
目录
1前言2
1.1编写目的2
1.2文档范围2
1.3参考文献2
1.4资料下载地址2
1.5术语与缩写解释2
2pc/sc标准概述3
2.1pc/sc标准介绍3
2.1.1pc/sc标准的定义3
2.1.2pc/sc标准的优点3
2.1.3pc/sc标准的目标3
2.1.4pc/sc标准跟现有标准的关系4
2.2pc/sc的结构体系4
2.3pc/sc标准各部分的主要内容5
2.4pc/sc的软硬件结构框架5
2.5pc/scworkgroup5
2.5.1pc/scworkgroup的组成成员5
2.5.2pc/scworkgroup的目标6
3pc/sc标准的发展过程6
3.1pc/sc标准V1.0的发布6
3.2pc/sc标准V2.0的发布6
4pc/sc标准V1.07
4.1pc/sc标准V1.0的内容7
4.2pc/sc标准V1.0的适用范围8
4.3pc/sc标准V1.0的局限性8
5pc/sc标准V2.08
5.1pc/sc标准V2.0推出的背景8
5.2pc/sc标准V2.0的改进内容9
5.3pc/sc标准V2.0的最新版本pc/scV2.01.39
5.4pc/sc标准V2.0结构体系10
5.4.1pcscV2.0的总体结构10
5.4.2pcscV2.0的职责分配11
5.4.2.1pc/scinterfaces11
5.4.2.2icc/iFdcompatibilityRequirements12
5.4.2.3iFdhandler(iFd销售商提供)12
5.4.2.4iccserviceprovider(由icc销售商提供)12
5.4.2.5iccResourcemanager(操作系统销售商提供)
5.4.2.6cryptoserviceprovider(由icc销售商提供)
5.4.3pcscV2.0标准分部分内容13
5.4.3.1part113
5.4.3.2part213
5.4.3.3part313
1213
pcsc标准综述
5.4.3.4
5.4.3.5
5.4.3.6
5.4.3.7
5.4.3.8
5.4.3.9part4part5part6part7part8part9151718181919
5.4.3.10part1019
5.4.4pcscV2.0增加和改进的内容20
5.4.4.1iccserviceproviders的动态分配和增强卡的识别性
5.4.4.2
5.4.4.3
5.4.4.4扩展性能的iFds22对同步卡协议的支持25对非接触式卡的支持2520
6总结25
6.1pc/sc结构体系的目标25
6.2研究pc/sc标准对我们的工作的意义
26
第1页
前言
1.1编写目的
编写本文的目的是为移动存储项目组对智能卡在pc上的应用需求分析时提供pc/sc规范相关信息参考。
1.2文档范围
本报告的主要内容包括pc/sc标准的现状与各版本的主要内容。
1.3参考文献
1.pc/sc标准pcsc1-10v2.01.3.pdf
2.pc/sc2-0whitepaper.doc
3.pc/sctechnicaloverview.doc
4.pc/scapplicationsandnewdevelopments.ppt
5.pc/scoverview.ppt
6.pc/scworkgroupspecificationforpc-iccinteroperability.ppt
1.4资料下载地址
标准下载地址:
1.5术语与缩写解释
pc/sc:
计算机(personalcomputer)/智能卡(smartcard)标准。
api:
applicationprogramminginterface应用编程接口。
icc:
integratedcircuitcard集成电路卡。
iso7816:
ic卡(识别卡-接触式集成电路卡)国际标准。
emV:
europay、mastercard、Visa三大国际组织制定的用于付款业务的ic卡通用规范。
iFd:
interFacedevice接口设备、读写设备。
Rid:
Registeredapplicationprovideridentifier注册应用提供者标识符。
atR:
answertoReset复位应答。
apdu:
applicationprotocoldataunit应用协议数据单元。
iFdsp:
iFdserviceprovider接口设备服务提供者。
iccsp:
iccserviceprovider集成电路卡服务提供者。
第2页
pcsc标准综述
iccos-sp:
iccoperatingsystemserviceprovider集成电路卡操作系统提供者。
adsp:
applicationdomainserviceprovider应用领域服务提供者。
adspl:
adsplocatoradsp定位。
Rm:
Resourcemanager资源管理器。
spe:
securepinentry安全个人识别码入口。
2pc/sc标准概述
2.1pc/sc标准介绍
2.1.1pc/sc标准的定义
pc/sc即个人计算机(personalcomputer)/智能卡(smartcard),由微软公司与世界其他著名的智能卡厂商组成的pc/sc工作组(pc/scworkgroup)提出,它是为智能卡访问windows平台(包括windows2000)而定义的一种标准结构。
pc/sc标准是一个基于windows平台的一个标准用户接口(api),提供了一个从个人电脑(personalcomputer)到智能卡(smartcart)的整合环境,虽然到目前为止,windows是唯一支持pc/sc标准的操作系统平台,但由于windows的影响力,pc/sc标准也为智能卡业界所接收。
2.1.2pc/sc标准的优点
这个为集成电路卡(icc)与个人计算机系统设计的交互规范,已经让智能卡进入pc机世界的问题变得容易。
pc/sc的主要优点就是让应用程序不必为了与智能卡通信而去了解智能卡读卡器的细节。
而且,该应用程序还能适用于任何遵从pc/sc标准的读卡器。
2.1.3pc/sc标准的目标
pc/sc标准对底层的设备接口和独立于设备的应用api接口(例如用来允许多个应用系统共享同一张智能卡的资源管理器)做了更详尽的补充。
它的提出主要是为了达到以下目标:
遵从现在icc和pc的标准并在适当的地方予以扩充;
跨平台的可操作性,使该标准可在多种硬件和软件平台上实现;
应用程序可以采用不同厂商提供的产品(独立于厂商);
无需要写应用代码就可以享受技术进步的好处(独立于应用);
建立应用级的智能卡服务接口,推广icc在pc上的应用,并促成pc
第3页
采用icc做主标准设备。
2.1.4pc/sc标准跟现有标准的关系
pc/sc标准建立在工业标准-iso7816和emV标准的基础上。
在此之前,基于iso7816标准,icc在工业和应用上有了坚实的基础,为了利用iso7816标准应用广泛的特点,pc/scworkgroup致力于pc/sc标准与iso7816标准兼容。
此外,pc/sc标准支持并认可某些特定领域的标准,并对其进行优化,这些标准同样基于iso7816,比如emV和gsm等。
2.2pc/sc的结构体系
pc/sc标准定义的结构体系如图1所示:
这个由pc/sc定义的结构体系图很清楚地把由操作系统供应商、iFd供应商和icc供应商提供的可以独立升级的部分分隔开来,这些部分包括:
由iFd供应商提供的可以安装的iFd处理器组件;
由icc供应商提供的可以安装的服务提供者,由于输入服务和输出服务,
需要把密码功能分隔开,这个部分实际上被定义成两个组件;
由操作系统供应商提供的icc资源管理器。
图1
第4页
篇三:
pcsc接口api说明
Vc中pc/sc智能卡接口的编程
[摘要]本文介绍了如何在Vc中通过pc/sc接口实现对智能卡读写器的操作,并给出了详细的例子代码。
[关键词]智能卡、pc/sc、智能卡读写器
1引言
完整的智能卡应用系统由后台服务程序、主机或终端应用程序和智能卡等组成。
其中,后台服务程序提供了支持智能卡的服务。
例如,在一个电子付款系统中,后台服务程序可以提供到信用卡和帐户信息的访问;主机或终端应用程序一般存在于台式机或者终端、电子付款终端、手机或者一个安全子系统中,终端应用程序要处理用户、智能卡和后台服务程序之间的通讯;智能卡则存储用户的一些信息。
终端应用程序需要通过读卡器来访问智能卡,在一个系统中,通常存在多家厂商提供的读卡器,因此需要一个统一的读卡器设备驱动接口。
随着智能卡的广泛应用,为解决计算机与各种读卡器之间的互操作性问题,人们提出了pc/sc(personalcomputer/smartcard)规范,pc/sc规范作为读卡器和卡与计算机之间有一个标准接口,实现不同生产商的卡和读卡器之间的互操作性,其独立于设备的api使得应用程序开发人员不必考虑当前实现形式和将来实现形式之间的差异,并避免了由于基本硬件改变而引起的应用程序变更,从而降低了软件开发成本。
microsoft在其platformsdk中实现了pc/sc,作为连接智能卡读卡器与计算机的一个标准模型,提供了独立于设备的api,并与windows平台集成。
因此,我们可以用pc/sc接口来访问智能卡。
2pc/sc概述
pc/sc接口包含30多个以scard为前缀的函数,所有函数的原型都在winscard.h中声明,应用程序需要包含winscard.lib,所有函数的正常返回值都是scaRd_s_success。
在这30多个函数中,常用的函数只有几个,与智能卡的访问流程对应,下面将详细介绍这些常用函数。
3pc/sc的使用
3.1建立资源管理器的上下文
函数scardestablishcontext()用于建立将在其中进行设备数据库操作的资源管理器上下文(范围)。
函数原型:
longscardestablishcontext(dwoRddwscope,lpcVoidpvReserved1,lpcVoidpvReserved2,lpscaRdcontextphcontext);
各个参数的含义:
(1)dwscope:
输入类型;表示资源管理器上下文范围,取值为:
scaRd_scope_useR(在用户域中完成设备数据库操作)、
scaRd_scope_system(在系统域中完成设备数据库操作)。
要求应用程序具有相应的操作权限。
(2)pvReserved1:
输入类型;保留,必须为null。
(3)pvReserved2:
输入类型;保留,必须为null。
(4)phcontext:
输出类型;建立的资源管理器上下文的句柄。
下面是建立资源管理器上下文的代码:
scaRdcontext
longlReturn;hsc;
lReturn=scardestablishcontext(scaRd_scope_useR,null,null,
if(lReturn!
=scaRd_s_success)
printf("Failedscardestablishcontext\n");
3.2获得系统中安装的读卡器列表
函数scardlistReaders()可以列出系统中安装的读卡器的名字。
函数原型:
longscardlistReaders(scaRdcontexthcontext,lpctstRmszgroups,lptstRmszReaders,lpdwoRdpcchReaders);
各个参数的含义:
(1)hcontext:
输入类型;scardestablishcontext()建立的资源管理器上下文的句柄,不能为null。
(2)mszgroups:
输入类型;读卡器组名,为null时,表示列出所有读卡器。
(3)mszReaders:
输出类型;系统中安装的读卡器的名字,各个名字之间用’\0’分隔,最后一个名字后面为两个连续的’\0’。
(4)pcchReaders:
输入输出类型;mszReaders的长度。
系统中可能安装多个读卡器,因此,需要保存各个读卡器的名字,以便以后与需要的读卡器建立连接。
下面是获得系统中安装的读卡器列表的代码:
charmszReaders[1024];
lptstRpReader,pReadername[2];
dwoRddwlen=sizeof(mzsReaders);
intnReaders=0;
lReturn=scardlistReaders(hsc,null,(lptstR)mszReaders,
if(lReturn==scaRd_s_success)
{
pReader=(lptstR)mszReaders;
while(*pReader!
=\0)
{
if(nReaders pReadername[nReaders++]=pReader;
printf("Reader:
%s\n",pReader);
//下一个读卡器名
pReader=pReader+strlen(pReader)+1;
3.3与读卡器(智能卡)连接
函数scardconnect()在应用程序与读卡器上的智能卡之间建立一个连接。
函数原型:
longscardconnect(scaRdcontexthcontext,lpctstRszReader,dwoRddwsharemode,dwoRddwpreferredprotocols,lpscaRdhandlephcard,lpdwoRdpdwactiveprotocol);
各个参数的含义:
(1)hcontext:
输入类型;scardestablishcontext()建立的资源管理器上下文的句柄。
(2)szReader:
输入类型;包含智能卡的读卡器名称(读卡器名称由scardlistReaders()给出)。
(3)dwsharemode:
输入类型;应用程序对智能卡的操作方式,
scaRd_shaRe_shaRed(多个应用共享同一个智能卡)、
scaRd_shaRe_exclusiVe(应用独占智能卡)、
scaRd_shaRe_diRect(应用将智能卡作为私有用途,直接操纵智能卡,不允许其它应用访问智能卡)。
(4)dwpreferredprotoc
ols:
输入类型;连接使用的协议,
scaRd_pRotocol_t0(使用t=0协议)、
scaRd_pRotocol_t1(使用t=1协议)。
(5)phcard:
输出类型;与智能卡连接的句柄。
(6)pdwactiveprotocol:
输出类型;实际使用的协议。
下面是与智能卡建立连接的代码:
scaRdhandle
dwoRddwap;
lReturn=scardconnect(hcontext,pReadername[0],scaRd_shaRe_shaRed,
scaRd_pRotocol_t0|scaRd_pRotocol_t1,
if(lReturn!
=scaRd_s_success)
{
printf("Failedscardconnect\n");
exit
(1);
}hcardhandle[2];
与智能卡建立连接后,就可以向智能卡发送指令,与其交换数据了。
3.4向智能卡发送指令
函数scardtransmit()向智能卡发送指令,并接受返回的数据。
函数原型:
longscardtransmit(scaRdhandlehcard,lpcscaRd_i0_Requestpiosendpci,lpcbytepbsendbuffer,dwoRdcbsendlength,lpscaRd_io_RequestpioRecvpci,lpbytepbRecvbuffer,lpdwoRdpcbRecvlength);
各个参数的含义:
(1)hcard:
输入类型;与智能卡连接的句柄。
(2)piosendpci:
输入类型;指令的协议头结构的指针,由scaRd_io_Request结构定义。
后面是使用的协议的协议控制信息。
一般使用系统定义的结构,scaRd_pci_t0(t=0协议)、scaRd_pci_t1(t=1协议)、scaRd_pci_Raw(原始协议)。
(3)pbsendbuffer:
输入类型;要发送到智能卡的数据的指针。
(4)cbsendlength:
输入类型;pbsendbuffer的字节数目。
(5)pioRecvpci:
输入输出类型;指令协议头结构的指针,后面是使用的协议的协议控制信息,如果不返回协议控制信息,可以为null。
(6)pbRecvbuffer:
输入输出类型;从智能卡返回的数据的指针。
(7)pcbRecvlength:
输入输出类型;pbRecvbuffer的大小和实际大小。
对于t=0协议,收发缓冲的用法如下:
(a)向智能卡发送数据:
要向智能卡发送n>0字节数据时,pbsendbuffer前4字节分别为t=0的cla、ins、p1、p2,第5字节是n,随后是n字节的数据;cbsendlength值为n+5(4字节头+1字节lc+n字节数据)。
pbRecvbuffer将接
收sw1、sw2状态码;pcbRecvlength值在调用时至少为2,返回后为2。
byterecvbuffer[260];
intsendsize,recvsize;
btyesw1,sw2;
byteselect_mf[]={0xc0,0xa4,0x00,0x00,0x02,0x3F,0x00};
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- pcsc 协议 中文版