问题标签 [pcsc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
smartcard - APDU 命令读取卡号
我想知道是否可以从智能卡中获取借记卡/信用卡号,我正在尝试使用具有通信协议 PC/SC、CCID 和卡接口 ISO/IEC 7816-1/ 的智能卡读卡器来获取它2/3 智能卡,MicroSD 接口 ISO 7816-4 智能卡。
到目前为止,我只知道插入的卡类型(Visa、Mastercard、Maestro 等)
谢谢!
android - Android 上是否有 javax.smartcardio 类似物?
Android 上是否有 javax.smartcardio 类似物?但不使用 Open Mobile API。
谢谢!
delphi - PCSCConnector 和 Windows 7
我PCSCConnector
从http://nobbi.com使用,最后一次更新 - 2004 年 4 月。在 Windows XP 上一切正常,但在 Windows 7 上出现了一些问题。
当我在 Delphi IDE(终止)中按 CTRL+F2 并且我的软件已打开卡连接时,任何软件(包括我自己的)都无法打开与卡的新连接。我需要物理重新连接卡(在我的情况下是 USB)才能创建新的连接。
我尝试更改dwScope
为(from ) 和更改SCardEstablishContext
为( from ) ,但问题仍然存在。SCARD_SCOPE_SYSTEM
SCARD_SCOPE_USER
dwDisposition
SCardDisconnect
SCARD_LEAVE_CARD
SCARD_RESET_CARD
c++ - 使用 C++ 在 RHEL 6 linux 上使用 pcsc-lite 检测/与读卡器通信的问题
我正在尝试开发一个与智能卡阅读器接口并从智能卡读取信息的应用程序。
让我给你开发环境和使用的硬件。
操作系统:Red Hat Enterprise Linux 6
IDE:Eclipse Juno CDT
语言:C/C++
硬件:
智能卡读卡器:Omnikey 5321 ( https://www.hidglobal.com/products/readers/omnikey/5321 )
我已经安装了驱动,可以找到以下目录/文件:
/usr/lib64/pcsc/drivers/ifd-ccid.bundle
/usr/lib64/pcsc/drivers/ifdokrfid_lnx_x64-2.10.0.1.bundle/Contents
/usr/lib64/pcsc/drivers/ifdokrfid_lnx_x64-2.10.0.1.bundle/Contents /info.plist
/usr/lib64/pcsc/drivers/ifdokrfid_lnx_x64-2.10.0.1.bundle/Contents/Linux
info.plist 的内容清楚地显示了“ifdFriendlyName”键下的“OMNIKEY CardMan 5x21”字符串。
我想使用 PC/SC 标准。因此,我已经下载并安装了 PCSC-lite,并检查了守护程序 (pcscd) 是否正在运行并且服务状态正常。
现在到了有趣的部分……
在我的代码中,我按顺序使用了以下 API。
SCardEstablishContext() 返回 SCARD_S_SUCCESS。伟大的!
p>SCardListReaders() 返回 SCARD_E_NO_READERS_AVAILABLE。不好。
在这一点上,我去检查阅读器是否正确连接。是的。我验证是否可以在 /etc/reader.conf 中看到任何阅读器条目,但我发现此处没有列出任何阅读器。然后我去 /etc/reader.conf.d 但在这里也找不到文件。所以智能卡上下文是空的,我想,因此没有列出读者。
所以现在的问题是 pcsc-lite 无法检测到(?)我连接的阅读器以及安装了哪个驱动程序?
只是为了检查一下,我使用 udev 库编写了一个简单的程序来读取所有“usb”子系统条目,并且能够从 udev 中找到有关连接的读卡器的以下信息:
设备节点路径:(空)
供应商 ID:076b
产品 ID :5321
制造商:OMNIKEY
产品:智能卡读卡器 USB
串口:(null)
所以确定设备是可检测的。但是为什么 PC/SC 资源管理器不能创建这个上下文呢?
那么,我该如何解决呢?
我是 Linux 新手,并且一直在尝试自己解决这个问题而不寻求帮助。但是后来我发现,当有时间限制时,最好向专家和曾经工作和/或遇到过此类问题的人寻求帮助确实是明智的。
我一直在谷歌上搜索太多,但没有看到任何有我的问题。所以我想我可能错过了一些非常基本的东西。
如果有什么我需要提供的,请告诉我。我会尽快这样做。
感谢您抽出宝贵时间阅读。
问候。
编辑:
我有更新...
我做了以下事情:
1. 我得到了一个新的读卡器(SCM Microsystems),但仍然没有检测到它。
2. pcscd 守护程序默认在引导时启动。我登录后停止了服务,然后使用命令“pcscd -a -f -d”在前台模式下运行,成功检测到 SCM 阅读器。
3. 我尝试在上面的问题中插入阅读器 OMNIKIEY 5321,但未检测到。
显然,我得出了以下结论:
1.由于某种原因,直到我登录后手动停止pcscd并以前台模式运行,没有检测到阅读器。
2. OMNIKEY 读卡器/驱动有问题。
问候。
parameters - 当 dwMaxCCIDMessageLength 大于 4KB 时,SCardTransmit 返回 ERROR_INVALID_PARAMETER
我正在开发一个 USB 智能卡,并且我使用 Windows PC/SC API 来使用该智能卡传输数据。这是我的代码的一部分:
我确定大小和指向两个输入/输出缓冲区的指针都是有效的。
直到dwMaxCCIDMessageLength
设备描述符的字段低于0x00001000h
,没有问题并且程序工作正常,但是当我将其增加到更大的值(超过 4kb)时,SCardTransmit
失败并显示 ERROR_INVALID_PARAMETER 结果代码。
目前,我知道pSendBuf
智能卡已成功接收内容并处理内容已完成,但是当卡想要返回响应时,会发生该错误,我认为这是 PC/ 中的某种不一致(例如缓冲区大小限制) SC司机。
有谁能够帮我?
cross-browser - 从通用浏览器访问智能卡的架构?或者:如何弥合从浏览器到 PC/SC 堆栈的差距?
从通用浏览器(通过 http(s) 连接到服务器)访问本地智能卡的可能客户端体系结构是什么,最好是从 Javascript,最终用户的安装麻烦最少?服务器至少需要能够向卡发出它选择的 APDU(或者可能将其中的一些委托给它生成的客户端代码)。我假设在工作 PC/SC 堆栈的客户端可用,并配有智能卡读卡器。至少在自 XP、现代 OS X 和 Unix 以来的 Windows 上,这是一个合理的假设。
到目前为止,我已经确定了以下选项:
- 一些自定义的 ActiveX。这就是我现有的应用程序使用的(我们内部开发的),一旦获得安装 ActiveX 的许可,对于使用 IE 的客户来说,部署非常容易,但它不符合“通用浏览器”的要求。
更新:ActiveX 主要由已弃用的 IE 支持,包括 IE11;但不是由边缘。 - 一些使用 Netscape Plugin API 的 PC/SC 浏览器扩展,这似乎是上述的平滑扩展。我找到的唯一现成的是SConnect (webarchive)。它不再被推广(更新:认为在 2020 年末至少在一个应用程序中仍在积极维护和使用),它的 API文档(webarchive)不再正式可用,它与特定的智能卡和读卡器供应商有着密切的联系。原理可能很好,但是为每个平台制作这样的插件将是很多工作。
更新:许多浏览器都放弃了对 NPAPI 的支持,包括 Chrome 和 Firefox。 - 一个 Java 小程序,运行在 Oracle 的 JVM (1.)6 或更高版本之上,带有
javax.smartcardio
. 从功能的角度来看这很好,有据可查,我可以忍受少数已知的错误,但我担心在接受 Java 作为浏览器扩展方面会出现不可抗拒的螺旋式下降。 - [更新,2021 年 2 月]:这个答案认为 WebUSB API 在 2015 年是一个很有前途的解决方案,然后在 2019 年报告说不能工作或被放弃。我在那里提出了一个问题。
还有什么想法吗?
另外:有什么方法可以防止恶意服务器滥用浏览器的任何 PC/SC 接口(例如,提供 3 个错误的 PIN 码来阻止卡,只是为了它的肮脏;或者做一些更邪恶的事情)。
java - PCSC 在 linux 上不返回任何内容,读卡器已连接
我正在尝试这个,用 PCSC 框架读取卡。但它根本不返回任何东西。
输出:
通过使用其他工具,它可以工作,但无法弄清楚为什么 Java 代码没有显示?
windows-phone-8 - 带有 Windows Phone 8 的 PCSC
我有一个连接到我的 PC 的 SCL3711 智能卡读卡器。有什么方法可以让我的 Windows 8 手机将我的 PC 识别为 NFC 设备并通过 NFC 在它们之间传输数据?
c# - SCardTrasmit 返回空的接收字节数组
我正在使用 ACS 阅读器和 NFC 标签进行 ac# PC/SC 实施。
我已经将 SCardTransmit 原型化如下:
我有以下代码:
所有(未显示)初始化的东西似乎都工作正常,我可以成功获得标签的 ATR。
现在,运行此代码我得到一个成功返回代码,我收到一个一致的接收字节长度值,但相应的字节数组是空的(零)。
任何人都可以对此提出建议吗?
谢谢你。
java - JAVA 智能卡客户端身份验证 - 缓慢的“初始化密钥库”
我正在开发一个需要通过智能卡进行客户端身份验证的应用程序。
客户端使用智能卡执行相互 SSL 身份验证。
有一个效率问题:客户端身份验证很慢。在网络服务的任何互联网流量之前,有大约 6 秒的延迟。
这是日志:
客户端在 Linux 中运行。
我正在尝试各种解决方法和解决方案来避免这种情况,但我认为这是由于智能卡的内部初始化,我无法避免。
你有什么想法?我能以某种方式避免这么晚吗?
谢谢!