Smart card terminals that are developed for the Solaris OS use the same set of APIs that are used by linux smart card terminals. If you have not previously developed an IFD handler, then you should visit one of the web sites for the linux environment that provide IFD source code, such as http://www.musclecard.com/drivers.html. To develop an IFD handler for smart card terminals in the Solaris operating system, you need to include /usr/include/smartcard/ifdhandler.h and implement the following interfaces:
IFDHCreateChannelByName(3SMARTCARD) – Opens a communication channel with the specified smart card terminal. This interface is new in the latest version of the MUSCLE IFD specification. As a result, IFDHCreateChannelByName() might not be available in other IFD handlers. In the Solaris software, IFDHCreateChannelByName() is used instead of the IFDHCreateChannel(3SMARTCARD) function.
IFDHICCPresence(3SMARTCARD) – Checks for the presence of an ICC, that is, a smart card, in the reader or the slot that has been specified by the logical unit number (LUN).
IFDHPowerICC(3SMARTCARD) – Controls the power and reset signals of the ICC.
IFDHCloseChannel(3SMARTCARD) – Closes the communications channel for the IFD that is specified by LUN.
IFDHGetCapabilities(3SMARTCARD) – Returns the capabilities of the specified smart card, IFD handler, or smart card terminal.
IFDHSetProtocolParameters(3SMARTCARD) – Sets the Protocol Type Selection (PTS) for a particular slot or card. Check the ISO 7816 standards for the PTS values. Although this function might not be called by the framework, this function should be implemented. Use of IFDHSetProtocolParameters() ensures that a variety of cards can communicate with the framework.
IFDHTransmitToICC(3SMARTCARD) – Called by the framework to communicate with the smart card.
The IFDHCreateChannel(), IFDHSetCapabilities(), and IFDHControl() are not currently used, but these interfaces might be required in future releases.
The IFDHICCPresence() and IFDHPowerICC() function are useful for testing. For example, you can use the IFDHICCPresence() function to test the presence of a card in the slot. One way to check the smart card power is functioning normally is to use the IFDHPowerICC() function. This function gets the Answer to Reset (ATR) value of the inserted smart card.