Home | History | Annotate | Line # | Download | only in testdata
      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
    236