You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by er...@apache.org on 2005/01/21 23:24:48 UTC

svn commit: r125973 - incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone

Author: erodriguez
Date: Fri Jan 21 14:24:46 2005
New Revision: 125973

URL: http://svn.apache.org/viewcvs?view=rev&rev=125973
Log:
Skeleton implementations of DNS Resource Record types used by the DNS LDAP schema.
Added:
   incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/A6Record.java   (contents, props changed)
   incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/CertificateRecord.java   (contents, props changed)
   incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/DnameRecord.java   (contents, props changed)
   incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/Inet6AddressRecord.java   (contents, props changed)
   incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/KeyExchangeRecord.java   (contents, props changed)
   incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/KeyRecord.java   (contents, props changed)
   incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/LocationRecord.java   (contents, props changed)
   incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/NameAuthorityPointer.java   (contents, props changed)
   incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/NextNameRecord.java   (contents, props changed)
   incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/ServerSelectionRecord.java   (contents, props changed)
   incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/SignatureRecord.java   (contents, props changed)

Added: incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/A6Record.java
Url: http://svn.apache.org/viewcvs/incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/A6Record.java?view=auto&rev=125973
==============================================================================
--- (empty file)
+++ incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/A6Record.java	Fri Jan 21 14:24:46 2005
@@ -0,0 +1,62 @@
+/*
+ *   Copyright 2005 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+
+package org.apache.dns.records.zone;
+
+import org.apache.dns.records.InternetResource;
+import org.apache.dns.records.RecordType;
+
+/**
+ * 3.1.1.  Format
+ * 
+ *    The RDATA portion of the A6 record contains two or three fields.
+ * 
+ *            +-----------+------------------+-------------------+
+ *            |Prefix len.|  Address suffix  |    Prefix name    |
+ *            | (1 octet) |  (0..16 octets)  |  (0..255 octets)  |
+ *            +-----------+------------------+-------------------+
+ * 
+ *    o  A prefix length, encoded as an eight-bit unsigned integer with
+ *       value between 0 and 128 inclusive.
+ * 
+ *    o  An IPv6 address suffix, encoded in network order (high-order octet
+ *       first).  There MUST be exactly enough octets in this field to
+ *       contain a number of bits equal to 128 minus prefix length, with 0
+ *       to 7 leading pad bits to make this field an integral number of
+ *       octets.  Pad bits, if present, MUST be set to zero when loading a
+ *       zone file and ignored (other than for SIG [DNSSEC] verification)
+ *       on reception.
+ * 
+ *    o  The name of the prefix, encoded as a domain name.  By the rules of
+ *       [DNSIS], this name MUST NOT be compressed.
+ * 
+ *    The domain name component SHALL NOT be present if the prefix length
+ *    is zero.  The address suffix component SHALL NOT be present if the
+ *    prefix length is 128.
+ * 
+ *    It is SUGGESTED that an A6 record intended for use as a prefix for
+ *    other A6 records have all the insignificant trailing bits in its
+ *    address suffix field set to zero.
+ */
+public class A6Record extends InternetResource
+{
+	public A6Record( String domainName, int timeToLive, byte[] resourceData )
+	{
+		super( domainName, RecordType.A6, timeToLive, resourceData );
+	}
+}
+

Added: incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/CertificateRecord.java
Url: http://svn.apache.org/viewcvs/incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/CertificateRecord.java?view=auto&rev=125973
==============================================================================
--- (empty file)
+++ incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/CertificateRecord.java	Fri Jan 21 14:24:46 2005
@@ -0,0 +1,67 @@
+/*
+ *   Copyright 2005 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+
+package org.apache.dns.records.zone;
+
+import org.apache.dns.records.InternetResource;
+import org.apache.dns.records.RecordType;
+
+/**
+ * 2. The CERT Resource Record
+ * 
+ *    The CERT resource record (RR) has the structure given below.  Its RR
+ *    type code is 37.
+ * 
+ *                          1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
+ *      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ *     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ *     |             type              |             key tag           |
+ *     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ *     |   algorithm   |                                               /
+ *     +---------------+            certificate or CRL                 /
+ *     /                                                               /
+ *     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
+ * 
+ *    The type field is the certificate type as define in section 2.1
+ *    below.
+ * 
+ *    The algorithm field has the same meaning as the algorithm field in
+ *    KEY and SIG RRs [RFC 2535] except that a zero algorithm field
+ *    indicates the algorithm is unknown to a secure DNS, which may simply
+ *    be the result of the algorithm not having been standardized for
+ *    secure DNS.
+ * 
+ *    The key tag field is the 16 bit value computed for the key embedded
+ *    in the certificate as specified in the DNSSEC Standard [RFC 2535].
+ *    This field is used as an efficiency measure to pick which CERT RRs
+ *    may be applicable to a particular key.  The key tag can be calculated
+ *    for the key in question and then only CERT RRs with the same key tag
+ *    need be examined. However, the key must always be transformed to the
+ *    format it would have as the public key portion of a KEY RR before the
+ *    key tag is computed.  This is only possible if the key is applicable
+ *    to an algorithm (and limits such as key size limits) defined for DNS
+ *    security.  If it is not, the algorithm field MUST BE zero and the tag
+ *    field is meaningless and SHOULD BE zero.
+ */
+public class CertificateRecord extends InternetResource
+{
+	public CertificateRecord( String domainName, int timeToLive, byte[] resourceData )
+	{
+		super( domainName, RecordType.CERT, timeToLive, resourceData );
+	}
+}
+

