Ejemplo n.º 1
0
		public SingleResponse(
            Asn1Sequence seq)
        {
            this.certID = CertID.GetInstance(seq[0]);
            this.certStatus = CertStatus.GetInstance(seq[1]);
            this.thisUpdate = (DerGeneralizedTime)seq[2];

			if (seq.Count > 4)
            {
                this.nextUpdate = DerGeneralizedTime.GetInstance(
					(Asn1TaggedObject) seq[3], true);
                this.singleExtensions = X509Extensions.GetInstance(
					(Asn1TaggedObject) seq[4], true);
            }
            else if (seq.Count > 3)
            {
                Asn1TaggedObject o = (Asn1TaggedObject) seq[3];

				if (o.TagNo == 0)
                {
                    this.nextUpdate = DerGeneralizedTime.GetInstance(o, true);
                }
                else
                {
                    this.singleExtensions = X509Extensions.GetInstance(o, true);
                }
            }
        }
		public override void PerformTest()
		{
			DerGeneralizedTime dateOfBirth = new DerGeneralizedTime("20070315173729Z");
			DeclarationOfMajority decl = new DeclarationOfMajority(dateOfBirth);

			checkConstruction(decl, DeclarationOfMajority.Choice.DateOfBirth, dateOfBirth, -1);

			decl = new DeclarationOfMajority(6);

			checkConstruction(decl, DeclarationOfMajority.Choice.NotYoungerThan, null, 6);

			decl = DeclarationOfMajority.GetInstance(null);

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

			try
			{
				DeclarationOfMajority.GetInstance(new Object());

				Fail("GetInstance() failed to detect bad object.");
			}
			catch (ArgumentException)
			{
				// expected
			}
		}
Ejemplo n.º 3
0
		public KekIdentifier(
            Asn1Sequence seq)
        {
            keyIdentifier = (Asn1OctetString) seq[0];

			switch (seq.Count)
            {
            case 1:
				break;
            case 2:
				if (seq[1] is DerGeneralizedTime)
				{
					date = (DerGeneralizedTime) seq[1];
				}
				else
				{
					other = OtherKeyAttribute.GetInstance(seq[2]);
				}
				break;
            case 3:
				date  = (DerGeneralizedTime) seq[1];
				other = OtherKeyAttribute.GetInstance(seq[2]);
				break;
            default:
				throw new ArgumentException("Invalid KekIdentifier");
            }
        }
Ejemplo n.º 4
0
		public ResponseData(
			ResponderID         responderID,
			DerGeneralizedTime  producedAt,
			Asn1Sequence        responses,
			X509Extensions      responseExtensions)
			: this(V1, responderID, producedAt, responses, responseExtensions)
		{
		}
Ejemplo n.º 5
0
		public KekIdentifier(
            byte[]              keyIdentifier,
            DerGeneralizedTime  date,
            OtherKeyAttribute   other)
        {
            this.keyIdentifier = new DerOctetString(keyIdentifier);
            this.date = date;
            this.other = other;
        }
		public RecipientKeyIdentifier(
			byte[]				subjectKeyIdentifier,
			DerGeneralizedTime	date,
			OtherKeyAttribute	other)
		{
			this.subjectKeyIdentifier = new DerOctetString(subjectKeyIdentifier);
			this.date = date;
			this.other = other;
		}
		public RecipientKeyIdentifier(
            Asn1OctetString         subjectKeyIdentifier,
            DerGeneralizedTime      date,
            OtherKeyAttribute       other)
        {
            this.subjectKeyIdentifier = subjectKeyIdentifier;
            this.date = date;
            this.other = other;
        }
Ejemplo n.º 8
0
		public OcspIdentifier(
			ResponderID	ocspResponderID,
			DateTime	producedAt)
		{
			if (ocspResponderID == null)
				throw new ArgumentNullException();

			this.ocspResponderID = ocspResponderID;
			this.producedAt = new DerGeneralizedTime(producedAt);
		}
Ejemplo n.º 9
0
		public RevokedInfo(
            DerGeneralizedTime  revocationTime,
            CrlReason           revocationReason)
        {
			if (revocationTime == null)
				throw new ArgumentNullException("revocationTime");

			this.revocationTime = revocationTime;
            this.revocationReason = revocationReason;
        }
Ejemplo n.º 10
0
		private RevokedInfo(
            Asn1Sequence seq)
        {
            this.revocationTime = (DerGeneralizedTime) seq[0];

			if (seq.Count > 1)
            {
                this.revocationReason = new CrlReason(
					DerEnumerated.GetInstance((Asn1TaggedObject) seq[1], true));
            }
        }
Ejemplo n.º 11
0
		private OcspIdentifier(
			Asn1Sequence seq)
		{
			if (seq == null)
				throw new ArgumentNullException("seq");
			if (seq.Count != 2)
				throw new ArgumentException("Bad sequence size: " + seq.Count, "seq");

			this.ocspResponderID = ResponderID.GetInstance(seq[0].ToAsn1Object());
			this.producedAt = (DerGeneralizedTime) seq[1].ToAsn1Object();
		}
Ejemplo n.º 12
0
		private RevAnnContent(Asn1Sequence seq)
		{
			status = PkiStatusEncodable.GetInstance(seq[0]);
			certId = CertId.GetInstance(seq[1]);
			willBeRevokedAt = DerGeneralizedTime.GetInstance(seq[2]);
			badSinceDate = DerGeneralizedTime.GetInstance(seq[3]);

			if (seq.Count > 4)
			{
				crlDetails = X509Extensions.GetInstance(seq[4]);
			}
		}
