public GeneralSubtree(GeneralName baseName, BigInteger minimum, BigInteger maximum)
 {
     this.baseName = baseName;
     if (minimum != null)
     {
         this.minimum = new DerInteger(minimum);
     }
     if (maximum != null)
     {
         this.maximum = new DerInteger(maximum);
     }
 }
Example #2
0
        /// <summary>
        /// Encode AuthorityInformationAccessUri to a form required by the extension.
        /// </summary>
        /// <returns>DER encoded sequence or null.</returns>
        protected DerSequence GetAuthorityInfoAccessEncoded()
        {
            if (AuthorityInformationAccessUri == null || !AuthorityInformationAccessUri.IsAbsoluteUri)
            {
                return(null);
            }

            var location = new GeneralName(GeneralName.UniformResourceIdentifier, new DerIA5String(AuthorityInformationAccessUri.AbsoluteUri));
            var issuers  = new AccessDescription(AccessDescription.IdADCAIssuers, location);

            return(new DerSequence(new Asn1EncodableVector(issuers)));
        }
Example #3
0
 private void checkValues(
     ProcurationSyntax procuration,
     string country,
     DirectoryString typeOfSubstitution,
     GeneralName thirdPerson,
     IssuerSerial certRef)
 {
     checkOptionalField("country", country, procuration.Country);
     checkOptionalField("typeOfSubstitution", typeOfSubstitution, procuration.TypeOfSubstitution);
     checkOptionalField("thirdPerson", thirdPerson, procuration.ThirdPerson);
     checkOptionalField("certRef", certRef, procuration.CertRef);
 }
Example #4
0
        private PkiHeader(Asn1Sequence seq)
        {
            pvno      = DerInteger.GetInstance(seq[0]);
            sender    = GeneralName.GetInstance(seq[1]);
            recipient = GeneralName.GetInstance(seq[2]);

            for (int pos = 3; pos < seq.Count; ++pos)
            {
                Asn1TaggedObject tObj = (Asn1TaggedObject)seq[pos];

                switch (tObj.TagNo)
                {
                case 0:
                    messageTime = DerGeneralizedTime.GetInstance(tObj, true);
                    break;

                case 1:
                    protectionAlg = AlgorithmIdentifier.GetInstance(tObj, true);
                    break;

                case 2:
                    senderKID = Asn1OctetString.GetInstance(tObj, true);
                    break;

                case 3:
                    recipKID = Asn1OctetString.GetInstance(tObj, true);
                    break;

                case 4:
                    transactionID = Asn1OctetString.GetInstance(tObj, true);
                    break;

                case 5:
                    senderNonce = Asn1OctetString.GetInstance(tObj, true);
                    break;

                case 6:
                    recipNonce = Asn1OctetString.GetInstance(tObj, true);
                    break;

                case 7:
                    freeText = PkiFreeText.GetInstance(tObj, true);
                    break;

                case 8:
                    generalInfo = Asn1Sequence.GetInstance(tObj, true);
                    break;

                default:
                    throw new ArgumentException("unknown tag number: " + tObj.TagNo, "seq");
                }
            }
        }
Example #5
0
 /**
  * Set the requestor name to the passed in X509Principal
  *
  * @param requestorName a X509Principal representing the requestor name.
  */
 public void SetRequestorName(
     X509Name requestorName)
 {
     try
     {
         this.requestorName = new GeneralName(GeneralName.DirectoryName, requestorName);
     }
     catch (Exception e)
     {
         throw new ArgumentException("cannot encode principal", e);
     }
 }
Example #6
0
        public X509CertBuilder(string[] validWithDomainNames, string issuer, CertStrength certStrength)
        {
            _random   = new SecureRandom(_randomGenerator);
            _issuer   = new X509Name(issuer);
            _strength = (int)certStrength;

            _generalNames = new GeneralName[validWithDomainNames.Length];
            for (int t = 0; t < validWithDomainNames.Length; t++)
            {
                _generalNames[t] = new GeneralName(new X509Name(validWithDomainNames[t]));
            }
        }
Example #7
0
 private bool IsValidParameters(GeneralName name, GeneralName homeArena)
 {
     if (name == null)
     {
         throw new ArgumentNullException($"{nameof(name)} cannot be null");
     }
     if (homeArena == null)
     {
         throw new ArgumentNullException($"{nameof(homeArena)} cannot be null");
     }
     return(true);
 }