Added: incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/DnameRecord.java
Url: http://svn.apache.org/viewcvs/incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/DnameRecord.java?view=auto&rev=125973
==============================================================================
--- (empty file)
+++ incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/DnameRecord.java	Fri Jan 21 14:24:46 2005
@@ -0,0 +1,72 @@
+/*
+ *   Copyright 2005 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+
+package org.apache.dns.records.zone;
+
+import org.apache.dns.records.InternetResource;
+import org.apache.dns.records.RecordType;
+
+/**
+ * 3. The DNAME Resource Record
+ * 
+ *    The DNAME RR has mnemonic DNAME and type code 39 (decimal).
+ * 
+ *    DNAME has the following format:
+ * 
+ *       <owner> <ttl> <class> DNAME <target>
+ * 
+ *    The format is not class-sensitive.  All fields are required.  The
+ *    RDATA field <target> is a <domain-name> [DNSIS].
+ * 
+ *    The DNAME RR causes type NS additional section processing.
+ * 
+ *    The effect of the DNAME record is the substitution of the record's
+ *    <target> for its <owner> as a suffix of a domain name.  A "no-
+ *    descendants" limitation governs the use of DNAMEs in a zone file:
+ * 
+ *       If a DNAME RR is present at a node N, there may be other data at N
+ *       (except a CNAME or another DNAME), but there MUST be no data at
+ *       any descendant of N.  This restriction applies only to records of
+ *       the same class as the DNAME record.
+ * 
+ *    This rule assures predictable results when a DNAME record is cached
+ *    by a server which is not authoritative for the record's zone.  It
+ *    MUST be enforced when authoritative zone data is loaded.  Together
+ *    with the rules for DNS zone authority [DNSCLR] it implies that DNAME
+ *    and NS records can only coexist at the top of a zone which has only
+ *    one node.
+ * 
+ *    The compression scheme of [DNSIS] MUST NOT be applied to the RDATA
+ *    portion of a DNAME record unless the sending server has some way of
+ *    knowing that the receiver understands the DNAME record format.
+ *    Signalling such understanding is expected to be the subject of future
+ *    DNS Extensions.
+ * 
+ *    Naming loops can be created with DNAME records or a combination of
+ *    DNAME and CNAME records, just as they can with CNAME records alone.
+ *    Resolvers, including resolvers embedded in DNS servers, MUST limit
+ *    the resources they devote to any query.  Implementors should note,
+ *    however, that fairly lengthy chains of DNAME records may be valid.
+ */
+public class DnameRecord extends InternetResource
+{
+	public DnameRecord( String domainName, int timeToLive, byte[] resourceData )
+	{
+		super( domainName, RecordType.DNAME, timeToLive, resourceData );
+	}
+}
+

Added: incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/Inet6AddressRecord.java
Url: http://svn.apache.org/viewcvs/incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/Inet6AddressRecord.java?view=auto&rev=125973
==============================================================================
--- (empty file)
+++ incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/Inet6AddressRecord.java	Fri Jan 21 14:24:46 2005
@@ -0,0 +1,84 @@
+/*
+ *   Copyright 2005 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+
+package org.apache.dns.records.zone;
+
+import org.apache.dns.records.InternetResource;
+import org.apache.dns.records.RecordType;
+
+/**
+ * 2. New resource record definition and domain
+ * 
+ *    A record type is defined to store a host's IPv6 address.  A host that
+ *    has more than one IPv6 address must have more than one such record.
+ * 
+ * 2.1 AAAA record type
+ * 
+ *    The AAAA resource record type is a record specific to the Internet
+ *    class that stores a single IPv6 address.
+ * 
+ *    The IANA assigned value of the type is 28 (decimal).
+ * 
+ * 2.2 AAAA data format
+ * 
+ *    A 128 bit IPv6 address is encoded in the data portion of an AAAA
+ *    resource record in network byte order (high-order byte first).
+ * 
+ * 2.3 AAAA query
+ * 
+ *    An AAAA query for a specified domain name in the Internet class
+ *    returns all associated AAAA resource records in the answer section of
+ *    a response.
+ * 
+ *    A type AAAA query does not trigger additional section processing.
+ * 
+ * 2.4 Textual format of AAAA records
+ * 
+ *    The textual representation of the data portion of the AAAA resource
+ *    record used in a master database file is the textual representation
+ *    of an IPv6 address as defined in [3].
+ * 
+ * 2.5 IP6.ARPA Domain
+ * 
+ *    A special domain is defined to look up a record given an IPv6
+ *    address.  The intent of this domain is to provide a way of mapping an
+ *    IPv6 address to a host name, although it may be used for other
+ *    purposes as well.  The domain is rooted at IP6.ARPA.
+ * 
+ *    An IPv6 address is represented as a name in the IP6.ARPA domain by a
+ *    sequence of nibbles separated by dots with the suffix ".IP6.ARPA".
+ *    The sequence of nibbles is encoded in reverse order, i.e., the
+ *    low-order nibble is encoded first, followed by the next low-order
+ *    nibble and so on.  Each nibble is represented by a hexadecimal digit.
+ *    For example, the reverse lookup domain name corresponding to the
+ *    address
+ * 
+ *        4321:0:1:2:3:4:567:89ab
+ * 
+ *    would be
+ * 
+ *    b.a.9.8.7.6.5.0.4.0.0.0.3.0.0.0.2.0.0.0.1.0.0.0.0.0.0.0.1.2.3.4.IP6.
+ *                                                                   ARPA.
+ */
+public class Inet6AddressRecord extends InternetResource
+{
+	public Inet6AddressRecord( String domainName, int timeToLive, byte[] resourceData )
+	{
+		super( domainName, RecordType.AAAA, timeToLive, resourceData );
+	}
+}
+

