]>
Commit | Line | Data |
---|---|---|
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 | |
18 | StatBag S; | |
19 | ||
8e041630 BH |
20 | ArgvMap& arg() |
21 | { | |
22 | static ArgvMap theArg; | |
23 | return theArg; | |
24 | } | |
9feed75b BH |
25 | |
26 | int main(int argc, char** argv) | |
27 | try | |
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 | } |
74 | catch(std::exception &e) | |
75 | { | |
76 | cerr<<"Fatal: "<<e.what()<<endl; | |
8e041630 BH |
77 | return 1; |
78 | } | |
3f81d239 | 79 | catch(PDNSException& ae) |
8e041630 BH |
80 | { |
81 | cerr<<"Fatal 2: "<<ae.reason<<endl; | |
82 | return 1; | |
9feed75b | 83 | } |