Example #8
0
        private AuthorityKeyIdentifier CreateAuthorityKeyId(
            SubjectPublicKeyInfo info,
            X509Name name,
            int sNumber)
        {
            GeneralName genName = new GeneralName(name);

            return(new AuthorityKeyIdentifier(
                       info,
                       GeneralNames.GetInstance(new DerSequence(genName)),
                       BigInteger.ValueOf(sNumber)));
        }
 public void SetRequestorName(X509Name requestorName)
 {
     //IL_0016: Unknown result type (might be due to invalid IL or missing references)
     try
     {
         this.requestorName = new GeneralName(4, requestorName);
     }
     catch (global::System.Exception ex)
     {
         throw new ArgumentException("cannot encode principal", ex);
     }
 }
Example #10
0
        private PkiHeader(Asn1Sequence seq)
        {
            //IL_012d: Unknown result type (might be due to invalid IL or missing references)
            pvno      = DerInteger.GetInstance(seq[0]);
            sender    = GeneralName.GetInstance(seq[1]);
            recipient = GeneralName.GetInstance(seq[2]);
            for (int i = 3; i < seq.Count; i++)
            {
                Asn1TaggedObject asn1TaggedObject = (Asn1TaggedObject)seq[i];
                switch (asn1TaggedObject.TagNo)
                {
                case 0:
                    messageTime = DerGeneralizedTime.GetInstance(asn1TaggedObject, isExplicit: true);
                    break;

                case 1:
                    protectionAlg = AlgorithmIdentifier.GetInstance(asn1TaggedObject, explicitly: true);
                    break;

                case 2:
                    senderKID = Asn1OctetString.GetInstance(asn1TaggedObject, isExplicit: true);
                    break;

                case 3:
                    recipKID = Asn1OctetString.GetInstance(asn1TaggedObject, isExplicit: true);
                    break;

                case 4:
                    transactionID = Asn1OctetString.GetInstance(asn1TaggedObject, isExplicit: true);
                    break;

                case 5:
                    senderNonce = Asn1OctetString.GetInstance(asn1TaggedObject, isExplicit: true);
                    break;

                case 6:
                    recipNonce = Asn1OctetString.GetInstance(asn1TaggedObject, isExplicit: true);
                    break;

                case 7:
                    freeText = PkiFreeText.GetInstance(asn1TaggedObject, isExplicit: true);
                    break;

                case 8:
                    generalInfo = Asn1Sequence.GetInstance(asn1TaggedObject, explicitly: true);
                    break;

                default:
                    throw new ArgumentException(string.Concat((object)"unknown tag number: ", (object)asn1TaggedObject.TagNo), "seq");
                }
            }
        }
Example #11
0
        public override ValidationResult Validate(object value, CultureInfo cultureInfo)
        {
            GeneralName generalName;

            if (GeneralName.TryParse(value.ToString(), out generalName) && !ServiceLocator.Instance.TeamService.NameExist(generalName.Value))
            {
                return(new ValidationResult(true, ""));
            }
            else
            {
                return(new ValidationResult(false, "Not a valid Name"));
            }
        }
Example #12
0
        public override ValidationResult Validate(object value, CultureInfo cultureInfo)
        {
            GeneralName generalName;

            if (GeneralName.TryParse(value.ToString(), out generalName))
            {
                return(new ValidationResult(true, ""));
            }
            else
            {
                return(new ValidationResult(false, "Not a valid Name"));
            }
        }
Example #13
0
 public TstInfo(DerObjectIdentifier tsaPolicyId, MessageImprint messageImprint, DerInteger serialNumber, DerGeneralizedTime genTime, Accuracy accuracy, DerBoolean ordering, DerInteger nonce, GeneralName tsa, X509Extensions extensions)
 {
     version             = new DerInteger(1);
     this.tsaPolicyId    = tsaPolicyId;
     this.messageImprint = messageImprint;
     this.serialNumber   = serialNumber;
     this.genTime        = genTime;
     this.accuracy       = accuracy;
     this.ordering       = ordering;
     this.nonce          = nonce;
     this.tsa            = tsa;
     this.extensions     = extensions;
 }
