BG Development


  Reply to this topicStart new topicStart Poll

> Работа с pkcs#11, Работи само в дебъг режим
thrawn
Публикувано на: 29-09-2017, 09:56
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 979
Регистриран на: 17.01.17



Някой занимавал ли се е с PKCS#11 хранилища?

Следния код работи само в дебъг режим (-Djava.security.debug=sunpkcs11,pkcs11)

CODE
@Override
public void init() throws Exception {
      super.init();

      try(InputStream is = getClass().getResourceAsStream("provider.conf")) {
            Provider provider = new sun.security.pkcs11.SunPKCS11(is);
            KeyStore keyStore = KeyStore.getInstance("PKCS11", provider);

            System.out.println("KeyStore: " + keyStore.toString());
      }
}


това е конфигурационния файл provider.conf
CODE
name="PKCS#11 Provider"
library=/usr/lib/onepin-opensc-pkcs11.so


Когато стартирам така всичко е ОК
CODE
SunPKCS11 loading ---DummyConfig-1---
sunpkcs11: Initializing PKCS#11 library /usr/lib/onepin-opensc-pkcs11.so
Information for provider SunPKCS11-PKCS#11 Provider
Library info:
 cryptokiVersion: 2.20
 manufacturerID: OpenSC (www.opensc-project.org)
 flags: 0
 libraryDescription: Smart card PKCS#11 API          
 libraryVersion: 0.00
All slots: 4294967295, 1
Slots with tokens: 1
Slot info for slot 1:
 slotDescription: OMNIKEY CardMan (076B:3021) 3021 00 00                          
 manufacturerID: OpenSC (www.opensc-project.org)
 flags: CKF_TOKEN_PRESENT | CKF_REMOVABLE_DEVICE | CKF_HW_SLOT
 hardwareVersion: 0.00
 firmwareVersion: 0.00
Token info for token in slot 1:
 label: InfoNotary (PIN)                
 manufacturerID: Siemens AG (C)                  
 model: PKCS#15        
 serialNumber:                
 flags: CKF_LOGIN_REQUIRED | CKF_USER_PIN_INITIALIZED | CKF_TOKEN_INITIALIZED
 ulMaxSessionCount: CK_EFFECTIVELY_INFINITE
 ulSessionCount: 0
 ulMaxRwSessionCount: CK_EFFECTIVELY_INFINITE
 ulRwSessionCount: 0
 ulMaxPinLen: 16
 ulMinPinLen: 4
 ulTotalPublicMemory: CK_UNAVAILABLE_INFORMATION
 ulFreePublicMemory: CK_UNAVAILABLE_INFORMATION
 ulTotalPrivateMemory: CK_UNAVAILABLE_INFORMATION
 ulFreePrivateMemory: CK_UNAVAILABLE_INFORMATION
 hardwareVersion: 0.00
 firmwareVersion: 0.00
 utcTime:
.
.
.
KeyStore: java.security.KeyStore@102b42


Но изкарам ли го от дебъг режим умира:
CODE
Caused by: java.security.KeyStoreException: PKCS11 not found
      at java.security.KeyStore.getInstance(KeyStore.java:940)
      at ecrreader.ECRReader.init(ECRReader.java:40)
      at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:841)
      ... 2 more
Caused by: java.security.NoSuchAlgorithmException: no such algorithm: PKCS11 for provider SunPKCS11-PKCS#11 Provider
      at sun.security.jca.GetInstance.getService(GetInstance.java:101)
      at sun.security.jca.GetInstance.getInstance(GetInstance.java:218)
      at java.security.Security.getImpl(Security.java:724)
      at java.security.KeyStore.getInstance(KeyStore.java:937)
      ... 4 more


ако се опитам да добавя слот в конфигурацията
CODE
name="PKCS#11 Provider"
slot=1
library=/usr/lib/onepin-opensc-pkcs11.so

плюе с това
CODE
Caused by: java.security.ProviderException: Initialization failed
      at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:376)
      at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:107)
      at ecrreader.ECRReader.init(ECRReader.java:39)
      at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:841)
      ... 2 more
Caused by: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_SLOT_ID_INVALID
      at sun.security.pkcs11.wrapper.PKCS11.C_GetSlotInfo(Native Method)
      at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:365)
      ... 5 more
PMEmail Poster
Top
akrachev
Публикувано на: 29-09-2017, 10:47
Quote Post



Име: Атанас Крачев
Група: Потребител
Ранг: Редовен член

Мнения: 472
Регистриран на: 27.11.09



InfoNotary не дават ли Java SDK?
PMEmail Poster
Top
thrawn
Публикувано на: 29-09-2017, 10:54
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 979
Регистриран на: 17.01.17



Не виждам нищо на сайтът им.
Ама е интересно, що това не работи. Гледам доста хора са се оплакали от тоя проблем и са го зарязали в дебъг режим.
PMEmail Poster
Top
thrawn
Публикувано на: 10-10-2017, 15:01
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 979
Регистриран на: 17.01.17



Това го подкарах със slotListIndex.

Когато се пуска в debug режим slotListIndex трябва да е 0 (в противен случай гърми). Когато не е в debug режим slotListIndex трябва да 1.

Струва ми се, че проблемът е в това All slots: 4294967295, 1

----
Също така, интересува ме, има ли по-културен начин за достъп до полето p11 (PKCS11) в SunPKCS11 освен с рефлекшън (там са разни данни на устройството които искам да извеждам в конфигурационните диалози)?

Това мнение е било редактирано от thrawn на 10-10-2017, 15:01
PMEmail Poster
Top
0 потребители преглеждат тази тема в момента (0 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2015 | BG Development | All Rights Reserved
RSS 2.0