信息:
问题和疑问:
signer.update(data);
使用RSA算法。如果我们使用RSA将算法更改为SHA 512 ,则没问题。 其他版本的eToken“3SKey基本令牌(eToken PRO)”没问题。您知道其他人是否遇到过同样的问题吗?或者只是我们?解决方案是什么?使用SunPKCS11的代码( 有效,但在.update(...) 时速度慢)
String pkcs11config;
pkcs11config = ....
ByteArrayInputStream confStream = new ByteArrayInputStream(pkcs11config.getBytes());
SunPKCS11 provider = new SunPKCS11(confStream);
Security.addProvider(provider);
char[] password = "....".toCharArray();
String alias = "...";
PrivateKey privateKey = (PrivateKey) keystore.getKey(alias, password);
Signature signer = Signature.getInstance("SHA256withRSA", keystore.getProvider());
signer.initSign(privateKey);
String data = "Hello world......";
signer.update(data.getBytes()); // SLOW HERE! THE BIGGER THE DATA, THE SLOWER IT IS.
byte[] signedData = signer.sign();
尝试使用IAIK的代码:
String pwd = System.getProperty("user.dir");
String dllFile = pwd + "/libeTPkcs11.so";
Module m = Module.getInstance(dllFile);
=> error : Exception in thread "main" java.lang.UnsatisfiedLinkError: no pkcs11wrapper in java.library.path