Ejemplo n.º 13
0
 private void checkValues(
     DeclarationOfMajority decl,
     DeclarationOfMajority.Choice type,
     DerGeneralizedTime dateOfBirth,
     int notYoungerThan)
 {
     checkMandatoryField("type", (int)type, (int)decl.Type);
     checkOptionalField("dateOfBirth", dateOfBirth, decl.DateOfBirth);
     if (notYoungerThan != -1 && notYoungerThan != decl.NotYoungerThan)
     {
         Fail("notYoungerThan mismatch");
     }
 }
Ejemplo n.º 14
0
 public ResponseData(
     DerInteger version,
     ResponderID responderID,
     DerGeneralizedTime producedAt,
     Asn1Sequence responses,
     X509Extensions responseExtensions)
 {
     this.version            = version;
     this.responderID        = responderID;
     this.producedAt         = producedAt;
     this.responses          = responses;
     this.responseExtensions = responseExtensions;
 }
Ejemplo n.º 15
0
		public SingleResponse(
            CertID              certID,
            CertStatus          certStatus,
            DerGeneralizedTime  thisUpdate,
            DerGeneralizedTime  nextUpdate,
            X509Extensions      singleExtensions)
        {
            this.certID = certID;
            this.certStatus = certStatus;
            this.thisUpdate = thisUpdate;
            this.nextUpdate = nextUpdate;
            this.singleExtensions = singleExtensions;
        }
Ejemplo n.º 16
0
 public SingleResponse(
     CertID certID,
     CertStatus certStatus,
     DerGeneralizedTime thisUpdate,
     DerGeneralizedTime nextUpdate,
     X509Extensions singleExtensions)
 {
     this.certID           = certID;
     this.certStatus       = certStatus;
     this.thisUpdate       = thisUpdate;
     this.nextUpdate       = nextUpdate;
     this.singleExtensions = singleExtensions;
 }
Ejemplo n.º 17
0
		public ResponseData(
			DerInteger          version,
			ResponderID         responderID,
			DerGeneralizedTime  producedAt,
			Asn1Sequence        responses,
			X509Extensions      responseExtensions)
		{
			this.version = version;
			this.responderID = responderID;
			this.producedAt = producedAt;
			this.responses = responses;
			this.responseExtensions = responseExtensions;
		}
		private void checkValues(
			DeclarationOfMajority			decl,
			DeclarationOfMajority.Choice	type,
			DerGeneralizedTime				dateOfBirth,
			int								notYoungerThan)
		{
			checkMandatoryField("type", (int) type, (int) decl.Type);
			checkOptionalField("dateOfBirth", dateOfBirth, decl.DateOfBirth);
			if (notYoungerThan != -1 && notYoungerThan != decl.NotYoungerThan)
			{
				Fail("notYoungerThan mismatch");
			}
		}
Ejemplo n.º 19
0
    private PkiHeader(Asn1Sequence seq)
    {
        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("unknown tag number: " + asn1TaggedObject.TagNo, "seq");
            }
        }
    }
        public override void PerformTest()
        {
            NameOrPseudonym    nameOrPseudonym   = new NameOrPseudonym("pseudonym");
            IBigInteger        nameDistinguisher = BigInteger.ValueOf(10);
            DerGeneralizedTime dateOfBirth       = new DerGeneralizedTime("20070315173729Z");
            DirectoryString    placeOfBirth      = new DirectoryString("placeOfBirth");
            string             gender            = "M";
            DirectoryString    postalAddress     = new DirectoryString("address");

            PersonalData data = new PersonalData(nameOrPseudonym, nameDistinguisher, dateOfBirth, placeOfBirth, gender, postalAddress);

            checkConstruction(data, nameOrPseudonym, nameDistinguisher, dateOfBirth, placeOfBirth, gender, postalAddress);

            data = new PersonalData(nameOrPseudonym, null, dateOfBirth, placeOfBirth, gender, postalAddress);

            checkConstruction(data, nameOrPseudonym, null, dateOfBirth, placeOfBirth, gender, postalAddress);

            data = new PersonalData(nameOrPseudonym, nameDistinguisher, null, placeOfBirth, gender, postalAddress);

            checkConstruction(data, nameOrPseudonym, nameDistinguisher, null, placeOfBirth, gender, postalAddress);

            data = new PersonalData(nameOrPseudonym, nameDistinguisher, dateOfBirth, null, gender, postalAddress);

            checkConstruction(data, nameOrPseudonym, nameDistinguisher, dateOfBirth, null, gender, postalAddress);

            data = new PersonalData(nameOrPseudonym, nameDistinguisher, dateOfBirth, placeOfBirth, null, postalAddress);

            checkConstruction(data, nameOrPseudonym, nameDistinguisher, dateOfBirth, placeOfBirth, null, postalAddress);

            data = new PersonalData(nameOrPseudonym, nameDistinguisher, dateOfBirth, placeOfBirth, gender, null);

            checkConstruction(data, nameOrPseudonym, nameDistinguisher, dateOfBirth, placeOfBirth, gender, null);

            data = PersonalData.GetInstance(null);

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

            try
            {
                PersonalData.GetInstance(new Object());

                Fail("GetInstance() failed to detect bad object.");
            }
            catch (ArgumentException)
            {
                // expected
            }
        }
