Org.BouncyCastle.Asn1.X509.GeneralName.toGeneralNameEncoding C# (CSharp) Method

toGeneralNameEncoding() private method

private toGeneralNameEncoding ( string ip ) : byte[]
ip string
return byte[]
		private byte[] toGeneralNameEncoding(
			string ip)
		{
			if (NetUtils.IPAddress.IsValidIPv6WithNetmask(ip) || NetUtils.IPAddress.IsValidIPv6(ip))
			{
				int slashIndex = ip.IndexOf('/');

				if (slashIndex < 0)
				{
					byte[] addr = new byte[16];
					int[]  parsedIp = parseIPv6(ip);
					copyInts(parsedIp, addr, 0);

					return addr;
				}
				else
				{
					byte[] addr = new byte[32];
					int[]  parsedIp = parseIPv6(ip.Substring(0, slashIndex));
					copyInts(parsedIp, addr, 0);
					string mask = ip.Substring(slashIndex + 1);
					if (mask.IndexOf(':') > 0)
					{
						parsedIp = parseIPv6(mask);
					}
					else
					{
						parsedIp = parseMask(mask);
					}
					copyInts(parsedIp, addr, 16);

					return addr;
				}
			}
			else if (NetUtils.IPAddress.IsValidIPv4WithNetmask(ip) || NetUtils.IPAddress.IsValidIPv4(ip))
			{
				int slashIndex = ip.IndexOf('/');

				if (slashIndex < 0)
				{
					byte[] addr = new byte[4];

					parseIPv4(ip, addr, 0);

					return addr;
				}
				else
				{
					byte[] addr = new byte[8];

					parseIPv4(ip.Substring(0, slashIndex), addr, 0);

					string mask = ip.Substring(slashIndex + 1);
					if (mask.IndexOf('.') > 0)
					{
						parseIPv4(mask, addr, 4);
					}
					else
					{
						parseIPv4Mask(mask, addr, 4);
					}

					return addr;
				}
			}

			return null;
		}