]> git.ipfire.org Git - thirdparty/pdns.git/blame - pdns/tsig-tests.cc
Merge pull request #5523 from rubenk/fix-typos-in-logmessage
[thirdparty/pdns.git] / pdns / tsig-tests.cc
CommitLineData
870a0fe4
AT
1#ifdef HAVE_CONFIG_H
2#include "config.h"
3#endif
9feed75b
BH
4#include "dnsparser.hh"
5#include "dnswriter.hh"
6#include "sstuff.hh"
7#include "misc.hh"
8#include "dnswriter.hh"
9#include "dnsrecords.hh"
10#include "statbag.hh"
11#include "md5.hh"
12#include "base64.hh"
01cb2fe2 13#include "dnssecinfra.hh"
8e041630
BH
14#include "resolver.hh"
15#include "arguments.hh"
16#include "dns_random.hh"
9feed75b
BH
17
18StatBag S;
19
8e041630
BH
20ArgvMap& arg()
21{
22 static ArgvMap theArg;
23 return theArg;
24}
9feed75b
BH
25
26int main(int argc, char** argv)
27try
28{
8e041630
BH
29 ::arg().set("query-local-address","Source IP address for sending queries")="0.0.0.0";
30 ::arg().set("query-local-address6","Source IPv6 address for sending queries")="::";
31
9feed75b
BH
32 reportAllTypes();
33
34 if(argc < 4) {
35 cerr<<"tsig-tests: ask a TSIG signed question, verify the TSIG signed answer"<<endl;
36 cerr<<"Syntax: tsig IP-address port question question-type\n";
37 exit(EXIT_FAILURE);
38 }
39
40 vector<uint8_t> packet;
41
eaedd091 42 DNSPacketWriter pw(packet, DNSName(argv[3]), DNSRecordContent::TypeToNumber(argv[4]));
9feed75b
BH
43
44 pw.getHeader()->id=htons(0x4831);
01cb2fe2 45
9feed75b 46 string key;
8e041630
BH
47 B64Decode("Syq9L9WrBWdxBC+HxKok2g==", key);
48
2e16c059 49 DNSName keyname("pdns-b-aa");
9feed75b 50
9feed75b 51 TSIGRecordContent trc;
eaedd091 52 trc.d_algoName=DNSName("hmac-md5.sig-alg.reg.int");
01cb2fe2 53 trc.d_time=time(0);
9feed75b 54 trc.d_fudge=300;
9feed75b
BH
55 trc.d_origID=ntohs(pw.getHeader()->id);
56 trc.d_eRcode=0;
57
ea3816cf 58 addTSIG(pw, trc, keyname, key, "", false);
9feed75b 59
0131659f 60 Socket sock(AF_INET, SOCK_DGRAM);
9feed75b 61 ComboAddress dest(argv[1] + (*argv[1]=='@'), atoi(argv[2]));
8e041630 62 seedRandom("/dev/urandom");
2e16c059 63 cerr<<"Keyname: '"<<keyname.toString()<<"', algo: '"<<trc.d_algoName.toString()<<"', key: '"<<Base64Encode(key)<<"'\n";
0f578389 64 TSIGTriplet tt;
65 tt.name=keyname;
66 tt.algo=DNSName("hmac-md5");
67 tt.secret=key;
68 AXFRRetriever axfr(dest, DNSName("b.aa"), tt);
8e041630
BH
69 vector<DNSResourceRecord> res;
70 while(axfr.getChunk(res)) {
71 }
72 return 0;
9feed75b
BH
73}
74catch(std::exception &e)
75{
76 cerr<<"Fatal: "<<e.what()<<endl;
8e041630
BH
77 return 1;
78}
3f81d239 79catch(PDNSException& ae)
8e041630
BH
80{
81 cerr<<"Fatal 2: "<<ae.reason<<endl;
82 return 1;
9feed75b 83}