Пример #1
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);
                }
            }
        }
Пример #2
0
        public GeneralName[] getNames()
        {
            GeneralName[] names = new GeneralName[seq.size()];

            for (int i = 0; i != seq.size(); i++)
            {
                names[i] = GeneralName.getInstance(seq.getObjectAt(i));
            }

            return(names);
        }
Пример #3
0
        /**
         * Return the distribution points making up the sequence.
         *
         * @return DistributionPoint[]
         */
        public DistributionPoint[] getDistributionPoints()
        {
            DistributionPoint[] dp = new DistributionPoint[seq.size()];

            for (int i = 0; i != seq.size(); i++)
            {
                dp[i] = DistributionPoint.getInstance(seq.getObjectAt(i));
            }

            return(dp);
        }
Пример #4
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);
            }
        }
Пример #5
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");
                }
            }
        }
Пример #6
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));
                }
            }
        }
Пример #7
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");
            }
        }
Пример #8
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");
            }
        }
Пример #9
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;
                }
            }
        }
Пример #10
0
        public TBSCertList(
            ASN1Sequence seq)
        {
            int seqPos = 0;

            this.seq = seq;

            if (seq.getObjectAt(seqPos) is DERInteger)
            {
                version = (DERInteger)seq.getObjectAt(seqPos++);
            }
            else
            {
                version = new DERInteger(0);
            }

            signature  = AlgorithmIdentifier.getInstance(seq.getObjectAt(seqPos++));
            issuer     = X509Name.getInstance(seq.getObjectAt(seqPos++));
            thisUpdate = Time.getInstance(seq.getObjectAt(seqPos++));

            if (seqPos < seq.size() &&
                (seq.getObjectAt(seqPos) is DERUTCTime ||
                 seq.getObjectAt(seqPos) is DERGeneralizedTime ||
                 seq.getObjectAt(seqPos) is Time))
            {
                nextUpdate = Time.getInstance(seq.getObjectAt(seqPos++));
            }

            if (seqPos < seq.size() &&
                !(seq.getObjectAt(seqPos) is DERTaggedObject))
            {
                ASN1Sequence certs = (ASN1Sequence)seq.getObjectAt(seqPos++);
                revokedCertificates = new CRLEntry[certs.size()];

                for (int i = 0; i < revokedCertificates.Length; i++)
                {
                    revokedCertificates[i] = new CRLEntry((ASN1Sequence)certs.getObjectAt(i));
                }
            }

            if (seqPos < seq.size() &&
                seq.getObjectAt(seqPos) is DERTaggedObject)
            {
                crlExtensions = X509Extensions.getInstance(seq.getObjectAt(seqPos++));
            }
        }
Пример #11
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);
            }
        }
Пример #12
0
        public SMIMECapability(
            ASN1Sequence seq)
        {
            capabilityID = (DERObjectIdentifier)seq.getObjectAt(0);

            if (seq.size() > 1)
            {
                parameters = (ASN1Object)seq.getObjectAt(1);
            }
        }
Пример #13
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);
     }
 }
Пример #14
0
        public AuthenticatedSafe(
            ASN1Sequence seq)
        {
            info = new ContentInfo[seq.size()];

            for (int i = 0; i != info.Length; i++)
            {
                info[i] = ContentInfo.getInstance(seq.getObjectAt(i));
            }
        }
Пример #15
0
        public PolicyInformation(
            ASN1Sequence seq)
        {
            policyIdentifier = (DERObjectIdentifier)seq.getObjectAt(0);

            if (seq.size() > 1)
            {
                policyQualifiers = (ASN1Sequence)seq.getObjectAt(1);
            }
        }
Пример #16
0
 /**
  * Creates a new <code>UserNotice</code> instance.
  * <p>Useful from reconstructing a <code>UserNotice</code> instance
  * from its encodable/encoded form.
  *
  * @param as an <code>ASN1Sequence</code> value obtained from either
  * calling @{link toASN1Object()} for a <code>UserNotice</code>
  * instance or from parsing it from a DER-encoded stream.
  */
 public UserNotice(
     ASN1Sequence aseq)
 {
     if (aseq.size() == 2)
     {
         noticeRef    = NoticeReference.getInstance(aseq.getObjectAt(0));
         explicitText = DisplayText.getInstance(aseq.getObjectAt(1));
     }
     else if (aseq.size() == 1)
     {
         if (aseq.getObjectAt(0).toASN1Object() is ASN1Sequence)
         {
             noticeRef = NoticeReference.getInstance(aseq.getObjectAt(0));
         }
         else
         {
             explicitText = DisplayText.getInstance(aseq.getObjectAt(0));
         }
     }
 }
Пример #17
0
        public ASN1OctetString getContent()
        {
            if (data.size() == 3)
            {
                DERTaggedObject o = (DERTaggedObject)data.getObjectAt(2);

                return(ASN1OctetString.getInstance(o.getObject()));
            }

            return(null);
        }
