From 17484948ae42b7d5fd75a4e96b31a8bb0cb47825 Mon Sep 17 00:00:00 2001 From: Peter Dettman Date: Tue, 7 Aug 2018 20:17:18 +0700 Subject: Refactoring around Pkcs10CertificationRequest - see https://github.com/bcgit/bc-csharp/pull/123 --- crypto/src/pkcs/Pkcs10CertificationRequest.cs | 56 ++++++++++++++------------- 1 file changed, 29 insertions(+), 27 deletions(-) (limited to 'crypto/src/pkcs') diff --git a/crypto/src/pkcs/Pkcs10CertificationRequest.cs b/crypto/src/pkcs/Pkcs10CertificationRequest.cs index 24dc9b1cc..34bda3815 100644 --- a/crypto/src/pkcs/Pkcs10CertificationRequest.cs +++ b/crypto/src/pkcs/Pkcs10CertificationRequest.cs @@ -210,71 +210,73 @@ namespace Org.BouncyCastle.Pkcs /// Public Key to be included in cert reqest. /// ASN1Set of Attributes. /// Matching Private key for nominated (above) public key to be used to sign the request. - [Obsolete("Use constructor with an ISignatureFactory")] public Pkcs10CertificationRequest( string signatureAlgorithm, X509Name subject, AsymmetricKeyParameter publicKey, Asn1Set attributes, AsymmetricKeyParameter signingKey) + : this(new Asn1SignatureFactory(signatureAlgorithm, signingKey), subject, publicKey, attributes) { - if (signatureAlgorithm == null) - throw new ArgumentNullException("signatureAlgorithm"); - if (subject == null) - throw new ArgumentNullException("subject"); - if (publicKey == null) - throw new ArgumentNullException("publicKey"); - if (publicKey.IsPrivate) - throw new ArgumentException("expected public key", "publicKey"); - if (!signingKey.IsPrivate) - throw new ArgumentException("key for signing must be private", "signingKey"); - - init(new Asn1SignatureFactory(signatureAlgorithm, signingKey), subject, publicKey, attributes, signingKey); } /// /// Instantiate a Pkcs10CertificationRequest object with the necessary credentials. /// - ///The factory for signature calculators to sign the PKCS#10 request with. + ///The factory for signature calculators to sign the PKCS#10 request with. /// X509Name of subject eg OU="My unit." O="My Organisatioin" C="au" /// Public Key to be included in cert reqest. /// ASN1Set of Attributes. - /// Matching Private key for nominated (above) public key to be used to sign the request. + /// Ignored. + [Obsolete("Use constructor without 'signingKey' parameter (ignored here)")] public Pkcs10CertificationRequest( - ISignatureFactory signatureCalculatorFactory, + ISignatureFactory signatureFactory, X509Name subject, AsymmetricKeyParameter publicKey, Asn1Set attributes, AsymmetricKeyParameter signingKey) + : this(signatureFactory, subject, publicKey, attributes) { - if (signatureCalculatorFactory == null) - throw new ArgumentNullException("signatureCalculator"); + } + + /// + /// Instantiate a Pkcs10CertificationRequest object with the necessary credentials. + /// + ///The factory for signature calculators to sign the PKCS#10 request with. + /// X509Name of subject eg OU="My unit." O="My Organisatioin" C="au" + /// Public Key to be included in cert reqest. + /// ASN1Set of Attributes. + public Pkcs10CertificationRequest( + ISignatureFactory signatureFactory, + X509Name subject, + AsymmetricKeyParameter publicKey, + Asn1Set attributes) + { + if (signatureFactory == null) + throw new ArgumentNullException("signatureFactory"); if (subject == null) throw new ArgumentNullException("subject"); if (publicKey == null) throw new ArgumentNullException("publicKey"); if (publicKey.IsPrivate) throw new ArgumentException("expected public key", "publicKey"); - if (!signingKey.IsPrivate) - throw new ArgumentException("key for signing must be private", "signingKey"); - init(signatureCalculatorFactory, subject, publicKey, attributes, signingKey); + Init(signatureFactory, subject, publicKey, attributes); } - private void init( - ISignatureFactory signatureCalculator, + private void Init( + ISignatureFactory signatureFactory, X509Name subject, AsymmetricKeyParameter publicKey, - Asn1Set attributes, - AsymmetricKeyParameter signingKey) + Asn1Set attributes) { - this.sigAlgId = (AlgorithmIdentifier)signatureCalculator.AlgorithmDetails; + this.sigAlgId = (AlgorithmIdentifier)signatureFactory.AlgorithmDetails; SubjectPublicKeyInfo pubInfo = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(publicKey); this.reqInfo = new CertificationRequestInfo(subject, pubInfo, attributes); - IStreamCalculator streamCalculator = signatureCalculator.CreateCalculator(); + IStreamCalculator streamCalculator = signatureFactory.CreateCalculator(); byte[] reqInfoData = reqInfo.GetDerEncoded(); -- cgit 1.4.1