diff options
Diffstat (limited to 'crypto/src/asn1/crmf/CertificateRequestMessageBuilder.cs')
-rw-r--r-- | crypto/src/asn1/crmf/CertificateRequestMessageBuilder.cs | 261 |
1 files changed, 0 insertions, 261 deletions
diff --git a/crypto/src/asn1/crmf/CertificateRequestMessageBuilder.cs b/crypto/src/asn1/crmf/CertificateRequestMessageBuilder.cs deleted file mode 100644 index df604f4f5..000000000 --- a/crypto/src/asn1/crmf/CertificateRequestMessageBuilder.cs +++ /dev/null @@ -1,261 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Security.Cryptography.X509Certificates; -using System.Text; -using Org.BouncyCastle.Asn1.X509; -using Org.BouncyCastle.Crypto; -using Org.BouncyCastle.Crypto.Operators; -using Org.BouncyCastle.Math; - -namespace Org.BouncyCastle.Asn1.Crmf -{ - public class CertificateRequestMessageBuilder - { - private readonly BigInteger _certReqId; - private X509ExtensionsGenerator _extGenerator; - private CertTemplateBuilder _templateBuilder; - private ArrayList _controls= new ArrayList(); - private ISignatureFactory _popSigner; - private PkMacFactory _pkMacBuilder; - private char[] _password; - private GeneralName _sender; - private int _popoType = ProofOfPossession.TYPE_KEY_ENCIPHERMENT; - private PopoPrivKey _popoPrivKey; - private Asn1Null _popRaVerified; - private PKMacValue _agreeMac; - - public CertificateRequestMessageBuilder(BigInteger certReqId) - { - this._certReqId = certReqId; - this._extGenerator = new X509ExtensionsGenerator(); - this._templateBuilder = new CertTemplateBuilder(); - } - - public CertificateRequestMessageBuilder SetPublicKey(SubjectPublicKeyInfo publicKeyInfo) - { - if (publicKeyInfo != null) - { - _templateBuilder.SetPublicKey(publicKeyInfo); - } - - return this; - } - - - public CertificateRequestMessageBuilder SetIssuer(X509Name issuer) - { - if (issuer != null) - { - _templateBuilder.SetIssuer(issuer); - } - - return this; - } - - public CertificateRequestMessageBuilder SetSubject(X509Name subject) - { - if (subject != null) - { - _templateBuilder.SetSubject(subject); - } - - return this; - } - - public CertificateRequestMessageBuilder SetSerialNumber(BigInteger serialNumber) - { - if (serialNumber != null) - { - _templateBuilder.SetSerialNumber(new DerInteger(serialNumber)); - } - - return this; - } - - public CertificateRequestMessageBuilder SetValidity(Time notBefore, Time notAfter) - { - _templateBuilder.SetValidity(new OptionalValidity(notBefore, notAfter)); - return this; - } - - public CertificateRequestMessageBuilder AddExtension(DerObjectIdentifier oid, bool critical, - Asn1Encodable value) - { - _extGenerator.AddExtension(oid,critical, value); - return this; - } - - public CertificateRequestMessageBuilder AddExtension(DerObjectIdentifier oid, bool critical, - byte[] value) - { - _extGenerator.AddExtension(oid, critical, value); - return this; - } - - public CertificateRequestMessageBuilder SetProofOfPossessionSignKeySigner(ISignatureFactory popoSignatureFactory) - { - if (_popoPrivKey != null || _popRaVerified != null || _agreeMac != null) - { - throw new InvalidOperationException("only one proof of possession is allowed."); - } - - this._popoType = ProofOfPossession.TYPE_KEY_ENCIPHERMENT; - return this; - } - - public CertificateRequestMessageBuilder SetProofOfPossessionSubsequentMessage(SubsequentMessage msg) - { - if (_popoPrivKey != null || _popRaVerified != null || _agreeMac != null) - { - throw new InvalidOperationException("only one proof of possession is allowed."); - } - - this._popoType = ProofOfPossession.TYPE_KEY_ENCIPHERMENT; - this._popoPrivKey = new PopoPrivKey(msg); - - - return this; - } - - - public CertificateRequestMessageBuilder SetProofOfPossessionSubsequentMessage(int type, SubsequentMessage msg) - { - if (_popoPrivKey != null || _popRaVerified != null || _agreeMac != null) - { - throw new InvalidOperationException("only one proof of possession is allowed."); - } - - if (type != ProofOfPossession.TYPE_KEY_ENCIPHERMENT && type != ProofOfPossession.TYPE_KEY_AGREEMENT) - { - throw new ArgumentException("type must be ProofOfPossession.TYPE_KEY_ENCIPHERMENT || ProofOfPossession.TYPE_KEY_AGREEMENT"); - } - - this._popoType = type; - this._popoPrivKey = new PopoPrivKey(msg); - return this; - } - - public CertificateRequestMessageBuilder SetProofOfPossessionAgreeMac(PKMacValue macValue) - { - if (_popSigner != null || _popRaVerified != null || _popoPrivKey != null) - { - throw new InvalidOperationException("only one proof of possession allowed"); - } - - this._agreeMac = macValue; - return this; - } - - public CertificateRequestMessageBuilder SetProofOfPossessionRaVerified() - { - if (_popSigner != null || _popoPrivKey != null) - { - throw new InvalidOperationException("only one proof of possession allowed"); - } - - this._popRaVerified = DerNull.Instance; - - return this; - } - - public CertificateRequestMessageBuilder SetAuthInfoPKMAC(PkMacFactory pkmacFactory, char[] password) - { - this._pkMacBuilder = pkmacFactory; - this._password = password; - - return this; - } - - public CertificateRequestMessageBuilder SetAuthInfoSender(X509Name sender) - { - return SetAuthInfoSender(new GeneralName(sender)); - } - - public CertificateRequestMessageBuilder SetAuthInfoSender(GeneralName sender) - { - this._sender = sender; - return this; - } - - public CertificateRequestMessage Build() - { - Asn1EncodableVector v = new Asn1EncodableVector(); - - v.Add(new DerInteger(this._certReqId)); - - if (!this._extGenerator.IsEmpty) - { - this._templateBuilder.SetExtensions(_extGenerator.Generate()); - } - - v.Add(_templateBuilder.Build()); - - if (_controls.Count>0) - { - Asn1EncodableVector controlV = new Asn1EncodableVector(); - - foreach (Object item in _controls) - { - IControl control = (IControl) item; - controlV.Add(new AttributeTypeAndValue(control.Type, control.Value)); - } - - v.Add(new DerSequence(controlV)); - } - - CertRequest request = CertRequest.GetInstance(new DerSequence(v)); - - v = new Asn1EncodableVector(); - - v.Add(request); - - if (_popSigner != null) - { - CertTemplate template = request.CertTemplate; - - if (template.Subject == null || template.PublicKey == null) - { - SubjectPublicKeyInfo pubKeyInfo = request.CertTemplate.PublicKey; - - ProofOfPossessionSigningKeyBuilder builder = new ProofOfPossessionSigningKeyBuilder(pubKeyInfo); - - if (_sender != null) - { - builder.setSender(_sender); - } - else - { - // PkMa pkmacGenerator = new PKMACValueGenerator(_pkmacBuilder); - - builder.setPublicKeyMac(_pkMacBuilder, _password); - } - - v.Add(new ProofOfPossession(builder.build(_popSigner))); - } - else - { - ProofOfPossessionSigningKeyBuilder builder = new ProofOfPossessionSigningKeyBuilder(request); - - v.Add(new ProofOfPossession(builder.build(_popSigner))); - } - } - else if (_popoPrivKey != null) - { - v.Add(new ProofOfPossession(_popoType, _popoPrivKey)); - } - else if (_agreeMac != null) - { - v.Add(new ProofOfPossession(ProofOfPossession.TYPE_KEY_AGREEMENT, - PopoPrivKey.GetInstance(new DerTaggedObject(false, PopoPrivKey.agreeMAC, _agreeMac),true ))); - - } - else if (_popRaVerified != null) - { - v.Add(new ProofOfPossession()); - } - - return new CertificateRequestMessage(CertReqMsg.GetInstance(new DerSequence(v))); - } - } -} |