Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java X509CertificateHolder构造函数不接受X509CertificateStructure作为参数_Java_Javascript_Certificate_X509certificate_Bouncycastle - Fatal编程技术网

Java X509CertificateHolder构造函数不接受X509CertificateStructure作为参数

Java X509CertificateHolder构造函数不接受X509CertificateStructure作为参数,java,javascript,certificate,x509certificate,bouncycastle,Java,Javascript,Certificate,X509certificate,Bouncycastle,我对java编程还很陌生,有些东西我还很费劲。我正在尝试通过一些定制实现BouncyCastleCertUtils。但是,X509CertificateHolder构造函数接受X509CertificateStructure作为参数。编译器一直建议我将生成结构的函数的返回类型更改为byte[]。在本例中,拒绝将X509CertificateStructure作为参数。这在正常情况下不应该发生,因为X509CertificateHolder有一个接受X509CertificateStructure

我对java编程还很陌生,有些东西我还很费劲。我正在尝试通过一些定制实现BouncyCastleCertUtils。但是,X509CertificateHolder构造函数接受X509CertificateStructure作为参数。编译器一直建议我将生成结构的函数的返回类型更改为byte[]。在本例中,拒绝将X509CertificateStructure作为参数。这在正常情况下不应该发生,因为X509CertificateHolder有一个接受X509CertificateStructure的构造函数

下面是发生错误的代码

 static X509CertificateHolder  generateFullCert(ContentSigner signer, TBSCertificateStructure tbsCert)

 {
    try
     {


         return  new X509CertificateHolder((generateStructure(tbsCert, signer.getAlgorithmIdentifier(), generateSig(signer, tbsCert)))); // the error occurs here
     }

     catch (IOException e)

     {

         throw new IllegalStateException("cannot produce certificate signature");

     }

   }

 private static X509CertificateStructure    generateStructure(TBSCertificateStructure tbsCert, AlgorithmIdentifier sigAlgId, byte[] signature)


 {


     ASN1EncodableVector v = new ASN1EncodableVector();



     v.add(tbsCert);

     v.add(sigAlgId);
     v.add(new DERBitString(signature));



     return X509CertificateStructure.getInstance(new DERSequence(v));

 }

是否有人知道出了什么问题。

看起来您在项目中使用的是另一个版本的bouncycastle jars,而不是1.46版本。
例如,bcpkix-jdk14-1.50。jar仅为
X509CertificateHolder
提供以下构造函数:

/**
 * Create a X509CertificateHolder from the passed in bytes.
 *
 * @param certEncoding BER/DER encoding of the certificate.
 * @throws IOException in the event of corrupted data, or an incorrect structure.
 */
public X509CertificateHolder(byte[] certEncoding)
    throws IOException
{
    this(parseBytes(certEncoding));
}

/**
 * Create a X509CertificateHolder from the passed in ASN.1 structure.
 *
 * @param x509Certificate an ASN.1 Certificate structure.
 */
public X509CertificateHolder(Certificate x509Certificate)
{
    this.x509Certificate = x509Certificate;
    this.extensions = x509Certificate.getTBSCertificate().getExtensions();
}

这看起来更像是您的编译器建议更改的内容。

如果问题太简单,我需要阅读一些工作人员的资料,请回答。我很乐意提出任何建议