United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
JDK-6931562 : Support SunMSCAPI Security Provider in Windows 64-bit releases of JVM

Details
Type:
Bug
Submit Date:
2010-03-03
Status:
Closed
Updated Date:
2011-10-07
Project Name:
JDK
Resolved Date:
2011-06-22
Component:
security-libs
OS:
windows_vista
Sub-Component:
javax.crypto
CPU:
x86
Priority:
P3
Resolution:
Fixed
Affected Versions:
6u18
Fixed Versions:

Related Reports
Backport:
Relates:
Relates:

Sub Tasks

Description
A DESCRIPTION OF THE REQUEST :
JRE 1.6.0_u18, for 64-bit Windows Vista does not appear to contain the sun.security.mscapi.SunMSCAPI security provider.  The classes, supporting DLL, and security provider mapping in the java.security policy file are absent.
At runtime, the security API reports that it cannot locate the Windows-MY keystore.  Documentation for the SunMSCAPI Provider does not indicate that support is only available on certain Windows platforms.
http://java.sun.com/javase/6/docs/technotes/guides/security/SunProviders.html#SunMSCAPI

The 32-bit distribution for the same version and operating system includes this feature.

If implementation is impossible, due to limitations of the host platform, treat this as a bug, for which the end product would be updated documentation to warn future engineers of the missing feature.

JUSTIFICATION :
Provide feature consistency between JVM implementations runnable on the same host platform.  Provide upgrade-path for code written against 32-bit JVM features.

EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The 64-bit Windows JVM implementations should provide access to the Windows-MY and Windows-ROOT keystores.
ACTUAL -
JVM indicates that it cannot locate the Windows-MY keystore.

Exception in thread "main" java.security.KeyStoreException: Windows-MY not found
	at java.security.KeyStore.getInstance(KeyStore.java:587)
	at org.example.crypto.LoadKeystore.main(LoadKeystore.java:10)
Caused by: java.security.NoSuchAlgorithmException: Windows-MY KeyStore not available
	at sun.security.jca.GetInstance.getInstance(GetInstance.java:142)
	at java.security.Security.getImpl(Security.java:659)
	at java.security.KeyStore.getInstance(KeyStore.java:584)

---------- BEGIN SOURCE ----------
package org.example.crypto;

import java.security.KeyStore;
import java.security.KeyStoreException;

public class LoadKeystore
{
    public static void main(String[] args) throws KeyStoreException
    {
        KeyStore keystore = KeyStore.getInstance("Windows-MY");
        System.out.println(keystore.aliases());
    }
}
---------- END SOURCE ----------

CUSTOMER SUBMITTED WORKAROUND :
Don't upgrade to the Windows 64-bit JVM.
or
Use certificates from a file-based keystore. (i.e. don't use the missing feature).

                                    

Comments
EVALUATION

Working.
                                     
2011-02-11



Hardware and Software, Engineered to Work Together