Added: incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/KeyExchangeRecord.java
Url: http://svn.apache.org/viewcvs/incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/KeyExchangeRecord.java?view=auto&rev=125973
==============================================================================
--- (empty file)
+++ incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/KeyExchangeRecord.java	Fri Jan 21 14:24:46 2005
@@ -0,0 +1,58 @@
+/*
+ *   Copyright 2005 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+
+package org.apache.dns.records.zone;
+
+import org.apache.dns.records.InternetResource;
+import org.apache.dns.records.RecordType;
+
+/**
+ * 3.1 KX RDATA format
+ * 
+ *    The KX DNS record has the following RDATA format:
+ * 
+ *     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *     |                  PREFERENCE                   |
+ *     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *     /                   EXCHANGER                   /
+ *     /                                               /
+ *     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ * 
+ *    where:
+ * 
+ *    PREFERENCE      A 16 bit non-negative integer which specifies the
+ *                    preference given to this RR among other KX records
+ *                    at the same owner.  Lower values are preferred.
+ * 
+ *    EXCHANGER       A <domain-name> which specifies a host willing to
+ *                    act as a mail exchange for the owner name.
+ * 
+ *    KX records MUST cause type A additional section processing for the
+ *    host specified by EXCHANGER.  In the event that the host processing
+ *    the DNS transaction supports IPv6, KX records MUST also cause type
+ *    AAAA additional section processing.
+ * 
+ *    The KX RDATA field MUST NOT be compressed.
+ */
+public class KeyExchangeRecord extends InternetResource
+{
+	public KeyExchangeRecord( String domainName, int timeToLive, byte[] resourceData )
+	{
+		super( domainName, RecordType.KX, timeToLive, resourceData );
+	}
+}
+

Added: incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/KeyRecord.java
Url: http://svn.apache.org/viewcvs/incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/KeyRecord.java?view=auto&rev=125973
==============================================================================
--- (empty file)
+++ incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/KeyRecord.java	Fri Jan 21 14:24:46 2005
@@ -0,0 +1,65 @@
+/*
+ *   Copyright 2005 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+
+package org.apache.dns.records.zone;
+
+import org.apache.dns.records.InternetResource;
+import org.apache.dns.records.RecordType;
+
+/**
+ * 3. The KEY Resource Record
+ * 
+ *    The KEY resource record (RR) is used to store a public key that is
+ *    associated with a Domain Name System (DNS) name.  This can be the
+ *    public key of a zone, a user, or a host or other end entity. Security
+ *    aware DNS implementations MUST be designed to handle at least two
+ *    simultaneously valid keys of the same type associated with the same
+ *    name.
+ * 
+ *    The type number for the KEY RR is 25.
+ * 
+ *    A KEY RR is, like any other RR, authenticated by a SIG RR.  KEY RRs
+ *    must be signed by a zone level key.
+ * 
+ * 3.1 KEY RDATA format
+ * 
+ *    The RDATA for a KEY RR consists of flags, a protocol octet, the
+ *    algorithm number octet, and the public key itself.  The format is as
+ *    follows:
+ * 
+ *                         1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
+ *     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ *    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ *    |             flags             |    protocol   |   algorithm   |
+ *    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ *    |                                                               /
+ *    /                          public key                           /
+ *    /                                                               /
+ *    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
+ * 
+ *    The KEY RR is not intended for storage of certificates and a separate
+ *    certificate RR has been developed for that purpose, defined in [RFC
+ *    2538].
+ */
+public class KeyRecord extends InternetResource
+{
+	public KeyRecord( String domainName, int timeToLive, byte[] resourceData )
+	{
+		super( domainName, RecordType.KEY, timeToLive, resourceData );
+	}
+}
+

