]> git.ipfire.org Git - thirdparty/pdns.git/blame - regression-tests/tkey.py
Merge pull request #11431 from jroessler-ox/docs-kskzskroll-update
[thirdparty/pdns.git] / regression-tests / tkey.py
CommitLineData
bb5ae11c 1#!/usr/bin/env python3
a0072e6d 2
7a104cc6
AT
3import socket
4import select
5import sys
a0072e6d
AT
6
7def ensure(data, offset, value):
8 if (data[offset:offset+len(value)] != value):
9 raise Exception("Mismatch at packet offset {0!s} {1!r} != {2!r}".format(offset,data[offset:offset+len(value)], value))
10
11def main(host, port):
12 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
13
50f64e26 14 msg = b"\xaa\x77\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x04tkey\x04unit\x04test\x00\x00\xf9\x00\xff\x04tkey\x04unit\x04test\x00\x00\xf9\x00\xff\x00\x00\x00\x00\x00\x22\x03bad\04algo\x00\x00\x00\x30\x39\x00\x00\x30\x39\x00\x03\x00\x00\x00\x04test\x00\x00"
a0072e6d
AT
15
16 s.sendto(msg, (host, port))
17 s.settimeout(2)
18 data, addr = s.recvfrom(512)
19
20 # make sure the data validates
21
22 # transaction id
23 ensure(data, 0, msg[0:2])
24
25 # has one question, one answer
50f64e26
PD
26 ensure(data, 4, b"\x00\x01")
27 ensure(data, 6, b"\x00\x01")
a0072e6d
AT
28
29 # question is tkey.unit.test ANY TKEY?
50f64e26 30 ensure(data, 12, b"\x04tkey\x04unit\x04test\x00\x00\xf9\x00\xff")
a0072e6d 31 # answer is called tkey.unit.test ANY TKEY (compressed it seems)
50f64e26 32 ensure(data, 32, b"\xc0\x0c\x00\xf9\x00\xff")
a0072e6d
AT
33
34 # and then ensure we get an BADALGO or error, at least.
35 if (data[64:66] == "\x00\x00"):
36 raise Exception("At packet offset {0!s}: expected {2!r}, got {1!r}".format(offset,data[offset:offset+len(value)], value))
37
50f64e26 38 print("Got expected TKEY response\n")
a0072e6d
AT
39
40if (len(sys.argv) < 3):
50f64e26 41 print("Usage: tkey.py host port")
a0072e6d
AT
42 sys.exit(1)
43
44if __name__ == '__main__':
45 main(sys.argv[1], int(sys.argv[2]))