]> git.ipfire.org Git - thirdparty/knot-dns.git/commitdiff
tests/libzscanner: extend tests for SVCB and HTTPS
authorDaniel Salzman <daniel.salzman@nic.cz>
Fri, 18 Jun 2021 13:47:50 +0000 (15:47 +0200)
committerDaniel Salzman <daniel.salzman@nic.cz>
Wed, 23 Jun 2021 05:31:24 +0000 (07:31 +0200)
tests/libzscanner/data/57_SVCB.in
tests/libzscanner/data/57_SVCB.out
tests/libzscanner/data/58_HTTPS.in
tests/libzscanner/data/58_HTTPS.out

index 5e21defcd89f61e9ad11c72707514b101c2e2148..c4ce534e0d656c414ebc85f231bce0b4696d16ae 100644 (file)
@@ -2,25 +2,101 @@ $ORIGIN      .
 $TTL   1
 
 ; OK
-@      SVCB    1       .
-@      TYPE64  2       @
-@      SVCB    3       x.      key1026=foo
-@      TYPE64  4       .       key1026="foo bar" key1027=baz
-@      SVCB    5       .       mandatory=key1,port alpn="h1,h2\,h3" port=1029
-@      TYPE64  6       .       (
-                                mandatory="ipv4hint"
-                                alpn="h\010h"
-                                ipv4hint=1.2.3.4,1.2.3.5
-                                ipv6hint=1::2
-                                )
-@      SVCB    7       .       alpn=h1,h2\044h3 echconfig="YWhvag=="
+@      SVCB    0       .
+@      SVCB    0       @       ; Comment
+@      SVCB    65535   .       mandatory=alpn alpn=h2
+@      SVCB    1       .       mandatory="alpn" alpn=h2
+@      SVCB    1       .       alpn=h2
+@      SVCB    1       .       alpn="abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNabcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNabcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNabcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNabcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMN1234\053"    ; Text string of maximal length (255 chars)
+@      SVCB    1       .       alpn="part1,part2,part3\\,part4\\\\"
+@      SVCB    1       .       alpn=part1\,\p\a\r\t2\044part3\092,part4\092\\
+@      SVCB    1       .       no-default-alpn
+@      SVCB    1       .       port=0
+@      SVCB    1       .       port="65535"
+@      SVCB    1       .       ipv4hint=0.0.0.0
+@      SVCB    1       .       ipv4hint="255.255.255.255"
+@      SVCB    1       .       ech=AA==
+@      SVCB    1       .       ech="Zm9vYg=="
+@      SVCB    1       .       ipv6hint=::1
+@      SVCB    1       .       ipv6hint="::1"
+@      SVCB    1       .       key7
+@      SVCB    1       .       key65535
+@      SVCB    1       .       key65535=a
+@      SVCB    1       .       key65535="a"
+@      SVCB    1       .       key65535="a" key1000=b port=4 key7 mandatory=key7,port
+@      TYPE64  \# 3 000000
+@      TYPE64  0       .
+@      svcb    0       .
+
+; RFC OK examples
+example.com.   HTTPS   0 foo.example.com.
+example.com.   SVCB    1 .
+example.com.   SVCB    16 foo.example.com. port=53
+example.com.   SVCB    1 foo.example.com. key667=hello
+example.com.   SVCB    1 foo.example.com. key667="hello\210qoo"
+example.com.   SVCB    1 foo.example.com. (
+                        ipv6hint="2001:db8::1,2001:db8::53:1"
+                        )
+example.com.   SVCB    1 example.com. ipv6hint="::ffff:198.51.100.100"
+example.com.   SVCB    16 foo.example.org. (
+                        alpn=h2,h3-19 mandatory=ipv4hint,alpn
+                        ipv4hint=192.0.2.1
+                        )
+example.com.   SVCB    16 foo.example.org. alpn="f\\\\oo\\,bar,h2"
+example.com.   SVCB    16 foo.example.org. alpn=f\\\092oo\092,bar,h2
 
 ; KO
