Exemple #1
0
        public AuthorityKeyIdentifier(
            ASN1Sequence seq)
        {
            IEnumerator e = seq.getObjects();

            while (e.MoveNext())
            {
                DERTaggedObject o = (DERTaggedObject)e.Current;

                switch ((int)o.getTagNo())
                {
                case 0:
                    this.keyidentifier = ASN1OctetString.getInstance(o, false);
                    break;

                case 1:
                    this.certissuer = GeneralNames.getInstance(o, false);
                    break;

                case 2:
                    this.certserno = DERInteger.getInstance(o, false);
                    break;

                default:
                    throw new ArgumentException("illegal tag");
                }
            }
        }
Exemple #2
0
        public PrivateKeyInfo(
            ASN1Sequence seq)
        {
            IEnumerator e = seq.getObjects();

            e.MoveNext();
            BigInteger version = ((DERInteger)e.Current).getValue();

            if (version.intValue() != 0)
            {
                throw new ArgumentException("wrong version for private key info");
            }

            e.MoveNext();
            algId = new AlgorithmIdentifier((ASN1Sequence)e.Current);

            try
            {
                e.MoveNext();
                MemoryStream    bIn = new MemoryStream(((ASN1OctetString)e.Current).getOctets());
                ASN1InputStream aIn = new ASN1InputStream(bIn);

                privKey = aIn.readObject();
            }
            catch (IOException)
            {
                throw new ArgumentException("Error recoverying private key from sequence");
            }
        }
Exemple #3
0
        public SingleResponse(
            ASN1Sequence seq)
        {
            this.certID     = CertID.getInstance(seq.getObjectAt(0));
            this.certStatus = CertStatus.getInstance(seq.getObjectAt(1));
            this.thisUpdate = (DERGeneralizedTime)seq.getObjectAt(2);

            if (seq.size() > 4)
            {
                this.nextUpdate = DERGeneralizedTime.getInstance(
                    (ASN1TaggedObject)seq.getObjectAt(3), true);
                this.singleExtensions = X509Extensions.getInstance(
                    (ASN1TaggedObject)seq.getObjectAt(4), true);
            }
            else if (seq.size() > 3)
            {
                ASN1TaggedObject o = (ASN1TaggedObject)seq.getObjectAt(3);

                if (o.getTagNo() == 0)
                {
                    this.nextUpdate = DERGeneralizedTime.getInstance(o, true);
                }
                else
                {
                    this.singleExtensions = X509Extensions.getInstance(o, true);
                }
            }
        }
Exemple #4
0
        public TBSCertificateStructure(
            ASN1Sequence seq)
        {
            int seqStart = 0;

            this.seq = seq;

            //
            // some certficates don't include a version number - we assume v1
            //
            if (seq.getObjectAt(0) is DERTaggedObject)
            {
                version = DERInteger.getInstance(seq.getObjectAt(0));
            }
            else
            {
                seqStart = -1;          // field 0 is missing!
                version  = new DERInteger(0);
            }

            serialNumber = DERInteger.getInstance(seq.getObjectAt(seqStart + 1));

            signature = AlgorithmIdentifier.getInstance(seq.getObjectAt(seqStart + 2));
            issuer    = X509Name.getInstance(seq.getObjectAt(seqStart + 3));

            //
            // before and after dates
            //
            ASN1Sequence dates = (ASN1Sequence)seq.getObjectAt(seqStart + 4);

            startDate = Time.getInstance(dates.getObjectAt(0));
            endDate   = Time.getInstance(dates.getObjectAt(1));

            subject = X509Name.getInstance(seq.getObjectAt(seqStart + 5));

            //
            // public key info.
            //
            subjectPublicKeyInfo = SubjectPublicKeyInfo.getInstance(seq.getObjectAt(seqStart + 6));

            for (int extras = seq.size() - (seqStart + 6) - 1; extras > 0; extras--)
            {
                DERTaggedObject extra = (DERTaggedObject)seq.getObjectAt(seqStart + 6 + extras);

                switch ((int)extra.getTagNo())
                {
                case 1:
                    issuerUniqueId = DERBitString.getInstance(extra, false);
                    break;

                case 2:
                    subjectUniqueId = DERBitString.getInstance(extra, false);
                    break;

                case 3:
                    extensions = X509Extensions.getInstance(extra);
                    break;
                }
            }
        }