Example #14
0
        public X509Certificate2 MakeCertificate(string password, string issuedToDomainName, int validYears)
        {
            _certificateGenerator.Reset();
            _certificateGenerator.SetSignatureAlgorithm(SignatureAlgorithm);
            var serialNumber = BigIntegers.CreateRandomInRange(BigInteger.One, BigInteger.ValueOf(Int64.MaxValue), _random);

            _certificateGenerator.SetSerialNumber(serialNumber);

            _certificateGenerator.SetSubjectDN(new X509Name(issuedToDomainName));
            _certificateGenerator.SetIssuerDN(_issuer);



            var subjectAlternativeNames = new Asn1Encodable[_generalNames.Length + 1];

            // first subject alternative name is the same as the subject
            subjectAlternativeNames[0] = new GeneralName(new X509Name(issuedToDomainName));
            for (int t = 1; t <= _generalNames.Length; t++)
            {
                subjectAlternativeNames[t] = _generalNames[t - 1];
            }
            var subjectAlternativeNamesExtension = new DerSequence(subjectAlternativeNames);

            _certificateGenerator.AddExtension(X509Extensions.SubjectAlternativeName.Id, false, subjectAlternativeNamesExtension);

            _certificateGenerator.SetNotBefore(DateTime.UtcNow.Date);
            _certificateGenerator.SetNotAfter(DateTime.UtcNow.Date.AddYears(validYears));
            var keyGenerationParameters = new KeyGenerationParameters(_random, _strength);

            var keyPairGenerator = new RsaKeyPairGenerator();

            keyPairGenerator.Init(keyGenerationParameters);
            var subjectKeyPair = keyPairGenerator.GenerateKeyPair();

            _certificateGenerator.SetPublicKey(subjectKeyPair.Public);
            var issuerKeyPair = subjectKeyPair;
            var certificate   = _certificateGenerator.Generate(issuerKeyPair.Private, _random);

            var    store            = new Pkcs12Store();
            string friendlyName     = certificate.SubjectDN.ToString();
            var    certificateEntry = new X509CertificateEntry(certificate);

            store.SetCertificateEntry(friendlyName, certificateEntry);
            store.SetKeyEntry(friendlyName, new AsymmetricKeyEntry(subjectKeyPair.Private), new[] { certificateEntry });

            using (var stream = new MemoryStream())
            {
                store.Save(stream, password.ToCharArray(), _random);
                return(new X509Certificate2(stream.ToArray(), password, X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable));
            }
        }
Example #15
0
        /**
         * Constructor from Asn1Sequence.
         * <p/>
         * The sequence is of type ProcurationSyntax:
         * <p/>
         * <pre>
         *            Admissions ::= SEQUENCE
         *            {
         *              admissionAuthority [0] EXPLICIT GeneralName OPTIONAL
         *              namingAuthority [1] EXPLICIT NamingAuthority OPTIONAL
         *              professionInfos SEQUENCE OF ProfessionInfo
         *            }
         * </pre>
         *
         * @param seq The ASN.1 sequence.
         */
        private Admissions(
            Asn1Sequence seq)
        {
            if (seq.Count > 3)
            {
                throw new ArgumentException("Bad sequence size: " + seq.Count);
            }

            IEnumerator e = seq.GetEnumerator();

            e.MoveNext();
            Asn1Encodable o = (Asn1Encodable)e.Current;

            if (o is Asn1TaggedObject)
            {
                switch (((Asn1TaggedObject)o).TagNo)
                {
                case 0:
                    admissionAuthority = GeneralName.GetInstance((Asn1TaggedObject)o, true);
                    break;

                case 1:
                    namingAuthority = NamingAuthority.GetInstance((Asn1TaggedObject)o, true);
                    break;

                default:
                    throw new ArgumentException("Bad tag number: " + ((Asn1TaggedObject)o).TagNo);
                }
                e.MoveNext();
                o = (Asn1Encodable)e.Current;
            }
            if (o is Asn1TaggedObject)
            {
                switch (((Asn1TaggedObject)o).TagNo)
                {
                case 1:
                    namingAuthority = NamingAuthority.GetInstance((Asn1TaggedObject)o, true);
                    break;

                default:
                    throw new ArgumentException("Bad tag number: " + ((Asn1TaggedObject)o).TagNo);
                }
                e.MoveNext();
                o = (Asn1Encodable)e.Current;
            }
            professionInfos = Asn1Sequence.GetInstance(o);
            if (e.MoveNext())
            {
                throw new ArgumentException("Bad object encountered: " + e.Current.GetType().Name);
            }
        }