Ejemplo n.º 21
0
		public override void PerformTest()
		{
			NameOrPseudonym nameOrPseudonym = new NameOrPseudonym("pseudonym");
			BigInteger nameDistinguisher = BigInteger.ValueOf(10);
			DerGeneralizedTime dateOfBirth= new DerGeneralizedTime("20070315173729Z");
			DirectoryString placeOfBirth = new DirectoryString("placeOfBirth");
			string gender = "M";
			DirectoryString postalAddress = new DirectoryString("address");

			PersonalData data = new PersonalData(nameOrPseudonym, nameDistinguisher, dateOfBirth, placeOfBirth, gender, postalAddress);

			checkConstruction(data, nameOrPseudonym, nameDistinguisher, dateOfBirth, placeOfBirth, gender, postalAddress);

			data = new PersonalData(nameOrPseudonym, null, dateOfBirth, placeOfBirth, gender, postalAddress);

			checkConstruction(data, nameOrPseudonym, null, dateOfBirth, placeOfBirth, gender, postalAddress);

			data = new PersonalData(nameOrPseudonym, nameDistinguisher, null, placeOfBirth, gender, postalAddress);

			checkConstruction(data, nameOrPseudonym, nameDistinguisher, null, placeOfBirth, gender, postalAddress);

			data = new PersonalData(nameOrPseudonym, nameDistinguisher, dateOfBirth, null, gender, postalAddress);

			checkConstruction(data, nameOrPseudonym, nameDistinguisher, dateOfBirth, null, gender, postalAddress);

			data = new PersonalData(nameOrPseudonym, nameDistinguisher, dateOfBirth, placeOfBirth, null, postalAddress);

			checkConstruction(data, nameOrPseudonym, nameDistinguisher, dateOfBirth, placeOfBirth, null, postalAddress);

			data = new PersonalData(nameOrPseudonym, nameDistinguisher, dateOfBirth, placeOfBirth, gender, null);

			checkConstruction(data, nameOrPseudonym, nameDistinguisher, dateOfBirth, placeOfBirth, gender, null);

			data = PersonalData.GetInstance(null);

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

			try
			{
				PersonalData.GetInstance(new Object());

				Fail("GetInstance() failed to detect bad object.");
			}
			catch (ArgumentException)
			{
				// expected
			}
		}
 private PrivateKeyUsagePeriod(Asn1Sequence seq)
 {
     foreach (Asn1TaggedObject asn1TaggedObject in seq)
     {
         if (asn1TaggedObject.TagNo == 0)
         {
             this._notBefore = DerGeneralizedTime.GetInstance(asn1TaggedObject, false);
         }
         else if (asn1TaggedObject.TagNo == 1)
         {
             this._notAfter = DerGeneralizedTime.GetInstance(asn1TaggedObject, false);
         }
     }
 }
Ejemplo n.º 23
0
 private PrivateKeyUsagePeriod(Asn1Sequence seq)
 {
     foreach (Asn1TaggedObject item in seq)
     {
         if (item.TagNo == 0)
         {
             _notBefore = DerGeneralizedTime.GetInstance(item, isExplicit: false);
         }
         else if (item.TagNo == 1)
         {
             _notAfter = DerGeneralizedTime.GetInstance(item, isExplicit: false);
         }
     }
 }
Ejemplo n.º 24
0
        private static Asn1Encodable GetTime(Asn1Encodable time)
        {
            if (time is Asn1TaggedObject tag)
            {
                time = tag.GetObject();
            }

            if (time is Asn1OctetString str)
            {
                time = new DerGeneralizedTime(Strings.FromAsciiByteArray(str.GetOctets()));
            }

            return(time);
        }
Ejemplo n.º 25
0
        public TbsSign(Asn1Sequence seq)
        {
            var e = seq.GetEnumerator();

            Version      = DerInteger.GetInstance(e.Next());
            EsSeal       = SeSeal.GetInstance(e.Next());
            TimeInfo     = DerGeneralizedTime.GetInstance(e.Next());
            DataHash     = DerBitString.GetInstance(e.Next());
            PropertyInfo = DerIA5String.GetInstance(e.Next());
            if (e.MoveNext())
            {
                ExtensionData = ExtensionData.GetInstance(e.Next());
            }
        }
Ejemplo n.º 26
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);
                }
            }
        }
Ejemplo n.º 27
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);
            }
        }
    }
        internal static DateTime GetValidCertDateFromValidityModel(
            PkixParameters paramsPkix,
            PkixCertPath certPath,
            int index)
        {
            if (paramsPkix.ValidityModel != PkixParameters.ChainValidityModel)
            {
                return(GetValidDate(paramsPkix));
            }

            // if end cert use given signing/encryption/... time
            if (index <= 0)
            {
                return(PkixCertPathValidatorUtilities.GetValidDate(paramsPkix));
                // else use time when previous cert was created
            }

            if (index - 1 == 0)
            {
                DerGeneralizedTime dateOfCertgen = null;
                try
                {
                    X509Certificate cert   = (X509Certificate)certPath.Certificates[index - 1];
                    Asn1OctetString extVal = cert.GetExtensionValue(
                        IsisMttObjectIdentifiers.IdIsisMttATDateOfCertGen);
                    dateOfCertgen = DerGeneralizedTime.GetInstance(extVal);
                }
                catch (ArgumentException)
                {
                    throw new Exception(
                              "Date of cert gen extension could not be read.");
                }
                if (dateOfCertgen != null)
                {
                    try
                    {
                        return(dateOfCertgen.ToDateTime());
                    }
                    catch (ArgumentException e)
                    {
                        throw new Exception(
                                  "Date from date of cert gen extension could not be parsed.",
                                  e);
                    }
                }
            }

            return(((X509Certificate)certPath.Certificates[index - 1]).NotBefore);
        }
