-
Bug
-
Resolution: Fixed
-
P4
-
5.0
-
beta
-
x86
-
windows_xp
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-2122718 | 5.0u3 | Charlie Lai | P3 | Resolved | Fixed | b05 |
FULL PRODUCT VERSION :
java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
Java HotSpot(TM) Client VM (build 1.5.0-b64, mixed mode, sharing)
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows XP [Version 5.1.2600]
A DESCRIPTION OF THE PROBLEM :
I have created my own CertStore provider that works in all previous J2SE 1.4.x versions. Now when I try to get my CertStore instance using the below code in Java 5, then it throws a java.security.NoSuchAlgorithmException saying "Error constructing implementation (algorithm: MY, provider: assembla, class: se.assembla.jce.provider.ms.MSCertStoreMYJNI)":
CertStore store = CertStore.getInstance("MY", null, "assembla");
However, if I use the following code, then everything works fine:
CertStore store = CertStore.getInstance("MY", new CollectionCertStoreParameters(), "assembla");
The Java 5 Javadoc API specification clearly says the second parameter (CertStoreParameters) can be null:
Parameters:
type - the requested CertStore type
params - the initialization parameters (may be null)
provider - the name of the provider
Please let me now if you need more information to resolve this.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
1. Create a simple CertStore provider.
2. Execute the following code (replace the provider and type name with your own):
CertStore store = CertStore.getInstance(<type>, null, <provider>);
You can also reproduce it by:
1. Download the Assembla JCE Provider from https://download.assembla.se/download/index.jsp
2. Execute the following code:
java.security.Security.addProvider(new se.assembla.jce.provider.ms.MSProvider());
java.security.cert.CertStore store = java.security.cert.CertStore.getInstance("MY", null, "assembla");
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The CertStore instance.
ACTUAL -
It throws a java.security.NoSuchAlgorithmException.
ERROR MESSAGES/STACK TRACES THAT OCCUR :
java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: MY, provider: assembla, class: se.assembla.jce.provider.ms.MSCertStoreMYJNI)
at java.security.Provider$Service.newInstance(Provider.java:1099)
at sun.security.jca.GetInstance.getInstance(GetInstance.java:227)
at sun.security.jca.GetInstance.getInstance(GetInstance.java:196)
at java.security.cert.CertStore.getInstance(CertStore.java:238)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
// This require that you have downloaded the Assembla JCE Provider from:
// https://download.assembla.se/download/index.jsp
import java.security.Security;
import se.assembla.jce.provider.ms.*;
import java.security.cert.CertStore;
public class FooBar
{
int main(String[] args)
{
Security.addProvider(new MSProvider());
CertStore store = CertStore.getInstance("MY", null, "assembla");
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Replace the the null parameter (i.e. the second parameter) in method call CertStore.getInstance(String,CertStoreParameters,String) with a CollectionCertStoreParameters object:
CertStore store = CertStore.getInstance("MY", new CollectionCertStoreParameters(), "assembla");
###@###.### 2005-1-20 12:40:15 GMT
java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
Java HotSpot(TM) Client VM (build 1.5.0-b64, mixed mode, sharing)
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows XP [Version 5.1.2600]
A DESCRIPTION OF THE PROBLEM :
I have created my own CertStore provider that works in all previous J2SE 1.4.x versions. Now when I try to get my CertStore instance using the below code in Java 5, then it throws a java.security.NoSuchAlgorithmException saying "Error constructing implementation (algorithm: MY, provider: assembla, class: se.assembla.jce.provider.ms.MSCertStoreMYJNI)":
CertStore store = CertStore.getInstance("MY", null, "assembla");
However, if I use the following code, then everything works fine:
CertStore store = CertStore.getInstance("MY", new CollectionCertStoreParameters(), "assembla");
The Java 5 Javadoc API specification clearly says the second parameter (CertStoreParameters) can be null:
Parameters:
type - the requested CertStore type
params - the initialization parameters (may be null)
provider - the name of the provider
Please let me now if you need more information to resolve this.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
1. Create a simple CertStore provider.
2. Execute the following code (replace the provider and type name with your own):
CertStore store = CertStore.getInstance(<type>, null, <provider>);
You can also reproduce it by:
1. Download the Assembla JCE Provider from https://download.assembla.se/download/index.jsp
2. Execute the following code:
java.security.Security.addProvider(new se.assembla.jce.provider.ms.MSProvider());
java.security.cert.CertStore store = java.security.cert.CertStore.getInstance("MY", null, "assembla");
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The CertStore instance.
ACTUAL -
It throws a java.security.NoSuchAlgorithmException.
ERROR MESSAGES/STACK TRACES THAT OCCUR :
java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: MY, provider: assembla, class: se.assembla.jce.provider.ms.MSCertStoreMYJNI)
at java.security.Provider$Service.newInstance(Provider.java:1099)
at sun.security.jca.GetInstance.getInstance(GetInstance.java:227)
at sun.security.jca.GetInstance.getInstance(GetInstance.java:196)
at java.security.cert.CertStore.getInstance(CertStore.java:238)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
// This require that you have downloaded the Assembla JCE Provider from:
// https://download.assembla.se/download/index.jsp
import java.security.Security;
import se.assembla.jce.provider.ms.*;
import java.security.cert.CertStore;
public class FooBar
{
int main(String[] args)
{
Security.addProvider(new MSProvider());
CertStore store = CertStore.getInstance("MY", null, "assembla");
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Replace the the null parameter (i.e. the second parameter) in method call CertStore.getInstance(String,CertStoreParameters,String) with a CollectionCertStoreParameters object:
CertStore store = CertStore.getInstance("MY", new CollectionCertStoreParameters(), "assembla");
###@###.### 2005-1-20 12:40:15 GMT
- backported by
-
JDK-2122718 CertStore.getInstance(String,CertStoreParameters,String) throws NoSuchAlgorithmE
- Resolved