Exemple #5
0
 public CertificationRequest(
     ASN1Sequence seq)
 {
     reqInfo  = CertificationRequestInfo.getInstance(seq.getObjectAt(0));
     sigAlgId = AlgorithmIdentifier.getInstance(seq.getObjectAt(1));
     sigBits  = (DERBitString)seq.getObjectAt(2);
 }
Exemple #6
0
 public CertBag(
     ASN1Sequence seq)
 {
     this.seq       = seq;
     this.certId    = (DERObjectIdentifier)seq.getObjectAt(0);
     this.certValue = ((DERTaggedObject)seq.getObjectAt(1)).getObject();
 }
Exemple #7
0
 public PolicyInformation(
     DERObjectIdentifier policyIdentifier,
     ASN1Sequence policyQualifiers)
 {
     this.policyIdentifier = policyIdentifier;
     this.policyQualifiers = policyQualifiers;
 }
Exemple #8
0
        public Holder(
            ASN1Sequence seq)
        {
            for (int i = 0; i != seq.size(); i++)
            {
                ASN1TaggedObject tObj = (ASN1TaggedObject)seq.getObjectAt(i);

                switch (tObj.getTagNo())
                {
                case 0:
                    baseCertificateID = IssuerSerial.getInstance(tObj, false);
                    break;

                case 1:
                    entityName = GeneralNames.getInstance(tObj, false);
                    break;

                case 2:
                    objectDigestInfo = ObjectDigestInfo.getInstance(tObj, false);
                    break;

                default:
                    throw new ArgumentException("unknown tag in Holder");
                }
            }
        }
Exemple #9
0
 public AttributeCertificate(
     ASN1Sequence seq)
 {
     this.acinfo             = AttributeCertificateInfo.getInstance(seq.getObjectAt(0));
     this.signatureAlgorithm = AlgorithmIdentifier.getInstance(seq.getObjectAt(1));
     this.signatureValue     = DERBitString.getInstance(seq.getObjectAt(2));
 }
Exemple #10
0
        public OriginatorInfo(
            ASN1Sequence seq)
        {
            switch (seq.size())
            {
            case 0:     // empty
                break;

            case 1:
                ASN1TaggedObject o = (ASN1TaggedObject)seq.getObjectAt(0);
                switch ((int)o.getTagNo())
                {
                case 0:
                    certs = ASN1Set.getInstance(o, false);
                    break;

                case 1:
                    crls = ASN1Set.getInstance(o, false);
                    break;

                default:
                    throw new ArgumentException("Bad tag in OriginatorInfo: " + o.getTagNo());
                }
                break;

            case 2:
                certs = ASN1Set.getInstance((ASN1TaggedObject)seq.getObjectAt(0), false);
                crls  = ASN1Set.getInstance((ASN1TaggedObject)seq.getObjectAt(1), false);
                break;

            default:
                throw new ArgumentException("OriginatorInfo too big");
            }
        }
Exemple #11
0
 /**
  * Creates a new <code>NoticeReference</code> instance.
  *
  * @param displayTextType an <code>int</code> value
  * @param orgName a <code>String</code> value
  * @param numbers an <code>ASN1EncodableVector</code> value
  */
 public NoticeReference(int displayTextType,
                        string orgName, ASN1Sequence numbers)
 {
     organization = new DisplayText(displayTextType,
                                    orgName);
     noticeNumbers = numbers;
 }
Exemple #12
0
 public CertificateList(
     ASN1Sequence seq)
 {
     tbsCertList = TBSCertList.getInstance(seq.getObjectAt(0));
     sigAlgId    = AlgorithmIdentifier.getInstance(seq.getObjectAt(1));
     sig         = (DERBitString)seq.getObjectAt(2);
 }