Example #16
0
        private PkiHeader(Asn1Sequence seq)
        {
            this.pvno      = DerInteger.GetInstance(seq[0]);
            this.sender    = GeneralName.GetInstance(seq[1]);
            this.recipient = GeneralName.GetInstance(seq[2]);
            for (int i = 3; i < seq.Count; i++)
            {
                Asn1TaggedObject asn1TaggedObject = (Asn1TaggedObject)seq[i];
                switch (asn1TaggedObject.TagNo)
                {
                case 0:
                    this.messageTime = DerGeneralizedTime.GetInstance(asn1TaggedObject, true);
                    break;

                case 1:
                    this.protectionAlg = AlgorithmIdentifier.GetInstance(asn1TaggedObject, true);
                    break;

                case 2:
                    this.senderKID = Asn1OctetString.GetInstance(asn1TaggedObject, true);
                    break;

                case 3:
                    this.recipKID = Asn1OctetString.GetInstance(asn1TaggedObject, true);
                    break;

                case 4:
                    this.transactionID = Asn1OctetString.GetInstance(asn1TaggedObject, true);
                    break;

                case 5:
                    this.senderNonce = Asn1OctetString.GetInstance(asn1TaggedObject, true);
                    break;

                case 6:
                    this.recipNonce = Asn1OctetString.GetInstance(asn1TaggedObject, true);
                    break;

                case 7:
                    this.freeText = PkiFreeText.GetInstance(asn1TaggedObject, true);
                    break;

                case 8:
                    this.generalInfo = Asn1Sequence.GetInstance(asn1TaggedObject, true);
                    break;

                default:
                    throw new ArgumentException("unknown tag number: " + asn1TaggedObject.TagNo, "seq");
                }
            }
        }
Example #17
0
        /// <summary>
        /// Encodes this instance.
        /// </summary>
        protected void encode()
        {
            // DER encoded names
            GeneralName[] genName = new GeneralName[genNames.Count()];

            int i = 0;

            foreach (OSCAGeneralName altName in genNames)
            {
                genName[i] = generalNames.createGeneralName(altName.Type.ToString(), altName.Name);
                i++;
            }
            base.encValue = generalNames.createGeneralNames(genName);
        }
Example #18
0
        private void checkValues(
            AdmissionSyntax syntax,
            GeneralName authority,
            Asn1Sequence admissions)
        {
            checkMandatoryField("admissionAuthority", authority, syntax.AdmissionAuthority);

            Admissions[] adm = syntax.GetContentsOfAdmissions();

            if (adm.Length != 1 || !adm[0].Equals(admissions[0]))
            {
                Fail("admissions check failed");
            }
        }
Example #19
0
        /// <summary>
        /// Encodes this instance.
        /// </summary>
        /// <returns></returns>
        protected Asn1Sequence encode()
        {
            // DER encoded names
            AccessDescription[] accDesc = new AccessDescription[accessDesc.Count()];

            for (int i = 0; i < accessDesc.Count; i++)
            {
                GeneralName gn = generalNames.createGeneralName(
                    accessDesc[i].Location.Type.ToString(),
                    accessDesc[i].Location.Name);
                accDesc[i] = new AccessDescription(toOID(accessDesc[i].Method), gn);
            }
            return(new DerSequence(accDesc));
        }
