螺纹“中的异常;主&x201D;java.lang.VerifyError:JVMVRFY012堆栈形状不一致;class=org/bouncycastle/openssl/PEMReader$ecdsakeyparser,

螺纹“中的异常;主&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

我使用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, 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
的子类,因此它应该是可分配的,我不知道验证者为什么认为它不是。