[svn] commit: r2482 - in /branches/trac256/src/lib: datasrc/ dns/ dns/rdata/generic/ dns/tests/ dns/util/ exceptions/
BIND 10 source code commits
bind10-changes at lists.isc.org
Sun Jul 11 06:21:40 UTC 2010
Author: jinmei
Date: Sun Jul 11 06:21:39 2010
New Revision: 2482
Log:
for trac #256: completely revised the base32(hex) implementation by
generalizing the base64 logiic. fully detailed tests are provided which now
pass. documentation was also provided.
using this opportunity I moved non DNS helper classes/functions to a separate
'util' directory to make it clearer which files are for the public API.
Added:
branches/trac256/src/lib/dns/tests/base32hex_unittest.cc
- copied, changed from r2481, branches/trac256/src/lib/dns/tests/base32_unittest.cc
branches/trac256/src/lib/dns/util/
branches/trac256/src/lib/dns/util/base32hex.h
- copied, changed from r2481, branches/trac256/src/lib/dns/base32.h
branches/trac256/src/lib/dns/util/base32hex_from_binary.h
branches/trac256/src/lib/dns/util/base64.h
- copied, changed from r2481, branches/trac256/src/lib/dns/base64.h
branches/trac256/src/lib/dns/util/base_n.cc
- copied, changed from r2481, branches/trac256/src/lib/dns/base64.cc
branches/trac256/src/lib/dns/util/binary_from_base32hex.h
branches/trac256/src/lib/dns/util/hex.cc
- copied, changed from r2481, branches/trac256/src/lib/dns/hex.cc
branches/trac256/src/lib/dns/util/hex.h
- copied unchanged from r2481, branches/trac256/src/lib/dns/hex.h
branches/trac256/src/lib/dns/util/sha1.cc
- copied, changed from r2481, branches/trac256/src/lib/dns/sha1.cc
branches/trac256/src/lib/dns/util/sha1.h
- copied unchanged from r2481, branches/trac256/src/lib/dns/sha1.h
Removed:
branches/trac256/src/lib/dns/base32.cc
branches/trac256/src/lib/dns/base32.h
branches/trac256/src/lib/dns/base64.cc
branches/trac256/src/lib/dns/base64.h
branches/trac256/src/lib/dns/hex.cc
branches/trac256/src/lib/dns/hex.h
branches/trac256/src/lib/dns/sha1.cc
branches/trac256/src/lib/dns/sha1.h
branches/trac256/src/lib/dns/tests/base32_unittest.cc
Modified:
branches/trac256/src/lib/datasrc/data_source.cc
branches/trac256/src/lib/dns/Makefile.am
branches/trac256/src/lib/dns/rdata/generic/dnskey_48.cc
branches/trac256/src/lib/dns/rdata/generic/ds_43.cc
branches/trac256/src/lib/dns/rdata/generic/nsec3_50.cc
branches/trac256/src/lib/dns/rdata/generic/nsec3param_51.cc
branches/trac256/src/lib/dns/rdata/generic/nsec_47.cc
branches/trac256/src/lib/dns/rdata/generic/rrsig_46.cc
branches/trac256/src/lib/dns/tests/Makefile.am
branches/trac256/src/lib/dns/tests/base64_unittest.cc
branches/trac256/src/lib/dns/tests/hex_unittest.cc
branches/trac256/src/lib/dns/tests/rdata_dnskey_unittest.cc
branches/trac256/src/lib/dns/tests/rdata_nsec3_unittest.cc
branches/trac256/src/lib/dns/tests/rdata_nsec3param_unittest.cc
branches/trac256/src/lib/dns/tests/rdata_rrsig_unittest.cc
branches/trac256/src/lib/dns/tests/sha1_unittest.cc
branches/trac256/src/lib/exceptions/exceptions.h
Modified: branches/trac256/src/lib/datasrc/data_source.cc
==============================================================================
--- branches/trac256/src/lib/datasrc/data_source.cc (original)
+++ branches/trac256/src/lib/datasrc/data_source.cc Sun Jul 11 06:21:39 2010
@@ -28,14 +28,14 @@
#include <datasrc/data_source.h>
#include <datasrc/query.h>
-#include <dns/base32.h>
+#include <dns/util/base32hex.h>
#include <dns/buffer.h>
#include <dns/message.h>
#include <dns/name.h>
#include <dns/rdataclass.h>
#include <dns/rrset.h>
#include <dns/rrsetlist.h>
-#include <dns/sha1.h>
+#include <dns/util/sha1.h>
#include <cc/data.h>
@@ -1234,7 +1234,7 @@
inlength = SHA1_HASHSIZE;
} while (n++ < iterations_);
- return (encodeBase32(vector<uint8_t>(digest, digest + SHA1_HASHSIZE)));
+ return (encodeBase32Hex(vector<uint8_t>(digest, digest + SHA1_HASHSIZE)));
}
//
Modified: branches/trac256/src/lib/dns/Makefile.am
==============================================================================
--- branches/trac256/src/lib/dns/Makefile.am (original)
+++ branches/trac256/src/lib/dns/Makefile.am Sun Jul 11 06:21:39 2010
@@ -57,12 +57,13 @@
lib_LTLIBRARIES = libdns++.la
-libdns___la_SOURCES = base32.h base32.cc
-libdns___la_SOURCES += base64.h base64.cc
+libdns___la_SOURCES = util/base32hex.h util/base64.h util/base_n.cc
+libdns___la_SOURCES += util/base32hex_from_binary.h
+libdns___la_SOURCES += util/binary_from_base32hex.h
libdns___la_SOURCES += buffer.h
libdns___la_SOURCES += dnssectime.h dnssectime.cc
libdns___la_SOURCES += exceptions.h exceptions.cc
-libdns___la_SOURCES += hex.h hex.cc
+libdns___la_SOURCES += util/hex.h util/hex.cc
libdns___la_SOURCES += message.h message.cc
libdns___la_SOURCES += messagerenderer.h messagerenderer.cc
libdns___la_SOURCES += name.h name.cc
@@ -74,7 +75,7 @@
libdns___la_SOURCES += rrttl.h rrttl.cc
libdns___la_SOURCES += rrtype.cc
libdns___la_SOURCES += question.h question.cc
-libdns___la_SOURCES += sha1.h sha1.cc
+libdns___la_SOURCES += util/sha1.h util/sha1.cc
libdns___la_SOURCES += tsig.h tsig.cc
nodist_libdns___la_SOURCES = rdataclass.cc rrclass.h rrtype.h
@@ -105,9 +106,6 @@
rrtype.h \
tsig.h
# Purposely not installing these headers:
-# base32.h # used only internally, and not actually DNS specific
-# base64.h # used only internally, and not actually DNS specific
-# hex.h # used only internally, and not actually DNS specific
-# sha1.h # used only internally, and not actually DNS specific
+# util/*.h: used only internally, and not actually DNS specific
# rrclass-placeholder.h
# rrtype-placeholder.h
Modified: branches/trac256/src/lib/dns/rdata/generic/dnskey_48.cc
==============================================================================
--- branches/trac256/src/lib/dns/rdata/generic/dnskey_48.cc (original)
+++ branches/trac256/src/lib/dns/rdata/generic/dnskey_48.cc Sun Jul 11 06:21:39 2010
@@ -22,7 +22,7 @@
#include <boost/lexical_cast.hpp>
#include <boost/foreach.hpp>
-#include <dns/base64.h>
+#include <dns/util/base64.h>
#include <dns/buffer.h>
#include <dns/messagerenderer.h>
#include <dns/name.h>
Modified: branches/trac256/src/lib/dns/rdata/generic/ds_43.cc
==============================================================================
--- branches/trac256/src/lib/dns/rdata/generic/ds_43.cc (original)
+++ branches/trac256/src/lib/dns/rdata/generic/ds_43.cc Sun Jul 11 06:21:39 2010
@@ -22,7 +22,7 @@
#include <boost/lexical_cast.hpp>
#include <dns/buffer.h>
-#include <dns/hex.h>
+#include <dns/util/hex.h>
#include <dns/messagerenderer.h>
#include <dns/name.h>
#include <dns/rdata.h>
Modified: branches/trac256/src/lib/dns/rdata/generic/nsec3_50.cc
==============================================================================
--- branches/trac256/src/lib/dns/rdata/generic/nsec3_50.cc (original)
+++ branches/trac256/src/lib/dns/rdata/generic/nsec3_50.cc Sun Jul 11 06:21:39 2010
@@ -22,10 +22,10 @@
#include <boost/lexical_cast.hpp>
-#include <dns/base32.h>
+#include <dns/util/base32hex.h>
#include <dns/buffer.h>
#include <dns/exceptions.h>
-#include <dns/hex.h>
+#include <dns/util/hex.h>
#include <dns/messagerenderer.h>
#include <dns/name.h>
#include <dns/rrtype.h>
@@ -88,7 +88,7 @@
if (iss.bad() || iss.fail()) {
isc_throw(InvalidRdataText, "Invalid NSEC3 hash algorithm");
}
- decodeBase32(nextstr, next);
+ decodeBase32Hex(nextstr, next);
uint8_t bitmap[8 * 1024]; // 64k bits
vector<uint8_t> typebits;
@@ -237,7 +237,7 @@
" " + lexical_cast<string>(static_cast<int>(impl_->flags_)) +
" " + lexical_cast<string>(static_cast<int>(impl_->iterations_)) +
" " + encodeHex(impl_->salt_) +
- " " + encodeBase32(impl_->next_) + s.str());
+ " " + encodeBase32Hex(impl_->next_) + s.str());
}
void
Modified: branches/trac256/src/lib/dns/rdata/generic/nsec3param_51.cc
==============================================================================
--- branches/trac256/src/lib/dns/rdata/generic/nsec3param_51.cc (original)
+++ branches/trac256/src/lib/dns/rdata/generic/nsec3param_51.cc Sun Jul 11 06:21:39 2010
@@ -22,7 +22,7 @@
#include <boost/lexical_cast.hpp>
#include <dns/buffer.h>
-#include <dns/hex.h>
+#include <dns/util/hex.h>
#include <dns/messagerenderer.h>
#include <dns/name.h>
#include <dns/rdata.h>
Modified: branches/trac256/src/lib/dns/rdata/generic/nsec_47.cc
==============================================================================
--- branches/trac256/src/lib/dns/rdata/generic/nsec_47.cc (original)
+++ branches/trac256/src/lib/dns/rdata/generic/nsec_47.cc Sun Jul 11 06:21:39 2010
@@ -19,7 +19,7 @@
#include <sstream>
#include <vector>
-#include <dns/base64.h>
+#include <dns/util/base64.h>
#include <dns/buffer.h>
#include <dns/exceptions.h>
#include <dns/messagerenderer.h>
Modified: branches/trac256/src/lib/dns/rdata/generic/rrsig_46.cc
==============================================================================
--- branches/trac256/src/lib/dns/rdata/generic/rrsig_46.cc (original)
+++ branches/trac256/src/lib/dns/rdata/generic/rrsig_46.cc Sun Jul 11 06:21:39 2010
@@ -22,7 +22,7 @@
#include <boost/lexical_cast.hpp>
-#include <dns/base64.h>
+#include <dns/util/base64.h>
#include <dns/buffer.h>
#include <dns/dnssectime.h>
#include <dns/messagerenderer.h>
Modified: branches/trac256/src/lib/dns/tests/Makefile.am
==============================================================================
--- branches/trac256/src/lib/dns/tests/Makefile.am (original)
+++ branches/trac256/src/lib/dns/tests/Makefile.am Sun Jul 11 06:21:39 2010
@@ -31,7 +31,7 @@
run_unittests_SOURCES += question_unittest.cc
run_unittests_SOURCES += rrparamregistry_unittest.cc
run_unittests_SOURCES += message_unittest.cc
-run_unittests_SOURCES += base32_unittest.cc
+run_unittests_SOURCES += base32hex_unittest.cc
run_unittests_SOURCES += base64_unittest.cc
run_unittests_SOURCES += hex_unittest.cc
run_unittests_SOURCES += sha1_unittest.cc
Modified: branches/trac256/src/lib/dns/tests/base64_unittest.cc
==============================================================================
--- branches/trac256/src/lib/dns/tests/base64_unittest.cc (original)
+++ branches/trac256/src/lib/dns/tests/base64_unittest.cc Sun Jul 11 06:21:39 2010
@@ -18,11 +18,14 @@
#include <utility>
#include <vector>
-#include <dns/base64.h>
+#include <exceptions/exceptions.h>
+
+#include <dns/util/base64.h>
#include <gtest/gtest.h>
using namespace std;
+using namespace isc;
using namespace isc::dns;
namespace {
@@ -67,18 +70,18 @@
decodeCheck("Zm9vYmE=\n", decoded_data, "fooba");
// only up to 2 padding characters are allowed
- EXPECT_THROW(decodeBase64("A===", decoded_data), BadBase64String);
- EXPECT_THROW(decodeBase64("A= ==", decoded_data), BadBase64String);
+ EXPECT_THROW(decodeBase64("A===", decoded_data), BadValue);
+ EXPECT_THROW(decodeBase64("A= ==", decoded_data), BadValue);
// intermediate padding isn't allowed
- EXPECT_THROW(decodeBase64("YmE=YmE=", decoded_data), BadBase64String);
+ EXPECT_THROW(decodeBase64("YmE=YmE=", decoded_data), BadValue);
// Non canonical form isn't allowed.
// Z => 25(011001), m => 38(100110), 9 => 60(111101), so the padding
// byte would be 0100 0000.
- EXPECT_THROW(decodeBase64("Zm9=", decoded_data), BadBase64String);
+ EXPECT_THROW(decodeBase64("Zm9=", decoded_data), BadValue);
// Same for the 1st padding byte. This would make it 01100000.
- EXPECT_THROW(decodeBase64("Zm==", decoded_data), BadBase64String);
+ EXPECT_THROW(decodeBase64("Zm==", decoded_data), BadValue);
}
TEST_F(Base64Test, encode) {
Modified: branches/trac256/src/lib/dns/tests/hex_unittest.cc
==============================================================================
--- branches/trac256/src/lib/dns/tests/hex_unittest.cc (original)
+++ branches/trac256/src/lib/dns/tests/hex_unittest.cc Sun Jul 11 06:21:39 2010
@@ -19,7 +19,7 @@
#include <vector>
#include <string>
-#include <dns/hex.h>
+#include <dns/util/hex.h>
#include <gtest/gtest.h>
Modified: branches/trac256/src/lib/dns/tests/rdata_dnskey_unittest.cc
==============================================================================
--- branches/trac256/src/lib/dns/tests/rdata_dnskey_unittest.cc (original)
+++ branches/trac256/src/lib/dns/tests/rdata_dnskey_unittest.cc Sun Jul 11 06:21:39 2010
@@ -16,7 +16,8 @@
#include <string>
-#include <dns/base64.h>
+#include <exceptions/exceptions.h>
+
#include <dns/buffer.h>
#include <dns/messagerenderer.h>
#include <dns/rdata.h>
@@ -31,6 +32,7 @@
using isc::UnitTestUtil;
using namespace std;
+using namespace isc;
using namespace isc::dns;
using namespace isc::dns::rdata;
@@ -71,8 +73,7 @@
InvalidRdataText);
EXPECT_THROW(generic::DNSKEY("257 3 500 BAAAAAAAAAAAD"),
InvalidRdataText);
- EXPECT_THROW(generic::DNSKEY("257 3 5 BAAAAAAAAAAAD"),
- BadBase64String);
+ EXPECT_THROW(generic::DNSKEY("257 3 5 BAAAAAAAAAAAD"), BadValue);
#if 0
// Should this be allowed? Probably not. But the test currently fails.
EXPECT_THROW(generic::DNSKEY("257 3 5BEAAEFTd"),
Modified: branches/trac256/src/lib/dns/tests/rdata_nsec3_unittest.cc
==============================================================================
--- branches/trac256/src/lib/dns/tests/rdata_nsec3_unittest.cc (original)
+++ branches/trac256/src/lib/dns/tests/rdata_nsec3_unittest.cc Sun Jul 11 06:21:39 2010
@@ -16,10 +16,11 @@
#include <string>
-#include <dns/base32.h>
+#include <exceptions/exceptions.h>
+
#include <dns/buffer.h>
#include <dns/exceptions.h>
-#include <dns/hex.h>
+#include <dns/util/hex.h>
#include <dns/messagerenderer.h>
#include <dns/rdata.h>
#include <dns/rdataclass.h>
@@ -33,16 +34,19 @@
using isc::UnitTestUtil;
using namespace std;
+using namespace isc;
using namespace isc::dns;
using namespace isc::dns::rdata;
namespace {
class Rdata_NSEC3_Test : public RdataTest {
// there's nothing to specialize
+public:
+ Rdata_NSEC3_Test() :
+ nsec3_txt("1 1 1 D399EAAB H9RSFB7FPF2L8HG35CMPC765TDK23RP6 "
+ "NS SOA RRSIG DNSKEY NSEC3PARAM") {}
+ string nsec3_txt;
};
-string nsec3_txt("1 1 1 D399EAAB H9RSFB7FPF2L8HG35CMPC765TDK23RP6 "
- "NS SOA RRSIG DNSKEY NSEC3PARAM");
-
TEST_F(Rdata_NSEC3_Test, toText)
{
@@ -50,8 +54,7 @@
EXPECT_EQ(nsec3_txt, rdata_nsec3.toText());
}
-TEST_F(Rdata_NSEC3_Test, badText)
-{
+TEST_F(Rdata_NSEC3_Test, badText) {
EXPECT_THROW(generic::NSEC3 rdata_nsec3("1 1 1 ADDAFEE "
"0123456789ABCDEFGHIJKLMNOPQRSTUV "
"BIFF POW SPOON"),
@@ -59,7 +62,7 @@
EXPECT_THROW(generic::NSEC3 rdata_nsec3("1 1 1 ADDAFEE "
"WXYZWXYZWXYZ=WXYZWXYZ==WXYZWXYZW "
"A NS SOA"),
- BadBase32String);
+ BadValue); // bad base32hex
EXPECT_THROW(generic::NSEC3 rdata_nsec3("1000000 1 1 ADDAFEE "
"0123456789ABCDEFGHIJKLMNOPQRSTUV "
"A NS SOA"),
@@ -72,12 +75,12 @@
"0123456789ABCDEFGHIJKLMNOPQRSTUV "
"A NS SOA"),
InvalidRdataText);
+}
-#if 0 // this currently fails
+TEST_F(Rdata_NSEC3_Test, DISABLED_badText) { // this currently fails
EXPECT_THROW(generic::NSEC3(
"1 1 1D399EAAB H9RSFB7FPF2L8HG35CMPC765TDK23RP6 "
"NS SOA RRSIG DNSKEY NSEC3PARAM"), InvalidRdataText);
-#endif
}
TEST_F(Rdata_NSEC3_Test, createFromWire)
Modified: branches/trac256/src/lib/dns/tests/rdata_nsec3param_unittest.cc
==============================================================================
--- branches/trac256/src/lib/dns/tests/rdata_nsec3param_unittest.cc (original)
+++ branches/trac256/src/lib/dns/tests/rdata_nsec3param_unittest.cc Sun Jul 11 06:21:39 2010
@@ -16,9 +16,9 @@
#include <string>
-#include <dns/base32.h>
+#include <dns/util/base32hex.h>
#include <dns/buffer.h>
-#include <dns/hex.h>
+#include <dns/util/hex.h>
#include <dns/messagerenderer.h>
#include <dns/rdata.h>
#include <dns/rdataclass.h>
Modified: branches/trac256/src/lib/dns/tests/rdata_rrsig_unittest.cc
==============================================================================
--- branches/trac256/src/lib/dns/tests/rdata_rrsig_unittest.cc (original)
+++ branches/trac256/src/lib/dns/tests/rdata_rrsig_unittest.cc Sun Jul 11 06:21:39 2010
@@ -14,7 +14,8 @@
// $Id$
-#include <dns/base64.h>
+#include <exceptions/exceptions.h>
+
#include <dns/buffer.h>
#include <dns/dnssectime.h>
#include <dns/messagerenderer.h>
@@ -30,6 +31,7 @@
using isc::UnitTestUtil;
using namespace std;
+using namespace isc;
using namespace isc::dns;
using namespace isc::dns::rdata;
@@ -50,8 +52,7 @@
}
-TEST_F(Rdata_RRSIG_Test, badText)
-{
+TEST_F(Rdata_RRSIG_Test, badText) {
EXPECT_THROW(const generic::RRSIG sig("SPORK"), InvalidRdataText);
EXPECT_THROW(const generic::RRSIG sig("A 555 4 43200 "
"20100223214617 20100222214617 8496 isc.org. "
@@ -83,16 +84,17 @@
"diGdLIrFabqr72af2rUq+UDBKMWXujwZTZUTws32sVldDPk/"
"NbuacJM25fQXfv5mO3Af7TOoow3AjMaVG9icjCW0V55WcWQU"
"f49t+sXKPzbipN9g+s1ZPiIyofc="), InvalidRdataText);
- EXPECT_THROW(const generic::RRSIG sig("A 5 4 43200 "
+ EXPECT_THROW(const generic::RRSIG sig(
+ "A 5 4 43200 "
"20100223214617 20100222214617 8496 isc.org. "
"EEeeeeeeEEEeeeeeeGaaahAAAAAAAAHHHHHHHHHHH!="),
- BadBase64String);
+ BadValue); // bad base64 input
+}
-#if 0 // this currently fails
+TEST_F(Rdata_RRSIG_Test, DISABLED_badText) { // this currently fails
// no space between the tag and signer
EXPECT_THROW(generic::RRSIG("A 5 4 43200 20100223214617 20100222214617 "
"8496isc.org. ofc="), InvalidRdataText);
-#endif
}
TEST_F(Rdata_RRSIG_Test, toWireRenderer)
Modified: branches/trac256/src/lib/dns/tests/sha1_unittest.cc
==============================================================================
--- branches/trac256/src/lib/dns/tests/sha1_unittest.cc (original)
+++ branches/trac256/src/lib/dns/tests/sha1_unittest.cc Sun Jul 11 06:21:39 2010
@@ -17,7 +17,7 @@
#include <stdint.h>
#include <string>
-#include <dns/sha1.h>
+#include <dns/util/sha1.h>
#include <gtest/gtest.h>
Modified: branches/trac256/src/lib/exceptions/exceptions.h
==============================================================================
--- branches/trac256/src/lib/exceptions/exceptions.h (original)
+++ branches/trac256/src/lib/exceptions/exceptions.h Sun Jul 11 06:21:39 2010
@@ -104,7 +104,7 @@
};
///
-/// \brief A standard DNS module exception that is thrown if a parameter give
+/// \brief A generic exception that is thrown if a parameter given
/// to a method would refer to or modify out-of-range data.
///
class OutOfRange : public Exception {
@@ -114,7 +114,17 @@
};
///
-/// \brief A standard DNS module exception that is thrown when an unexpected
+/// \brief A generic exception that is thrown if a parameter given
+/// to a method is considered invalid in that context.
+///
+class BadValue : public Exception {
+public:
+ BadValue(const char* file, size_t line, const char* what) :
+ isc::Exception(file, line, what) {}
+};
+
+///
+/// \brief A generic exception that is thrown when an unexpected
/// error condition occurs.
///
class Unexpected : public Exception {
More information about the bind10-changes
mailing list