Exemple #13
0
        public ResponseData(
            ASN1Sequence seq)
        {
            int index = 0;

            if (seq.getObjectAt(0) is ASN1TaggedObject)
            {
                ASN1TaggedObject o = (ASN1TaggedObject)seq.getObjectAt(0);

                if (o.getTagNo() == 0)
                {
                    this.version = DERInteger.getInstance(
                        (ASN1TaggedObject)seq.getObjectAt(0), true);
                    index++;
                }
                else
                {
                    this.version = null;
                }
            }
            else
            {
                this.version = null;
            }

            this.responderID = ResponderID.getInstance(seq.getObjectAt(index++));
            this.producedAt  = (DERGeneralizedTime)seq.getObjectAt(index++);
            this.responses   = (ASN1Sequence)seq.getObjectAt(index++);

            if (seq.size() > index)
            {
                this.responseExtensions = X509Extensions.getInstance(
                    (ASN1TaggedObject)seq.getObjectAt(index), true);
            }
        }
Exemple #14
0
        public RSAPrivateKeyStructure(
            ASN1Sequence seq)
        {
            IEnumerator e = seq.getObjects();

            e.MoveNext();
            BigInteger version = ((DERInteger)e.Current).getValue();

            if (version.intValue() != 0)
            {
                throw new ArgumentException("wrong version for RSA private key");
            }

            e.MoveNext();
            modulus = ((DERInteger)e.Current).getValue();
            e.MoveNext();
            publicExponent = ((DERInteger)e.Current).getValue();
            e.MoveNext();
            privateExponent = ((DERInteger)e.Current).getValue();
            e.MoveNext();
            prime1 = ((DERInteger)e.Current).getValue();
            e.MoveNext();
            prime2 = ((DERInteger)e.Current).getValue();
            e.MoveNext();
            exponent1 = ((DERInteger)e.Current).getValue();
            e.MoveNext();
            exponent2 = ((DERInteger)e.Current).getValue();
            e.MoveNext();
            coefficient = ((DERInteger)e.Current).getValue();
        }
Exemple #15
0
 public CompressedData(
     ASN1Sequence seq)
 {
     this.version = (DERInteger)seq.getObjectAt(0);
     this.compressionAlgorithm = AlgorithmIdentifier.getInstance(seq.getObjectAt(1));
     this.encapContentInfo     = ContentInfo.getInstance(seq.getObjectAt(2));
 }
Exemple #16
0
        public KEKIdentifier(
            ASN1Sequence seq)
        {
            keyIdentifier = (ASN1OctetString)seq.getObjectAt(0);

            switch (seq.size())
            {
            case 1:
                break;

            case 2:
                if (seq.getObjectAt(1) is DERGeneralizedTime)
                {
                    date = (DERGeneralizedTime)seq.getObjectAt(1);
                }
                else
                {
                    other = OtherKeyAttribute.getInstance(seq.getObjectAt(2));
                }
                break;

            case 3:
                date  = (DERGeneralizedTime)seq.getObjectAt(1);
                other = OtherKeyAttribute.getInstance(seq.getObjectAt(2));
                break;

            default:
                throw new ArgumentException("Invalid KEKIdentifier");
            }
        }
Exemple #17
0
        public CrlID(
            ASN1Sequence seq)
        {
            IEnumerator e = seq.getObjects();

            while (e.MoveNext())
            {
                ASN1TaggedObject o = (ASN1TaggedObject)e.Current;

                switch ((int)o.getTagNo())
                {
                case 0:
                    crlUrl = DERIA5String.getInstance(o, true);
                    break;

                case 1:
                    crlNum = DERInteger.getInstance(o, true);
                    break;

                case 2:
                    crlTime = DERGeneralizedTime.getInstance(o, true);
                    break;

                default:
                    throw new ArgumentException(
                              "unknown tag number: " + o.getTagNo());
                }
            }
        }
