Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

SunPKCS11 provider - zapis klucza na SmartCard

184 views
Skip to first unread message

pawel

unread,
Mar 22, 2005, 5:43:16 AM3/22/05
to
Uzywam providera SunPKCS11 i bez problemu moge odczytywac certyfikaty
i klucze z karty kryptograficznej, natomiast proba zapisu klucza na
karte konczy sie bledem podczas proby wywolanie metody setKeyEntry:

-Example------------------------------------------------------------------
sun.security.pkcs11.SunPKCS11 p =
new sun.security.pkcs11.SunPKCS11(configFileName);
Security.addProvider(p);
KeyStore.PasswordProtection pp = new KeyStore.PasswordProtection(pin);
KeyStore.Builder builder =
KeyStore.Builder.newInstance("pkcs11",p ,pp);
KeyStore store = builder.getKeyStore();

...
store.setKeyEntry("pawel", _privKey, null, _chain); //blad
...

-blad----------------------------------------------------------------------
Exception in thread "main" java.security.KeyStoreException:
sun.security.pkcs11.wrapper.PKCS11Exception: CKR_TEMPLATE_INCOMPLETE
at sun.security.pkcs11.P11KeyStore.engineSetEntry(P11KeyStore.java:1067)
at sun.security.pkcs11.P11KeyStore.engineSetKeyEntry(P11KeyStore.java:443)
at java.security.KeyStore.setKeyEntry(Unknown Source)
at hex.pkcs11.Example3.main(Example3.java:88)
Caused by: sun.security.pkcs11.wrapper.PKCS11Exception:
CKR_TEMPLATE_INCOMPLETE
at sun.security.pkcs11.wrapper.PKCS11.C_CreateObject(Native Method)
at sun.security.pkcs11.P11KeyStore.storePkey(P11KeyStore.java:1737)
at sun.security.pkcs11.P11KeyStore.engineSetEntry(P11KeyStore.java:1063)
... 3 more
---------------------------------------------------------------------------


Podejrzewam, ze blad jest spowodowany niewlasciwa konfiguracja pliku
pkcs11.config (czasem wystepuje jako pkcs11.cfg), ale oczywiscie moge
sie mylic.

Moje pliki pkcs11.config, na ktorych przeprowadzalem testy wygladaja
nastepujaco:

-plik1---------------------------------------------------------------------
name=CryptoCard
library=C:\WINNT\system32\CCPkiP11.dll

-plik2---------------------------------------------------------------------
name=CryptoCard
library=C:\WINNT\system32\CCPkiP11.dll

attributes(*,CKO_PRIVATE_KEY,*) = {
CKA_SENSITIVE=true
}

attributes(*,CKO_PRIVATE_KEY,*) = {
CKA_TOKEN=true
}

attributes(*,CKO_PRIVATE_KEY,*) = {
CKA_SIGN = true
}
attributes(*,CKO_PRIVATE_KEY,*) = {
CKA_PRIVATE=true
}
attributes(*,CKO_PRIVATE_KEY,*) = {
CKA_MODIFIABLE=true
}

attributes(*,CKO_PRIVATE_KEY,*) = {
CKA_DERIVE=false
}


attributes(*,CKO_CERTIFICATE,*) = {
CKA_TRUSTED=true
}
attributes(*,CKO_CERTIFICATE,*) = {
CKA_TOKEN=true
}

attributes(*,CKO_CERTIFICATE,*) = {
CKA_MODIFIABLE=true
}

attributes(*,CKO_CERTIFICATE,*) = {
CKA_PRIVATE=true
}

---------------------------------------------------------------------------

Pilnie potrzebuje pomocy
Pawel

Marcin

unread,
Mar 22, 2005, 7:05:27 AM3/22/05
to

Użytkownik "pawel" <jan_k...@NOSPAMwp.pl> napisał w wiadomości
news:d1p0k9$q1b$1...@nemesis.news.tpi.pl...

> > Co rozumiesz przez nagrywanie kluczy na karcie? Nie bardzo rozumiem co
> chciales napisac, natomiast bede wdzieczny za kazda rade.

Nie pisałem nic o nagrywaniu kluczy na karte ale skoro pytasz:

klucze na karcie kryptograficznej mozesz umiescic na dwa sposoby:

-- wygenerowac je na karcie - to najwlasciwszy sposob bo klucz prywatny
nigdy nie opusci tej karty (to jedna z jej wlasciwosci).

-- wygenerowc klucze programowo (bez uzycia karty) - a nastepnie
"transferowac"
je na karte. Cos na wzór tego jak importujesz klucze oraz certyfikaty z
pliku PKCS#12 na karte.

Mała uwaga: generowanie klucze na karcie z poziomu javy przebiega tak
samo jak generowanie programowo, rozni sie jedynie typem providera i
magazynu kluczy.


Mam podejrzenia, że rzeczywiscie generujesz klucze na karcie.... :-)))
Uzywasz wyłącznie providera PKCS#11 ? Probowales juz setCertificateEntry ??

Marcin


pawel

unread,
Mar 22, 2005, 6:29:11 AM3/22/05
to
Marcin wrote:
> Uzytkownik "pawel" <jan_k...@NOSPAMwp.pl> napisal w wiadomosci
> news:d1ot4j$sii$1...@nemesis.news.tpi.pl...

>
>>...
>>store.setKeyEntry("pawel", _privKey, null, _chain); //blad
>>...
>
>
> Nie uzywałem nigdy PKCS#11 Suna, ale... gdzie generujesz klucze ? Na
> karcie czy programowo ? Jesli na karcie to nie powinienes uzywac setKeyEntry
> (klucze juz tam sa), ale jedynie "wgrac" certyfikat ( void
> KeyStore.setCertificateEntry(String alias, Certificate cert) )
>
>
> Marcin
>
>
>
>

