JDK-8039319 : (smartcardio) Card.transmitControlCommand() does not work on Mac OS X
  • Type: Bug
  • Component: security-libs
  • Sub-Component: javax.smartcardio
  • Affected Version: 7u51
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • Submitted: 2014-04-04
  • Updated: 2016-06-13
  • Resolved: 2014-05-28
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
7u72Fixed 8u25Fixed 9 b16Fixed
card.transmitControlCommand(0x42000d48, new byte[] {}) does not work using 
TerminalFactory provider SunPCSC (the default provider)  

The regression test test/sun/security/smartcardio/TestControl.java can be used to verify how Card.transmitControlCommand() works. However, the test isn't perfect. First, it requires a smart-card-reader which supports T=0 protocol. (I had to change it to T=1 to work with the card-reader I have access to). Second, it really only checks that the function doesn't crash (see the comment in the test): // we currently don't know of any control commands that work with // our readers. call the function just to make sure we don't crash // or throw the wrong exception We couldn't use any hardcoded command in the test, including the one provided in the bug description, since the command codes depend on the platform and hardware.

Is it covered by existing regression tests? Please provide testing recommendations.