引起:sun.security.pkcs11.wrapper.PKCS11Exception:CKR_DATA_INVALID

时间:2015-08-10 14:14:58

标签: java pkcs#11

我的应用程序出现问题,生成xml签名,但只是在Windows上发生,我在Linux上没有问题,证明有jre 7和jre 8感谢提前。

    java.security.ProviderException: sun.security.pkcs11.wrapper.PKCS11Exception: E

    at sun.security.pkcs11.P11Signature.engineSign(P11Signature.java:547)
    at java.security.Signature$Delegate.engineSign(Unknown Source)
    at java.security.Signature.sign(Unknown Source)
    at org.apache.xml.security.algorithms.implementations.SignatureBaseRSA.engineSign(SignatureBaseRSA.java:130)
    at org.apache.xml.security.algorithms.SignatureAlgorithm.sign(SignatureAlgorithm.java:173)
    at org.apache.xml.security.signature.XMLSignature.sign(XMLSignature.java:614)
    at bo.accl.clientelynx.Signer.firmar(Signer.java:283)
    at bo.accl.clientelynx.Signer.sign(Signer.java:168)
    at bo.accl.clientelynx.Signer.apply(Signer.java:350)
    at bo.accl.clientelynx.Signer.apply(Signer.java:61)
    at com.google.common.collect.Iterators$8.transform(Iterators.java:860)
    at com.google.common.collect.TransformedIterator.next(TransformedIterator.java:48)
    at bo.accl.clientelynx.App$17.doInBackground(App.java:1130)
    at bo.accl.clientelynx.App$17.doInBackground(App.java:1095)
    at javax.swing.SwingWorker$1.call(Unknown Source)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at javax.swing.SwingWorker.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_DATA_INVALID
    at sun.security.pkcs11.wrapper.PKCS11.C_Sign(Native Method)
    at sun.security.pkcs11.P11Signature.engineSign(P11Signature.java:538)

2 个答案:

答案 0 :(得分:0)

在CKR_DATA_INVALID上搜索后,我发现错误是:

  

加密操作的明文输入数据无效。   此返回值的优先级低于CKR_DATA_LEN_RANGE。

请参阅:http://www.cryptsoft.com/pkcs11doc/v220/pkcs11__all_8h.html#aCKR_DATA_INVALID

我的访客是您在Windows和Linux之间的数据编码问题。检查您的数据文件以查找无效的Windows字符。

答案 1 :(得分:0)

我在使用旧版本的p11-capi库时遇到了类似的问题。在我的情况下,我想使用新的签名算法(SHA256withRSA而不是SHA1withRSA)并收到相同的Java异常。这个例外不是很有用,所以我花了很长时间才发现问题已在最近的库版本中得到修复:https://risacher.org/p11-capi/