为 Solaris OS 开发的智能卡终端使用的 API 组与 Linux 智能卡终端所使用 API 组完全相同。如果您以前未开发过 IFD 处理程序,则可访问一个提供 IFD 源代码的 Linux 环境 Web 站点,如 http://www.musclecard.com/drivers.html。要为 Solaris 操作系统中的智能卡终端开发 IFD 处理程序,需要包括 /usr/include/smartcard/ifdhandler.h 并实现以下接口:
IFDHCreateChannelByName(3SMARTCARD) – 使用指定的智能卡终端打开通信通道。此接口在最新版本的 MUSCLE IFD 规范中是新增的内容。因此,IFDHCreateChannelByName() 在其他 IFD 处理程序中可能不可用。在 Solaris 软件中,使用 IFDHCreateChannelByName(),而不使用 IFDHCreateChannel(3SMARTCARD) 函数。
IFDHICCPresence(3SMARTCARD)-检查逻辑单元号 (logical unit number, LUN) 指定的读取器或插槽中是否存在 ICC(即智能卡)。
IFDHPowerICC(3SMARTCARD)-控制电源和重置 ICC 的信号。
IFDHCloseChannel(3SMARTCARD)-关闭由 LUN 指定的 IFD 的通信通道。
IFDHGetCapabilities(3SMARTCARD)-返回指定智能卡、IFD 处理程序或智能卡终端的功能。
IFDHSetProtocolParameters(3SMARTCARD)-为特定插槽或卡设置协议类型选择 (Protocol Type Selection, PTS)。在 ISO 7816 标准中查找 PTS 值。尽管此函数可能不是由框架调用,但还是应该执行此函数。使用 IFDHSetProtocolParameters() 可以确保各种卡都能与框架进行通信。
IFDHTransmitToICC(3SMARTCARD)-由框架调用,用于与智能卡进行通信。
当前不使用 IFDHCreateChannel()、IFDHSetCapabilities() 和 IFDHControl(),但未来的发行版中可能需要这些函数。
IFDHICCPresence() 和 IFDHPowerICC() 函数对于测试非常有用。例如,可以使用 IFDHICCPresence() 函数来测试插槽中是否存在卡。检查智能卡电源是否正常工作的一种方式是使用 IFDHPowerICC() 函数。此函数可获取已插入智能卡的重置应答 (Answer to Reset, ATR) 值。