Exemple #18
0
            /**
             * Constructs an X509 name
             * @param seq an ASN1 Sequence
             */
            public X509Name(ASN1Sequence seq)
            {
                IEnumerator e = seq.getObjects();

                while (e.MoveNext())
                {
                    ASN1Set sett = (ASN1Set)e.Current;

                    for (int i = 0; i < sett.size(); i++)
                    {
                        ASN1Sequence s  = (ASN1Sequence)sett.getObjectAt(i);
                        String       id = (String)DefaultSymbols[s.getObjectAt(0)];
                        if (id == null)
                        {
                            continue;
                        }
                        ArrayList vs = (ArrayList)values[id];
                        if (vs == null)
                        {
                            vs         = new ArrayList();
                            values[id] = vs;
                        }
                        vs.Add(((DERString)s.getObjectAt(1)).getString());
                    }
                }
            }
Exemple #19
0
        public AttributeCertificateInfo(
            ASN1Sequence seq)
        {
            this.version                = DERInteger.getInstance(seq.getObjectAt(0));
            this.holder                 = Holder.getInstance(seq.getObjectAt(1));
            this.issuer                 = AttCertIssuer.getInstance(seq.getObjectAt(2));
            this.signature              = AlgorithmIdentifier.getInstance(seq.getObjectAt(3));
            this.serialNumber           = DERInteger.getInstance(seq.getObjectAt(4));
            this.attrCertValidityPeriod = AttCertValidityPeriod.getInstance(seq.getObjectAt(5));
            this.attributes             = ASN1Sequence.getInstance(seq.getObjectAt(6));

            for (int i = 7; i < seq.size(); i++)
            {
                ASN1Encodable obj = (ASN1Encodable)seq.getObjectAt(i);

                if (obj is DERBitString)
                {
                    this.issuerUniqueID = DERBitString.getInstance(seq.getObjectAt(i));
                }
                else if (obj is ASN1Sequence || obj is X509Extensions)
                {
                    this.extensions = X509Extensions.getInstance(seq.getObjectAt(i));
                }
            }
        }
Exemple #20
0
        /**
         * Get the "subject" from the TBSCertificate bytes that are passed in
         * @param enc A TBSCertificate in a byte array
         * @return a DERObject
         */
        private static ASN1Object GetSubject(byte[] enc)
        {
            ASN1InputStream inp = new ASN1InputStream(new MemoryStream(enc));
            ASN1Sequence    seq = (ASN1Sequence)inp.readObject();

            return((ASN1Object)seq.getObjectAt(seq.getObjectAt(0) is DERTaggedObject ? 5 : 4));
        }
Exemple #21
0
        /// <summary>
        /// Return a the certificates associated with this request.
        /// </summary>
        /// <returns>An array of certs or null is none were present in this request.</returns>
        public X509Certificate[] getCerts()
        {
            if (!this.isSigned())
            {
                return(null);
            }

            if (chain == null)
            {
                ASN1Sequence s = req.getOptionalSignature().getCerts();

                if (s != null)
                {
                    ArrayList lst = new ArrayList();

                    IEnumerator e = s.getObjects();
                    while (e.MoveNext())
                    {
                        lst.Add(new X509CertificateStructure((ASN1Sequence)e.Current));
                    }

                    chain = (X509Certificate[])lst.ToArray(Type.GetType("org.bouncycastle.x509.X509Certificate"));
                }

                return(chain);
            }
            return(null);
        }
Exemple #22
0
 public CertID(
     ASN1Sequence seq)
 {
     hashAlgorithm  = AlgorithmIdentifier.getInstance(seq.getObjectAt(0));
     issuerNameHash = (ASN1OctetString)seq.getObjectAt(1);
     issuerKeyHash  = (ASN1OctetString)seq.getObjectAt(2);
     serialNumber   = (DERInteger)seq.getObjectAt(3);
 }
