Java X509CertificateHolder构造函数不接受X509CertificateStructure作为参数
我对java编程还很陌生,有些东西我还很费劲。我正在尝试通过一些定制实现BouncyCastleCertUtils。但是,X509CertificateHolder构造函数接受X509CertificateStructure作为参数。编译器一直建议我将生成结构的函数的返回类型更改为byte[]。在本例中,拒绝将X509CertificateStructure作为参数。这在正常情况下不应该发生,因为X509CertificateHolder有一个接受X509CertificateStructure的构造函数 下面是发生错误的代码Java X509CertificateHolder构造函数不接受X509CertificateStructure作为参数,java,javascript,certificate,x509certificate,bouncycastle,Java,Javascript,Certificate,X509certificate,Bouncycastle,我对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();
}
这看起来更像是您的编译器建议更改的内容。如果问题太简单,我需要阅读一些工作人员的资料,请回答。我很乐意提出任何建议