-@      SVCB    70000   .
-@      SVCB    8       abcdef012345678901234567890123456789012345678901234567890123456789.
-@      SVCB    9       .       key70000=foo
-@      SVCB    10      .       nonextype=bar
-@      SVCB    11      .       mandatory=alpn,nonextype
-@      SVCB    12      .       port=70000
-@      SVCB    13      .       ipv4hint=1.2.3.400
-@      SVCB    14      .       ipv6hint=1::2,foo
+@      SVCB
+@      SVCB                                            ; Empty rdata
+@      SVCB    \# 0                                    ; Hex empty rdata
+@      SVCB    65536   .                               ; Priority overflow
+@      SVCB    0                                       ; Missing item
+@      SVCB    1       .       bogus                   ; Unknown parameter
+@      SVCB    1       .       PORT=0                  ; Capital letter in parameter name
+@      SVCB    1       .       mandatory
+@      SVCB    1       .       mandatory=
+@      SVCB    1       .       mandatory=a,
+@      SVCB    1       .       mandatory=a,,b
+@      SVCB    1       .       mandatory=mandatory
+@      SVCB    1       .       mandatory=bogus
+@      SVCB    1       .       alpn
+@      SVCB    1       .       alpn=
+@      SVCB    1       .       alpn=a,
+@      SVCB    1       .       alpn=a,,b
+@      SVCB    1       .       alpn="abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNabcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNabcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNabcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNabcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMN1234\0536"    ; Text string overflow (256 chars)
+@      SVCB    1       .       no-default-alpn=
+@      SVCB    1       .       no-default-alpn=h1
+@      SVCB    1       .       no-default-alpn="h1"
+@      SVCB    1       .       port
+@      SVCB    1       .       port=
+@      SVCB    1       .       port=65536
+@      SVCB    1       .       port=1,2
+@      SVCB    1       .       ipv4hint
+@      SVCB    1       .       ipv4hint=
+@      SVCB    1       .       ipv4hint=1.2.3
+@      SVCB    1       .       ipv4hint=1.2.3.4,
+@      SVCB    1       .       ipv4hint=1.2.3.4,,2.3.4.5
+@      SVCB    1       .       ech
+@      SVCB    1       .       ech=
+@      SVCB    1       .       ech=AA==,AA==
+@      SVCB    1       .       ech=W
+@      SVCB    1       .       ipv6hint
+@      SVCB    1       .       ipv6hint=
+@      SVCB    1       .       ipv6hint=::1,,::2
+@      SVCB    1       .       ipv6hint=::W
+
+; RFC KO examples
+example.com.   SVCB    1 foo.example.com. (
+                        key123=abc key123=def
+                        )
+example.com.   SVCB    1 foo.example.com. mandatory
+example.com.   SVCB    1 foo.example.com. alpn
+example.com.   SVCB    1 foo.example.com. port
+example.com.   SVCB    1 foo.example.com. ipv4hint
+example.com.   SVCB    1 foo.example.com. ipv6hint
+example.com.   SVCB    1 foo.example.com. no-default-alpn=abc
+example.com.   SVCB    1 foo.example.com. mandatory=key123
+example.com.   SVCB    1 foo.example.com. mandatory=mandatory
+example.com.   SVCB    1 foo.example.com. (
+                        mandatory=key123,key123 key123=abc
+                        )
index ffae942500f87604bcfb345ae5ff7b54f1f8aca3..a799eb7cb6f72bbd4bb73dec73f07377a9f6dcf2 100644 (file)
@@ -2,57 +2,305 @@ OWNER=00
 CLASS=0001
 RRTTL=00000001
 RTYPE=0040
-RDATA=000100
+RDATA=000000
 ------
 OWNER=00
 CLASS=0001
 RRTTL=00000001
 RTYPE=0040
-RDATA=000200
+RDATA=000000
 ------
 OWNER=00
 CLASS=0001
 RRTTL=00000001
 RTYPE=0040
-RDATA=000301780004020003666F6F
+RDATA=FFFF0000000002000100010003026832
 ------
 OWNER=00
 CLASS=0001
 RRTTL=00000001
 RTYPE=0040
-RDATA=00040004020007666F6F206261720403000362617A
+RDATA=00010000000002000100010003026832
 ------
 OWNER=00
 CLASS=0001
 RRTTL=00000001
 RTYPE=0040
-RDATA=0005000000000400010003000100090268310568322C6833000300020405
+RDATA=00010000010003026832
 ------
 OWNER=00
 CLASS=0001
 RRTTL=00000001
 RTYPE=0040
-RDATA=0006000000000200040001000403680A680004000801020304010203050006001000010000000000000000000000000002
+RDATA=00010000010100FF6162636465666768696A6B6C6D6E6F707172737475767778797A313233343536373839304142434445464748494A4B4C4D4E6162636465666768696A6B6C6D6E6F707172737475767778797A313233343536373839304142434445464748494A4B4C4D4E6162636465666768696A6B6C6D6E6F707172737475767778797A313233343536373839304142434445464748494A4B4C4D4E6162636465666768696A6B6C6D6E6F707172737475767778797A313233343536373839304142434445464748494A4B4C4D4E6162636465666768696A6B6C6D6E6F707172737475767778797A313233343536373839304142434445464748494A4B4C4D4E3132333435
 ------
 OWNER=00
 CLASS=0001
 RRTTL=00000001
 RTYPE=0040