Example #20
0
    private TstInfo(Asn1Sequence seq)
    {
        IEnumerator enumerator = seq.GetEnumerator();

        enumerator.MoveNext();
        version = DerInteger.GetInstance(enumerator.Current);
        enumerator.MoveNext();
        tsaPolicyId = DerObjectIdentifier.GetInstance(enumerator.Current);
        enumerator.MoveNext();
        messageImprint = MessageImprint.GetInstance(enumerator.Current);
        enumerator.MoveNext();
        serialNumber = DerInteger.GetInstance(enumerator.Current);
        enumerator.MoveNext();
        genTime  = DerGeneralizedTime.GetInstance(enumerator.Current);
        ordering = DerBoolean.False;
        while (enumerator.MoveNext())
        {
            Asn1Object asn1Object = (Asn1Object)enumerator.Current;
            if (asn1Object is Asn1TaggedObject)
            {
                DerTaggedObject derTaggedObject = (DerTaggedObject)asn1Object;
                switch (derTaggedObject.TagNo)
                {
                case 0:
                    tsa = GeneralName.GetInstance(derTaggedObject, explicitly: true);
                    break;

                case 1:
                    extensions = X509Extensions.GetInstance(derTaggedObject, explicitly: false);
                    break;

                default:
                    throw new ArgumentException("Unknown tag value " + derTaggedObject.TagNo);
                }
            }
            if (asn1Object is DerSequence)
            {
                accuracy = Accuracy.GetInstance(asn1Object);
            }
            if (asn1Object is DerBoolean)
            {
                ordering = DerBoolean.GetInstance(asn1Object);
            }
            if (asn1Object is DerInteger)
            {
                nonce = DerInteger.GetInstance(asn1Object);
            }
        }
    }
Example #21
0
        public override void PerformTest()
        {
            DerObjectIdentifier  statementId = new DerObjectIdentifier("1.1");
            SemanticsInformation mv          = new SemanticsInformation(statementId);

            CheckConstruction(mv, statementId, null);

            GeneralName[] names = new GeneralName[2];

            names[0] = new GeneralName(GeneralName.Rfc822Name, "*****@*****.**");
            names[1] = new GeneralName(new X509Name("cn=test"));

            mv = new SemanticsInformation(statementId, names);

            CheckConstruction(mv, statementId, names);

            mv = new SemanticsInformation(names);

            CheckConstruction(mv, null, names);

            mv = SemanticsInformation.GetInstance(null);

            if (mv != null)
            {
                Fail("null GetInstance() failed.");
            }

            try
            {
                SemanticsInformation.GetInstance(new object());

                Fail("GetInstance() failed to detect bad object.");
            }
            catch (ArgumentException)
            {
                // expected
            }

            try
            {
                new SemanticsInformation(DerSequence.Empty);

                Fail("constructor failed to detect empty sequence.");
            }
            catch (ArgumentException)
            {
                // expected
            }
        }
Example #22
0
        private TstInfo(Asn1Sequence seq)
        {
            //IL_00fa: Unknown result type (might be due to invalid IL or missing references)
            global::System.Collections.IEnumerator enumerator = seq.GetEnumerator();
            enumerator.MoveNext();
            version = DerInteger.GetInstance(enumerator.get_Current());
            enumerator.MoveNext();
            tsaPolicyId = DerObjectIdentifier.GetInstance(enumerator.get_Current());
            enumerator.MoveNext();
            messageImprint = MessageImprint.GetInstance(enumerator.get_Current());
            enumerator.MoveNext();
            serialNumber = DerInteger.GetInstance(enumerator.get_Current());
            enumerator.MoveNext();
            genTime  = DerGeneralizedTime.GetInstance(enumerator.get_Current());
            ordering = DerBoolean.False;
            while (enumerator.MoveNext())
            {
                Asn1Object asn1Object = (Asn1Object)enumerator.get_Current();
                if (asn1Object is Asn1TaggedObject)
                {
                    DerTaggedObject derTaggedObject = (DerTaggedObject)asn1Object;
                    switch (derTaggedObject.TagNo)
                    {
                    case 0:
                        tsa = GeneralName.GetInstance(derTaggedObject, explicitly: true);
                        break;

                    case 1:
                        extensions = X509Extensions.GetInstance(derTaggedObject, explicitly: false);
                        break;

                    default:
                        throw new ArgumentException(string.Concat((object)"Unknown tag value ", (object)derTaggedObject.TagNo));
                    }
                }
                if (asn1Object is DerSequence)
                {
                    accuracy = Accuracy.GetInstance(asn1Object);
                }
                if (asn1Object is DerBoolean)
                {
                    ordering = DerBoolean.GetInstance(asn1Object);
                }
                if (asn1Object is DerInteger)
                {
                    nonce = DerInteger.GetInstance(asn1Object);
                }
            }
        }
