From 1b778f279dd701b60190d2c709c9663304682c0f Mon Sep 17 00:00:00 2001 From: David Blacka Date: Fri, 15 Dec 2006 15:00:10 +0000 Subject: [PATCH] updates for nsec3-08 (wire format changes) git-svn-id: https://svn.verisignlabs.com/jdnssec/tools/trunk@108 4cbd57fe-54e5-0310-bd9a-f30fe5ea5e6e --- VERSION | 2 +- ....1-vrsn-2.jar => dnsjava-2.0.1-vrsn-3.jar} | Bin 427348 -> 427279 bytes .../dnssec/security/ProtoNSEC3.java | 28 ++++++++++-------- .../dnssec/security/SignUtils.java | 9 +++--- 4 files changed, 21 insertions(+), 18 deletions(-) rename lib/{dnsjava-2.0.1-vrsn-2.jar => dnsjava-2.0.1-vrsn-3.jar} (91%) diff --git a/VERSION b/VERSION index 19d3efe..58b1003 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -version=0.8.3 +version=0.8.4 diff --git a/lib/dnsjava-2.0.1-vrsn-2.jar b/lib/dnsjava-2.0.1-vrsn-3.jar similarity index 91% rename from lib/dnsjava-2.0.1-vrsn-2.jar rename to lib/dnsjava-2.0.1-vrsn-3.jar index c7b6a679d66f55251f82a3c2383696489c7a0c89..3f5b9268be53b60956f8f83e36dbd086da62a409 100644 GIT binary patch delta 15646 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 diff --git a/src/com/verisignlabs/dnssec/security/ProtoNSEC3.java b/src/com/verisignlabs/dnssec/security/ProtoNSEC3.java index e5c76c0..1b84c6e 100644 --- a/src/com/verisignlabs/dnssec/security/ProtoNSEC3.java +++ b/src/com/verisignlabs/dnssec/security/ProtoNSEC3.java @@ -36,8 +36,8 @@ import org.xbill.DNS.utils.base32; public class ProtoNSEC3 { private Name originalOwner; - private boolean optInFlag; private byte hashAlg; + private byte flags; private int iterations; private byte[] salt; private byte[] next; @@ -50,21 +50,17 @@ public class ProtoNSEC3 /** * Creates an NSEC3 Record from the given data. - * - * @param originalOwner TODO - * @param next The following name in an ordered list of the zone - * @param types An array containing the types present. */ public ProtoNSEC3(byte[] owner, Name originalOwner, Name zone, int dclass, - long ttl, boolean optInFlag, byte hashAlg, int iterations, byte[] salt, + long ttl, byte hashAlg, byte flags, int iterations, byte[] salt, byte[] next, TypeMap typemap) { this.zone = zone; this.owner = owner; this.dclass = dclass; this.ttl = ttl; - this.optInFlag = optInFlag; this.hashAlg = hashAlg; + this.flags = flags; this.iterations = iterations; this.salt = salt; this.next = next; @@ -73,10 +69,10 @@ public class ProtoNSEC3 } public ProtoNSEC3(byte[] owner, Name originalOwner, Name zone, int dclass, - long ttl, boolean optInFlag, byte hashAlg, int iterations, byte[] salt, + long ttl, byte hashAlg, byte flags, int iterations, byte[] salt, byte[] next, int[] types) { - this(owner, originalOwner, zone, dclass, ttl, optInFlag, hashAlg, + this(owner, originalOwner, zone, dclass, ttl, hashAlg, flags, iterations, salt, next, TypeMap.fromTypes(types)); } @@ -113,14 +109,20 @@ public class ProtoNSEC3 this.next = next; } + public byte getFlags() + { + return flags; + } + public boolean getOptInFlag() { - return optInFlag; + return (flags & NSEC3Record.OPT_OUT_FLAG) != 0; } public void setOptInFlag(boolean optInFlag) { - this.optInFlag = optInFlag; + if (optInFlag) this.flags |= NSEC3Record.OPT_OUT_FLAG; + else this.flags &= ~NSEC3Record.OPT_OUT_FLAG; } public long getTTL() @@ -183,7 +185,7 @@ public class ProtoNSEC3 String comment = (originalOwner == null) ? "(unknown original ownername)" : originalOwner.toString(); - return new NSEC3Record(getName(), dclass, ttl, optInFlag, hashAlg, + return new NSEC3Record(getName(), dclass, ttl, hashAlg, flags, iterations, salt, next, getTypes(), comment); } @@ -218,7 +220,7 @@ public class ProtoNSEC3 sb.append(' '); sb.append(DClass.string(dclass)); sb.append(" NSEC3 "); - sb.append(optInFlag ? '1' : '0'); + sb.append(flags); sb.append(' '); sb.append(hashAlg); sb.append(' '); diff --git a/src/com/verisignlabs/dnssec/security/SignUtils.java b/src/com/verisignlabs/dnssec/security/SignUtils.java index efc822e..d90b58a 100644 --- a/src/com/verisignlabs/dnssec/security/SignUtils.java +++ b/src/com/verisignlabs/dnssec/security/SignUtils.java @@ -731,7 +731,7 @@ public class SignUtils records.addAll(nsec3s); NSEC3PARAMRecord nsec3param = new NSEC3PARAMRecord(zonename, DClass.IN, - nsec3param_ttl, NSEC3Record.SHA1_DIGEST_ID, iterations, salt); + nsec3param_ttl, NSEC3Record.SHA1_DIGEST_ID, (byte) 0, iterations, salt); records.add(nsec3param); } @@ -836,7 +836,7 @@ public class SignUtils records.addAll(nsec3s); NSEC3PARAMRecord nsec3param = new NSEC3PARAMRecord(zonename, DClass.IN, - nsec3param_ttl, NSEC3Record.SHA1_DIGEST_ID, iterations, salt); + nsec3param_ttl, NSEC3Record.SHA1_DIGEST_ID, (byte) 0, iterations, salt); records.add(nsec3param); } @@ -886,9 +886,10 @@ public class SignUtils NSEC3Record.SHA1_DIGEST_ID, iterations, salt); - + byte flags = (byte) (optIn ? 0x01 : 0x00); + ProtoNSEC3 r = new ProtoNSEC3(hash, name, zonename, DClass.IN, ttl, - optIn, NSEC3Record.SHA1_DIGEST_ID, iterations, salt, null, types); + flags, NSEC3Record.SHA1_DIGEST_ID, iterations, salt, null, types); log.finer("Generated: " + r); return r;