Klucze generuje sam w programie i chce je zapisac na "czystej" karcie,
stad to setKeyEntry. Probowalem tez zapisywac przy pomocy setEntry z
analogicznym skutkiem.
pawel

pawel

unread,
Mar 22, 2005, 7:24:05 AM3/22/05
to
Marcin wrote:

Uzywam tylko providera PKCS#11 (SunPKCS11) i probuje zapisac do
keystore'a (na karcie) pozycje certyfikatu lub pozycje klucza zgodnie z
ponizszym kodem oraz kodem, ktory umiescilem w poprzedniej wiadomosci.

Wywolanie store.setCertificateEntry generuje blad.

-Example------------------------------------------------


sun.security.pkcs11.SunPKCS11 p =
new sun.security.pkcs11.SunPKCS11(configFileName);
Security.addProvider(p);
KeyStore.PasswordProtection pp = new KeyStore.PasswordProtection(pin);
KeyStore.Builder builder =
KeyStore.Builder.newInstance("pkcs11",p ,pp);
KeyStore store = builder.getKeyStore();

...
store.setCertificateEntry("pawel",cert); //X505Certificate
...

-blad---------------------------------------------------


Exception in thread "main" java.security.KeyStoreException:

java.lang.UnsupportedOperationException: trusted certificates may only
be set by token initialization application
at sun.security.pkcs11.P11KeyStore.engineSetEntry(P11KeyStore.java:1005)
at
sun.security.pkcs11.P11KeyStore.engineSetCertificateEntry(P11KeyStore.java:502)
at java.security.KeyStore.setCertificateEntry(Unknown Source)
at hex.pkcs11.Example3.main(Example3.java:87)
Caused by: java.lang.UnsupportedOperationException: trusted certificates
may only be set by token initialization application
... 4 more
---------------------------------------------------------

Mam nadzieje, ze znajdziesz rade na moje problemy.
pawel

Marcin

unread,
Mar 22, 2005, 6:19:21 AM3/22/05
to

Uzytkownik "pawel" <jan_k...@NOSPAMwp.pl> napisal w wiadomosci
news:d1ot4j$sii$1...@nemesis.news.tpi.pl...
>>
> ...
> store.setKeyEntry("pawel", _privKey, null, _chain); //blad
> ...

Nie uzywałem nigdy PKCS#11 Suna, ale... gdzie generujesz klucze ? Na

pawel

unread,
Mar 22, 2005, 8:53:10 AM3/22/05
to
Marcin wrote:
> Użytkownik "pawel" <jan_k...@NOSPAMwp.pl> napisał w wiadomości
> news:d1p31r$dhg$1...@nemesis.news.tpi.pl...

>
>
>>sun.security.pkcs11.SunPKCS11 p =
>> new sun.security.pkcs11.SunPKCS11(configFileName);
>>Security.addProvider(p);
>>KeyStore.PasswordProtection pp = new KeyStore.PasswordProtection(pin);
>>KeyStore.Builder builder =
>> KeyStore.Builder.newInstance("pkcs11",p ,pp);
>>KeyStore store = builder.getKeyStore();
>>
>>...store.setKeyEntry("pawel", _privKey, null, _chain); //blad
>
>
> jakie aliasy nadajesz generowanym kluczom ??
>
> Marcin
>
>

Wszystkie sa takie same - "pawel". Nie rozumiem celowosci tego
pytania... Ja raczej podejrzewam, ze wygenerowane bledy sugeruja blad w
konfiguracji pliku pkcs11.config. Niestety nie moge sobie z tym
poradzic, ani znalezc przykladow w sieci.

Marcin

unread,
Mar 22, 2005, 8:40:32 AM3/22/05
to

Użytkownik "pawel" <jan_k...@NOSPAMwp.pl> napisał w wiadomości
news:d1p31r$dhg$1...@nemesis.news.tpi.pl...
> >

>sun.security.pkcs11.SunPKCS11 p =
> new sun.security.pkcs11.SunPKCS11(configFileName);
>Security.addProvider(p);
>KeyStore.PasswordProtection pp = new KeyStore.PasswordProtection(pin);
>KeyStore.Builder builder =
> KeyStore.Builder.newInstance("pkcs11",p ,pp);
>KeyStore store = builder.getKeyStore();
>

pawel

unread,
Mar 22, 2005, 6:42:50 AM3/22/05
to
Marcin wrote:

Co rozumiesz przez nagrywanie kluczy na karcie? Nie bardzo rozumiem co

chciales napisac, natomiast bede wdzieczny za kazda rade.

pawel

pawel

unread,
Mar 23, 2005, 7:59:56 AM3/23/05
to
Potrzebuje pomocy!

Uzywam providera SunPKCS11 i bez problemu moge odczytywac certyfikaty
i klucze z karty kryptograficznej, natomiast proba zapisu klucza na
karte konczy sie bledem podczas proby wywolanie metody setKeyEntry:

-Example------------------------------------------------------------------


sun.security.pkcs11.SunPKCS11 p =
new sun.security.pkcs11.SunPKCS11(configFileName);
Security.addProvider(p);
KeyStore.PasswordProtection pp = new KeyStore.PasswordProtection(pin);
KeyStore.Builder builder =
KeyStore.Builder.newInstance("pkcs11",p ,pp);
KeyStore store = builder.getKeyStore();

...


store.setKeyEntry("pawel", _privKey, null, _chain); //blad
...

-blad----------------------------------------------------------------------


Exception in thread "main" java.security.KeyStoreException:

pawel

unread,
Mar 24, 2005, 2:17:29 AM3/24/05
to
Pilnie potrzebuje pomocy!
0 new messages