Ejemplo n.º 29
0
 private OcspIdentifier(Asn1Sequence seq)
 {
     //IL_000e: Unknown result type (might be due to invalid IL or missing references)
     //IL_0037: Unknown result type (might be due to invalid IL or missing references)
     if (seq == null)
     {
         throw new ArgumentNullException("seq");
     }
     if (seq.Count != 2)
     {
         throw new ArgumentException(string.Concat((object)"Bad sequence size: ", (object)seq.Count), "seq");
     }
     ocspResponderID = ResponderID.GetInstance(seq[0].ToAsn1Object());
     producedAt      = (DerGeneralizedTime)seq[1].ToAsn1Object();
 }
Ejemplo n.º 30
0
 /**
  * Constructor from a given details.
  *
  * @param nameOrPseudonym  Name or pseudonym.
  * @param nameDistinguisher Name distinguisher.
  * @param dateOfBirth      Date of birth.
  * @param placeOfBirth     Place of birth.
  * @param gender           Gender.
  * @param postalAddress    Postal Address.
  */
 public PersonalData(
     NameOrPseudonym nameOrPseudonym,
     BigInteger nameDistinguisher,
     DerGeneralizedTime dateOfBirth,
     DirectoryString placeOfBirth,
     string gender,
     DirectoryString postalAddress)
 {
     this.nameOrPseudonym   = nameOrPseudonym;
     this.dateOfBirth       = dateOfBirth;
     this.gender            = gender;
     this.nameDistinguisher = nameDistinguisher;
     this.postalAddress     = postalAddress;
     this.placeOfBirth      = placeOfBirth;
 }
Ejemplo n.º 31
0
        /**
        * Constructor from a given details.
        *
        * @param nameOrPseudonym  Name or pseudonym.
        * @param nameDistiguisher Name distinguisher.
        * @param dateOfBirth      Date of birth.
        * @param placeOfBirth     Place of birth.
        * @param gender           Gender.
        * @param postalAddress    Postal Address.
        */
        public PersonalData(
			NameOrPseudonym		nameOrPseudonym,
			BigInteger			nameDistiguisher,
			DerGeneralizedTime	dateOfBirth,
			string				placeOfBirth,
			string				gender,
			string				postalAddress)
        {
            this.nameOrPseudonym = nameOrPseudonym;
            this.dateOfBirth = dateOfBirth;
            this.gender = new DerPrintableString(gender, true);
            this.nameDistiguisher = nameDistiguisher;
            this.postalAddress = new DirectoryString(postalAddress);
            this.placeOfBirth = new DirectoryString(placeOfBirth);
        }
Ejemplo n.º 32
0
        private OcspIdentifier(
            Asn1Sequence seq)
        {
            if (seq == null)
            {
                throw new ArgumentNullException("seq");
            }
            if (seq.Count != 2)
            {
                throw new ArgumentException("Bad sequence size: " + seq.Count, "seq");
            }

            this.ocspResponderID = ResponderID.GetInstance(seq[0].ToAsn1Object());
            this.producedAt      = (DerGeneralizedTime)seq[1].ToAsn1Object();
        }
        /**
        * Constructor from a given details.
        *
        * @param nameOrPseudonym  Name or pseudonym.
        * @param nameDistinguisher Name distinguisher.
        * @param dateOfBirth      Date of birth.
        * @param placeOfBirth     Place of birth.
        * @param gender           Gender.
        * @param postalAddress    Postal Address.
        */
        public PersonalData(
			NameOrPseudonym		nameOrPseudonym,
			IBigInteger			nameDistinguisher,
			DerGeneralizedTime	dateOfBirth,
			DirectoryString		placeOfBirth,
			string				gender,
			DirectoryString		postalAddress)
        {
            this.nameOrPseudonym = nameOrPseudonym;
            this.dateOfBirth = dateOfBirth;
            this.gender = gender;
            this.nameDistinguisher = nameDistinguisher;
            this.postalAddress = postalAddress;
            this.placeOfBirth = placeOfBirth;
        }
		private PrivateKeyUsagePeriod(
			Asn1Sequence seq)
		{
			foreach (Asn1TaggedObject tObj in seq)
			{
				if (tObj.TagNo == 0)
				{
					_notBefore = DerGeneralizedTime.GetInstance(tObj, false);
				}
				else if (tObj.TagNo == 1)
				{
					_notAfter = DerGeneralizedTime.GetInstance(tObj, false);
				}
			}
		}
Ejemplo n.º 35
0
 public SesPropertyInfo(DerInteger type,
                        DerUtf8String name,
                        DerInteger certListType,
                        SesCertCollect certList,
                        DerGeneralizedTime createDate,
                        DerGeneralizedTime validStart,
                        DerGeneralizedTime validEnd)
 {
     Type         = type;
     Name         = name;
     CertList     = certList;
     CertListType = certListType;
     CreateDate   = createDate;
     ValidEnd     = validEnd;
     ValidStart   = validStart;
 }
 private void checkValues(
     PersonalData data,
     NameOrPseudonym nameOrPseudonym,
     IBigInteger nameDistinguisher,
     DerGeneralizedTime dateOfBirth,
     DirectoryString placeOfBirth,
     string gender,
     DirectoryString postalAddress)
 {
     checkMandatoryField("nameOrPseudonym", nameOrPseudonym, data.NameOrPseudonym);
     checkOptionalField("nameDistinguisher", nameDistinguisher, data.NameDistinguisher);
     checkOptionalField("dateOfBirth", dateOfBirth, data.DateOfBirth);
     checkOptionalField("placeOfBirth", placeOfBirth, data.PlaceOfBirth);
     checkOptionalField("gender", gender, data.Gender);
     checkOptionalField("postalAddress", postalAddress, data.PostalAddress);
 }