Пример #18
0
        public Request(
            ASN1Sequence seq)
        {
            reqCert = CertID.getInstance(seq.getObjectAt(0));

            if (seq.size() == 2)
            {
                singleRequestExtensions = X509Extensions.getInstance(
                    (ASN1TaggedObject)seq.getObjectAt(1), true);
            }
        }
Пример #19
0
        public IssuerSerial(
            ASN1Sequence seq)
        {
            issuer = GeneralNames.getInstance(seq.getObjectAt(0));
            serial = (DERInteger)seq.getObjectAt(1);

            if (seq.size() == 3)
            {
                issuerUID = (DERBitString)seq.getObjectAt(2);
            }
        }
Пример #20
0
        public OCSPRequest(
            ASN1Sequence seq)
        {
            tbsRequest = TBSRequest.getInstance(seq.getObjectAt(0));

            if (seq.size() == 2)
            {
                optionalSignature = Signature.getInstance(
                    (ASN1TaggedObject)seq.getObjectAt(1), true);
            }
        }
Пример #21
0
        public RevokedInfo(
            ASN1Sequence seq)
        {
            this.revocationTime = (DERGeneralizedTime)seq.getObjectAt(0);

            if (seq.size() > 1)
            {
                this.revocationReason = new CRLReason(DEREnumerated.getInstance(
                                                          (ASN1TaggedObject)seq.getObjectAt(1), true));
            }
        }
Пример #22
0
        public Signature(
            ASN1Sequence seq)
        {
            signatureAlgorithm = AlgorithmIdentifier.getInstance(seq.getObjectAt(0));
            signature          = (DERBitString)seq.getObjectAt(1);

            if (seq.size() == 3)
            {
                certs = ASN1Sequence.getInstance(
                    (ASN1TaggedObject)seq.getObjectAt(2), true);
            }
        }
Пример #23
0
            public CRLEntry(
                ASN1Sequence seq)
            {
                this.seq = seq;

                userCertificate = (DERInteger)seq.getObjectAt(0);
                revocationDate  = Time.getInstance(seq.getObjectAt(1));
                if (seq.size() == 3)
                {
                    crlEntryExtensions = X509Extensions.getInstance(seq.getObjectAt(2));
                }
            }
Пример #24
0
 public IDEACBCPar(
     ASN1Sequence seq)
 {
     if (seq.size() == 1)
     {
         iv = (ASN1OctetString)seq.getObjectAt(0);
     }
     else
     {
         iv = null;
     }
 }
Пример #25
0
 public EncryptedContentInfo(
     ASN1Sequence seq)
 {
     contentType = (DERObjectIdentifier)seq.getObjectAt(0);
     contentEncryptionAlgorithm = AlgorithmIdentifier.getInstance(
         seq.getObjectAt(1));
     if (seq.size() > 2)
     {
         encryptedContent = ASN1OctetString.getInstance(
             (ASN1TaggedObject)seq.getObjectAt(2), false);
     }
 }
Пример #26
0
        public BasicOCSPResponse(
            ASN1Sequence seq)
        {
            this.tbsResponseData    = ResponseData.getInstance(seq.getObjectAt(0));
            this.signatureAlgorithm = AlgorithmIdentifier.getInstance(seq.getObjectAt(1));
            this.signature          = (DERBitString)seq.getObjectAt(2);

            if (seq.size() > 3)
            {
                this.certs = ASN1Sequence.getInstance((ASN1TaggedObject)seq.getObjectAt(3), true);
            }
        }
Пример #27
0
        public Req[] getRequestList()
        {
            ASN1Sequence seq = req.getTbsRequest().getRequestList();

            Req[] requests = new Req[seq.size()];

            for (int i = 0; i != requests.Length; i++)
            {
                requests[i] = new Req(Request.getInstance(seq.getObjectAt(i)));
            }

            return(requests);
        }
Пример #28
0
        /// <summary>
        /// Return the Single Responses.
        /// </summary>
        /// <returns>An array..</returns>
        public SingleResp[] getResponses()
        {
            ASN1Sequence s = data.getResponses();

            SingleResp[] rs = new SingleResp[s.size()];

            for (int i = 0; i != rs.Length; i++)
            {
                rs[i] = new SingleResp(SingleResponse.getInstance(s.getObjectAt(i)));
            }

            return(rs);
        }
Пример #29
0
        public AlgorithmIdentifier(
            ASN1Sequence seq)
        {
            objectId = (DERObjectIdentifier)seq.getObjectAt(0);

            if (seq.size() == 2)
            {
                parameters = seq.getObjectAt(1);
            }
            else
            {
                parameters = null;
            }
        }
Пример #30
0
 public RC2CBCParameter(
     ASN1Sequence seq)
 {
     if (seq.size() == 1)
     {
         version = null;
         iv      = (ASN1OctetString)seq.getObjectAt(0);
     }
     else
     {
         version = (DERInteger)seq.getObjectAt(0);
         iv      = (ASN1OctetString)seq.getObjectAt(1);
     }
 }