Example #23
0
 private string GetAccessLocation(X509Certificate certificate, DerObjectIdentifier
                                  accessMethod)
 {
     try
     {
         //byte[] authInfoAccessExtensionValue = certificate.GetExtensionValue(X509Extensions
         //    .AuthorityInfoAccess);
         Asn1OctetString authInfoAccessExtensionValue = certificate.GetExtensionValue(X509Extensions
                                                                                      .AuthorityInfoAccess);
         if (null == authInfoAccessExtensionValue)
         {
             return(null);
         }
         AuthorityInformationAccess authorityInformationAccess;
         //DerOctetString oct = (DerOctetString)(new Asn1InputStream(new MemoryStream
         //    (authInfoAccessExtensionValue)).ReadObject());
         DerOctetString oct = (DerOctetString)authInfoAccessExtensionValue;
         //authorityInformationAccess = new AuthorityInformationAccess((Asn1Sequence)new Asn1InputStream
         //    (oct.GetOctets()).ReadObject());
         authorityInformationAccess = AuthorityInformationAccess.GetInstance(oct);
         AccessDescription[] accessDescriptions = authorityInformationAccess.GetAccessDescriptions
                                                      ();
         foreach (AccessDescription accessDescription in accessDescriptions)
         {
             LOG.Info("access method: " + accessDescription.AccessMethod);
             bool correctAccessMethod = accessDescription.AccessMethod.Equals(accessMethod
                                                                              );
             if (!correctAccessMethod)
             {
                 continue;
             }
             GeneralName gn = accessDescription.AccessLocation;
             if (gn.TagNo != GeneralName.UniformResourceIdentifier)
             {
                 LOG.Info("not a uniform resource identifier");
                 continue;
             }
             DerIA5String str            = (DerIA5String)((DerTaggedObject)gn.ToAsn1Object()).GetObject();
             string       accessLocation = str.GetString();
             LOG.Info("access location: " + accessLocation);
             return(accessLocation);
         }
         return(null);
     }
     catch (IOException e)
     {
         throw new RuntimeException("IO error: " + e.Message, e);
     }
 }
Example #24
0
        private Admissions(Asn1Sequence seq)
        {
            //IL_0024: Unknown result type (might be due to invalid IL or missing references)
            //IL_00aa: Unknown result type (might be due to invalid IL or missing references)
            //IL_0109: Unknown result type (might be due to invalid IL or missing references)
            //IL_014b: Unknown result type (might be due to invalid IL or missing references)
            if (seq.Count > 3)
            {
                throw new ArgumentException(string.Concat((object)"Bad sequence size: ", (object)seq.Count));
            }
            global::System.Collections.IEnumerator enumerator = seq.GetEnumerator();
            enumerator.MoveNext();
            Asn1Encodable asn1Encodable = (Asn1Encodable)enumerator.get_Current();

            if (asn1Encodable is Asn1TaggedObject)
            {
                switch (((Asn1TaggedObject)asn1Encodable).TagNo)
                {
                case 0:
                    admissionAuthority = GeneralName.GetInstance((Asn1TaggedObject)asn1Encodable, explicitly: true);
                    break;

                case 1:
                    namingAuthority = NamingAuthority.GetInstance((Asn1TaggedObject)asn1Encodable, isExplicit: true);
                    break;

                default:
                    throw new ArgumentException(string.Concat((object)"Bad tag number: ", (object)((Asn1TaggedObject)asn1Encodable).TagNo));
                }
                enumerator.MoveNext();
                asn1Encodable = (Asn1Encodable)enumerator.get_Current();
            }
            if (asn1Encodable is Asn1TaggedObject)
            {
                int tagNo = ((Asn1TaggedObject)asn1Encodable).TagNo;
                if (tagNo != 1)
                {
                    throw new ArgumentException(string.Concat((object)"Bad tag number: ", (object)((Asn1TaggedObject)asn1Encodable).TagNo));
                }
                namingAuthority = NamingAuthority.GetInstance((Asn1TaggedObject)asn1Encodable, isExplicit: true);
                enumerator.MoveNext();
                asn1Encodable = (Asn1Encodable)enumerator.get_Current();
            }
            professionInfos = Asn1Sequence.GetInstance(asn1Encodable);
            if (enumerator.MoveNext())
            {
                throw new ArgumentException("Bad object encountered: " + Platform.GetTypeName(enumerator.get_Current()));
            }
        }
        /// <summary>
        ///Basic constructor - specify the contents of the PKIArchiveControl structure.
        /// </summary>
        /// <param name="privateKeyInfo">the private key to be archived.</param>
        /// <param name="generalName">the general name to be associated with the private key.</param>
        ///
        public PkiArchiveControlBuilder(PrivateKeyInfo privateKeyInfo, GeneralName generalName)
        {
            EncKeyWithID encKeyWithID = new EncKeyWithID(privateKeyInfo, generalName);

            try
            {
                this.keyContent = new CmsProcessableByteArray(CrmfObjectIdentifiers.id_ct_encKeyWithID, encKeyWithID.GetEncoded());
            }
            catch (IOException e)
            {
                throw new InvalidOperationException("unable to encode key and general name info", e);
            }

            this.envGen = new CmsEnvelopedDataGenerator();
        }
        public void AddOcspPoints()
        {
            var accessDescriptions = new List <Asn1Encodable>();

            foreach (var endpoint in OcspEndpoints)
            {
                GeneralName generalName       = new GeneralName(GeneralName.UniformResourceIdentifier, new DerIA5String(endpoint));
                var         accessDescription = new AccessDescription(X509ObjectIdentifiers.OcspAccessMethod, generalName);
                accessDescriptions.Add(accessDescription);
            }

            var seq = new DerSequence(accessDescriptions.ToArray());

            certificateGenerator.AddExtension(X509Extensions.AuthorityInfoAccess, false, seq);
        }