Ejemplo n.º 37
0
        private void CheckConstruction(
            DeclarationOfMajority decl,
            DeclarationOfMajority.Choice type,
            DerGeneralizedTime dateOfBirth,
            int notYoungerThan)
        {
            CheckValues(decl, type, dateOfBirth, notYoungerThan);

            decl = DeclarationOfMajority.GetInstance(decl);

            CheckValues(decl, type, dateOfBirth, notYoungerThan);

            decl = DeclarationOfMajority.GetInstance(Asn1Object.FromByteArray(decl.GetEncoded()));

            CheckValues(decl, type, dateOfBirth, notYoungerThan);
        }
Ejemplo n.º 38
0
        /**
         * Constructor from Asn1Sequence.
         * <p/>
         * The sequence is of type NameOrPseudonym:
         * <p/>
         * <pre>
         *     PersonalData ::= SEQUENCE {
         *       nameOrPseudonym NameOrPseudonym,
         *       nameDistinguisher [0] INTEGER OPTIONAL,
         *       dateOfBirth [1] GeneralizedTime OPTIONAL,
         *       placeOfBirth [2] DirectoryString OPTIONAL,
         *       gender [3] PrintableString OPTIONAL,
         *       postalAddress [4] DirectoryString OPTIONAL
         *       }
         * </pre>
         *
         * @param seq The ASN.1 sequence.
         */
        private PersonalData(
            Asn1Sequence seq)
        {
            if (seq.Count < 1)
            {
                throw new ArgumentException("Bad sequence size: " + seq.Count);
            }

            IEnumerator e = seq.GetEnumerator();

            e.MoveNext();

            nameOrPseudonym = NameOrPseudonym.GetInstance(e.Current);

            while (e.MoveNext())
            {
                Asn1TaggedObject o = Asn1TaggedObject.GetInstance(e.Current);
                int tag            = o.TagNo;
                switch (tag)
                {
                case 0:
                    nameDistinguisher = DerInteger.GetInstance(o, false).Value;
                    break;

                case 1:
                    dateOfBirth = DerGeneralizedTime.GetInstance(o, false);
                    break;

                case 2:
                    placeOfBirth = DirectoryString.GetInstance(o, true);
                    break;

                case 3:
                    gender = DerPrintableString.GetInstance(o, false).GetString();
                    break;

                case 4:
                    postalAddress = DirectoryString.GetInstance(o, true);
                    break;

                default:
                    throw new ArgumentException("Bad tag number: " + o.TagNo);
                }
            }
        }
Ejemplo n.º 39
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");
                }
            }
        }
Ejemplo n.º 40
0
        public void AddCrlEntry(DerInteger userCertificate, Time revocationDate, int reason,
                                DerGeneralizedTime invalidityDate)
        {
            IList extOids   = Platform.CreateArrayList();
            IList extValues = Platform.CreateArrayList();

            if (reason != 0)
            {
                CrlReason crlReason = new CrlReason(reason);

                try
                {
                    extOids.Add(X509Extensions.ReasonCode);
                    extValues.Add(new X509Extension(false, new DerOctetString(crlReason.GetEncoded())));
                }
                catch (IOException e)
                {
                    throw new ArgumentException("error encoding reason: " + e);
                }
            }

            if (invalidityDate != null)
            {
                try
                {
                    extOids.Add(X509Extensions.InvalidityDate);
                    extValues.Add(new X509Extension(false, new DerOctetString(invalidityDate.GetEncoded())));
                }
                catch (IOException e)
                {
                    throw new ArgumentException("error encoding invalidityDate: " + e);
                }
            }

            if (extOids.Count != 0)
            {
                AddCrlEntry(userCertificate, revocationDate, new X509Extensions(extOids, extValues));
            }
            else
            {
                AddCrlEntry(userCertificate, revocationDate, null);
            }
        }
        public void AddCrlEntry(DerInteger userCertificate, Time revocationDate, int reason,
            DerGeneralizedTime invalidityDate)
        {
            IList extOids = Platform.CreateArrayList();
            IList extValues = Platform.CreateArrayList();

            if (reason != 0)
            {
                CrlReason crlReason = new CrlReason(reason);

                try
                {
                    extOids.Add(X509Extensions.ReasonCode);
                    extValues.Add(new X509Extension(false, new DerOctetString(crlReason.GetEncoded())));
                }
                catch (IOException e)
                {
                    throw new ArgumentException("error encoding reason: " + e);
                }
            }

            if (invalidityDate != null)
            {
                try
                {
                    extOids.Add(X509Extensions.InvalidityDate);
                    extValues.Add(new X509Extension(false, new DerOctetString(invalidityDate.GetEncoded())));
                }
                catch (IOException e)
                {
                    throw new ArgumentException("error encoding invalidityDate: " + e);
                }
            }

            if (extOids.Count != 0)
            {
                AddCrlEntry(userCertificate, revocationDate, new X509Extensions(extOids, extValues));
            }
            else
            {
                AddCrlEntry(userCertificate, revocationDate, null);
            }
        }
		private void checkConstruction(
			DeclarationOfMajority			decl,
			DeclarationOfMajority.Choice	type,
			DerGeneralizedTime				dateOfBirth,
			int								notYoungerThan)
		{
			checkValues(decl, type, dateOfBirth, notYoungerThan);

			decl = DeclarationOfMajority.GetInstance(decl);

			checkValues(decl, type, dateOfBirth, notYoungerThan);

			Asn1InputStream aIn = new Asn1InputStream(decl.ToAsn1Object().GetEncoded());

			DerTaggedObject info = (DerTaggedObject) aIn.ReadObject();

			decl = DeclarationOfMajority.GetInstance(info);

			checkValues(decl, type, dateOfBirth, notYoungerThan);
		}
