skorpionking
Grünschnabel
Hallo zusammen,
ich habe eine SmartCard, die Zertifikate enthält, welche über einen sogen. KeyStore zugänglich sind.
Ziel ist es, die Zertifikate auszulesen.
Wenn ich den Zugriff per SUN-JDK (32-Bit) mache, funktioniert das mit folgendem Code:
Anstelle des SUN-JDK muss ich aber ein IBM-JDK verwenden.
Der Zugriff dort sollte eigentlich (lt. Doku) wie folgt funktionieren:
Leider erhalte ich in der markierten Zeile folgende Exception:
Kann mir evtl. jmd. weiterhelfen, der weiss, wo das Problem liegen könnte?
Danke im Voraus
skorpionking
ich habe eine SmartCard, die Zertifikate enthält, welche über einen sogen. KeyStore zugänglich sind.
Ziel ist es, die Zertifikate auszulesen.
Wenn ich den Zugriff per SUN-JDK (32-Bit) mache, funktioniert das mit folgendem Code:
Java:
java.security.Provider provider = new sun.security.pkcs11.SunPKCS11( PATH );
Security.addProvider( provider );
KeyStore keyStore = KeyStore.getInstance( "PKCS11", provider );
keyStore.load( null, PIN.toCharArray() );
Enumeration aliasesEnum = keyStore.aliases();
while ( aliasesEnum.hasMoreElements() )
{
String alias = (String) aliasesEnum.nextElement();
System.out.println( "Alias: " + alias );
Certificate cert = keyStore.getCertificate( alias );
System.out.println( "Certificate: " + cert );
PrivateKey privateKey = (PrivateKey) keyStore.getKey( alias, null );
System.out.println( "Private key: " + privateKey );
}
Anstelle des SUN-JDK muss ich aber ein IBM-JDK verwenden.
Der Zugriff dort sollte eigentlich (lt. Doku) wie folgt funktionieren:
Java:
com.ibm.crypto.pkcs11impl.provider.IBMPKCS11Impl provider = new com.ibm.crypto.pkcs11impl.provider.IBMPKCS11Impl( PATH );
Security.insertProviderAt( provider, 1 );
KeyStore keyStore = KeyStore.getInstance( "PKCS11IMPLKS", provider );
keyStore.load( null, PIN.toCharArray() ); // <- hier tritt die Exception auf
Enumeration aliasesEnum = keyStore.aliases();
while ( aliasesEnum.hasMoreElements() )
{
String alias = (String) aliasesEnum.nextElement();
System.out.println( "Alias: " + alias );
Certificate cert = keyStore.getCertificate( alias );
System.out.println( "Certificate: " + cert );
PrivateKey privateKey = (PrivateKey) keyStore.getKey( alias, null );
System.out.println( "Private key: " + privateKey );
}
Leider erhalte ich in der markierten Zeile folgende Exception:
Java:
Exception in thread "main" java.security.KeyStoreException: com.ibm.pkcs11.PKCS11Exception: Template is incomplete
at java.security.KeyStore$Builder$BuilderImpl.getKeyStore(KeyStore.java:707)
...
Kann mir evtl. jmd. weiterhelfen, der weiss, wo das Problem liegen könnte?
Danke im Voraus
skorpionking