-RDATA=000700000100090268310568322C68330005000461686F6A
+RDATA=000100000100190570617274310570617274320C70617274332C70617274345C
 ------
-WARNG=ZS_NUMBER16_OVERFLOW
+OWNER=00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0040
+RDATA=000100000100190570617274310570617274320C70617274332C70617274345C
 ------
-WARNG=ZS_LABEL_OVERFLOW
+OWNER=00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0040
+RDATA=00010000020000
+------
+OWNER=00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0040
+RDATA=000100000300020000
+------
+OWNER=00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0040
+RDATA=00010000030002FFFF
+------
+OWNER=00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0040
+RDATA=0001000004000400000000
+------
+OWNER=00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0040
+RDATA=00010000040004FFFFFFFF
+------
+OWNER=00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0040
+RDATA=0001000005000100
+------
+OWNER=00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0040
+RDATA=00010000050004666F6F62
+------
+OWNER=00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0040
+RDATA=0001000006001000000000000000000000000000000001
+------
+OWNER=00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0040
+RDATA=0001000006001000000000000000000000000000000001
+------
+OWNER=00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0040
+RDATA=00010000070000
+------
+OWNER=00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0040
+RDATA=000100FFFF0000
+------
+OWNER=00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0040
+RDATA=000100FFFF000161
+------
+OWNER=00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0040
+RDATA=000100FFFF000161
+------
+OWNER=00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0040
+RDATA=00010000000004000300070003000200040007000003E8000162FFFF000161
+------
+OWNER=00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0040
+RDATA=000000
+------
+OWNER=00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0040
+RDATA=000000
+------
+OWNER=00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0040
+RDATA=000000
+------
+OWNER=076578616D706C6503636F6D00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0041
+RDATA=000003666F6F076578616D706C6503636F6D00
+------
+OWNER=076578616D706C6503636F6D00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0040
+RDATA=000100
+------
+OWNER=076578616D706C6503636F6D00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0040
+RDATA=001003666F6F076578616D706C6503636F6D00000300020035
+------
+OWNER=076578616D706C6503636F6D00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0040
+RDATA=000103666F6F076578616D706C6503636F6D00029B000568656C6C6F
+------
+OWNER=076578616D706C6503636F6D00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0040
+RDATA=000103666F6F076578616D706C6503636F6D00029B000968656C6C6FD2716F6F
+------
+OWNER=076578616D706C6503636F6D00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0040
+RDATA=000103666F6F076578616D706C6503636F6D000006002020010DB800000000000000000000000120010DB8000000000000000000530001
+------
+OWNER=076578616D706C6503636F6D00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0040
+RDATA=0001076578616D706C6503636F6D000006001000000000000000000000FFFFC6336464
+------
+OWNER=076578616D706C6503636F6D00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0040
+RDATA=001003666F6F076578616D706C65036F7267000000000400010004000100090268320568332D313900040004C0000201
+------
+OWNER=076578616D706C6503636F6D00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0040
+RDATA=001003666F6F076578616D706C65036F7267000001000C08665C6F6F2C626172026832
+------
+OWNER=076578616D706C6503636F6D00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0040
+RDATA=001003666F6F076578616D706C65036F7267000001000C08665C6F6F2C626172026832
+------
+WARNG=ZS_BAD_NUMBER
+------
+WARNG=ZS_BAD_NUMBER
+------
+WARNG=ZS_BAD_HEX_CHAR
 ------
 WARNG=ZS_NUMBER16_OVERFLOW
 ------
-WARNG=ZS_BAD_SVC_PARAM
+WARNG=ZS_BAD_RDATA
 ------