Ejemplo n.º 43
0
        private void checkConstruction(
            DeclarationOfMajority decl,
            DeclarationOfMajority.Choice type,
            DerGeneralizedTime dateOfBirth,
            int notYoungerThan)
        {
            checkValues(decl, type, dateOfBirth, notYoungerThan);

            decl = DeclarationOfMajority.GetInstance(decl);

            checkValues(decl, type, dateOfBirth, notYoungerThan);

            Asn1InputStream aIn = new Asn1InputStream(decl.ToAsn1Object().GetEncoded());

            DerTaggedObject info = (DerTaggedObject)aIn.ReadObject();

            decl = DeclarationOfMajority.GetInstance(info);

            checkValues(decl, type, dateOfBirth, notYoungerThan);
        }
Ejemplo n.º 44
0
        private PersonalData(Asn1Sequence seq)
        {
            //IL_0024: Unknown result type (might be due to invalid IL or missing references)
            //IL_00e9: Unknown result type (might be due to invalid IL or missing references)
            if (seq.Count < 1)
            {
                throw new ArgumentException(string.Concat((object)"Bad sequence size: ", (object)seq.Count));
            }
            global::System.Collections.IEnumerator enumerator = seq.GetEnumerator();
            enumerator.MoveNext();
            nameOrPseudonym = NameOrPseudonym.GetInstance(enumerator.get_Current());
            while (enumerator.MoveNext())
            {
                Asn1TaggedObject instance = Asn1TaggedObject.GetInstance(enumerator.get_Current());
                switch (instance.TagNo)
                {
                case 0:
                    nameDistinguisher = DerInteger.GetInstance(instance, isExplicit: false).Value;
                    break;

                case 1:
                    dateOfBirth = DerGeneralizedTime.GetInstance(instance, isExplicit: false);
                    break;

                case 2:
                    placeOfBirth = DirectoryString.GetInstance(instance, isExplicit: true);
                    break;

                case 3:
                    gender = DerPrintableString.GetInstance(instance, isExplicit: false).GetString();
                    break;

                case 4:
                    postalAddress = DirectoryString.GetInstance(instance, isExplicit: true);
                    break;

                default:
                    throw new ArgumentException(string.Concat((object)"Bad tag number: ", (object)instance.TagNo));
                }
            }
        }
 private ResponseObject(CertificateID certId, CertificateStatus certStatus, DerGeneralizedTime thisUpdate, DerGeneralizedTime nextUpdate, X509Extensions extensions)
 {
     this.certId = certId;
     if (certStatus == null)
     {
         this.certStatus = new CertStatus();
     }
     else if (certStatus is UnknownStatus)
     {
         this.certStatus = new CertStatus(2, DerNull.Instance);
     }
     else
     {
         RevokedStatus revokedStatus    = (RevokedStatus)certStatus;
         CrlReason     revocationReason = revokedStatus.HasRevocationReason ? new CrlReason(revokedStatus.RevocationReason) : null;
         this.certStatus = new CertStatus(new RevokedInfo(new DerGeneralizedTime(revokedStatus.RevocationTime), revocationReason));
     }
     this.thisUpdate = thisUpdate;
     this.nextUpdate = nextUpdate;
     this.extensions = extensions;
 }
Ejemplo n.º 46
0
 public bool IsRevoked(CertificateID id, ref DerGeneralizedTime dt, ref CrlReason reason)
 {
     if (Crl == null)
     {
         return(false);
     }
     else
     {
         X509CrlEntry ent = Crl.GetRevokedCertificate(id.SerialNumber);
         if (ent == null)
         {
             return(false);
         }
         else
         {
             dt     = new DerGeneralizedTime(ent.RevocationDate);
             reason = new CrlReason(CrlReason.CessationOfOperation);
             return(true);
         }
     }
 }
Ejemplo n.º 47
0
		// TODO Add GetInstance method(s) and amke this private?
		public CrlID(
            Asn1Sequence seq)
        {
			foreach (Asn1TaggedObject o in seq)
			{
				switch (o.TagNo)
                {
                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.TagNo);
                }
            }
        }
Ejemplo n.º 48
0
        public override void PerformTest()
        {
            for (int i = 0; i != input.Length; i++)
            {
                DerGeneralizedTime t = new DerGeneralizedTime(input[i]);

                if (output[i].IndexOf('G') > 0)                   // don't check local time the same way
                {
                    if (!t.GetTime().Equals(output[i]))
                    {
                        Fail("failed conversion test");
                    }

                    if (!t.ToDateTime().ToString(@"yyyyMMddHHmmss\Z").Equals(zOutput[i]))
                    {
                        Fail("failed date conversion test");
                    }
                }
                else
                {
                    string offset = CalculateGmtOffset(t.ToDateTime());
                    if (!t.GetTime().Equals(output[i] + offset))
                    {
                        Fail("failed conversion test");
                    }
                }
            }

            for (int i = 0; i != input.Length; i++)
            {
                DerGeneralizedTime t = new DerGeneralizedTime(input[i]);

                if (!t.ToDateTime().ToString(@"yyyyMMddHHmmss.fff\Z").Equals(mzOutput[i]))
                {
                    Console.WriteLine("{0} != {1}", t.ToDateTime().ToString(@"yyyyMMddHHmmss.SSS\Z"), mzOutput[i]);

                    Fail("failed long date conversion test");
                }
            }
        }
Ejemplo n.º 49
0
 internal static global::System.DateTime GetValidCertDateFromValidityModel(PkixParameters paramsPkix, PkixCertPath certPath, int index)
 {
     //IL_0065: Expected O, but got Unknown
     if (paramsPkix.ValidityModel != 1)
     {
         return(GetValidDate(paramsPkix));
     }
     if (index <= 0)
     {
         return(GetValidDate(paramsPkix));
     }
     if (index - 1 == 0)
     {
         DerGeneralizedTime derGeneralizedTime = null;
         try
         {
             X509Certificate x509Certificate = (X509Certificate)certPath.Certificates.get_Item(index - 1);
             Asn1OctetString extensionValue  = x509Certificate.GetExtensionValue(IsisMttObjectIdentifiers.IdIsisMttATDateOfCertGen);
             derGeneralizedTime = DerGeneralizedTime.GetInstance(extensionValue);
         }
         catch (ArgumentException)
         {
             throw new global::System.Exception("Date of cert gen extension could not be read.");
         }
         if (derGeneralizedTime != null)
         {
             try
             {
                 return(derGeneralizedTime.ToDateTime());
             }
             catch (ArgumentException val2)
             {
                 ArgumentException val3 = val2;
                 throw new global::System.Exception("Date from date of cert gen extension could not be parsed.", (global::System.Exception)(object) val3);
             }
         }
     }
     return(((X509Certificate)certPath.Certificates.get_Item(index - 1)).NotBefore);
 }
Ejemplo n.º 50
0
 public SingleResponse(Asn1Sequence seq)
 {
     this.certID     = CertID.GetInstance(seq[0]);
     this.certStatus = CertStatus.GetInstance(seq[1]);
     this.thisUpdate = (DerGeneralizedTime)seq[2];
     if (seq.Count > 4)
     {
         this.nextUpdate       = DerGeneralizedTime.GetInstance((Asn1TaggedObject)seq[3], true);
         this.singleExtensions = X509Extensions.GetInstance((Asn1TaggedObject)seq[4], true);
         return;
     }
     if (seq.Count > 3)
     {
         Asn1TaggedObject asn1TaggedObject = (Asn1TaggedObject)seq[3];
         if (asn1TaggedObject.TagNo == 0)
         {
             this.nextUpdate = DerGeneralizedTime.GetInstance(asn1TaggedObject, true);
             return;
         }
         this.singleExtensions = X509Extensions.GetInstance(asn1TaggedObject, true);
     }
 }
Ejemplo n.º 51
0
 public TstInfo(
     DerObjectIdentifier tsaPolicyId,
     MessageImprint messageImprint,
     DerInteger serialNumber,
     DerGeneralizedTime genTime,
     Accuracy accuracy,
     DerBoolean ordering,
     DerInteger nonce,
     GeneralName tsa,
     X509Extensions extensions)
 {
     this.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;
 }
Ejemplo n.º 52
0
		private void checkConstruction(
			PersonalData		data,
			NameOrPseudonym		nameOrPseudonym,
			BigInteger			nameDistinguisher,
			DerGeneralizedTime	dateOfBirth,
			DirectoryString		placeOfBirth,
			string				gender,
			DirectoryString		postalAddress)
		{
			checkValues(data, nameOrPseudonym, nameDistinguisher, dateOfBirth, placeOfBirth, gender, postalAddress);

			data = PersonalData.GetInstance(data);

			checkValues(data, nameOrPseudonym, nameDistinguisher, dateOfBirth, placeOfBirth, gender, postalAddress);

			Asn1InputStream aIn = new Asn1InputStream(data.ToAsn1Object().GetEncoded());

			Asn1Sequence seq = (Asn1Sequence) aIn.ReadObject();

			data = PersonalData.GetInstance(seq);

			checkValues(data, nameOrPseudonym, nameDistinguisher, dateOfBirth, placeOfBirth, gender, postalAddress);
		}
        private void checkConstruction(
            PersonalData data,
            NameOrPseudonym nameOrPseudonym,
            IBigInteger nameDistinguisher,
            DerGeneralizedTime dateOfBirth,
            DirectoryString placeOfBirth,
            string gender,
            DirectoryString postalAddress)
        {
            checkValues(data, nameOrPseudonym, nameDistinguisher, dateOfBirth, placeOfBirth, gender, postalAddress);

            data = PersonalData.GetInstance(data);

            checkValues(data, nameOrPseudonym, nameDistinguisher, dateOfBirth, placeOfBirth, gender, postalAddress);

            Asn1InputStream aIn = new Asn1InputStream(data.ToAsn1Object().GetEncoded());

            Asn1Sequence seq = (Asn1Sequence)aIn.ReadObject();

            data = PersonalData.GetInstance(seq);

            checkValues(data, nameOrPseudonym, nameDistinguisher, dateOfBirth, placeOfBirth, gender, postalAddress);
        }
