Я подключаюсь к HSM с помощью Pkcs#11 с минимальным файлом конфигурации
Код: Выделить всё
name=LunaHsm
description=SunPKCS11 accessing LunaHsm
library=libCryptoki2.so
showInfo=true
slot=3
Код: Выделить всё
SunPKCS11 loading lunahsm-pkcs11.cfg
sunpkcs11: Initializing PKCS#11 library libCryptoki2.so
Information for provider SunPKCS11-LunaHsm
Library info:
cryptokiVersion: 2.20
manufacturerID: SafeNet
flags: 0
libraryDescription: Chrystoki
libraryVersion: 10.07
All slots: 0, 1, 2, 3
Slots with tokens: 3
Slot info for slot 3:
slotDescription: Net Token Slot
manufacturerID: SafeNet
flags: CKF_TOKEN_PRESENT | CKF_REMOVABLE_DEVICE | CKF_HW_SLOT
hardwareVersion: 0.00
firmwareVersion: 0.00
Token info for token in slot 3:
label: my_partition
manufacturerID: SafeNet
model: Cryptovisor7
serialNumber: 123123
flags: CKF_RNG | CKF_LOGIN_REQUIRED | CKF_USER_PIN_INITIALIZED | CKF_RESTORE_KEY_NOT_NEEDED | CKF_TOKEN_INITIALIZED
ulMaxSessionCount: CK_EFFECTIVELY_INFINITE
ulSessionCount: 1
ulMaxRwSessionCount: CK_EFFECTIVELY_INFINITE
ulRwSessionCount: 1
ulMaxPinLen: 255
ulMinPinLen: 7
ulTotalPublicMemory: 159744
ulFreePublicMemory: 156528
ulTotalPrivateMemory: 159744
ulFreePrivateMemory: 156528
hardwareVersion: 0.00
firmwareVersion: 7.03
utcTime: 20241008132333
sunpkcs11: login succeeded
Код: Выделить всё
Security.addProvider(new LunaProvider());
myStore = KeyStore.getInstance("Luna");
ByteArrayInputStream is1 = new ByteArrayInputStream(
("slot:" + slot + "\ncaching:false" + "\ndefertokenization:true").getBytes());
myStore.load(is1, passwd.toCharArray());
Код: Выделить всё
Provider provider = Security.getProvider("SunPKCS11");
provider = provider.configure("path/to/config/file");
KeyStore ks = KeyStore.getInstance("PKCS11", provider);
ks.load(is1,passwd.toCharArray());
Подробнее здесь: https://stackoverflow.com/questions/790 ... ound-in-ja