diff options
Diffstat (limited to 'src/main/java/de/measite/minidns/util/NameUtil.java')
-rw-r--r-- | src/main/java/de/measite/minidns/util/NameUtil.java | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/src/main/java/de/measite/minidns/util/NameUtil.java b/src/main/java/de/measite/minidns/util/NameUtil.java index 91a6649d..7ae373bc 100644 --- a/src/main/java/de/measite/minidns/util/NameUtil.java +++ b/src/main/java/de/measite/minidns/util/NameUtil.java @@ -8,12 +8,28 @@ import java.net.IDN; import java.util.HashSet; import java.util.Arrays; +/** + * Utilities related to internationalized domain names and dns name handling. + */ public class NameUtil { + /** + * Retrieve the rough binary length of a string + * (length + 2 bytes length prefix). + * @param name The name string. + * @return The binary size of the string (length + 2). + */ public static int size(String name) { return name.length() + 2; } + /** + * Check if two internationalized domain names are equal, possibly causing + * a serialization of both domain names. + * @param name1 The first domain name. + * @param name2 The second domain name. + * @return True if both domain names are the same. + */ public static boolean idnEquals(String name1, String name2) { if (name1 == name2) return true; // catches null, null if (name1 == null) return false; @@ -27,6 +43,12 @@ public class NameUtil { } } + /** + * Serialize a domain name under IDN rules. + * @param name The domain name. + * @return The binary domain name representation. + * @throws IOException Should never happen. + */ public static byte[] toByteArray(String name) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(64); DataOutputStream dos = new DataOutputStream(baos); @@ -38,8 +60,16 @@ public class NameUtil { dos.writeByte(0); dos.flush(); return baos.toByteArray(); - } + } + /** + * Parse a domain name starting at the current offset and moving the input + * stream pointer past this domain name (even if cross references occure). + * @param dis The input stream. + * @param data The raw data (for cross references). + * @return The domain name string. + * @throws IOException Should never happen. + */ public static String parse(DataInputStream dis, byte data[]) throws IOException { @@ -63,6 +93,14 @@ public class NameUtil { return s; } + /** + * Parse a domain name starting at the given offset. + * @param data The raw data. + * @param offset The offset. + * @param jumps The list of jumps (by now). + * @return The parsed domain name. + * @throws IllegalStateException on cycles. + */ public static String parse( byte data[], int offset, |