Ejemplo n.º 54
0
    public CrlID(Asn1Sequence seq)
    {
        foreach (Asn1TaggedObject item in seq)
        {
            switch (item.TagNo)
            {
            case 0:
                crlUrl = DerIA5String.GetInstance(item, isExplicit: true);
                break;

            case 1:
                crlNum = DerInteger.GetInstance(item, isExplicit: true);
                break;

            case 2:
                crlTime = DerGeneralizedTime.GetInstance(item, isExplicit: true);
                break;

            default:
                throw new ArgumentException("unknown tag number: " + item.TagNo);
            }
        }
    }
Ejemplo n.º 55
0
		private ResponseData(
			Asn1Sequence seq)
		{
			int index = 0;

			Asn1Encodable enc = seq[0];
			if (enc is Asn1TaggedObject)
			{
				Asn1TaggedObject o = (Asn1TaggedObject)enc;

				if (o.TagNo == 0)
				{
					this.versionPresent = true;
					this.version = DerInteger.GetInstance(o, true);
					index++;
				}
				else
				{
					this.version = V1;
				}
			}
			else
			{
				this.version = V1;
			}

			this.responderID = ResponderID.GetInstance(seq[index++]);
			this.producedAt = (DerGeneralizedTime)seq[index++];
			this.responses = (Asn1Sequence)seq[index++];

			if (seq.Count > index)
			{
				this.responseExtensions = X509Extensions.GetInstance(
					(Asn1TaggedObject)seq[index], true);
			}
		}
		public void SetEndDate(
            DerGeneralizedTime endDate)
        {
            this.endDate = endDate;
        }
		public void SetStartDate(
            DerGeneralizedTime startDate)
        {
            this.startDate = startDate;
        }
Ejemplo n.º 58
0
		public TstInfo(
			DerObjectIdentifier	tsaPolicyId,
			MessageImprint		messageImprint,
			DerInteger			serialNumber,
			DerGeneralizedTime	genTime,
			Accuracy			accuracy,
			DerBoolean			ordering,
			DerInteger			nonce,
			GeneralName			tsa,
			X509Extensions		extensions)
		{
			this.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;
		}
Ejemplo n.º 59
0
		private TstInfo(
			Asn1Sequence seq)
		{
			IEnumerator e = seq.GetEnumerator();

			// version
			e.MoveNext();
			version = DerInteger.GetInstance(e.Current);

			// tsaPolicy
			e.MoveNext();
			tsaPolicyId = DerObjectIdentifier.GetInstance(e.Current);

			// messageImprint
			e.MoveNext();
			messageImprint = MessageImprint.GetInstance(e.Current);

			// serialNumber
			e.MoveNext();
			serialNumber = DerInteger.GetInstance(e.Current);

			// genTime
			e.MoveNext();
			genTime = DerGeneralizedTime.GetInstance(e.Current);

			// default for ordering
			ordering = DerBoolean.False;

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

				if (o is Asn1TaggedObject)
				{
					DerTaggedObject tagged = (DerTaggedObject) o;

					switch (tagged.TagNo)
					{
						case 0:
							tsa = GeneralName.GetInstance(tagged, true);
							break;
						case 1:
							extensions = X509Extensions.GetInstance(tagged, false);
							break;
						default:
							throw new ArgumentException("Unknown tag value " + tagged.TagNo);
					}
				}

				if (o is DerSequence)
				{
					accuracy = Accuracy.GetInstance(o);
				}

				if (o is DerBoolean)
				{
					ordering = DerBoolean.GetInstance(o);
				}

				if (o is DerInteger)
				{
					nonce = DerInteger.GetInstance(o);
				}
			}
		}
Ejemplo n.º 60
0
		/**
		* Constructor from Asn1Sequence.
		* <p/>
		* The sequence is of type NameOrPseudonym:
		* <p/>
		* <pre>
		*     PersonalData ::= SEQUENCE {
		*       nameOrPseudonym NameOrPseudonym,
		*       nameDistinguisher [0] INTEGER OPTIONAL,
		*       dateOfBirth [1] GeneralizedTime OPTIONAL,
		*       placeOfBirth [2] DirectoryString OPTIONAL,
		*       gender [3] PrintableString OPTIONAL,
		*       postalAddress [4] DirectoryString OPTIONAL
		*       }
		* </pre>
		*
		* @param seq The ASN.1 sequence.
		*/
		private PersonalData(
			Asn1Sequence seq)
		{
			if (seq.Count < 1)
				throw new ArgumentException("Bad sequence size: " + seq.Count);

			IEnumerator e = seq.GetEnumerator();
			e.MoveNext();

			nameOrPseudonym = NameOrPseudonym.GetInstance(e.Current);

			while (e.MoveNext())
			{
				Asn1TaggedObject o = Asn1TaggedObject.GetInstance(e.Current);
				int tag = o.TagNo;
				switch (tag)
				{
					case 0:
						nameDistinguisher = DerInteger.GetInstance(o, false).Value;
						break;
					case 1:
						dateOfBirth = DerGeneralizedTime.GetInstance(o, false);
						break;
					case 2:
						placeOfBirth = DirectoryString.GetInstance(o, true);
						break;
					case 3:
						gender = DerPrintableString.GetInstance(o, false).GetString();
						break;
					case 4:
						postalAddress = DirectoryString.GetInstance(o, true);
						break;
					default:
						throw new ArgumentException("Bad tag number: " + o.TagNo);
				}
			}
		}