From c82d9fdcbdf82869b286e52bcae5dc5b487f6066 Mon Sep 17 00:00:00 2001 From: Daniel Salzman <daniel.salzman@nic.cz> Date: Fri, 18 Jun 2021 15:47:50 +0200 Subject: [PATCH] tests/libzscanner: extend tests for SVCB and HTTPS --- tests/libzscanner/data/57_SVCB.in | 116 +++++++++--- tests/libzscanner/data/57_SVCB.out | 270 ++++++++++++++++++++++++++-- tests/libzscanner/data/58_HTTPS.in | 16 +- tests/libzscanner/data/58_HTTPS.out | 42 ++++- 4 files changed, 409 insertions(+), 35 deletions(-) diff --git a/tests/libzscanner/data/57_SVCB.in b/tests/libzscanner/data/57_SVCB.in index 5e21defcd8..c4ce534e0d 100644 --- a/tests/libzscanner/data/57_SVCB.in +++ b/tests/libzscanner/data/57_SVCB.in @@ -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 + ) diff --git a/tests/libzscanner/data/57_SVCB.out b/tests/libzscanner/data/57_SVCB.out index ffae942500..a799eb7cb6 100644 --- a/tests/libzscanner/data/57_SVCB.out +++ b/tests/libzscanner/data/57_SVCB.out @@ -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 +------ diff --git a/tests/libzscanner/data/58_HTTPS.in b/tests/libzscanner/data/58_HTTPS.in index c1b6ddb531..674f86547a 100644 --- a/tests/libzscanner/data/58_HTTPS.in +++ b/tests/libzscanner/data/58_HTTPS.in @@ -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 diff --git a/tests/libzscanner/data/58_HTTPS.out b/tests/libzscanner/data/58_HTTPS.out index 52141539dd..8ec9a35181 100644 --- a/tests/libzscanner/data/58_HTTPS.out +++ b/tests/libzscanner/data/58_HTTPS.out @@ -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 ------ -- GitLab