Original Readme.txt
Dieses Projekt ist veraltet. Bitte verwenden Sie stattdessen xipki/ipkcs11wrapper (bevorzugt) oder xipki/jpkcs11wrapper.
JRE / JDK 8 (Build 162+) oder höher
Maven
<dependency> <groupId>org.xipki.iaik</groupId> <artifactId>sunpkcs11-wrapper</artifactId> <version>1.4.10</version> </dependency>
Oder kopieren Sie die folgende JAR-Datei in Ihren Klassenpfad:
sunpkcs11-wrapper-1.4.7.jar
Um pkcs11wrapper in JDK 17 oder höher zu verwenden, fügen Sie bitte die folgende Java-Option hinzu:
--add-exports=jdk.crypto.cryptoki/sun.security.pkcs11.wrapper=ALL-UNNAMED
Konfigurieren Sie die Bibliothek und PIN Ihres HSM-Moduls in der Datei example/data/pkcs11.properties
.
mvn test
Um die Geschwindigkeitstests zu aktivieren, verwenden Sie -PspeedTests
Standardmäßig wird der Geschwindigkeitstest mit 2 Threads ausgeführt. Sie können den Wert über die Java-Eigenschaft speed.threads
ändern, z. B. -Dspeed.threads=5
um 5 Threads zu verwenden.
Standardmäßig dauert der Geschwindigkeitstest 3 Sekunden. Sie können den Wert über die Java-Eigenschaft speed.duration
ändern, z. B. -Dspeed.duration=10s
für 10 Sekunden.
Es ist keine externe Bibliothek erforderlich
Erfordert OpenJDK oder Oracle Java Runtime 1.8 oder höher
Unterstützt PKCS#11 Version 2.40
Unterstützt EdDSA Ed25519 (Signatur- und Schlüsselpaargenerierung)
Portierung von mikma/pkcs11wrapper auf dieses Projekt
Für *SecretKey
verwenden Sie bitte stattdessen den Konstruktor ValuedSecretKey(long keyType)
, z. B. verwenden Sie new ValuedSecretKey(PKCS11Constants.CKK_AES)
für AES SecretKey.
Für ECDSAPrivateKey
und ECDSAPublicKey
verwenden Sie bitte stattdessen ECPrivateKey
und ECPublicKey
.
iaik.pkcs.pkcs11.objects.Object
wird in iaik.pkcs.pkcs11.objects.PKCS11Object
umbenannt.
Token.closeAllSession()
kann nicht unterstützt werden, da es im zugrunde liegenden JNI (dem SunPKCS11-Anbieter des JDK) nicht unterstützt wird. Bitte verwalten Sie Ihre Sitzung selbst. Sie können eine einzelne Sitzung mit Session.closeSession()
schließen.
Im Gegensatz zum ursprünglichen PKCS#11-Wrapper rufen wir Module.initialize()
nur einmal pro nativer .so/.dll auf. Sobald Module.finalize(Object)
aufgerufen wurde, kann das Modul nicht mehr initialisiert werden.