]> git.ipfire.org Git - thirdparty/pdns.git/blob - pdns/test-sha_hh.cc
Merge remote-tracking branch 'origin/master' into dnsname
[thirdparty/pdns.git] / pdns / test-sha_hh.cc
1 #define BOOST_TEST_DYN_LINK
2 #define BOOST_TEST_NO_MAIN
3 #ifdef HAVE_CONFIG_H
4 #include "config.h"
5 #endif
6 #include <boost/test/unit_test.hpp>
7 #include <boost/assign/list_of.hpp>
8 #include <boost/foreach.hpp>
9 #include <boost/tuple/tuple.hpp>
10
11 #include "sha.hh"
12 #include "misc.hh"
13
14 using namespace boost;
15 using namespace boost::assign;
16
17 BOOST_AUTO_TEST_SUITE(test_sha_hh)
18
19 // input, output
20 typedef boost::tuple<const std::string, const std::string> case_t;
21 typedef std::vector<case_t> cases_t;
22
23 BOOST_AUTO_TEST_CASE(test_sha1summer) {
24 cases_t cases = list_of
25 (case_t("abc", "a9 99 3e 36 47 06 81 6a ba 3e 25 71 78 50 c2 6c 9c d0 d8 9d "))
26 (case_t("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", "84 98 3e 44 1c 3b d2 6e ba ae 4a a1 f9 51 29 e5 e5 46 70 f1 "));
27
28 BOOST_FOREACH(case_t& val, cases) {
29 SHA1Summer s;
30 s.feed(val.get<0>());
31 BOOST_CHECK_EQUAL(makeHexDump(s.get()), val.get<1>());
32 }
33 }
34
35 BOOST_AUTO_TEST_CASE(test_sha224summer) {
36 cases_t cases = list_of
37 (case_t("abc", "23 09 7d 22 34 05 d8 22 86 42 a4 77 bd a2 55 b3 2a ad bc e4 bd a0 b3 f7 e3 6c 9d a7 "))
38 (case_t("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", "75 38 8b 16 51 27 76 cc 5d ba 5d a1 fd 89 01 50 b0 c6 45 5c b4 f5 8b 19 52 52 25 25 "));
39
40 BOOST_FOREACH(case_t& val, cases) {
41 SHA224Summer s;
42 s.feed(val.get<0>());
43 BOOST_CHECK_EQUAL(makeHexDump(s.get()), val.get<1>());
44 }
45 }
46
47 BOOST_AUTO_TEST_CASE(test_sha256summer) {
48 cases_t cases = list_of
49 (case_t("abc", "ba 78 16 bf 8f 01 cf ea 41 41 40 de 5d ae 22 23 b0 03 61 a3 96 17 7a 9c b4 10 ff 61 f2 00 15 ad "))
50 (case_t("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", "24 8d 6a 61 d2 06 38 b8 e5 c0 26 93 0c 3e 60 39 a3 3c e4 59 64 ff 21 67 f6 ec ed d4 19 db 06 c1 "));
51
52 BOOST_FOREACH(case_t& val, cases) {
53 SHA256Summer s;
54 s.feed(val.get<0>());
55 BOOST_CHECK_EQUAL(makeHexDump(s.get()), val.get<1>());
56 }
57 }
58
59 BOOST_AUTO_TEST_CASE(test_sha384summer) {
60 cases_t cases = list_of
61 (case_t("abc", "cb 00 75 3f 45 a3 5e 8b b5 a0 3d 69 9a c6 50 07 27 2c 32 ab 0e de d1 63 1a 8b 60 5a 43 ff 5b ed 80 86 07 2b a1 e7 cc 23 58 ba ec a1 34 c8 25 a7 "))
62 (case_t("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", "33 91 fd dd fc 8d c7 39 37 07 a6 5b 1b 47 09 39 7c f8 b1 d1 62 af 05 ab fe 8f 45 0d e5 f3 6b c6 b0 45 5a 85 20 bc 4e 6f 5f e9 5b 1f e3 c8 45 2b "));
63
64 BOOST_FOREACH(case_t& val, cases) {
65 SHA384Summer s;
66 s.feed(val.get<0>());
67 BOOST_CHECK_EQUAL(makeHexDump(s.get()), val.get<1>());
68 }
69 }
70
71 BOOST_AUTO_TEST_CASE(test_sha512summer) {
72 cases_t cases = list_of
73 (case_t("abc", "dd af 35 a1 93 61 7a ba cc 41 73 49 ae 20 41 31 12 e6 fa 4e 89 a9 7e a2 0a 9e ee e6 4b 55 d3 9a 21 92 99 2a 27 4f c1 a8 36 ba 3c 23 a3 fe eb bd 45 4d 44 23 64 3c e8 0e 2a 9a c9 4f a5 4c a4 9f "))
74 (case_t("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", "20 4a 8f c6 dd a8 2f 0a 0c ed 7b eb 8e 08 a4 16 57 c1 6e f4 68 b2 28 a8 27 9b e3 31 a7 03 c3 35 96 fd 15 c1 3b 1b 07 f9 aa 1d 3b ea 57 78 9c a0 31 ad 85 c7 a7 1d d7 03 54 ec 63 12 38 ca 34 45 "));
75
76 BOOST_FOREACH(case_t& val, cases) {
77 SHA512Summer s;
78 s.feed(val.get<0>());
79 BOOST_CHECK_EQUAL(makeHexDump(s.get()), val.get<1>());
80 }
81 }
82
83 BOOST_AUTO_TEST_SUITE_END()