GetInstance() public static method

public static GetInstance ( Asn1TaggedObject obj, bool explicitly ) : AlgorithmIdentifier
obj Asn1TaggedObject
explicitly bool
return AlgorithmIdentifier
Beispiel #1
0
 private DigestInfo(Asn1Sequence seq)
 {
     if (seq.Count != 2)
     {
         throw new ArgumentException("Wrong number of elements in sequence", "seq");
     }
     this.algID  = AlgorithmIdentifier.GetInstance(seq[0]);
     this.digest = Asn1OctetString.GetInstance(seq[1]).GetOctets();
 }
 private SubjectPublicKeyInfo(Asn1Sequence seq)
 {
     if (seq.Count != 2)
     {
         throw new ArgumentException("Bad sequence size: " + seq.Count, "seq");
     }
     this.algID   = AlgorithmIdentifier.GetInstance(seq[0]);
     this.keyData = DerBitString.GetInstance(seq[1]);
 }
 private CertificateList(Asn1Sequence seq)
 {
     if (seq.Count != 3)
     {
         throw new ArgumentException("sequence wrong size for CertificateList", "seq");
     }
     this.tbsCertList = TbsCertificateList.GetInstance(seq[0]);
     this.sigAlgID    = AlgorithmIdentifier.GetInstance(seq[1]);
     this.sig         = DerBitString.GetInstance(seq[2]);
 }
 private SubjectPublicKeyInfo(Asn1Sequence seq)
 {
     //IL_0029: Unknown result type (might be due to invalid IL or missing references)
     if (seq.Count != 2)
     {
         throw new ArgumentException(string.Concat((object)"Bad sequence size: ", (object)seq.Count), "seq");
     }
     algID   = AlgorithmIdentifier.GetInstance(seq[0]);
     keyData = DerBitString.GetInstance(seq[1]);
 }
Beispiel #5
0
 private DigestInfo(Asn1Sequence seq)
 {
     //IL_0019: Unknown result type (might be due to invalid IL or missing references)
     if (seq.Count != 2)
     {
         throw new ArgumentException("Wrong number of elements in sequence", "seq");
     }
     algID  = AlgorithmIdentifier.GetInstance(seq[0]);
     digest = Asn1OctetString.GetInstance(seq[1]).GetOctets();
 }
Beispiel #6
0
 private AttributeCertificate(Asn1Sequence seq)
 {
     if (seq.Count != 3)
     {
         throw new ArgumentException("Bad sequence size: " + seq.Count);
     }
     this.acinfo             = AttributeCertificateInfo.GetInstance(seq[0]);
     this.signatureAlgorithm = AlgorithmIdentifier.GetInstance(seq[1]);
     this.signatureValue     = DerBitString.GetInstance(seq[2]);
 }
 private X509CertificateStructure(Asn1Sequence seq)
 {
     if (seq.Count != 3)
     {
         throw new ArgumentException("sequence wrong size for a certificate", "seq");
     }
     tbsCert  = TbsCertificateStructure.GetInstance(seq[0]);
     sigAlgID = AlgorithmIdentifier.GetInstance(seq[1]);
     sig      = DerBitString.GetInstance(seq[2]);
 }
Beispiel #8
0
 private X509CertificateStructure(Asn1Sequence seq)
 {
     //IL_0019: Unknown result type (might be due to invalid IL or missing references)
     if (seq.Count != 3)
     {
         throw new ArgumentException("sequence wrong size for a certificate", "seq");
     }
     tbsCert  = TbsCertificateStructure.GetInstance(seq[0]);
     sigAlgID = AlgorithmIdentifier.GetInstance(seq[1]);
     sig      = DerBitString.GetInstance(seq[2]);
 }