Added: incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/LocationRecord.java
Url: http://svn.apache.org/viewcvs/incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/LocationRecord.java?view=auto&rev=125973
==============================================================================
--- (empty file)
+++ incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/LocationRecord.java	Fri Jan 21 14:24:46 2005
@@ -0,0 +1,122 @@
+/*
+ *   Copyright 2005 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+
+package org.apache.dns.records.zone;
+
+import org.apache.dns.records.InternetResource;
+import org.apache.dns.records.RecordType;
+
+/**
+ * 2. RDATA Format
+ * 
+ *        MSB                                           LSB
+ *        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *       0|        VERSION        |         SIZE          |
+ *        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *       2|       HORIZ PRE       |       VERT PRE        |
+ *        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *       4|                   LATITUDE                    |
+ *        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *       6|                   LATITUDE                    |
+ *        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *       8|                   LONGITUDE                   |
+ *        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *      10|                   LONGITUDE                   |
+ *        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *      12|                   ALTITUDE                    |
+ *        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *      14|                   ALTITUDE                    |
+ *        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *    (octet)
+ * 
+ * where:
+ * 
+ * VERSION      Version number of the representation.  This must be zero.
+ *              Implementations are required to check this field and make
+ *              no assumptions about the format of unrecognized versions.
+ * 
+ * SIZE         The diameter of a sphere enclosing the described entity, in
+ *              centimeters, expressed as a pair of four-bit unsigned
+ *              integers, each ranging from zero to nine, with the most
+ *              significant four bits representing the base and the second
+ *              number representing the power of ten by which to multiply
+ *              the base.  This allows sizes from 0e0 (<1cm) to 9e9
+ *              (90,000km) to be expressed.  This representation was chosen
+ *              such that the hexadecimal representation can be read by
+ *              eye; 0x15 = 1e5.  Four-bit values greater than 9 are
+ *              undefined, as are values with a base of zero and a non-zero
+ *              exponent.
+ * 
+ *              Since 20000000m (represented by the value 0x29) is greater
+ *              than the equatorial diameter of the WGS 84 ellipsoid
+ *              (12756274m), it is therefore suitable for use as a
+ *              "worldwide" size.
+ * 
+ * HORIZ PRE    The horizontal precision of the data, in centimeters,
+ *              expressed using the same representation as SIZE.  This is
+ *              the diameter of the horizontal "circle of error", rather
+ *              than a "plus or minus" value.  (This was chosen to match
+ *              the interpretation of SIZE; to get a "plus or minus" value,
+ *              divide by 2.)
+ * 
+ * VERT PRE     The vertical precision of the data, in centimeters,
+ *              expressed using the sane representation as for SIZE.  This
+ *              is the total potential vertical error, rather than a "plus
+ *              or minus" value.  (This was chosen to match the
+ *              interpretation of SIZE; to get a "plus or minus" value,
+ *              divide by 2.)  Note that if altitude above or below sea
+ *              level is used as an approximation for altitude relative to
+ *              the [WGS 84] ellipsoid, the precision value should be
+ *              adjusted.
+ * 
+ * LATITUDE     The latitude of the center of the sphere described by the
+ *              SIZE field, expressed as a 32-bit integer, most significant
+ *              octet first (network standard byte order), in thousandths
+ *              of a second of arc.  2^31 represents the equator; numbers
+ *              above that are north latitude.
+ * 
+ * LONGITUDE    The longitude of the center of the sphere described by the
+ *              SIZE field, expressed as a 32-bit integer, most significant
+ *              octet first (network standard byte order), in thousandths
+ *              of a second of arc, rounded away from the prime meridian.
+ *              2^31 represents the prime meridian; numbers above that are
+ *              east longitude.
+ * 
+ * ALTITUDE     The altitude of the center of the sphere described by the
+ *              SIZE field, expressed as a 32-bit integer, most significant
+ *              octet first (network standard byte order), in centimeters,
+ *              from a base of 100,000m below the [WGS 84] reference
+ *              spheroid used by GPS (semimajor axis a=6378137.0,
+ *              reciprocal flattening rf=298.257223563).  Altitude above
+ *              (or below) sea level may be used as an approximation of
+ *              altitude relative to the the [WGS 84] spheroid, though due
+ *              to the Earth's surface not being a perfect spheroid, there
+ *              will be differences.  (For example, the geoid (which sea
+ *              level approximates) for the continental US ranges from 10
+ *              meters to 50 meters below the [WGS 84] spheroid.
+ *              Adjustments to ALTITUDE and/or VERT PRE will be necessary
+ *              in most cases.  The Defense Mapping Agency publishes geoid
+ *              height values relative to the [WGS 84] ellipsoid.
+ */
+public class LocationRecord extends InternetResource
+{
+	public LocationRecord( String domainName, int timeToLive, byte[] resourceData )
+	{
+		super( domainName, RecordType.LOC, timeToLive, resourceData );
+	}
+}
+

