OpenSC 与所有智能卡不兼容的事实使我认为它使用专有命令
不,不是真的,恰恰相反。ISO 7816-4 列出了许多用于基于文件或记录的智能卡的命令。很少有卡能够完全实现以 ISO 7816-4 编写的所有命令。此外,即使他们这样做了,标准中也存在许多差距,例如没有清楚地描述错误条件,甚至关于文件系统“根”的多个选项,专有参数,专有命令,没有明确的安全消息等等等等等等
从这个意义上说,这是一个可怕的标准。您应该将其视为文件系统卡制造商行业的一次糟糕尝试,以创建他们都可以坚持的东西。
此外,支持 7816-4 并不意味着支持任何特定的用例。没有关于如何获得签名的描述。至少有 PKCS#15(现在也反映为 ISO 标准)指定可以找到文件和密钥的位置。但是,如果您创建签名,您还必须知道创建了哪种签名以及应该使用哪个命令来执行此操作。
换句话说,通常像 OpenSC 这样的“中间件”总是需要做一些事情来支持特定的卡。不支持一张卡并不表示 OpenSC 以任何方式“错误”,它只是意味着对该卡的支持 - 如果它确实是文件系统卡或可编程卡 - 尚未测试/实施。
请注意,PC/SC 只是在操作系统中处理智能卡的一种标准化方式(从其起源的 Windows 操作系统开始)。这些命令只需要符合 ISO 7816-4,但它根本不关心发送什么样的命令或以何种顺序发送。那里没有任何与 PC/SC 兼容的智能卡,只有兼容 ISO 7816-4 智能卡的读卡器(或者,因为它们不能只读取智能卡接口设备或 IFD)。
一些硬件令牌也可能与 PC/SC 兼容,这仅仅是因为它们模拟了读取器和芯片的组合,或者因为它们在内部是读取器和芯片(更便宜/更慢的)。其他人在更高级别上工作并使用 PKCS#11,它直接定义了加密令牌的接口,并且可以说和客观地比 ISO 7816-4 或 -15 组合更好地定义。