Beispiel #9
0
 private AttributeCertificate(Asn1Sequence seq)
 {
     //IL_0024: 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));
     }
     acinfo             = AttributeCertificateInfo.GetInstance(seq[0]);
     signatureAlgorithm = AlgorithmIdentifier.GetInstance(seq[1]);
     signatureValue     = DerBitString.GetInstance(seq[2]);
 }
        internal TbsCertificateList(
            Asn1Sequence seq)
        {
            if (seq.Count < 3 || seq.Count > 7)
            {
                throw new ArgumentException("Bad sequence size: " + seq.Count);
            }

            int seqPos = 0;

            this.seq = seq;

            if (seq[seqPos] is DerInteger)
            {
                version = DerInteger.GetInstance(seq[seqPos++]);
            }
            else
            {
                version = new DerInteger(0);
            }

            signature  = AlgorithmIdentifier.GetInstance(seq[seqPos++]);
            issuer     = X509Name.GetInstance(seq[seqPos++]);
            thisUpdate = Time.GetInstance(seq[seqPos++]);

            if (seqPos < seq.Count &&
                (seq[seqPos] is DerUtcTime ||
                 seq[seqPos] is DerGeneralizedTime ||
                 seq[seqPos] is Time))
            {
                nextUpdate = Time.GetInstance(seq[seqPos++]);
            }

            if (seqPos < seq.Count &&
                !(seq[seqPos] is DerTaggedObject))
            {
                Asn1Sequence certs = Asn1Sequence.GetInstance(seq[seqPos++]);
                revokedCertificates = new CrlEntry[certs.Count];

                for (int i = 0; i < revokedCertificates.Length; i++)
                {
                    revokedCertificates[i] = new CrlEntry(Asn1Sequence.GetInstance(certs[i]));
                }
            }

            if (seqPos < seq.Count &&
                seq[seqPos] is DerTaggedObject)
            {
                crlExtensions = X509Extensions.GetInstance(seq[seqPos++]);
            }
        }
        private ObjectDigestInfo(Asn1Sequence seq)
        {
            if (seq.Count > 4 || seq.Count < 3)
            {
                throw new ArgumentException("Bad sequence size: " + seq.Count);
            }
            this.digestedObjectType = DerEnumerated.GetInstance(seq[0]);
            int num = 0;

            if (seq.Count == 4)
            {
                this.otherObjectTypeID = DerObjectIdentifier.GetInstance(seq[1]);
                num++;
            }
            this.digestAlgorithm = AlgorithmIdentifier.GetInstance(seq[1 + num]);
            this.objectDigest    = DerBitString.GetInstance(seq[2 + num]);
        }
        internal X509CertificateStructure(
            Asn1Sequence seq)
        {
            if (seq.Count != 3)
            {
                throw new ArgumentException("sequence wrong size for a certificate", "seq");
            }

            this.seq = seq;

            //
            // correct x509 certficate
            //
            tbsCert  = TbsCertificateStructure.GetInstance(seq[0]);
            sigAlgID = AlgorithmIdentifier.GetInstance(seq[1]);
            sig      = DerBitString.GetInstance(seq[2]);
        }
        private ObjectDigestInfo(Asn1Sequence seq)
        {
            //IL_002d: Unknown result type (might be due to invalid IL or missing references)
            if (seq.Count > 4 || seq.Count < 3)
            {
                throw new ArgumentException(string.Concat((object)"Bad sequence size: ", (object)seq.Count));
            }
            digestedObjectType = DerEnumerated.GetInstance(seq[0]);
            int num = 0;

            if (seq.Count == 4)
            {
                otherObjectTypeID = DerObjectIdentifier.GetInstance(seq[1]);
                num++;
            }
            digestAlgorithm = AlgorithmIdentifier.GetInstance(seq[1 + num]);
            objectDigest    = DerBitString.GetInstance(seq[2 + num]);
        }
        internal TbsCertificateStructure(Asn1Sequence seq)
        {
            int num = 0;

            this.seq = seq;
            if (seq[0] is DerTaggedObject)
            {
                this.version = DerInteger.GetInstance((Asn1TaggedObject)seq[0], true);
            }
            else
            {
                num          = -1;
                this.version = new DerInteger(0);
            }
            this.serialNumber = DerInteger.GetInstance(seq[num + 1]);
            this.signature    = AlgorithmIdentifier.GetInstance(seq[num + 2]);
            this.issuer       = X509Name.GetInstance(seq[num + 3]);
            Asn1Sequence asn1Sequence = (Asn1Sequence)seq[num + 4];

            this.startDate            = Time.GetInstance(asn1Sequence[0]);
            this.endDate              = Time.GetInstance(asn1Sequence[1]);
            this.subject              = X509Name.GetInstance(seq[num + 5]);
            this.subjectPublicKeyInfo = SubjectPublicKeyInfo.GetInstance(seq[num + 6]);
            for (int i = seq.Count - (num + 6) - 1; i > 0; i--)
            {
                DerTaggedObject derTaggedObject = (DerTaggedObject)seq[num + 6 + i];
                switch (derTaggedObject.TagNo)
                {
                case 1:
                    this.issuerUniqueID = DerBitString.GetInstance(derTaggedObject, false);
                    break;

                case 2:
                    this.subjectUniqueID = DerBitString.GetInstance(derTaggedObject, false);
                    break;

                case 3:
                    this.extensions = X509Extensions.GetInstance(derTaggedObject);
                    break;
                }
            }
        }
        private AttributeCertificateInfo(
            Asn1Sequence seq)
        {
            if (seq.Count < 6 || seq.Count > 9)
            {
                throw new ArgumentException("Bad sequence size: " + seq.Count);
            }

            int start;

            if (seq[0] is DerInteger)   // in version 1 certs version is DEFAULT  v1(0)
            {
                this.version = DerInteger.GetInstance(seq[0]);
                start        = 1;
            }
            else
            {
                this.version = new DerInteger(0);
                start        = 0;
            }

            this.holder                 = Holder.GetInstance(seq[start]);
            this.issuer                 = AttCertIssuer.GetInstance(seq[start + 1]);
            this.signature              = AlgorithmIdentifier.GetInstance(seq[start + 2]);
            this.serialNumber           = DerInteger.GetInstance(seq[start + 3]);
            this.attrCertValidityPeriod = AttCertValidityPeriod.GetInstance(seq[start + 4]);
            this.attributes             = Asn1Sequence.GetInstance(seq[start + 5]);

            for (int i = start + 6; i < seq.Count; i++)
            {
                Asn1Encodable obj = (Asn1Encodable)seq[i];

                if (obj is DerBitString)
                {
                    this.issuerUniqueID = DerBitString.GetInstance(seq[i]);
                }
                else if (obj is Asn1Sequence || obj is X509Extensions)
                {
                    this.extensions = X509Extensions.GetInstance(seq[i]);
                }
            }
        }
Beispiel #16
0
        internal TbsCertificateStructure(
            Asn1Sequence seq)
        {
            int seqStart = 0;

            this.seq = seq;

            //
            // some certficates don't include a version number - we assume v1
            //
            if (seq[0] is DerTaggedObject)
            {
                version = DerInteger.GetInstance((Asn1TaggedObject)seq[0], true);
            }
            else
            {
                seqStart = -1;                          // field 0 is missing!
                version  = new DerInteger(0);
            }

            bool isV1 = false;
            bool isV2 = false;

            if (version.Value.Equals(BigInteger.Zero))
            {
                isV1 = true;
            }
            else if (version.Value.Equals(BigInteger.One))
            {
                isV2 = true;
            }
            else if (!version.Value.Equals(BigInteger.Two))
            {
                throw new ArgumentException("version number not recognised");
            }

            serialNumber = DerInteger.GetInstance(seq[seqStart + 1]);

            signature = AlgorithmIdentifier.GetInstance(seq[seqStart + 2]);
            issuer    = X509Name.GetInstance(seq[seqStart + 3]);

            //
            // before and after dates
            //
            Asn1Sequence dates = (Asn1Sequence)seq[seqStart + 4];

            startDate = Time.GetInstance(dates[0]);
            endDate   = Time.GetInstance(dates[1]);

            subject = X509Name.GetInstance(seq[seqStart + 5]);

            //
            // public key info.
            //
            subjectPublicKeyInfo = SubjectPublicKeyInfo.GetInstance(seq[seqStart + 6]);

            int extras = seq.Count - (seqStart + 6) - 1;

            if (extras != 0 && isV1)
            {
                throw new ArgumentException("version 1 certificate contains extra data");
            }

            while (extras > 0)
            {
                DerTaggedObject extra = (DerTaggedObject)seq[seqStart + 6 + extras];

                switch (extra.TagNo)
                {
                case 1:
                {
                    issuerUniqueID = DerBitString.GetInstance(extra, false);
                    break;
                }

                case 2:
                {
                    subjectUniqueID = DerBitString.GetInstance(extra, false);
                    break;
                }

                case 3:
                {
                    if (isV2)
                    {
                        throw new ArgumentException("version 2 certificate cannot contain extensions");
                    }

                    extensions = X509Extensions.GetInstance(extra);
                    break;
                }
                }
                extras--;
            }
        }
Beispiel #17
0
 public static AlgorithmIdentifier GetInstance(Asn1TaggedObject obj, bool explicitly)
 {
     return(AlgorithmIdentifier.GetInstance(Asn1Sequence.GetInstance(obj, explicitly)));
 }