Added: incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/NameAuthorityPointer.java
Url: http://svn.apache.org/viewcvs/incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/NameAuthorityPointer.java?view=auto&rev=125973
==============================================================================
--- (empty file)
+++ incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/NameAuthorityPointer.java	Fri Jan 21 14:24:46 2005
@@ -0,0 +1,139 @@
+/*
+ *   Copyright 2005 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+
+package org.apache.dns.records.zone;
+
+import org.apache.dns.records.InternetResource;
+import org.apache.dns.records.RecordType;
+
+/**
+ * 4. NAPTR RR Format
+ * 
+ * 4.1 Packet Format
+ * 
+ *    The packet format of the NAPTR RR is given below.  The DNS type code
+ *    for NAPTR is 35.
+ * 
+ *       The packet format for the NAPTR record is as follows
+ *                                        1  1  1  1  1  1
+ *          0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
+ *        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *        |                     ORDER                     |
+ *        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *        |                   PREFERENCE                  |
+ *        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *        /                     FLAGS                     /
+ *        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *        /                   SERVICES                    /
+ *        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *        /                    REGEXP                     /
+ *        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ *        /                  REPLACEMENT                  /
+ *        /                                               /
+ *        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ * 
+ *    <character-string> and <domain-name> as used here are defined in RFC
+ *    1035 [7].
+ * 
+ *    ORDER
+ *       A 16-bit unsigned integer specifying the order in which the NAPTR
+ *       records MUST be processed in order to accurately represent the
+ *       ordered list of Rules.  The ordering is from lowest to highest.
+ *       If two records have the same order value then they are considered
+ *       to be the same rule and should be selected based on the
+ *       combination of the Preference values and Services offered.
+ * 
+ *    PREFERENCE
+ *       Although it is called "preference" in deference to DNS
+ *       terminology, this field is equivalent to the Priority value in the
+ *       DDDS Algorithm.  It is a 16-bit unsigned integer that specifies
+ *       the order in which NAPTR records with equal Order values SHOULD be
+ *       processed, low numbers being processed before high numbers.  This
+ *       is similar to the preference field in an MX record, and is used so
+ *       domain administrators can direct clients towards more capable
+ *       hosts or lighter weight protocols.  A client MAY look at records
+ *       with higher preference values if it has a good reason to do so
+ *       such as not supporting some protocol or service very well.
+ * 
+ *       The important difference between Order and Preference is that once
+ *       a match is found the client MUST NOT consider records with a
+ *       different Order but they MAY process records with the same Order
+ *       but different Preferences.  The only exception to this is noted in
+ *       the second important Note in the DDDS algorithm specification
+ *       concerning allowing clients to use more complex Service
+ *       determination between steps 3 and 4 in the algorithm.  Preference
+ *       is used to give communicate a higher quality of service to rules
+ *       that are considered the same from an authority standpoint but not
+ *       from a simple load balancing standpoint.
+ * 
+ *       It is important to note that DNS contains several load balancing
+ *       mechanisms and if load balancing among otherwise equal services
+ *       should be needed then methods such as SRV records or multiple A
+ *       records should be utilized to accomplish load balancing.
+ * 
+ *    FLAGS
+ *       A <character-string> containing flags to control aspects of the
+ *       rewriting and interpretation of the fields in the record.  Flags
+ *       are single characters from the set A-Z and 0-9.  The case of the
+ *       alphabetic characters is not significant.  The field can be empty.
+ * 
+ *       It is up to the Application specifying how it is using this
+ *       Database to define the Flags in this field.  It must define which
+ *       ones are terminal and which ones are not.
+ * 
+ *    SERVICES
+ *       A <character-string> that specifies the Service Parameters
+ *       applicable to this this delegation path.  It is up to the
+ *       Application Specification to specify the values found in this
+ *       field.
+ * 
+ *    REGEXP
+ *       A <character-string> containing a substitution expression that is
+ *       applied to the original string held by the client in order to
+ *       construct the next domain name to lookup.  See the DDDS Algorithm
+ *       specification for the syntax of this field.
+ * 
+ *       As stated in the DDDS algorithm, The regular expressions MUST NOT
+ *       be used in a cumulative fashion, that is, they should only be
+ *       applied to the original string held by the client, never to the
+ *       domain name produced by a previous NAPTR rewrite.  The latter is
+ *       tempting in some applications but experience has shown such use to
+ *       be extremely fault sensitive, very error prone, and extremely
+ *       difficult to debug.
+ * 
+ *    REPLACEMENT
+ *       A <domain-name> which is the next domain-name to query for
+ *       depending on the potential values found in the flags field.  This
+ *       field is used when the regular expression is a simple replacement
+ *       operation.  Any value in this field MUST be a fully qualified
+ *       domain-name.  Name compression is not to be used for this field.
+ * 
+ *       This field and the REGEXP field together make up the Substitution
+ *       Expression in the DDDS Algorithm.  It is simply a historical
+ *       optimization specifically for DNS compression that this field
+ *       exists.  The fields are also mutually exclusive.  If a record is
+ *       returned that has values for both fields then it is considered to
+ *       be in error and SHOULD be either ignored or an error returned.
+ */
+public class NameAuthorityPointer extends InternetResource
+{
+	public NameAuthorityPointer( String domainName, int timeToLive, byte[] resourceData )
+	{
+		super( domainName, RecordType.NAPTR, timeToLive, resourceData );
+	}
+}
+

