充气城堡和 'New' ISignatureFactory
Bouncy Castle & the 'New' ISignatureFactory
我把 'New' 加在吓人的引号中,因为我不确定接口是什么时候实现的(旧的 SetSignatureAlgorithm()
方法已弃用)。
我正在遵循此代码:
https://github.com/rlipscombe/bouncy-castle-csharp/blob/master/CreateCertificate/Program.cs
因为它是大约八年前写的,所以它使用现已弃用的 SetSignatureAlgorithm()
方法。但是我 运行 在使用新的 ISignatureFactory
API:
时遇到了问题
ISignatureFactory signatureFactory = new Asn1SignatureFactory(PkcsObjectIdentifiers.Sha256WithRsaEncryption.ToString(), subjectKeyPair.Private, random);
var certificate = certificateGenerator.Generate(signatureFactory);
当我使用这种新语法时,由先前创建的根 CA 签署的新证书出现损坏:
奇怪的是,根 CA 本身创建得很好。只有子证书失败了。当我切换回已弃用的语法时,一切都会顺利进行。
如何使用新的 ISignatureFactory
语法成功签署子证书?
好的,知道了。我使用了错误的私钥:
ISignatureFactory signatureFactory = new Asn1SignatureFactory(PkcsObjectIdentifiers.Sha256WithRsaEncryption.ToString(), subjectKeyPair.Private, random);
我正在用自己的私钥签署新证书。这就是为什么它适用于根 CA 而不是子 CA。
我将 subjectKeyPair
更改为 issuerKeyPair
并且一切正常。
我把 'New' 加在吓人的引号中,因为我不确定接口是什么时候实现的(旧的 SetSignatureAlgorithm()
方法已弃用)。
我正在遵循此代码:
https://github.com/rlipscombe/bouncy-castle-csharp/blob/master/CreateCertificate/Program.cs
因为它是大约八年前写的,所以它使用现已弃用的 SetSignatureAlgorithm()
方法。但是我 运行 在使用新的 ISignatureFactory
API:
ISignatureFactory signatureFactory = new Asn1SignatureFactory(PkcsObjectIdentifiers.Sha256WithRsaEncryption.ToString(), subjectKeyPair.Private, random);
var certificate = certificateGenerator.Generate(signatureFactory);
当我使用这种新语法时,由先前创建的根 CA 签署的新证书出现损坏:
奇怪的是,根 CA 本身创建得很好。只有子证书失败了。当我切换回已弃用的语法时,一切都会顺利进行。
如何使用新的 ISignatureFactory
语法成功签署子证书?
好的,知道了。我使用了错误的私钥:
ISignatureFactory signatureFactory = new Asn1SignatureFactory(PkcsObjectIdentifiers.Sha256WithRsaEncryption.ToString(), subjectKeyPair.Private, random);
我正在用自己的私钥签署新证书。这就是为什么它适用于根 CA 而不是子 CA。
我将 subjectKeyPair
更改为 issuerKeyPair
并且一切正常。