-
Notifications
You must be signed in to change notification settings - Fork 0
/
RecordTSIG.cs
64 lines (59 loc) · 1.94 KB
/
RecordTSIG.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
using System;
/*
* http://www.ietf.org/rfc/rfc2845.txt
*
* Field Name Data Type Notes
--------------------------------------------------------------
Algorithm Name domain-name Name of the algorithm
in domain name syntax.
Time Signed u_int48_t seconds since 1-Jan-70 UTC.
Fudge u_int16_t seconds of error permitted
in Time Signed.
MAC Size u_int16_t number of octets in MAC.
MAC octet stream defined by Algorithm Name.
Original ID u_int16_t original message ID
Error u_int16_t expanded RCODE covering
TSIG processing.
Other Len u_int16_t length, in octets, of
Other Data.
Other Data octet stream empty unless Error == BADTIME
*/
namespace Heijden.DNS
{
public class RecordTSIG : Record
{
public string ALGORITHMNAME;
public long TIMESIGNED;
public UInt16 FUDGE;
public UInt16 MACSIZE;
public byte[] MAC;
public UInt16 ORIGINALID;
public UInt16 ERROR;
public UInt16 OTHERLEN;
public byte[] OTHERDATA;
public RecordTSIG(RecordReader rr)
{
ALGORITHMNAME = rr.ReadDomainName();
TIMESIGNED = rr.ReadUInt32() << 32 | rr.ReadUInt32();
FUDGE = rr.ReadUInt16();
MACSIZE = rr.ReadUInt16();
MAC = rr.ReadBytes(MACSIZE);
ORIGINALID = rr.ReadUInt16();
ERROR = rr.ReadUInt16();
OTHERLEN = rr.ReadUInt16();
OTHERDATA = rr.ReadBytes(OTHERLEN);
}
public override string ToString()
{
DateTime dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0);
dateTime = dateTime.AddSeconds(TIMESIGNED);
string printDate = dateTime.ToShortDateString() + " " + dateTime.ToShortTimeString();
return string.Format("{0} {1} {2} {3} {4}",
ALGORITHMNAME,
printDate,
FUDGE,
ORIGINALID,
ERROR);
}
}
}