Added: incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/NextNameRecord.java
Url: http://svn.apache.org/viewcvs/incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/NextNameRecord.java?view=auto&rev=125973
==============================================================================
--- (empty file)
+++ incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/NextNameRecord.java	Fri Jan 21 14:24:46 2005
@@ -0,0 +1,61 @@
+/*
+ *   Copyright 2005 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+
+package org.apache.dns.records.zone;
+
+import org.apache.dns.records.InternetResource;
+import org.apache.dns.records.RecordType;
+
+/**
+ * 5.2 NXT RDATA Format
+ * 
+ *    The RDATA for an NXT RR consists simply of a domain name followed by
+ *    a bit map.
+ * 
+ *    The type number for the NXT RR is 30.
+ * 
+ *                            1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
+ *        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ *       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ *       |         next domain name                                      /
+ *       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ *       |                    type bit map                               /
+ *       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ * 
+ *    The NXT RR type bit map is one bit per RR type present for the owner
+ *    name similar to the WKS socket bit map.  The first bit represents RR
+ *    type zero (an illegal type which should not be present.) A one bit
+ *    indicates that at least one RR of that type is present for the owner
+ *    name.  A zero indicates that no such RR is present.  All bits not
+ *    specified because they are beyond the end of the bit map are assumed
+ *    to be zero.  Note that bit 30, for NXT, will always be on so the
+ *    minimum bit map length is actually four octets.  The NXT bit map
+ *    should be printed as a list of RR type mnemonics or decimal numbers
+ *    similar to the WKS RR.
+ * 
+ *    The domain name may be compressed with standard DNS name compression
+ *    when being transmitted over the network.  The size of the bit map can
+ *    be inferred from the RDLENGTH and the length of the next domain name.
+ */
+public class NextNameRecord extends InternetResource
+{
+	public NextNameRecord( String domainName, int timeToLive, byte[] resourceData )
+	{
+		super( domainName, RecordType.NXT, timeToLive, resourceData );
+	}
+}
+

Added: incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/ServerSelectionRecord.java
Url: http://svn.apache.org/viewcvs/incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/ServerSelectionRecord.java?view=auto&rev=125973
==============================================================================
--- (empty file)
+++ incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/ServerSelectionRecord.java	Fri Jan 21 14:24:46 2005
@@ -0,0 +1,129 @@
+/*
+ *   Copyright 2005 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+
+package org.apache.dns.records.zone;
+
+import org.apache.dns.records.InternetResource;
+import org.apache.dns.records.RecordType;
+
+/**
+ * The format of the SRV RR
+ * 
+ *    Here is the format of the SRV RR, whose DNS type code is 33:
+ * 
+ *         _Service._Proto.Name TTL Class SRV Priority Weight Port Target
+ * 
+ *         (There is an example near the end of this document.)
+ * 
+ *    Service
+ *         The symbolic name of the desired service, as defined in Assigned
+ *         Numbers [STD 2] or locally.  An underscore (_) is prepended to
+ *         the service identifier to avoid collisions with DNS labels that
+ *         occur in nature.
+ * 
+ *         Some widely used services, notably POP, don't have a single
+ *         universal name.  If Assigned Numbers names the service
+ *         indicated, that name is the only name which is legal for SRV
+ *         lookups.  The Service is case insensitive.
+ * 
+ *    Proto
+ *         The symbolic name of the desired protocol, with an underscore
+ *         (_) prepended to prevent collisions with DNS labels that occur
+ *         in nature.  _TCP and _UDP are at present the most useful values
+ *         for this field, though any name defined by Assigned Numbers or
+ *         locally may be used (as for Service).  The Proto is case
+ *         insensitive.
+ * 
+ *    Name
+ *         The domain this RR refers to.  The SRV RR is unique in that the
+ *         name one searches for is not this name; the example near the end
+ *         shows this clearly.
+ * 
+ *    TTL
+ *         Standard DNS meaning [RFC 1035].
+ * 
+ *    Class
+ *         Standard DNS meaning [RFC 1035].   SRV records occur in the IN
+ *         Class.
+ * 
+ *    Priority
+ *         The priority of this target host.  A client MUST attempt to
+ *         contact the target host with the lowest-numbered priority it can
+ *         reach; target hosts with the same priority SHOULD be tried in an
+ *         order defined by the weight field.  The range is 0-65535.  This
+ *         is a 16 bit unsigned integer in network byte order.
+ * 
+ *    Weight
+ *         A server selection mechanism.  The weight field specifies a
+ *         relative weight for entries with the same priority. Larger
+ *         weights SHOULD be given a proportionately higher probability of
+ *         being selected. The range of this number is 0-65535.  This is a
+ *         16 bit unsigned integer in network byte order.  Domain
+ *         administrators SHOULD use Weight 0 when there isn't any server
+ *         selection to do, to make the RR easier to read for humans (less
+ *         noisy).  In the presence of records containing weights greater
+ *         than 0, records with weight 0 should have a very small chance of
+ *         being selected.
+ * 
+ *         In the absence of a protocol whose specification calls for the
+ *         use of other weighting information, a client arranges the SRV
+ *         RRs of the same Priority in the order in which target hosts,
+ *         specified by the SRV RRs, will be contacted. The following
+ *         algorithm SHOULD be used to order the SRV RRs of the same
+ *         priority:
+ * 
+ *         To select a target to be contacted next, arrange all SRV RRs
+ *         (that have not been ordered yet) in any order, except that all
+ *         those with weight 0 are placed at the beginning of the list.
+ * 
+ *         Compute the sum of the weights of those RRs, and with each RR
+ *         associate the running sum in the selected order. Then choose a
+ *         uniform random number between 0 and the sum computed
+ *         (inclusive), and select the RR whose running sum value is the
+ *         first in the selected order which is greater than or equal to
+ *         the random number selected. The target host specified in the
+ *         selected SRV RR is the next one to be contacted by the client.
+ *         Remove this SRV RR from the set of the unordered SRV RRs and
+ *         apply the described algorithm to the unordered SRV RRs to select
+ *         the next target host.  Continue the ordering process until there
+ *         are no unordered SRV RRs.  This process is repeated for each
+ *         Priority.
+ * 
+ *    Port
+ *         The port on this target host of this service.  The range is 0-
+ *         65535.  This is a 16 bit unsigned integer in network byte order.
+ *         This is often as specified in Assigned Numbers but need not be.
+ * 
+ *    Target
+ *         The domain name of the target host.  There MUST be one or more
+ *         address records for this name, the name MUST NOT be an alias (in
+ *         the sense of RFC 1034 or RFC 2181).  Implementors are urged, but
+ *         not required, to return the address record(s) in the Additional
+ *         Data section.  Unless and until permitted by future standards
+ *         action, name compression is not to be used for this field.
+ * 
+ *         A Target of "." means that the service is decidedly not
+ *         available at this domain.
+ */
+public class ServerSelectionRecord extends InternetResource
+{
+	public ServerSelectionRecord( String domainName, int timeToLive, byte[] resourceData )
+	{
+		super( domainName, RecordType.SRV, timeToLive, resourceData );
+	}
+}
+

