螺纹“中的异常;主&x201D;java.lang.VerifyError:JVMVRFY012堆栈形状不一致;class=org/bouncycastle/openssl/PEMReader$ecdsakeyparser,
我使用bcprov-jdk15-146.jar作为PEMParser.java类和oracle java 7 但在第一线 PEMReader pvtPemReader=getPvtPemReader(pvtFileReader) 示例代码:螺纹“中的异常;主&x201D;java.lang.VerifyError:JVMVRFY012堆栈形状不一致;class=org/bouncycastle/openssl/PEMReader$ecdsakeyparser,,java,Java,我使用bcprov-jdk15-146.jar作为PEMParser.java类和oracle java 7 但在第一线 PEMReader pvtPemReader=getPvtPemReader(pvtFileReader) 示例代码: public static String signData(String pvtKeyFileName, String dataToSign, String signatureAlg) throws IOException, NoSuchAl
public static String signData(String pvtKeyFileName, String dataToSign, String signatureAlg)
throws IOException, NoSuchAlgorithmException, NoSuchProviderException, InvalidKeyException, SignatureException
{
PrivateKey privateKey = getPrivateKey(pvtKeyFileName);
Signature signature = Signature.getInstance(signatureAlg, "BC");
signature.initSign(privateKey);
signature.update(dataToSign.getBytes());
byte signatureBytes[] = signature.sign();
return byteArrayToHexString(signatureBytes);
}
private static PrivateKey getPrivateKey(String pvtKeyFileName)
throws IOException
{
FileReader pvtFileReader = getPVTKeyFile(new File(pvtKeyFileName));
PEMReader pvtPemReader = getPvtPemReader(pvtFileReader);
KeyPair keyPair = (KeyPair)pvtPemReader.readObject();
pvtFileReader.close();
pvtFileReader = null;
pvtPemReader.close();
pvtPemReader = null;
return keyPair.getPrivate();
}
我得到了以下例外:
exception thrown by servlet Genlink: java.lang.VerifyError: JVMVRFY012 stack shape inconsistent; class=org/bouncycastle/openssl/PEMReader$ECDSAKeyPairParser, method=parseObject(Lorg/bouncycastle/util/io/pem/PemObject;)Ljava/lang/Object;, pc=26; Type Mismatch, argument 0 in signature org/bouncycastle/asn1/x509/AlgorithmIdentifier.<init>:(Lorg/bouncycastle/asn1/DERObjectIdentifier;Lorg/bouncycastle/asn1/DEREncodable;)V does not match
Exception Details:
Location:
org/bouncycastle/openssl/PEMReader$ECDSAKeyPairParser.parseObject(Lorg/bouncycastle/util/io/pem/PemObject;)Ljava/lang/Object; @26: JBinvokespecial
Reason:
Type 'org/bouncycastle/asn1/ASN1ObjectIdentifier' (current frame, stack[2]) is not assignable to 'org/bouncycastle/asn1/DERObjectIdentifier'
Current Frame:
bci: @26
flags: { }
locals: { 'org/bouncycastle/openssl/PEMReader$ECDSAKeyPairParser', 'org/bouncycastle/util/io/pem/PemObject', 'org/bouncycastle/asn1/ASN1Sequence', 'org/bouncycastle/asn1/sec/ECPrivateKeyStructure' }
stack: { 'uninitialized', 'uninitialized', 'org/bouncycastle/asn1/ASN1ObjectIdentifier' }
Exception Handler Table:
bci [0, 124] => handler: 125
bci [0, 124] => handler: 128
at org.bouncycastle.openssl.PEMReader.<init>(Unknown Source)
at org.bouncycastle.openssl.PEMReader.<init>(Unknown Source)
at org.bouncycastle.openssl.PEMReader.<init>(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1235)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:779)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:143)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:96)
at my.com.cgu.genlink.common.filter.ParamFilter.doFilter(ParamFilter.java:33)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:197)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:90)
at my.com.cgu.genlink.common.filter.SessionTimeOutFilter.doFilter(SessionTimeOutFilter.java:161)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:197)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:90)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:969)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1109)
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:4219)
at com.ibm.ws.webcontainer.webapp.WebAppImpl.handleRequest(WebAppImpl.java:2208)
at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:304)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1030)
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1817)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:382)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:465)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:532)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:318)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:289)
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1909)
servlet Genlink引发异常:java.lang.VerifyError:JVMVRFY012堆栈形状不一致;class=org/bouncycastle/openssl/PEMReader$ecdsakeyparser,method=parseObject(Lorg/bouncycastle/util/io/pem/PemObject;)Ljava/lang/Object;,pc=26;类型不匹配,签名组织/bouncycastle/asn1/x509/AlgorithmIdentifier中的参数0:(Lorg/bouncycastle/asn1/DERObjectIdentifier;Lorg/bouncycastle/asn1/DEREncodable;)V不匹配
例外情况详情:
地点:
org/bouncycastle/openssl/PEMReader$ecdsakeyparser.parseObject(Lorg/bouncycastle/util/io/pem/PemObject;)Ljava/lang/Object@26:特别
原因:
类型“org/bouncycastle/asn1/ASN1ObjectIdentifier”(当前帧,堆栈[2])不可分配给“org/bouncycastle/asn1/DERObjectIdentifier”
当前帧:
密件抄送:@26
标志:{}
本地人:{'org/bouncycastle/openssl/PEMReader$ecdsakeyparser','org/bouncycastle/util/io/pem/PemObject','org/bouncycastle/asn1/asn1 sequence','org/bouncycastle/asn1/sec/ECPrivateKeyStructure'}
堆栈:{'uninitialized','uninitialized','org/bouncycastle/asn1/ASN1ObjectIdentifier'}
异常处理程序表:
bci[01224]=>处理程序:125
bci[01224]=>处理程序:128
位于org.bouncycastle.openssl.PEMReader。(未知来源)
位于org.bouncycastle.openssl.PEMReader。(未知来源)
位于org.bouncycastle.openssl.PEMReader。(未知来源)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
位于com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1235)
位于com.ibm.ws.webcontainer.servlet.ServletWrapper.HandlerRequest(ServletWrapper.java:779)
位于com.ibm.ws.webcontainer.servlet.ServletWrapper.HandlerRequest(ServletWrapper.java:478)
位于com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.HandlerRequest(ServletWrapperImpl.java:178)
位于com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:143)
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:96)
在my.com.cgu.genlink.common.filter.ParamFilter.doFilter上(ParamFilter.java:33)
位于com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:197)
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:90)
在my.com.cgu.genlink.common.filter.SessionTimeOutFilter.doFilter(SessionTimeOutFilter.java:161)上
位于com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:197)
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:90)
在com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:969)
在com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters上(WebAppFilterManager.java:1109)
位于com.ibm.ws.webcontainer.webapp.webapp.handleRequest(webapp.java:4219)
位于com.ibm.ws.webcontainer.webapp.WebAppImpl.handleRequest(WebAppImpl.java:2208)
位于com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:304)
位于com.ibm.ws.webcontainer.webcontainer.handleRequest(webcontainer.java:1030)
位于com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1817)
位于com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:382)
位于com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:465)
位于com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:532)
在com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:318)上
位于com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:289)
位于com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
位于com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
在com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted上(AioReadCompletionListener.java:175)
位于com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
位于com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
位于com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
位于com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
位于com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
位于com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
位于com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1909)
根据您的经验,您应该知道如何正确格式化代码,Bouncy 1.46已经很老了(但j7也是如此),您的“示例”代码与stacktrace不一致,而且在我看来,errorcode更像IBM而不是Sun/Oracle,但是在核心
org.bouncycastle.asn1.ASN1ObjectIdentifier
是org.bouncycastle.asn1.DERObjectIdentifier
的一个子类,所以它应该是可分配的,我不知道为什么验证者认为它不是。根据您的经验,您应该知道如何正确地格式化代码,Bouncy1.46已经过时了(但j7也是如此),您的“示例”代码与stacktrace不一致,我认为错误代码更像IBM而不是Sun/Oracle,但在核心org.bouncycastle.asn1.ASN1ObjectIdentifier
是org.bouncycastle.asn1.DERObjectIdentifier
的子类,因此它应该是可分配的,我不知道验证者为什么认为它不是。