![JAR search and dependency download from the Maven repository](/logo.png)
nl.open.jwtdependency.org.bouncycastle.util.IPAddress Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of java-jwt-nodependencies Show documentation
Show all versions of java-jwt-nodependencies Show documentation
This is a drop in replacement for the auth0 java-jwt library (see https://github.com/auth0/java-jwt). This jar makes sure there are no external dependencies (e.g. fasterXml, Apacha Commons) needed. This is useful when deploying to an application server (e.g. tomcat with Alfreso or Pega).
The newest version!
package org.bouncycastle.util;
/**
* Utility methods for processing String objects containing IP addresses.
*/
public class IPAddress
{
/**
* Validate the given IPv4 or IPv6 address.
*
* @param address the IP address as a String.
*
* @return true if a valid address, false otherwise
*/
public static boolean isValid(
String address)
{
return isValidIPv4(address) || isValidIPv6(address);
}
/**
* Validate the given IPv4 or IPv6 address and netmask.
*
* @param address the IP address as a String.
*
* @return true if a valid address with netmask, false otherwise
*/
public static boolean isValidWithNetMask(
String address)
{
return isValidIPv4WithNetmask(address) || isValidIPv6WithNetmask(address);
}
/**
* Validate the given IPv4 address.
*
* @param address the IP address as a String.
*
* @return true if a valid IPv4 address, false otherwise
*/
public static boolean isValidIPv4(
String address)
{
if (address.length() == 0)
{
return false;
}
int octet;
int octets = 0;
String temp = address+".";
int pos;
int start = 0;
while (start < temp.length()
&& (pos = temp.indexOf('.', start)) > start)
{
if (octets == 4)
{
return false;
}
try
{
octet = Integer.parseInt(temp.substring(start, pos));
}
catch (NumberFormatException ex)
{
return false;
}
if (octet < 0 || octet > 255)
{
return false;
}
start = pos + 1;
octets++;
}
return octets == 4;
}
public static boolean isValidIPv4WithNetmask(
String address)
{
int index = address.indexOf("/");
String mask = address.substring(index + 1);
return (index > 0) && isValidIPv4(address.substring(0, index))
&& (isValidIPv4(mask) || isMaskValue(mask, 32));
}
public static boolean isValidIPv6WithNetmask(
String address)
{
int index = address.indexOf("/");
String mask = address.substring(index + 1);
return (index > 0) && (isValidIPv6(address.substring(0, index))
&& (isValidIPv6(mask) || isMaskValue(mask, 128)));
}
private static boolean isMaskValue(String component, int size)
{
try
{
int value = Integer.parseInt(component);
return value >= 0 && value <= size;
}
catch (NumberFormatException e)
{
return false;
}
}
/**
* Validate the given IPv6 address.
*
* @param address the IP address as a String.
*
* @return true if a valid IPv4 address, false otherwise
*/
public static boolean isValidIPv6(
String address)
{
if (address.length() == 0)
{
return false;
}
int octet;
int octets = 0;
String temp = address + ":";
boolean doubleColonFound = false;
int pos;
int start = 0;
while (start < temp.length()
&& (pos = temp.indexOf(':', start)) >= start)
{
if (octets == 8)
{
return false;
}
if (start != pos)
{
String value = temp.substring(start, pos);
if (pos == (temp.length() - 1) && value.indexOf('.') > 0)
{
if (!isValidIPv4(value))
{
return false;
}
octets++; // add an extra one as address covers 2 words.
}
else
{
try
{
octet = Integer.parseInt(temp.substring(start, pos), 16);
}
catch (NumberFormatException ex)
{
return false;
}
if (octet < 0 || octet > 0xffff)
{
return false;
}
}
}
else
{
if (pos != 1 && pos != temp.length() - 1 && doubleColonFound)
{
return false;
}
doubleColonFound = true;
}
start = pos + 1;
octets++;
}
return octets == 8 || doubleColonFound;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy