public SubjectAltNameExtension (string[] rfc822, string[] dnsNames,
				string[] ipAddresses, string[] uris)
		{
			_names = new GeneralNames(rfc822, dnsNames, ipAddresses, uris);
			// 0x04 for string decoding and then the General Names!
			extnValue = new ASN1 (0x04, _names.GetBytes());
			extnOid = "2.5.29.17";
		//	extnCritical = true;
		}
		public SubjectAltNameExtension ()
		{
			extnOid = "2.5.29.17";
			_names = new GeneralNames ();
		}
			public DP (ASN1 dp)
			{
				for (int i = 0; i < dp.Count; i++) {
					ASN1 el = dp[i];
					switch (el.Tag) {
					case 0xA0: // DistributionPointName OPTIONAL
						for (int j = 0; j < el.Count; j++) {
							ASN1 dpn = el [j];
							if (dpn.Tag == 0xA0) {
								DistributionPoint = new GeneralNames (dpn).ToString ();
							}
						}
						break;
					case 0xA1: // ReasonFlags OPTIONAL
						break;
					case 0xA2: // RelativeDistinguishedName
						break;
					}
				}
			}
		protected override void Decode () 
		{
			ASN1 sequence = new ASN1 (extnValue.Value);
			if (sequence.Tag != 0x30)
				throw new ArgumentException ("Invalid SubjectAltName extension");
			_names = new GeneralNames (sequence);
		}
 public SubjectAltNameExtension()
 {
     extnOid = "2.5.29.17";
     _names  = new GeneralNames();
 }