Example #27
0
 private EncKeyWithID(Asn1Sequence seq)
 {
     this.privKeyInfo = PrivateKeyInfo.GetInstance(seq[0]);
     if (seq.Count <= 1)
     {
         this.identifier = null;
         return;
     }
     if (!(seq[1] is DerUtf8String))
     {
         this.identifier = GeneralName.GetInstance(seq[1]);
         return;
     }
     this.identifier = seq[1];
 }
Example #28
0
        private static List <String> GetCrlDistribtionPoints(CrlDistPoint crldp)
        {
            List <String> certDpUrlLst = new List <string>();

            DistributionPoint[] dpLst = crldp.GetDistributionPoints();
            foreach (DistributionPoint p in dpLst)
            {
                GeneralName[] names = GeneralNames.GetInstance(p.DistributionPointName.Name).GetNames();
                foreach (GeneralName n in names)
                {
                    certDpUrlLst.Add(GeneralName.GetInstance(n).Name.ToString());
                }
            }
            return(certDpUrlLst);
        }
    private GeneralSubtree(Asn1Sequence seq)
    {
        baseName = GeneralName.GetInstance(seq[0]);
        switch (seq.Count)
        {
        case 1:
            break;

        case 2:
        {
            Asn1TaggedObject instance3 = Asn1TaggedObject.GetInstance(seq[1]);
            switch (instance3.TagNo)
            {
            case 0:
                minimum = DerInteger.GetInstance(instance3, isExplicit: false);
                break;

            case 1:
                maximum = DerInteger.GetInstance(instance3, isExplicit: false);
                break;

            default:
                throw new ArgumentException("Bad tag number: " + instance3.TagNo);
            }
            break;
        }

        case 3:
        {
            Asn1TaggedObject instance = Asn1TaggedObject.GetInstance(seq[1]);
            if (instance.TagNo != 0)
            {
                throw new ArgumentException("Bad tag number for 'minimum': " + instance.TagNo);
            }
            minimum = DerInteger.GetInstance(instance, isExplicit: false);
            Asn1TaggedObject instance2 = Asn1TaggedObject.GetInstance(seq[2]);
            if (instance2.TagNo != 1)
            {
                throw new ArgumentException("Bad tag number for 'maximum': " + instance2.TagNo);
            }
            maximum = DerInteger.GetInstance(instance2, isExplicit: false);
            break;
        }

        default:
            throw new ArgumentException("Bad sequence size: " + seq.Count);
        }
    }
Example #30
0
    private Target(Asn1TaggedObject tagObj)
    {
        switch (tagObj.TagNo)
        {
        case 0:
            targetName = GeneralName.GetInstance(tagObj, explicitly: true);
            break;

        case 1:
            targetGroup = GeneralName.GetInstance(tagObj, explicitly: true);
            break;

        default:
            throw new ArgumentException("unknown tag: " + tagObj.TagNo);
        }
    }