Added: incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/SignatureRecord.java
Url: http://svn.apache.org/viewcvs/incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/SignatureRecord.java?view=auto&rev=125973
==============================================================================
--- (empty file)
+++ incubator/directory/dns/trunk/core/src/java/org/apache/dns/records/zone/SignatureRecord.java	Fri Jan 21 14:24:46 2005
@@ -0,0 +1,183 @@
+/*
+ *   Copyright 2005 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+
+package org.apache.dns.records.zone;
+
+import org.apache.dns.records.InternetResource;
+import org.apache.dns.records.RecordType;
+
+/**
+ * 4.1 SIG RDATA Format
+ * 
+ *    The RDATA portion of a SIG RR is as shown below.  The integrity of
+ *    the RDATA information is protected by the signature field.
+ * 
+ *                            1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
+ *        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ *       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ *       |        type covered           |  algorithm    |     labels    |
+ *       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ *       |                         original TTL                          |
+ *       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ *       |                      signature expiration                     |
+ *       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ *       |                      signature inception                      |
+ *       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ *       |            key  tag           |                               |
+ *       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+         signer's name         +
+ *       |                                                               /
+ *       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-/
+ *       /                                                               /
+ *       /                            signature                          /
+ *       /                                                               /
+ *       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ * 
+ * 4.1.1 Type Covered Field
+ * 
+ *    The "type covered" is the type of the other RRs covered by this SIG.
+ * 
+ * 4.1.2 Algorithm Number Field
+ * 
+ *    This octet is as described in section 3.2.
+ * 
+ * 4.1.3 Labels Field
+ * 
+ *    The "labels" octet is an unsigned count of how many labels there are
+ *    in the original SIG RR owner name not counting the null label for
+ *    root and not counting any initial "*" for a wildcard.  If a secured
+ *    retrieval is the result of wild card substitution, it is necessary
+ *    for the resolver to use the original form of the name in verifying
+ *    the digital signature.  This field makes it easy to determine the
+ *    original form.
+ * 
+ *    If, on retrieval, the RR appears to have a longer name than indicated
+ *    by "labels", the resolver can tell it is the result of wildcard
+ *    substitution.  If the RR owner name appears to be shorter than the
+ *    labels count, the SIG RR must be considered corrupt and ignored.  The
+ *    maximum number of labels allowed in the current DNS is 127 but the
+ *    entire octet is reserved and would be required should DNS names ever
+ *    be expanded to 255 labels.  The following table gives some examples.
+ *    The value of "labels" is at the top, the retrieved owner name on the
+ *    left, and the table entry is the name to use in signature
+ *    verification except that "bad" means the RR is corrupt.
+ * 
+ *    labels= |  0  |   1  |    2   |      3   |      4   |
+ *    --------+-----+------+--------+----------+----------+
+ *           .|   . | bad  |  bad   |    bad   |    bad   |
+ *          d.|  *. |   d. |  bad   |    bad   |    bad   |
+ *        c.d.|  *. | *.d. |   c.d. |    bad   |    bad   |
+ *      b.c.d.|  *. | *.d. | *.c.d. |   b.c.d. |    bad   |
+ *    a.b.c.d.|  *. | *.d. | *.c.d. | *.b.c.d. | a.b.c.d. |
+ * 
+ * 4.1.4 Original TTL Field
+ * 
+ *    The "original TTL" field is included in the RDATA portion to avoid
+ *    (1) authentication problems that caching servers would otherwise
+ *    cause by decrementing the real TTL field and (2) security problems
+ *    that unscrupulous servers could otherwise cause by manipulating the
+ *    real TTL field.  This original TTL is protected by the signature
+ *    while the current TTL field is not.
+ * 
+ *    NOTE:  The "original TTL" must be restored into the covered RRs when
+ *    the signature is verified (see Section 8).  This generaly implies
+ *    that all RRs for a particular type, name, and class, that is, all the
+ *    RRs in any particular RRset, must have the same TTL to start with.
+ * 
+ * 4.1.5 Signature Expiration and Inception Fields
+ * 
+ *    The SIG is valid from the "signature inception" time until the
+ *    "signature expiration" time.  Both are unsigned numbers of seconds
+ *    since the start of 1 January 1970, GMT, ignoring leap seconds.  (See
+ *    also Section 4.4.)  Ring arithmetic is used as for DNS SOA serial
+ *    numbers [RFC 1982] which means that these times can never be more
+ *    than about 68 years in the past or the future.  This means that these
+ *    times are ambiguous modulo ~136.09 years.  However there is no
+ *    security flaw because keys are required to be changed to new random
+ *    keys by [RFC 2541] at least every five years.  This means that the
+ *    probability that the same key is in use N*136.09 years later should
+ *    be the same as the probability that a random guess will work.
+ * 
+ *    A SIG RR may have an expiration time numerically less than the
+ *    inception time if the expiration time is near the 32 bit wrap around
+ *    point and/or the signature is long lived.
+ * 
+ *    (To prevent misordering of network requests to update a zone
+ *    dynamically, monotonically increasing "signature inception" times may
+ *    be necessary.)
+ * 
+ *    A secure zone must be considered changed for SOA serial number
+ *    purposes not only when its data is updated but also when new SIG RRs
+ *    are inserted (ie, the zone or any part of it is re-signed).
+ * 
+ * 4.1.6 Key Tag Field
+ * 
+ *    The "key Tag" is a two octet quantity that is used to efficiently
+ *    select between multiple keys which may be applicable and thus check
+ *    that a public key about to be used for the computationally expensive
+ *    effort to check the signature is possibly valid.  For algorithm 1
+ *    (MD5/RSA) as defined in [RFC 2537], it is the next to the bottom two
+ *    octets of the public key modulus needed to decode the signature
+ *    field.  That is to say, the most significant 16 of the least
+ *    significant 24 bits of the modulus in network (big endian) order. For
+ *    all other algorithms, including private algorithms, it is calculated
+ *    as a simple checksum of the KEY RR as described in Appendix C.
+ * 
+ * 4.1.7 Signer's Name Field
+ * 
+ *    The "signer's name" field is the domain name of the signer generating
+ *    the SIG RR.  This is the owner name of the public KEY RR that can be
+ *    used to verify the signature.  It is frequently the zone which
+ *    contained the RRset being authenticated.  Which signers should be
+ *    authorized to sign what is a significant resolver policy question as
+ *    discussed in Section 6. The signer's name may be compressed with
+ *    standard DNS name compression when being transmitted over the
+ *    network.
+ * 
+ * 4.1.8 Signature Field
+ * 
+ *    The actual signature portion of the SIG RR binds the other RDATA
+ *    fields to the RRset of the "type covered" RRs with that owner name
+ *    and class.  This covered RRset is thereby authenticated.  To
+ *    accomplish this, a data sequence is constructed as follows:
+ * 
+ *          data = RDATA | RR(s)...
+ * 
+ *    where "|" is concatenation,
+ * 
+ *    RDATA is the wire format of all the RDATA fields in the SIG RR itself
+ *    (including the canonical form of the signer's name) before but not
+ *    including the signature, and
+ * 
+ *    RR(s) is the RRset of the RR(s) of the type covered with the same
+ *    owner name and class as the SIG RR in canonical form and order as
+ *    defined in Section 8.
+ * 
+ *    How this data sequence is processed into the signature is algorithm
+ *    dependent.  These algorithm dependent formats and procedures are
+ *    described in separate documents (Section 3.2).
+ * 
+ *    SIGs SHOULD NOT be included in a zone for any "meta-type" such as
+ *    ANY, AXFR, etc. (but see section 5.6.2 with regard to IXFR).
+ */
+public class SignatureRecord extends InternetResource
+{
+	public SignatureRecord( String domainName, int timeToLive, byte[] resourceData )
+	{
+		super( domainName, RecordType.SIG, timeToLive, resourceData );
+	}
+}
+