-WARNG=ZS_BAD_SVC_PARAM
+WARNG=ZS_BAD_SVCB_PARAM
+------
+WARNG=ZS_BAD_SVCB_PARAM
+------
+WARNG=ZS_BAD_SVCB_PARAM
+------
+WARNG=ZS_BAD_SVCB_PARAM
+------
+WARNG=ZS_BAD_SVCB_MANDATORY
+------
+WARNG=ZS_BAD_SVCB_MANDATORY
+------
+WARNG=ZS_BAD_SVCB_MANDATORY
+------
+WARNG=ZS_BAD_SVCB_MANDATORY
+------
+WARNG=ZS_BAD_SVCB_PARAM
+------
+WARNG=ZS_BAD_SVCB_PARAM
+------
+WARNG=ZS_EMPTY_LIST_ITEM
+------
+WARNG=ZS_EMPTY_LIST_ITEM
+------
+WARNG=ZS_ITEM_OVERFLOW
+------
+WARNG=ZS_BAD_SVCB_PARAM
+------
+WARNG=ZS_BAD_SVCB_PARAM
+------
+WARNG=ZS_BAD_SVCB_PARAM
+------
+WARNG=ZS_BAD_SVCB_PARAM
+------
+WARNG=ZS_BAD_NUMBER
 ------
 WARNG=ZS_NUMBER16_OVERFLOW
 ------
+WARNG=ZS_BAD_NUMBER
+------
+WARNG=ZS_BAD_SVCB_PARAM
+------
+WARNG=ZS_BAD_ADDRESS_CHAR
+------
 WARNG=ZS_BAD_IPV4
 ------
 WARNG=ZS_BAD_ADDRESS_CHAR
 ------
+WARNG=ZS_BAD_ADDRESS_CHAR
+------
+WARNG=ZS_BAD_SVCB_PARAM
+------
+WARNG=ZS_BAD_SVCB_PARAM
+------
+WARNG=ZS_BAD_SVCB_PARAM
+------
+WARNG=ZS_BAD_SVCB_PARAM
+------
+WARNG=ZS_BAD_SVCB_PARAM
+------
+WARNG=ZS_BAD_ADDRESS_CHAR
+------
+WARNG=ZS_BAD_ADDRESS_CHAR
+------
+WARNG=ZS_BAD_ADDRESS_CHAR
+------
+WARNG=ZS_DUPLICATE_SVCB_KEY
+------
+WARNG=ZS_BAD_SVCB_PARAM
+------
+WARNG=ZS_BAD_SVCB_PARAM
+------
+WARNG=ZS_BAD_SVCB_PARAM
+------
+WARNG=ZS_BAD_SVCB_PARAM
+------
+WARNG=ZS_BAD_SVCB_PARAM
+------
+WARNG=ZS_BAD_SVCB_PARAM
+------
+WARNG=ZS_MISSING_SVCB_MANDATORY
+------
+WARNG=ZS_BAD_SVCB_MANDATORY
+------
+WARNG=ZS_DUPLICATE_SVCB_MANDATORY
+------
index c1b6ddb531e438ea039766583c95a3bdfc232647..674f86547a4837f9463296438c8cc30b3c457335 100644 (file)
@@ -1,9 +1,19 @@
 $ORIGIN        .
 $TTL   1
 
+; HTTPS is the same as SVCB, so there are the differences and basics only.
+
 ; OK
-@      HTTPS   1       .
+@      HTTPS   0       .
+@      HTTPS   65535   @       ; Comment
+@       HTTPS  1       .       key65535="a" key1000=b port=4 key7 mandatory=key7,port
+@       TYPE65 \# 3 000000
+@       TYPE65 0       .
+@       https  0       .
 
 ; KO
-;@     SMIMEA
-
+@      HTTPS
+@      HTTPS                                           ; Empty rdata
+@      HTTPS   \# 0                                    ; Hex empty rdata
+@      HTTPS   65536   .                               ; Priority overflow
+@      HTTPS   0                                       ; Missing item
index 52141539dd2d8126078c2fd0b3dbe34914abaed8..8ec9a3518136bccdd60408909c4bfbdc6d073474 100644 (file)
@@ -2,5 +2,45 @@ OWNER=00
 CLASS=0001
 RRTTL=00000001
 RTYPE=0041
-RDATA=000100
+RDATA=000000
+------
+OWNER=00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0041
+RDATA=FFFF00
+------
+OWNER=00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0041
+RDATA=00010000000004000300070003000200040007000003E8000162FFFF000161
+------
+OWNER=00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0041
+RDATA=000000
+------
+OWNER=00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0041
+RDATA=000000
+------
+OWNER=00
+CLASS=0001
+RRTTL=00000001
+RTYPE=0041
+RDATA=000000
+------
+WARNG=ZS_BAD_NUMBER
+------
+WARNG=ZS_BAD_NUMBER
+------
+WARNG=ZS_BAD_HEX_CHAR
+------
+WARNG=ZS_NUMBER16_OVERFLOW
+------
+WARNG=ZS_BAD_RDATA
 ------