我有一个PKCS7证券文件的大和奇怪的问题。 我创建了一个p7s文件,如http://www.thatsjava.com/java-tech/85019/中建议的那样,它创建该文件并仅使用sun库对其进行验证。它工作正常。
当我想验证这个文件时,问题就开始了。它返回此异常:pkcs7文件验证问题
java.security.SignatureException: Signature encoding error
at sun.security.rsa.RSASignature.engineVerify(RSASignature.java:185)
at java.security.Signature$Delegate.engineVerify(Signature.java:1140)
at java.security.Signature.verify(Signature.java:592)
at sun.security.pkcs.SignerInfo.verify(SignerInfo.java:374)
at sun.security.pkcs.PKCS7.verify(PKCS7.java:494)
at sun.security.pkcs.PKCS7.verify(PKCS7.java:511)
at sun.security.pkcs.PKCS7.verify(PKCS7.java:533)
at firma.FirmaDigitalImpl.firmarCadenaSun(FirmaDigitalImpl.java:553)
at firma.FirmaDigitalImpl.firmarCadena(FirmaDigitalImpl.java:249)
at firma.FirmaDigitalImpl.firmarCadena(FirmaDigitalImpl.java:147)
at firma.TestFirma.main(TestFirma.java:75)
Caused by: java.io.IOException: Sequence tag error
at sun.security.util.DerInputStream.getSequence(DerInputStream.java:280)
at sun.security.rsa.RSASignature.decodeSignature(RSASignature.java:209)
at sun.security.rsa.RSASignature.engineVerify(RSASignature.java:174)
... 10 more
但是这些问题并不总是出现,只是用一种用于签名的证书。我会解释得更好。 我有两个证书(存储到智能卡),第一个正常工作;我创建了p7s,然后验证正确,但第二个证书允许我创建p7s文件,但是当我验证它时,它会返回SignatureException。我认为p7s文件是错误的,但是我用别人的应用程序对它进行了测试,看起来是正确的。此外,这个文件被发送抛出web服务,它返回,它没事!
有关更多信息,如果使用不同工具(.net和capicom)和相同证书创建p7s文件,则可以正确验证。
我已经寻找解决方案,但没有。在类似的情况下,我发现了相同的例外情况,但是提出的解决方案对我来说都不起作用,或者它没有出现。
任何建议找到解决方案将非常感激。
我试用这两种格式,结果是一样的。如果问题存在,则不会根据已使用的证书进行更改。 Thaks为您的意见 – Marcos 2011-03-03 17:53:13