tests/libzscanner: extend tests for SVCB and HTTPS

This commit is contained in:
Daniel Salzman 2021-06-18 15:47:50 +02:00
parent ca492e5295
commit c82d9fdcbd
4 changed files with 414 additions and 40 deletions

View 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
)

View file

@ -2,57 +2,305 @@ 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=FFFF0000000002000100010003026832
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=0040
RDATA=00010000000002000100010003026832
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=0040
RDATA=00010000010003026832
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=0040
RDATA=00010000010100FF6162636465666768696A6B6C6D6E6F707172737475767778797A313233343536373839304142434445464748494A4B4C4D4E6162636465666768696A6B6C6D6E6F707172737475767778797A313233343536373839304142434445464748494A4B4C4D4E6162636465666768696A6B6C6D6E6F707172737475767778797A313233343536373839304142434445464748494A4B4C4D4E6162636465666768696A6B6C6D6E6F707172737475767778797A313233343536373839304142434445464748494A4B4C4D4E6162636465666768696A6B6C6D6E6F707172737475767778797A313233343536373839304142434445464748494A4B4C4D4E3132333435
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=0040
RDATA=000100000100190570617274310570617274320C70617274332C70617274345C
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=0040
RDATA=000100000100190570617274310570617274320C70617274332C70617274345C
------
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=00
OWNER=076578616D706C6503636F6D00
CLASS=0001
RRTTL=00000001
RTYPE=0040
RDATA=000200
RDATA=001003666F6F076578616D706C6503636F6D00000300020035
------
OWNER=00
OWNER=076578616D706C6503636F6D00
CLASS=0001
RRTTL=00000001
RTYPE=0040
RDATA=000301780004020003666F6F
RDATA=000103666F6F076578616D706C6503636F6D00029B000568656C6C6F
------
OWNER=00
OWNER=076578616D706C6503636F6D00
CLASS=0001
RRTTL=00000001
RTYPE=0040
RDATA=00040004020007666F6F206261720403000362617A
RDATA=000103666F6F076578616D706C6503636F6D00029B000968656C6C6FD2716F6F
------
OWNER=00
OWNER=076578616D706C6503636F6D00
CLASS=0001
RRTTL=00000001
RTYPE=0040
RDATA=0005000000000400010003000100090268310568322C6833000300020405
RDATA=000103666F6F076578616D706C6503636F6D000006002020010DB800000000000000000000000120010DB8000000000000000000530001
------
OWNER=00
OWNER=076578616D706C6503636F6D00
CLASS=0001
RRTTL=00000001
RTYPE=0040
RDATA=0006000000000200040001000403680A680004000801020304010203050006001000010000000000000000000000000002
RDATA=0001076578616D706C6503636F6D000006001000000000000000000000FFFFC6336464
------
OWNER=00
OWNER=076578616D706C6503636F6D00
CLASS=0001
RRTTL=00000001
RTYPE=0040
RDATA=000700000100090268310568322C68330005000461686F6A
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_LABEL_OVERFLOW
WARNG=ZS_BAD_RDATA
------
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_SVC_PARAM
WARNG=ZS_BAD_NUMBER
------
WARNG=ZS_BAD_SVC_PARAM
WARNG=ZS_BAD_SVCB_PARAM
------
WARNG=ZS_NUMBER16_OVERFLOW
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
------

View 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

View 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
------