public SignerLocation(
            DerUtf8String	countryName,
            DerUtf8String	localityName,
            Asn1Sequence	postalAddress)
        {
            if (postalAddress != null && postalAddress.Count > 6)
            {
                throw new ArgumentException("postal address must contain less than 6 strings");
            }

            if (countryName != null)
            {
                this.countryName = DerUtf8String.GetInstance(countryName.ToAsn1Object());
            }

            if (localityName != null)
            {
                this.localityName = DerUtf8String.GetInstance(localityName.ToAsn1Object());
            }

            if (postalAddress != null)
            {
                this.postalAddress = (Asn1Sequence) postalAddress.ToAsn1Object();
            }
        }
 public SignerLocation(
     Asn1Sequence seq)
 {
     foreach (Asn1TaggedObject obj in seq)
     {
         switch (obj.TagNo)
         {
             case 0:
                 this.countryName = DerUtf8String.GetInstance(obj, true);
                 break;
             case 1:
                 this.localityName = DerUtf8String.GetInstance(obj, true);
                 break;
             case 2:
                 bool isExplicit = obj.IsExplicit();	// handle erroneous implicitly tagged sequences
                 this.postalAddress = Asn1Sequence.GetInstance(obj, isExplicit);
                 if (postalAddress != null && postalAddress.Count > 6)
                     throw new ArgumentException("postal address must contain less than 6 strings");
                 break;
             default:
                 throw new ArgumentException("illegal tag");
         }
     }
 }