예제 #1
0
 public DistributionPoint(
     DistributionPointName distributionPointName,
     ReasonFlags reasons,
     GeneralNames crlIssuer)
 {
     this.distributionPoint = distributionPointName;
     this.reasons           = reasons;
     this.cRLIssuer         = crlIssuer;
 }
예제 #2
0
        /**
         * Constructor from given details.
         *
         * @param distributionPoint
         *            May contain an URI as pointer to most current CRL.
         * @param onlyContainsUserCerts Covers revocation information for end certificates.
         * @param onlyContainsCACerts Covers revocation information for CA certificates.
         *
         * @param onlySomeReasons
         *            Which revocation reasons does this point cover.
         * @param indirectCRL
         *            If <code>true</code> then the CRL contains revocation
         *            information about certificates ssued by other CAs.
         * @param onlyContainsAttributeCerts Covers revocation information for attribute certificates.
         */
        public IssuingDistributionPoint(
            DistributionPointName distributionPoint,
            bool onlyContainsUserCerts,
            bool onlyContainsCACerts,
            ReasonFlags onlySomeReasons,
            bool indirectCRL,
            bool onlyContainsAttributeCerts)
        {
            this._distributionPoint          = distributionPoint;
            this._indirectCRL                = indirectCRL;
            this._onlyContainsAttributeCerts = onlyContainsAttributeCerts;
            this._onlyContainsCACerts        = onlyContainsCACerts;
            this._onlyContainsUserCerts      = onlyContainsUserCerts;
            this._onlySomeReasons            = onlySomeReasons;

            Asn1EncodableVector vec = new Asn1EncodableVector();

            if (distributionPoint != null)
            {                   // CHOICE item so explicitly tagged
                vec.Add(new DerTaggedObject(true, 0, distributionPoint));
            }
            if (onlyContainsUserCerts)
            {
                vec.Add(new DerTaggedObject(false, 1, DerBoolean.True));
            }
            if (onlyContainsCACerts)
            {
                vec.Add(new DerTaggedObject(false, 2, DerBoolean.True));
            }
            if (onlySomeReasons != null)
            {
                vec.Add(new DerTaggedObject(false, 3, onlySomeReasons));
            }
            if (indirectCRL)
            {
                vec.Add(new DerTaggedObject(false, 4, DerBoolean.True));
            }
            if (onlyContainsAttributeCerts)
            {
                vec.Add(new DerTaggedObject(false, 5, DerBoolean.True));
            }

            seq = new DerSequence(vec);
        }
예제 #3
0
        /**
         * Constructor from Asn1Sequence
         */
        private IssuingDistributionPoint(
            Asn1Sequence seq)
        {
            this.seq = seq;

            for (int i = 0; i != seq.Count; i++)
            {
                Asn1TaggedObject o = Asn1TaggedObject.GetInstance(seq[i]);

                switch (o.TagNo)
                {
                case 0:
                    // CHOICE so explicit
                    _distributionPoint = DistributionPointName.GetInstance(o, true);
                    break;

                case 1:
                    _onlyContainsUserCerts = DerBoolean.GetInstance(o, false).IsTrue;
                    break;

                case 2:
                    _onlyContainsCACerts = DerBoolean.GetInstance(o, false).IsTrue;
                    break;

                case 3:
                    _onlySomeReasons = new ReasonFlags(ReasonFlags.GetInstance(o, false));
                    break;

                case 4:
                    _indirectCRL = DerBoolean.GetInstance(o, false).IsTrue;
                    break;

                case 5:
                    _onlyContainsAttributeCerts = DerBoolean.GetInstance(o, false).IsTrue;
                    break;

                default:
                    throw new ArgumentException("unknown tag in IssuingDistributionPoint");
                }
            }
        }
예제 #4
0
        private DistributionPoint(
            Asn1Sequence seq)
        {
            for (int i = 0; i != seq.Count; i++)
            {
                Asn1TaggedObject t = Asn1TaggedObject.GetInstance(seq[i]);

                switch (t.TagNo)
                {
                case 0:
                    distributionPoint = DistributionPointName.GetInstance(t, true);
                    break;

                case 1:
                    reasons = new ReasonFlags(DerBitString.GetInstance(t, false));
                    break;

                case 2:
                    cRLIssuer = GeneralNames.GetInstance(t, false);
                    break;
                }
            }
        }