]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/unbound/testdata/edns_downstream_cookies.rpl
unbound: Vendor import 1.18.0
[FreeBSD/FreeBSD.git] / contrib / unbound / testdata / edns_downstream_cookies.rpl
1 ; config options
2 server:
3         answer-cookie: yes
4         cookie-secret: "000102030405060708090a0b0c0d0e0f"
5         access-control: 127.0.0.1 allow_cookie
6         access-control: 1.2.3.4 allow
7         local-data: "test. TXT test"
8
9 CONFIG_END
10
11 SCENARIO_BEGIN Test downstream DNS Cookies
12
13 ; Note: When a valid hash was required, it was generated by running this test
14 ; with an invalid one and checking the output for the valid one.
15 ; Actual hash generation is tested with unit tests.
16
17 ; Query without a client cookie ...
18 STEP 0 QUERY
19 ENTRY_BEGIN
20 REPLY RD
21 SECTION QUESTION
22 test. IN TXT
23 ENTRY_END
24 ; ... get TC and refused
25 STEP 1 CHECK_ANSWER
26 ENTRY_BEGIN
27 MATCH all
28 REPLY QR RD RA TC REFUSED
29 SECTION QUESTION
30 test. IN TXT
31 ENTRY_END
32
33 ; Query without a client cookie on TCP ...
34 STEP 10 QUERY
35 ENTRY_BEGIN
36 REPLY RD
37 MATCH TCP
38 SECTION QUESTION
39 test. IN TXT
40 ENTRY_END
41 ; ... get an answer
42 STEP 11 CHECK_ANSWER
43 ENTRY_BEGIN
44 MATCH all
45 REPLY QR RD RA AA NOERROR
46 SECTION QUESTION
47 test. IN TXT
48 SECTION ANSWER
49 test. IN TXT "test"
50 ENTRY_END
51
52 ; Query with only a client cookie ...
53 STEP 20 QUERY
54 ENTRY_BEGIN
55 REPLY RD
56 SECTION QUESTION
57 test. IN TXT
58 SECTION ADDITIONAL
59 HEX_EDNSDATA_BEGIN
60         00 0a                   ; Opcode 10
61         00 08                   ; Length 8
62         31 32 33 34 35 36 37 38 ; Random bits
63 HEX_EDNSDATA_END
64 ENTRY_END
65 ; ... get BADCOOKIE and a new cookie
66 STEP 21 CHECK_ANSWER
67 ENTRY_BEGIN
68 MATCH all server_cookie
69 REPLY QR RD RA DO YXRRSET       ; BADCOOKIE is an extended rcode
70 SECTION QUESTION
71 test. IN TXT
72 ENTRY_END
73
74 ; Query with an invalid cookie ...
75 STEP 30 QUERY
76 ENTRY_BEGIN
77 REPLY RD
78 SECTION QUESTION
79 test. IN TXT
80 SECTION ADDITIONAL
81 HEX_EDNSDATA_BEGIN
82         00 0a                   ; Opcode 10
83         00 18                   ; Length 24
84         31 32 33 34 35 36 37 38 ; Random bits
85         02 00 00 00             ; wrong version
86         00 00 00 00             ; Timestamp
87         31 32 33 34 35 36 37 38 ; wrong hash
88 HEX_EDNSDATA_END
89 ENTRY_END
90 ; ... get BADCOOKIE and a new cookie
91 STEP 31 CHECK_ANSWER
92 ENTRY_BEGIN
93 MATCH all server_cookie
94 REPLY QR RD RA DO YXRRSET       ; BADCOOKIE is an extended rcode
95 SECTION QUESTION
96 test. IN TXT
97 ENTRY_END
98
99 ; Query with an invalid cookie from a non-cookie protected address ...
100 STEP 40 QUERY ADDRESS 1.2.3.4
101 ENTRY_BEGIN
102 REPLY RD
103 SECTION QUESTION
104 test. IN TXT
105 SECTION ADDITIONAL
106 HEX_EDNSDATA_BEGIN
107         00 0a                   ; Opcode 10
108         00 18                   ; Length 24
109         31 32 33 34 35 36 37 38 ; Random bits
110         02 00 00 00             ; wrong version
111         00 00 00 00             ; Timestamp
112         31 32 33 34 35 36 37 38 ; wrong hash
113 HEX_EDNSDATA_END
114 ENTRY_END
115 ; ... get answer and a cookie
116 STEP 41 CHECK_ANSWER
117 ENTRY_BEGIN
118 MATCH all server_cookie
119 REPLY QR RD RA AA DO NOERROR
120 SECTION QUESTION
121 test. IN TXT
122 SECTION ANSWER
123 test. IN TXT "test"
124 ENTRY_END
125
126 ; Query with a valid cookie ...
127 STEP 50 QUERY
128 ENTRY_BEGIN
129 REPLY RD
130 SECTION QUESTION
131 test. IN TXT
132 SECTION ADDITIONAL
133 HEX_EDNSDATA_BEGIN
134         00 0a                   ; Opcode 10
135         00 18                   ; Length 24
136         31 32 33 34 35 36 37 38 ; Random bits
137         01 00 00 00             ; Version/Reserved
138         00 00 00 00             ; Timestamp
139         38 52 7b a8 c6 a4 ea 96 ; Hash
140 HEX_EDNSDATA_END
141 ENTRY_END
142 ; ... get answer and the cookie
143 STEP 51 CHECK_ANSWER
144 ENTRY_BEGIN
145 MATCH all server_cookie
146 REPLY QR RD RA AA DO NOERROR
147 SECTION QUESTION
148 test. IN TXT
149 SECTION ANSWER
150 test. IN TXT "test"
151 ENTRY_END
152
153 ; Query with a valid >30 minutes old cookie ...
154 STEP 59 TIME_PASSES ELAPSE 1801
155 STEP 60 QUERY
156 ENTRY_BEGIN
157 REPLY RD
158 SECTION QUESTION
159 test. IN TXT
160 SECTION ADDITIONAL
161 HEX_EDNSDATA_BEGIN
162         00 0a                   ; Opcode 10
163         00 18                   ; Length 24
164         31 32 33 34 35 36 37 38 ; Random bits
165         01 00 00 00             ; Version/Reserved
166         00 00 00 00             ; Timestamp
167         38 52 7b a8 c6 a4 ea 96 ; Hash
168 HEX_EDNSDATA_END
169 ENTRY_END
170 ; ... Get answer and a refreshed cookie
171 ;     (we don't check the re-freshness here; it has its own unit test)
172 STEP 61 CHECK_ANSWER
173 ENTRY_BEGIN
174 MATCH all server_cookie
175 REPLY QR RD RA AA DO NOERROR
176 SECTION QUESTION
177 test. IN TXT
178 SECTION ANSWER
179 test. IN TXT "test"
180 ENTRY_END
181
182 ; Query with a hash-valid >60 minutes old cookie ...
183 STEP 69 TIME_PASSES ELAPSE 3601
184 STEP 70 QUERY
185 ENTRY_BEGIN
186 REPLY RD
187 SECTION QUESTION
188 test. IN TXT
189 SECTION ADDITIONAL
190 HEX_EDNSDATA_BEGIN
191         00 0a                   ; Opcode 10
192         00 18                   ; Length 24
193         31 32 33 34 35 36 37 38 ; Random bits
194         01 00 00 00             ; Version/Reserved
195         00 00 07 09             ; Timestamp (1801)
196         77 81 38 e3 8f aa 72 86 ; Hash
197 HEX_EDNSDATA_END
198 ENTRY_END
199 ; ... get BADCOOKIE and a new cookie
200 STEP 71 CHECK_ANSWER
201 ENTRY_BEGIN
202 MATCH all server_cookie
203 REPLY QR RD RA DO YXRRSET       ; BADCOOKIE is an extended rcode
204 SECTION QUESTION
205 test. IN TXT
206 ENTRY_END
207
208 ; Query with a valid future (<5 minutes) cookie ...
209 STEP 80 QUERY
210 ENTRY_BEGIN
211 REPLY RD
212 SECTION QUESTION
213 test. IN TXT
214 SECTION ADDITIONAL
215 HEX_EDNSDATA_BEGIN
216         00 0a                   ; Opcode 10
217         00 18                   ; Length 24
218         31 32 33 34 35 36 37 38 ; Random bits
219         01 00 00 00             ; Version/Reserved
220         00 00 16 45             ; Timestamp (1801 + 3601 + 299)
221         4a f5 0f df f0 e8 c7 09 ; Hash
222 HEX_EDNSDATA_END
223 ENTRY_END
224 ; ... get an answer
225 STEP 81 CHECK_ANSWER
226 ENTRY_BEGIN
227 MATCH all server_cookie
228 REPLY QR RD RA AA DO NOERROR
229 SECTION QUESTION
230 test. IN TXT
231 SECTION ANSWER
232 test. IN TXT "test"
233 ENTRY_END
234
235 SCENARIO_END