Exemple #23
0
 public KEKRecipientInfo(
     ASN1Sequence seq)
 {
     version = (DERInteger)seq.getObjectAt(0);
     kekid   = KEKIdentifier.getInstance(seq.getObjectAt(1));
     keyEncryptionAlgorithm = AlgorithmIdentifier.getInstance(seq.getObjectAt(2));
     encryptedKey           = (ASN1OctetString)seq.getObjectAt(3);
 }
Exemple #24
0
 public Signature(
     AlgorithmIdentifier signatureAlgorithm,
     DERBitString signature,
     ASN1Sequence certs)
 {
     this.signatureAlgorithm = signatureAlgorithm;
     this.signature          = signature;
     this.certs = certs;
 }
Exemple #25
0
        public PBEParameter(ASN1Sequence seq)
        {
            IEnumerator e = seq.getObjects();

            e.MoveNext();
            octStr = (ASN1OctetString)e.Current;
            e.MoveNext();
            iterationCount = (DERInteger)e.Current;
        }
Exemple #26
0
        /**
         *
         */
        public IetfAttrSyntax(ASN1Sequence seq)
        {
            int i = 0;

            if (seq.getObjectAt(0) is ASN1TaggedObject)
            {
                policyAuthority = GeneralNames.getInstance(((ASN1TaggedObject)seq.getObjectAt(0)), false);
                i++;
            }
            else if (seq.size() == 2)
            { // VOMS fix
                policyAuthority = GeneralNames.getInstance(seq.getObjectAt(0));
                i++;
            }

            if (!(seq.getObjectAt(i) is ASN1Sequence))
            {
                throw new ArgumentException("Non-IetfAttrSyntax encoding");
            }

            seq = (ASN1Sequence)seq.getObjectAt(i);

            for (IEnumerator e = seq.getObjects(); e.MoveNext();)
            {
                ASN1Object obj = (ASN1Object)e.Current;
                int        type;

                if (obj is DERObjectIdentifier)
                {
                    type = VALUE_OID;
                }
                else if (obj is DERUTF8String)
                {
                    type = VALUE_UTF8;
                }
                else if (obj is DEROctetString)
                {
                    type = VALUE_OCTETS;
                }
                else
                {
                    throw new ArgumentException("Bad value type encoding IetfAttrSyntax");
                }

                if (valueChoice < 0)
                {
                    valueChoice = type;
                }

                if (type != valueChoice)
                {
                    throw new ArgumentException("Mix of value types in IetfAttrSyntax");
                }

                values.Add(obj);
            }
        }
Exemple #27
0
 public void addCRLEntry(
     ASN1Sequence crlEntry)
 {
     if (crlentries == null)
     {
         crlentries = new ArrayList();
     }
     crlentries.Add(crlEntry);
 }
Exemple #28
0
        public static PolicyInformation getInstance(
            object obj)
        {
            if (obj == null || obj is PolicyInformation)
            {
                return((PolicyInformation)obj);
            }

            return(new PolicyInformation(ASN1Sequence.getInstance(obj)));
        }
Exemple #29
0
        public PolicyInformation(
            ASN1Sequence seq)
        {
            policyIdentifier = (DERObjectIdentifier)seq.getObjectAt(0);

            if (seq.size() > 1)
            {
                policyQualifiers = (ASN1Sequence)seq.getObjectAt(1);
            }
        }
Exemple #30
0
 public SafeBag(
     ASN1Sequence seq)
 {
     this.bagId    = (DERObjectIdentifier)seq.getObjectAt(0);
     this.bagValue = ((DERTaggedObject)seq.getObjectAt(1)).getObject();
     if (seq.size() == 3)
     {
         this.bagAttributes = (ASN1Set)seq.getObjectAt(2);
     }
 }
		/// <summary>
		/// This is advanced interface - this is what I would like...
		/// </summary>
		/// <param name="asnseq"></param>
		/// <param name="num"></param>
		/// <param name="tip"></param>
		public static void Make(ASN1Sequence asnseq, int num, ASN1Type tip)
		{
			asnseq.ComponentTypes[num] = ASN1ComponentTypeInfo.Make(tip);
		}