|
|
|
@@ -2358,159 +2358,134 @@ mod test {
|
|
|
|
|
fn rfc_4035_nsec_signed_zone_example() {
|
|
|
|
|
let dir = tempfile::TempDir::new().unwrap();
|
|
|
|
|
|
|
|
|
|
let unsigned_zone = r###"
|
|
|
|
|
example. 3600 IN SOA ns1.example. bugs.x.w.example. 1081539377 3600 300 3600000 3600
|
|
|
|
|
example. 3600 IN NS ns2.example.
|
|
|
|
|
example. 3600 IN NS ns1.example.
|
|
|
|
|
example. 3600 IN MX 1 xx.example.
|
|
|
|
|
example. 3600 IN DNSKEY 257 3 8 AwEAAaYL5iwWI6UgSQVcDZmH7DrhQU/P6cOfi4wXYDzHypsfZ1D8znPwoAqhj54kTBVqgZDHw8QEnMcS3TWxvHBvncRTIXhCLx0BNK5/6mcTSK2IDbxl0j4vkcQrOxc77tyExuFfuXouuKVtE7rggOJiX6ga5LJW2if6Jxe/Rh8+aJv7 ;{id = 31967 (ksk), size = 1024b}
|
|
|
|
|
example. 3600 IN DNSKEY 256 3 8 AwEAAbsD4Tcz8hl2Rldov4CrfYpK3ORIh/giSGDlZaDTZR4gpGxGvMBwu2jzQ3m0iX3PvqPoaybC4tznjlJi8g/qsCRHhOkqWmjtmOYOJXEuUTb+4tPBkiboJM5QchxTfKxkYbJ2AD+VAUX1S6h/0DI0ZCGx1H90QTBE2ymRgHBwUfBt ;{id = 38353 (zsk), size = 1024b}
|
|
|
|
|
a.example. 3600 IN NS ns2.a.example.
|
|
|
|
|
a.example. 3600 IN NS ns1.a.example.
|
|
|
|
|
a.example. 3600 IN DS 57855 5 1 b6dcd485719adca18e5f3d48a2331627fdd3636b
|
|
|
|
|
ns1.a.example. 3600 IN A 192.0.2.5
|
|
|
|
|
ns2.a.example. 3600 IN A 192.0.2.6
|
|
|
|
|
ai.example. 3600 IN A 192.0.2.9
|
|
|
|
|
ai.example. 3600 IN HINFO "KLH-10" "ITS"
|
|
|
|
|
ai.example. 3600 IN AAAA 2001:db8::f00:baa9
|
|
|
|
|
b.example. 3600 IN NS ns1.b.example.
|
|
|
|
|
b.example. 3600 IN NS ns2.b.example.
|
|
|
|
|
ns1.b.example. 3600 IN A 192.0.2.7
|
|
|
|
|
ns2.b.example. 3600 IN A 192.0.2.8
|
|
|
|
|
ns1.example. 3600 IN A 192.0.2.1
|
|
|
|
|
ns2.example. 3600 IN A 192.0.2.2
|
|
|
|
|
*.w.example. 3600 IN MX 1 ai.example.
|
|
|
|
|
x.w.example. 3600 IN MX 1 xx.example.
|
|
|
|
|
x.y.w.example. 3600 IN MX 1 xx.example.
|
|
|
|
|
xx.example. 3600 IN A 192.0.2.10
|
|
|
|
|
xx.example. 3600 IN HINFO "KLH-10" "TOPS-20"
|
|
|
|
|
xx.example. 3600 IN AAAA 2001:db8::f00:baaa
|
|
|
|
|
"###;
|
|
|
|
|
|
|
|
|
|
// Modified from the version in RFC 4035 replacing the keys used with
|
|
|
|
|
// ones we have the private key for and using a key algorithm that we
|
|
|
|
|
// support (8 instead of 5). Includes with produced by dnst signzone
|
|
|
|
|
// -b (not ldns-signzone -b as the -b output is suppressed when using
|
|
|
|
|
// -f-) and thus also using serial number RRSIG timestamps (as
|
|
|
|
|
// produced by dnst) instead of YYYYMMDDHHmmSS RRSIG timestamps (as
|
|
|
|
|
// produced by ldns-signzone).
|
|
|
|
|
// support (8 instead of 5). Matches output produced by dnst signzone
|
|
|
|
|
// -b (not ldns-signzone -b as the -b output is suppressed by
|
|
|
|
|
// ldns-signzone when using -f-) in order to get the same ordering as
|
|
|
|
|
// both the original ldns-signzone and the example in RFC 4035.
|
|
|
|
|
let expected_signed_zone = r###"
|
|
|
|
|
;; Zone: example
|
|
|
|
|
;
|
|
|
|
|
example.\t3600\tIN\tSOA\tns1.example. bugs.x.w.example. 1081539377 3600 300 3600000 3600
|
|
|
|
|
example.\t3600\tIN\tRRSIG\tSOA 8 1 3600 1084127779 1081535779 38353 example. PTJr4PGqaoA7hl8SqD3qyoAqN+oEYuKsBjYaKWgyPxGIb4Z377Ru2kkT9QUsb6ETFCLVMpa315NwMwXhqTiWlak/gTF5OTf/+lTTP0H1sNVv4X3NwRGOzwzfxzgHY0/Rav/FrUjNZCmTA6KMo3i1rrMCG9FzCsnP1TQk9152Uiw=
|
|
|
|
|
example.\t3600\tIN\tRRSIG\tSOA 8 1 3600 20040409183619 20040509183619 38353 example. B/2RO0F3fBDDeouNWDWqt55qRBJttkU8UlQb54Qk8DnPqxmdlBRuP9DkMDBQNf2Us1OIQ7fnarokdSC3s9PO4FLx6YkFjR1w7ox6u1KXKJQUHqFHGOF1n3+lRZo74sEbP9+4DlvpYylLFV+bbxLDG0NEqCs+vDy2w+2zfSAW7y8=
|
|
|
|
|
;
|
|
|
|
|
example.\t3600\tIN\tNS\tns1.example.
|
|
|
|
|
example.\t3600\tIN\tNS\tns2.example.
|
|
|
|
|
example.\t3600\tIN\tRRSIG\tNS 8 1 3600 1084127779 1081535779 38353 example. S1vIMaEeVmm2Z14gVGWcXpAKVCyB2BrsHR4R3R1t7lm/ptS6EE+8sV5pzILv7jW7qXhUtoXAY66r6xclUXI7xtvQQqJrcFz9e0QF9Ogt47XotbyV3pU/adtp543pmzK5gNs21uRPHnyJTmEvVQCPhYGGqTH/p0LhZk8DEFlR+q0=
|
|
|
|
|
example.\t3600\tIN\tRRSIG\tNS 8 1 3600 20040409183619 20040509183619 38353 example. ey6wIUC+5INUdErg7es/ANgPHSWAT5wZ7+ncgQ7oBytioha5YGp9aI/6p7KujzBPD6RiANhAV4gX4WqI5RDTc8KP/KBORN8quiN0G2ydVxwsedX/8r4dbb3OqQdP8Lh5AF8KS4dmu5EKdlRcckheV06+NFkWK2WqCaodScieF1Q=
|
|
|
|
|
example.\t3600\tIN\tMX\t1 xx.example.
|
|
|
|
|
example.\t3600\tIN\tRRSIG\tMX 8 1 3600 1084127779 1081535779 38353 example. CcFb8nMrXhPDRVu5mp3YA2OW8Gpp5926EkcZRGqjVNxO+Xn/xWfhtxIhxhwP8b4oVNYQKq+L8L/jOXSvHe0yMfcBM1sQF0Eg1Qb+S48VtF5ZHwWVxLTHNfEYIsZbTa9TBp3oncmOkobPKIa4KceoaPba5Oq09Bc4HG0x1I8E3Xo=
|
|
|
|
|
example.\t3600\tIN\tRRSIG\tMX 8 1 3600 20040409183619 20040509183619 38353 example. t1B3Pnqcya7LAoDvtHkCq9XxmRhxgpBIdcmc+NSzkukk8yq8MoZ3ZPAUppFhnnwJADRAIQfi5Fpuk3FccFfHEHrai/gU/Ik/+0oX3vdFJm6aYUwYO/GI0AC+Nz6F0mukZx1uLAi1YqPjwZ10gn39G0kyBMsl5OnxAbeJ3x2bYgY=
|
|
|
|
|
example.\t3600\tIN\tNSEC\ta.example. NS SOA MX RRSIG NSEC DNSKEY
|
|
|
|
|
example.\t3600\tIN\tRRSIG\tNSEC 8 1 3600 1084127779 1081535779 38353 example. PPaIiWtu/9cpju9ttaEH+bxGiagc3hXpMsnlP9RHAfy9G9QNXOCYCEp6cIhM9mbYHEAUyo/IBXEbKh7eeLrc/PqdvG1hTOgRnXHzuqdsiVeHHuPOrw3jN5fIJwr9g0vnSoLJ/S0HkZjGt9YfiOQgfhfEXXkJQbwU0g9LQDjPYv4=
|
|
|
|
|
example.\t3600\tIN\tRRSIG\tNSEC 8 1 3600 20040409183619 20040509183619 38353 example. g6NRRy9bCZIwyiAkn/qkzJZvfYW0QILYGIJBNm8m+9gkkSX6zR9/uXIkOwQaAfHRJeUTWZAoCv10XYcZMlCXYuizbdRyn+n/cZ9nSALsBgMthSuQBw9B6tDiJbJ/PJ/SX3hdIZ3tEyS1QCFl4RbDJkTjKV6MxkKJdnnlwpFtMEo=
|
|
|
|
|
example.\t3600\tIN\tDNSKEY\t256 3 8 AwEAAbsD4Tcz8hl2Rldov4CrfYpK3ORIh/giSGDlZaDTZR4gpGxGvMBwu2jzQ3m0iX3PvqPoaybC4tznjlJi8g/qsCRHhOkqWmjtmOYOJXEuUTb+4tPBkiboJM5QchxTfKxkYbJ2AD+VAUX1S6h/0DI0ZCGx1H90QTBE2ymRgHBwUfBt ;{id = 38353 (zsk), size = 1024b}
|
|
|
|
|
example.\t3600\tIN\tDNSKEY\t257 3 8 AwEAAaYL5iwWI6UgSQVcDZmH7DrhQU/P6cOfi4wXYDzHypsfZ1D8znPwoAqhj54kTBVqgZDHw8QEnMcS3TWxvHBvncRTIXhCLx0BNK5/6mcTSK2IDbxl0j4vkcQrOxc77tyExuFfuXouuKVtE7rggOJiX6ga5LJW2if6Jxe/Rh8+aJv7 ;{id = 31967 (ksk), size = 1024b}
|
|
|
|
|
example.\t3600\tIN\tRRSIG\tDNSKEY 8 1 3600 1084127779 1081535779 31967 example. IXPr+2MolSmtlo9ri9prF/PcBhYTL+3n+3MEGJOjdJFDSv00HW3a2ymankSZekNTkVA/AMOOyEnZhF/98ihhfLHmvWYKBfwMiXQX8uSh+YqrcTV6b6/N7JDmCimZ9t3R2T90+VpPb/lERwnHv9KdytiZV7tUWzihPqx3mEFpmME=
|
|
|
|
|
example.\t3600\tIN\tRRSIG\tDNSKEY 8 1 3600 1084127779 1081535779 38353 example. G2DatUOySjh3hf2KYIOwdwsRRAmiIz+xnP59DbcqjGAPrWLrtK+h2etlBeWDbS1yGFOAf7FYSl/4QjRdkA111frRTc2kINqAkflRAb0g2e5b6JEp1kbUPSG1c07W/0GBQoY9Pl9MvSdLs9ZfzZT9jhIFgla9NzcR19kHIcSIjZ4=
|
|
|
|
|
example.\t3600\tIN\tRRSIG\tDNSKEY 8 1 3600 20040409183619 20040509183619 31967 example. C8ZDPvp8Z2kNagqYLZwY0IGFutIi7OQR2VHjYZgCeC0NKCute2FdTilElZPg2WuJ86QHeGp3D5uZiW+dypiaNPdLh++6lY0qbLZNw3JNCzVLJzF/P+1NILsosuYMaQSc5QX4YVz5HygjofH1y/gel9O2UdmAE5oIzlBpTsgM+BI=
|
|
|
|
|
example.\t3600\tIN\tRRSIG\tDNSKEY 8 1 3600 20040409183619 20040509183619 38353 example. H0SIDL0zGHsdDtA7cW93wlUeAC0l/1KTQKeKctC72inf7qvanbT9ZcaqIeYIP3T3YlcIG23+j8qOK46B+KL9IWWA9oFFNuw8oTpyZGiy2kNEqhfwma7bUeWTDLaH8Uhf/it1xiiy9lV4NlOgEyTGE/IMB1+Xgf2RYMmgqLfak2o=
|
|
|
|
|
;
|
|
|
|
|
a.example.\t3600\tIN\tNS\tns1.a.example.
|
|
|
|
|
a.example.\t3600\tIN\tNS\tns2.a.example.
|
|
|
|
|
a.example.\t3600\tIN\tDS\t57855 5 1 B6DCD485719ADCA18E5F3D48A2331627FDD3636B
|
|
|
|
|
a.example.\t3600\tIN\tRRSIG\tDS 8 2 3600 1084127779 1081535779 38353 example. pT03HgemJqArs5oDzJt01PpSyvFLcIcD4knqE2ZjaOLtsgErjjVqWmywWVRJSsySzMu2AEK2BPWBZsznovpY/bWCDh+c0LW6GpWupoUm4J43ORPmenA3FTL/bjrZMfv7D9CDrSi7/JegTT4VKEz0/GniicPluDVsUNYBIUfPIm0=
|
|
|
|
|
a.example.\t3600\tIN\tRRSIG\tDS 8 2 3600 20040409183619 20040509183619 38353 example. TwR1SK1LqiQCVMDoc3hJza+nVFSzFx33sjMeZvlWrqBD1G/sJcH3ItIgb/4uj0b95VM6ndxevga9pgd33PHmFmR1g6afS21kCMhhATvYBqCRgrUNBFzooGZpIitJier6T2CP/LSeispWULyXnB0F6C+/vmXWU6+Vhae6KIoS3EY=
|
|
|
|
|
a.example.\t3600\tIN\tNSEC\tai.example. NS DS RRSIG NSEC
|
|
|
|
|
a.example.\t3600\tIN\tRRSIG\tNSEC 8 2 3600 1084127779 1081535779 38353 example. GD9X/mMKRiDTRAKO/QccqekZjSkMjN92foDHRHpYDFtmWuqNDAXq1Se2NedMpgwsPcI6uvBnab7+cHmI24Rv5z90IHpzVzEAx8EgJpgh7cMUUjiJL06t0GU3nhLV1nZvwVQWRVj8n3Y0otQwWjA/bDXt2COF6fnxUZyryyVJswM=
|
|
|
|
|
a.example.\t3600\tIN\tRRSIG\tNSEC 8 2 3600 20040409183619 20040509183619 38353 example. FcUGncV5yjqhITrUeKiZwlrbsUY8G4sMnuckw7yqoWnsmU9TCLgjAwGWZGeNpjADKJ+dk9t06ofvLqIsQshu3Hrke1FZvuZT0vqtPNjhIz/03/2Dyx3nFdoxagofdinmNm92jt6mefflzxzYF1j9NqPC4YFDDgz5EjxX592e9QY=
|
|
|
|
|
;
|
|
|
|
|
ns1.a.example.\t3600\tIN\tA\t192.0.2.5
|
|
|
|
|
;
|
|
|
|
|
ns2.a.example.\t3600\tIN\tA\t192.0.2.6
|
|
|
|
|
;
|
|
|
|
|
ai.example.\t3600\tIN\tA\t192.0.2.9
|
|
|
|
|
ai.example.\t3600\tIN\tRRSIG\tA 8 2 3600 1084127779 1081535779 38353 example. oe2JZhvPBaocVMeCj92hVmESDpobTnWzp/ye5qE+/e0eCO2hRCcltU18f4RtuGQVe9cF9H8HbjDTRyUVmU8HTXQTv9Oi9MRWtU4+po/lYWmvbB+7+mBuUVc+UUtHXwBp++Yak+QYnpARUEs2oPujGYvjIbbTMxtmnUofcHDhBlg=
|
|
|
|
|
ai.example.\t3600\tIN\tRRSIG\tA 8 2 3600 20040409183619 20040509183619 38353 example. LWkkFmU/enigH/FAJJO4en4t3AUG+2GoGSrJvTO3qJYTDXzU2MMYAHXwl2RgSC7eTzbMap7HukEczWA7UdQkkurFCH4Xv/CxmJRKL9XcZ2fDfKNIzqNcsQj+NHnbKRR1GCituKLMV2AxBqH4ABopKYCvlsryaN8sLb01PyM9/Ro=
|
|
|
|
|
ai.example.\t3600\tIN\tHINFO\t"KLH-10" "ITS"
|
|
|
|
|
ai.example.\t3600\tIN\tRRSIG\tHINFO 8 2 3600 1084127779 1081535779 38353 example. Spm9RAeocmmBHU2Dhw3s+9uh212vQKpDazBGDCHe8a6IjqsPQQO5NUSf/JcWnuAJvNpCyQLCNOAZdPA/nl98qXxps0zmJJQ91WS+7DIWSrUHrBcRiVBWXkErf2B2AJxh/PTnlzcpS9JkKDbvk/XZKkaqpjFgQH9QRl+hpsBT3lI=
|
|
|
|
|
ai.example.\t3600\tIN\tRRSIG\tHINFO 8 2 3600 20040409183619 20040509183619 38353 example. b/CT77xaP9h9GrgdHMtToH3/rO6wqGVsn85IooPS7eHCUI5uEQWRy1i5usoImX6l6Z1yBgo7NPqhrPvRoFV7/oNtWNsAOfH1ClMgmpGyRjIMyNY4lK3i9yCmI5hBY85WNO5fExk3tqBRJ67gXbMuI1gbfve+pNVUvWubRCx4LsI=
|
|
|
|
|
ai.example.\t3600\tIN\tAAAA\t2001:db8::f00:baa9
|
|
|
|
|
ai.example.\t3600\tIN\tRRSIG\tAAAA 8 2 3600 1084127779 1081535779 38353 example. IyoKttTAyeZdBbOCO4pobuJYrFATws3G8Pi24+M0w5lFcG9rIdBj2fiE8N8PyDApfMhckA9LVOwmRaK+JZn6Ep6FPzHWHrdzkB6J7X/QKpcjzmRiffa1kn8/Ev87hk4BZO9DPuQNkQBKQGX5bLE3ejAuXayuAieDZh10F0Nt/YI=
|
|
|
|
|
ai.example.\t3600\tIN\tRRSIG\tAAAA 8 2 3600 20040409183619 20040509183619 38353 example. EGvDQig8uMlKodJP5OZ9ybhlyCinsInA4vzkoDBxBTHjuO7zyAx6mdxPw4rSHdn8ZdDssZKORFGpXcpEk3tGHAt0Z/kMME3JZ4dY2EiRhybueaPfiz95KNafdSZgqA7dKMxi9HGoBsGLqV/6I3grcGvMfHauItsX4Z8yV+htoM4=
|
|
|
|
|
ai.example.\t3600\tIN\tNSEC\tb.example. A HINFO AAAA RRSIG NSEC
|
|
|
|
|
ai.example.\t3600\tIN\tRRSIG\tNSEC 8 2 3600 1084127779 1081535779 38353 example. ue5AJm6A4P/jgzUDrjNTNRcKsbou9gv2LTucGSBZxpZXw6hXpJu3lIY7znIz5CqURXI3YNZ9fLzjYk8ZVCCjdSq/5WcP6aVcWPyqYC1q9hsPAKEbPYu4oVg0tIj1HBPqtEWwgizvCvHNVNF1vUcI29bm/lob9L0P/iDiUh0BDBc=
|
|
|
|
|
ai.example.\t3600\tIN\tRRSIG\tNSEC 8 2 3600 20040409183619 20040509183619 38353 example. FbM7UgeKb7GAP9WMxBJlTb76IQx430tp1f/EIbIbqTUxduzseBSn4ntcf7+VwYVzBNtglnDFuw3C5LWE9jpa/rZ5Z/SmDmOCZP/aJPhausPO0AfQeiMoLjSJ0A9WavpGBzCC3gmrC7X3oqDuV6Y3fHAGU/YGQj0XNG7Ha1DE58c=
|
|
|
|
|
;
|
|
|
|
|
b.example.\t3600\tIN\tNS\tns1.b.example.
|
|
|
|
|
b.example.\t3600\tIN\tNS\tns2.b.example.
|
|
|
|
|
b.example.\t3600\tIN\tNSEC\tns1.example. NS RRSIG NSEC
|
|
|
|
|
b.example.\t3600\tIN\tRRSIG\tNSEC 8 2 3600 1084127779 1081535779 38353 example. lURCI1R6jVuhaKCd5qyOIoM20nqLRitEZ0QK5E/kdbYWJpASz3vOJjAegoCdsfUf4nWHC+nwhBgQcN4SG2mXD3IX6Y6gD0yKsFtWqrs7NF579qEMkHsNuKNG6zrCtf0AOUlC/836gpDmOWkEnptUDbbjroc9i4Jo/qLSHybvO4w=
|
|
|
|
|
b.example.\t3600\tIN\tRRSIG\tNSEC 8 2 3600 20040409183619 20040509183619 38353 example. UZeRqUD2OBo6iZckfZ9tMYlUuWcMzVDkhrITNptCs8CFVF2YCHBKg9heLMdEN92ie5V4GaMjIAd75MNlMm0EZGiDU2TzYz0k0jejcO/79XkAC/giqBHTedW9cbFYt2TqQi85ZxwhPq7ph5jSf5Iwt7rD4qKJXCp75npuGNDutEw=
|
|
|
|
|
;
|
|
|
|
|
ns1.b.example.\t3600\tIN\tA\t192.0.2.7
|
|
|
|
|
;
|
|
|
|
|
ns2.b.example.\t3600\tIN\tA\t192.0.2.8
|
|
|
|
|
;
|
|
|
|
|
ns1.example.\t3600\tIN\tA\t192.0.2.1
|
|
|
|
|
ns1.example.\t3600\tIN\tRRSIG\tA 8 2 3600 1084127779 1081535779 38353 example. P5BFP/IZBphRLFkzyK93iF7OOu1DQZIDjXk3133A+Zc4foo84Ny+3GID2LoRfMFd8joggO4sxiczdvaWz7awyt8SYF9ckk7ACj0JU1g+6q+v7DLkI9KSeLyMvaLzcy9/k/YAOLbewZ09YKME0PuMIgnPt5XiWN+iPY7AAg0n/jY=
|
|
|
|
|
ns1.example.\t3600\tIN\tRRSIG\tA 8 2 3600 20040409183619 20040509183619 38353 example. eFA7SiJRtUkMeb4JsJGTg2NRpfBCDpmMF4zvmm05BwndvEdYXBAOviHNMKXLX6ctjBUlzp0KxvUBhA/7ScEIMmmQHJfOnahzWnmbiZTZWwi3I8/fgCsEGZVsTJFRwPR4ddZF1M8S1lWnzPmnFja/nAIQdfA9HlP8xfsTDR195Ew=
|
|
|
|
|
ns1.example.\t3600\tIN\tNSEC\tns2.example. A RRSIG NSEC
|
|
|
|
|
ns1.example.\t3600\tIN\tRRSIG\tNSEC 8 2 3600 1084127779 1081535779 38353 example. r/1bsbwMppvJEuLiMvYqoVAdZAeO1sbW/vuqThX+0TJ5fsmtBTP2l4jm2JC+8atB4xFwxNCQVwFgNic3OUpu/a9nNcsfIO6kqIBaFF3+hQq3S8xl+sTbWc7ZJHcNvEYm+XPEWRRXtgKwdGTLMAL5IcWJXCYXt5ZjAkJCWKb+6c0=
|
|
|
|
|
ns1.example.\t3600\tIN\tRRSIG\tNSEC 8 2 3600 20040409183619 20040509183619 38353 example. hPXDx7JbevZRDI5z98jXVAVdtTIv89gjjEJMe1Nm+o/UIvsxon8OmWO6+b6lWLy6AEj/SiLC3wOaFbDb0wTkm/cI548Tyr2tg5D5ZIRjXtMJkx2aE0zLzRHnitrUQXYTJss/JCoPKEsGNExK9LgTIw7jKqcwfvH9dsxqxISwAC8=
|
|
|
|
|
;
|
|
|
|
|
ns2.example.\t3600\tIN\tA\t192.0.2.2
|
|
|
|
|
ns2.example.\t3600\tIN\tRRSIG\tA 8 2 3600 1084127779 1081535779 38353 example. I0Vqke2ZFjPdMxjbsaCVF23k6riPx0GjC/TRWUzx30EbOoGhEQd8+WWiHFKyDiebK0fFXfz/DGEAXlyE6kVWq6dV1BdL8fREHj7sJSu9Xa7jNShlxsDBO7OEQuq3ignpDs+q70JQJSr7eV7HNlSuNQf5/CLzyEwQy0ZDr/ZJ8PQ=
|
|
|
|
|
ns2.example.\t3600\tIN\tRRSIG\tA 8 2 3600 20040409183619 20040509183619 38353 example. F36AOe1lWZ9QzPR+fiG94c+k6RitqgIrs99gaB/KdEqiZtQ8w3Tr+sfPogLMXbqW2+dSrEUM535IHqjLZzARY9Zd2KQWPMxWdponaCAIkVwJ4kXtWI2OSqx3IFoG4z91Wm3e/JsXahX6cJE5R+5LZaA6zO6sFLO/Q9LVa74parg=
|
|
|
|
|
ns2.example.\t3600\tIN\tNSEC\t*.w.example. A RRSIG NSEC
|
|
|
|
|
ns2.example.\t3600\tIN\tRRSIG\tNSEC 8 2 3600 1084127779 1081535779 38353 example. UtAds21EnSeWeEig2ZakQNg6YcV/rNgjVgbVF8BVhuTUiUUe0aH/oDy6/X/qrJqAOQ9qIxiIEV5PlilzYcpn2vdTVi/wvG1lZ12dD7fsfw8iE4E297uUyoeJdwGxln96scvykcoP7YrtRmUNB0U3i9l2/E7WSQru23wSQLGrL3E=
|
|
|
|
|
ns2.example.\t3600\tIN\tRRSIG\tNSEC 8 2 3600 20040409183619 20040509183619 38353 example. eu5gkpcWiXorZvkSYmbNKrd+7PGS/Er/J1IYt1wiRwOs0GfaWwhJb95prb+AKoAY5usp8eaQsmYbAYBnWl+cleXtnIKEwJ4OY+YVJhlIY9Pbl+49iL2uTL0O/hXcDbL0KHx2pfu//yDD3alybwrHA8QU7S4C6P2vI5h6WMnAD0E=
|
|
|
|
|
;
|
|
|
|
|
*.w.example.\t3600\tIN\tMX\t1 ai.example.
|
|
|
|
|
*.w.example.\t3600\tIN\tRRSIG\tMX 8 2 3600 1084127779 1081535779 38353 example. qaprB/xswn0rlCjCEhA72fcClIyjcASSR+73qwRfNzzg/VhZVSKVZFBeFc4Nk381KSqICTPvQ5uY4yHB6Vojrroyp0I8j+zxZrAtLSw/Tb3tZBO4e3Nx8G0QCYNR/NGdjMNdiR1vY9rUzYZbmWaZIeK+nYAX6n8Jl4Tqi7kozMQ=
|
|
|
|
|
*.w.example.\t3600\tIN\tRRSIG\tMX 8 2 3600 20040409183619 20040509183619 38353 example. ZasaVvJ9n08Tx6wLVI5nat5LFcaUdCvcs4Oztowc/QbYuu6Ib/TXHCfm33JKyqyZiKBwiHIzpjEslgj+2X42SiIu9A57aGRWJqTfUkpe33b7iQik26Fas57k+Zr8OruHG+q5vCvcyj/BdQjNuvFpCPtp2186DZAI2YiXCvgvdvQ=
|
|
|
|
|
*.w.example.\t3600\tIN\tNSEC\tx.w.example. MX RRSIG NSEC
|
|
|
|
|
*.w.example.\t3600\tIN\tRRSIG\tNSEC 8 2 3600 1084127779 1081535779 38353 example. VisjtZ+b5ChGkV4R9DFi3GDqoM6kW7RyU+57fiJ58drpZLL6LlfU+enxa6Ps+hvGO/z+wbtPYV+LCVJUJUHh/T3wB4W8qKv7fV2krcz3+M/HA08u6JmG1q3y6jy0Mla+3BrwYFGQ/0AQxz+NfB26IKm9jLHYYFT1t40JXpRIG6E=
|
|
|
|
|
*.w.example.\t3600\tIN\tRRSIG\tNSEC 8 2 3600 20040409183619 20040509183619 38353 example. ebmpkmslOqUOJSErn7SoUCHGhxF4MVhx+xEk7Pu3pMfdz9i2GzlyExdOuZE48Z2YOUrP7i3Rlb2d+aqnBCSDuYW3pA7vAfm6GkZST+A5Hns5wy/KxQUxy6Fn5ruzqAUa1TIl5lUjsU+8b/KXZ0/BVrfg7LOUJlgjgVvbuYf0xZY=
|
|
|
|
|
;
|
|
|
|
|
x.w.example.\t3600\tIN\tMX\t1 xx.example.
|
|
|
|
|
x.w.example.\t3600\tIN\tRRSIG\tMX 8 3 3600 1084127779 1081535779 38353 example. fLyorrCjwFo6vsb4nCSOvKYxZUZKFrsqjvoP5PqElF2yPGAZ8MlNXitLH8eBWKq8ePz2pFhPt3RirgUIZxQ1j+8zf+TfUKwDR1/dGYfnvXi6vWXH9N5ZfexmcaQrSZ99SN3QooTAIaM4eatd0vDV+b29f7F5A9IyIk1rbN5XRco=
|
|
|
|
|
x.w.example.\t3600\tIN\tRRSIG\tMX 8 3 3600 20040409183619 20040509183619 38353 example. uBNMY+9VbUbXg8s4hPKGGCASm4D0OCbdAKeDU71xYCDPd9+/gWvC8N+V+gbKMja5W67gh/LBjffkPYcWD5ttuom6SkORX95jwMlm1LFEBMmr0+jkU4j+oiQ6r3dcO+EHBpDzd3osMIAOoaNyUfeWoUtl31QtqnFysy4avQx9Mx4=
|
|
|
|
|
x.w.example.\t3600\tIN\tNSEC\tx.y.w.example. MX RRSIG NSEC
|
|
|
|
|
x.w.example.\t3600\tIN\tRRSIG\tNSEC 8 3 3600 1084127779 1081535779 38353 example. i64PpzFIe+TKz48GIu1RI+qvTvnRZtO03ldYvTv85pa7guwpjD0YgonNWkvMUgWhmmsk4418s6mgJ5OTbKeHih17YkbNmizIEktJfwiSYUIVfQRCslws4tKfOU7xOTN7SH/GoCYB4blgXQJiLfU3PBaJcnIKi1Pw67sXSelPpNA=
|
|
|
|
|
x.w.example.\t3600\tIN\tRRSIG\tNSEC 8 3 3600 20040409183619 20040509183619 38353 example. XyotdqZtaSA7xkmBwkE1rJB0WwHeZL4IhTKe498OUIbIEB81MjZ24YSz/ufDS0CPxqz4KwKu456HDwLubhTlIOJUXFzjyHZvuJ+3I/qGo2wt0VtOlzoKMMp/alN+Yh+PuOeiPTPremBZGY5BLN/HiekayLXPVqcNjoZvFZnCk9U=
|
|
|
|
|
;
|
|
|
|
|
x.y.w.example.\t3600\tIN\tMX\t1 xx.example.
|
|
|
|
|
x.y.w.example.\t3600\tIN\tRRSIG\tMX 8 4 3600 1084127779 1081535779 38353 example. I0OFGGjH/AOv2w0rjRRU+JQo+1lBMlDZkegPPgsK2qo+CDXqxxFdLGdXY2StsL3amrXxMQOShq0Fj2/FvbpuEcIKGyn2BO5xreZyKaqZxA2XsOJ7rEXQU80TXHCo84JPoPkdajhuBXv2xVI6glMRCbJKlhr651K4idlz+jkAB0E=
|
|
|
|
|
x.y.w.example.\t3600\tIN\tRRSIG\tMX 8 4 3600 20040409183619 20040509183619 38353 example. AfUZgFVehMl1vifSWhH6D4u15sKZwT2KPCCntLBk26aQB089XR1adDQfRTm/Z5uW9kMjebnz2UN+158uQEjCgFM9Y3LaHakEbb5KVhMEWVTmh8Rg3eaRhouo1ruvdcRyET44UF3euhY3uHi7aXsZPufRaUCXCGRqF/ZO9MvOcfo=
|
|
|
|
|
x.y.w.example.\t3600\tIN\tNSEC\txx.example. MX RRSIG NSEC
|
|
|
|
|
x.y.w.example.\t3600\tIN\tRRSIG\tNSEC 8 4 3600 1084127779 1081535779 38353 example. Q7G8zrA62rOIU+jcgxNXVoeECX1N78rdg64Al2JQfHenBaCtRlm2oRcCZ0tjDloLJxi72oiSSKatumEDT6feyY2EkPtPFbot+iz0/HISyvfaBxYIUu27ibdVgrppA43vFdgE973/Q/nKN8FI656h2kblrPtjNp+u+UjkxTZhCyY=
|
|
|
|
|
x.y.w.example.\t3600\tIN\tRRSIG\tNSEC 8 4 3600 20040409183619 20040509183619 38353 example. eMyJm+jbEMy3HziBATVnXXpL3DJ46aZEbK0PXaqoWml4E9On8SCt2VCq1SJG+tz4Ah6ltnHu7ZTidiaXjV9K//UNfQaZz6KbxolhltPnLhwAW3lUJMNG88E1evhN97X9zzct87DmGAvMMMtAs4vDiP53DvcIwCoMCxfyurJ7Hr0=
|
|
|
|
|
;
|
|
|
|
|
xx.example.\t3600\tIN\tA\t192.0.2.10
|
|
|
|
|
xx.example.\t3600\tIN\tRRSIG\tA 8 2 3600 1084127779 1081535779 38353 example. gJKAa/CfRLSIg1hZ2LX8dtFhODqCUk2CKp/hTZKBZHlCfWda3/SQUgFNUaCHQ8n9CZu9RNuAhRta/Hm0HqWqKcyZoLYHDyf2cuphRCmp+/d657gnlJVFe14IsdWYtKTT5ERexmPVyJgZa5FbodOr40vekxi0RML/eTw/T3ZJaGc=
|
|
|
|
|
xx.example.\t3600\tIN\tRRSIG\tA 8 2 3600 20040409183619 20040509183619 38353 example. HoCNtIY8jdsGdu6nH+VwLEqmzH11vTTLyiZXUJrg1LvohZRrG8tdjAQpZvTPYdP8Z/P0Secy4xUk2wFIpqluENPFUxGinkEPsFzl3OlfT0JAyLBCcww2KKrXOQzlvUEBMAj/DFlErUEMiJqtAfPU1CfQvnW1mi0+WuqyBBN6Av8=
|
|
|
|
|
xx.example.\t3600\tIN\tHINFO\t"KLH-10" "TOPS-20"
|
|
|
|
|
xx.example.\t3600\tIN\tRRSIG\tHINFO 8 2 3600 1084127779 1081535779 38353 example. cVKk6Mfx6d0lD5vSGcxzRQWG5t3jzCpxdeb0y+N6NQatJP/cy/+89Wg1BTPizwXWjVkG1rm7o5FTYR8j8WDhofwCKQ7ezJ5nFSGWkZIGUxCIFZhc6KHgy4yFnASkO6V+Z7rKQ/Ub2PqQvOrq0m6lg9i219zxZkvdjl0cSseojtg=
|
|
|
|
|
xx.example.\t3600\tIN\tRRSIG\tHINFO 8 2 3600 20040409183619 20040509183619 38353 example. OlQJpzvy3y35q1Iny/YhT0H72UOv3Vr8l0UjprB9fAfkPfJ1tnmOjHqonUjG/T+oB2JzzJp9D8qAdxRVBGcVrfY+7d3/aS9oSJ0fwq+4Iv2coAa/VhRZ+6zbZwpVfdJ7Qt6ek0VxdifoStzaYGDaZP6ceovXUnOrc7fkorTiIJ4=
|
|
|
|
|
xx.example.\t3600\tIN\tAAAA\t2001:db8::f00:baaa
|
|
|
|
|
xx.example.\t3600\tIN\tRRSIG\tAAAA 8 2 3600 1084127779 1081535779 38353 example. Gkfs9xXgn8YFs/10VYNgR0vasQwaTOckPMXZngMGQiWeuuk3aKUdtUlXP5511MOu+4UQINzj+xEb6BBFUZSnWXrZvxiZNDMwfJxzXNG6WqbS4B/Wp9vJWbNHxad2mBPkd8oeAP+XuFslRPJNJW+hHvBmx03nK/gr8pOE4dxur5U=
|
|
|
|
|
xx.example.\t3600\tIN\tRRSIG\tAAAA 8 2 3600 20040409183619 20040509183619 38353 example. gRWCKCsaDkmX1g768tsLwG0Luaf8vvnYeINOr4WDVD3jTgsj7agXjsMRlsoQif5EcJ9Xo8q4UrcVZPo2nt5/55Hc9egKroLXoq86gA0juCECbM5rYKl41GcEObe8UHN+2P3dclCwkVcZ3sLUEsNgtmAllMBdRtDuWvg5GMYUqWg=
|
|
|
|
|
xx.example.\t3600\tIN\tNSEC\texample. A HINFO AAAA RRSIG NSEC
|
|
|
|
|
xx.example.\t3600\tIN\tRRSIG\tNSEC 8 2 3600 1084127779 1081535779 38353 example. c6WAeuLoXZnSTZTwK5wHcEMlzjEkDvdP8dY/4jmRj9dq6TL9GuDVfrKtxWSZsZyZUPmu/LugFdewpBUFEokoJLFI9ruPvZ+a+4zD4VuWXiP91bZLcB2oO5lu2PDwQ8er5B7E8pHO0W2c96hPleRRpMMmuHkDMiBPcLdLGdmK7R0=
|
|
|
|
|
xx.example.\t3600\tIN\tRRSIG\tNSEC 8 2 3600 20040409183619 20040509183619 38353 example. p50kHhYlNWKrbo2OeUwvVH6ithEZctVUqRsLeZq7PmE9lA06Wu6MWuImV5rZC4lUUsbkok48FD/y69fuXms7Jq+tYSwiQKjzNPKt9cRww4xIAY/4B+B6t3AP1QY6Yw6JLeQMNoj3xTWzBLYmq6sA3pEHRqU8S2YdCJFat44GeYo=
|
|
|
|
|
;
|
|
|
|
|
"###.replace("\\t", "\t");
|
|
|
|
|
|
|
|
|
|
let zone_file_path = mk_test_data_abs_path_string("test-data/example");
|
|
|
|
|
let ksk_path = mk_test_data_abs_path_string("test-data/Kexample.+008+31967");
|
|
|
|
|
let zsk_path = mk_test_data_abs_path_string("test-data/Kexample.+008+38353");
|
|
|
|
|
|
|
|
|
|
// Use dnst signzone instead of ldns-signzone so that -b works with -f-.
|
|
|
|
|
// Use -A to get the second DNSKEY RRSIG as included in RFC 4035 Appendix A.
|
|
|
|
|
// Use -T to output RRSIG timestmaps in YYYYMMDDHHmmSS format to match
|
|
|
|
|
// RFC 4035 Appendix A.
|
|
|
|
|
// Use -b to get similar ordering to that of RFC 4035 Appendix A.
|
|
|
|
|
// Use -e and -i to generate RRSIG timestamps that match RFC 4035 Appendix A.
|
|
|
|
|
// Use RSASHA256 (type 8) signing keys as they produce consistent
|
|
|
|
|
// signatures for the same input, and are supported by us unlike
|
|
|
|
|
// RSASHA1 (type 5) which is used by the RFC 4035 Appendix A signed
|
|
|
|
|
// zone but we do not support.
|
|
|
|
|
create_file_with_content(&dir, "zsk.key", b"example. IN DNSKEY 256 3 8 AwEAAbsD4Tcz8hl2Rldov4CrfYpK3ORIh/giSGDlZaDTZR4gpGxGvMBwu2jzQ3m0iX3PvqPoaybC4tznjlJi8g/qsCRHhOkqWmjtmOYOJXEuUTb+4tPBkiboJM5QchxTfKxkYbJ2AD+VAUX1S6h/0DI0ZCGx1H90QTBE2ymRgHBwUfBt ;{id = 38353 (zsk), size = 1024b}\n");
|
|
|
|
|
create_file_with_content(&dir, "zsk.private", b"Private-key-format: v1.2\nAlgorithm: 8 (RSASHA256)\nModulus: uwPhNzPyGXZGV2i/gKt9ikrc5EiH+CJIYOVloNNlHiCkbEa8wHC7aPNDebSJfc++o+hrJsLi3OeOUmLyD+qwJEeE6SpaaO2Y5g4lcS5RNv7i08GSJugkzlByHFN8rGRhsnYAP5UBRfVLqH/QMjRkIbHUf3RBMETbKZGAcHBR8G0=\nPublicExponent: AQAB\nPrivateExponent: rUCY4nVDMgd6fvvRfbhhoz5biTkQjfXkq6+ZCPcOVGzVJmIZ9wX4+O90cUmpnl5ZNKvaqJwfY5s5JGX57njzF/FHBK1h8KIRIAFUyuuJFZfKC7IlvE6Jty6BZC3M+IG3NVRtnOKlv4mm2AHcEY6/a6gzkYWE6o05LTBJCd1xhFk=\nPrime1: 89TrECdSSWCCIOvdbSfb/fEiYKNQViOqpKtte+DDyhbtLVhuDJ1QpiQIG2ia+Bc69S/u/tdIxGldu+yozCT6Kw==\nPrime2: xFkZbpPOZWdt4CrTqq3gAUZHIXXW/89pRqDmfIcphFNKvuYZVH/prJla6xiNBzgWRnMOMJcc+61DjRhHOMrrxw==\nExponent1: rdSDaFbAITO+Ub4Vc/ZQre+09HQ5l8+Bnjfgq8oHixFhMUyz2CZnEqrpZLDkmi3liFsN5XyRkgUUIB+OD0vlVQ==\nExponent2: eJLSeEIR69mA8ri59MUDmyTCB30qwzpmRrYF9BC4YQcZDnOUuHw4TgJ6f4Y7DGTX4PlEjHgvlynGIr329pw9/w==\nCoefficient: 5Q/xDoWngb0ahc3wFT42DIM2/E8SLRqkBZ/j0C2BKRi73g7OMXRWpDKf2z45WePP5p/SoTlYYHhRZmNngOoXlA==\n");
|
|
|
|
|
create_file_with_content(&dir, "ksk.key", b"example. IN DNSKEY 257 3 8 AwEAAaYL5iwWI6UgSQVcDZmH7DrhQU/P6cOfi4wXYDzHypsfZ1D8znPwoAqhj54kTBVqgZDHw8QEnMcS3TWxvHBvncRTIXhCLx0BNK5/6mcTSK2IDbxl0j4vkcQrOxc77tyExuFfuXouuKVtE7rggOJiX6ga5LJW2if6Jxe/Rh8+aJv7 ;{id = 31967 (ksk), size = 1024b}\n");
|
|
|
|
|
create_file_with_content(&dir, "ksk.private", b"Private-key-format: v1.2\nAlgorithm: 8 (RSASHA256)\nModulus: pgvmLBYjpSBJBVwNmYfsOuFBT8/pw5+LjBdgPMfKmx9nUPzOc/CgCqGPniRMFWqBkMfDxAScxxLdNbG8cG+dxFMheEIvHQE0rn/qZxNIrYgNvGXSPi+RxCs7Fzvu3ITG4V+5ei64pW0TuuCA4mJfqBrkslbaJ/onF79GHz5om/s=\nPublicExponent: AQAB\nPrivateExponent: InZhxVCrAUCcJzKd1/mv++B4j7oVSHa6nc7UOIk28c8owFRX/RQ6AzrY9feOmvtJ/OSZKvvSFjdCFjzXYXapBZqnqrXM0QJ3LA09u2OQNylc1PYj+QtrEhUbKBO9ujgfWw+JAg7eDxuoxfeDmsdQMa2Jx22mk2eJvTIvkLeTtME=\nPrime1: 0zxbxvJdeJJn0q7guFpAj6gN8o9JLkDfDEGuY0eWKcCvBTAwT+SZWH3T3e316TS/PCUDvUCmbgJHVFwP8PUCKw==\nPrime2: yTv/9Ysj5khXOy7KRhXcPyAwaHp+XtpfCd8msXjmthZI9Z45kvDX6iDOgADoIJQsoUCy8IOKiqd93wYpN091cQ==\nExponent1: aZPde05gEYd7hP4LK5lQc3zXm8iqFwgtc37QnqaFE1FPKRSw0P2891HMtzvckTbf7jvB5rGNfaZ96FgrT4/mCQ==\nExponent2: Q7x6kABh+SXolvdNBwJcvLLtGH4DA5Kl4wDGWX7Eyg3+SQ8VeiyvwROB7vxfJng5/Z11nhfpDnsKl4PPY9rPQQ==\nCoefficient: TDG5Jgi0fbqUUkRhugX6VaWGllzt9pew5U3YnlCoNm2lT3s5jiYyaLwHWMmuYRJTAxU6/UheyGg1CL36fUh42w==\n");
|
|
|
|
|
create_file_with_content(&dir, "rfc4035.zone", unsigned_zone.as_bytes());
|
|
|
|
|
|
|
|
|
|
// Use dnst signzone instead of ldns-signzone so that -b works with -f-.
|
|
|
|
|
// Use -A to get the second DNSKEY RRSIG as included in RFC 4035 Appendix A.
|
|
|
|
|
// Use -b to get similar ordering to that of RFC 4035 Appendix A.
|
|
|
|
|
// Use -e and -i to generate RRSIG timestamps that match RFC 4035 Appendix A.
|
|
|
|
|
let res = FakeCmd::new([
|
|
|
|
|
"dnst",
|
|
|
|
|
"signzone",
|
|
|
|
|
"-A",
|
|
|
|
|
"-T",
|
|
|
|
|
"-b",
|
|
|
|
|
"-f-",
|
|
|
|
|
"-f",
|
|
|
|
|
"example.signed",
|
|
|
|
|
"-e",
|
|
|
|
|
"20040509183619",
|
|
|
|
|
"-i",
|
|
|
|
|
"20040409183619",
|
|
|
|
|
"rfc4035.zone",
|
|
|
|
|
"ksk",
|
|
|
|
|
"zsk",
|
|
|
|
|
"-i",
|
|
|
|
|
"20040509183619",
|
|
|
|
|
&zone_file_path,
|
|
|
|
|
&ksk_path,
|
|
|
|
|
&zsk_path,
|
|
|
|
|
])
|
|
|
|
|
.cwd(&dir)
|
|
|
|
|
.run();
|
|
|
|
|
|
|
|
|
|
assert_eq!(res.exit_code, 0);
|
|
|
|
|
assert_eq!(res.stdout, expected_signed_zone);
|
|
|
|
|
assert_eq!(res.stdout, "");
|
|
|
|
|
assert_eq!(res.stderr, "");
|
|
|
|
|
assert_eq!(res.exit_code, 0);
|
|
|
|
|
|
|
|
|
|
let signed_zone = std::fs::read_to_string(dir.path().join("example.signed")).unwrap();
|
|
|
|
|
assert_eq!(signed_zone, expected_signed_zone);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
@@ -2612,4 +2587,12 @@ xx.example.\t3600\tIN\tRRSIG\tNSEC 8 2 3600 1084127779 1081535779 38353 example.
|
|
|
|
|
})
|
|
|
|
|
.collect()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn mk_test_data_abs_path_string(rel_path: &str) -> String {
|
|
|
|
|
std::env::current_dir()
|
|
|
|
|
.unwrap()
|
|
|
|
|
.join(rel_path)
|
|
|
|
|
.to_string_lossy()
|
|
|
|
|
.to_string()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|