ensdomains / dnsprovejs Goto Github PK
View Code? Open in Web Editor NEWA tool to convince an Ethereum DNSSEC oracle of the contents of DNS records
A tool to convince an Ethereum DNSSEC oracle of the contents of DNS records
We'd like to have a robust, reusable component for creating, publishing, and checking DNSSEC proofs. This library provides a starting point, but needs substantial work.
We'd like to see a rewrite, with the following goals:
Interested participants should submit a proposed outline for the API before being approved to begin work.
It can happen if you get a stale DNS entry
I got this error when trying to register at https://app.ens.domains Skipping RRSIG=8594/13 on TXT RRSET for _ens.example.xyz: Unknown algorithm
Is this intended?
Line 210 in a5493f7
I am getting TXT _ens.jeng.xyz has no proofs already known
when I am trying to register my domain at https://app.ens.domains and the full log is attached below.
_ens.jeng.xyz 169 IN TXT "a=0x4f23Bd7d62d8D5FEeAfE66B0706D8D794aF2fCb6"
_ens.jeng.xyz 169 IN RRSIG TXT 13 3 300 1618232405 1618224905 56547 jeng.xyz H/AzcZR/F3RaAjjfaqoJi2/eiUfZDa3SZV1GEjIX5WryxTYXvDtXQvb7YcuE6JmTduT/Wn0h1mm5N2VE2pseEw==
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,361 INFO [dnsprovejs] Found 1 TXT records for _ens.jeng.xyz
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,361 INFO [dnsprovejs] Found 1 RRSIGs over TXT RRSET
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,362 INFO [dnsprovejs] Attempting to verify the TXT RRSET on _ens.jeng.xyz with RRSIG=56547/P256SHA256
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,376 INFO [dnsprovejs] Query[jeng.xyz DNSKEY]:
jeng.xyz 3117 IN DNSKEY 256 3 13 T4TK0CGYJrW1O96DUnQN95hsehsCWQ2cry0TRzc8a9tXZcnJlJEXXFzUSWtlLIAtaoG5z/TiwrZ7yzjJ29I09w==; keyTag=56547
jeng.xyz 3117 IN DNSKEY 256 3 13 biMKapLcXltzHAKN3LzEH+hd45E5GlM7dUTY4Ei22ZyXaY/mHCDsWNNJZUVVa+56Fop2IkauWEUCb8+kkqppdg==; keyTag=62249
jeng.xyz 3117 IN DNSKEY 257 3 13 2VoA2Ij13OjVYfNo+ffts4Vhm1m5fv7+LBviiM/05KQlyTohoUfuOar573s063zwI3W7ahvBcgOY2scyoWzs/g==; keyTag=10215
jeng.xyz 3117 IN RRSIG DNSKEY 13 2 3600 1618250400 1618210800 10215 jeng.xyz DzgEjKdujN5a2LFc6AVWZ5n63LjBcbiGni0Bu0Ty6kpQhlcoae4AljL6MRWfS1TwUyYCfr0aet3EedUyKbjbqA==
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,376 INFO [dnsprovejs] Found 3 DNSKEY records for jeng.xyz
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,377 INFO [dnsprovejs] Found 1 RRSIGs over DNSKEY RRSET
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,377 INFO [dnsprovejs] DNSKEY RRSET on jeng.xyz is self-signed; attempting to verify with a DS in parent zone
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,393 INFO [dnsprovejs] Query[jeng.xyz DS]:
jeng.xyz 3119 IN DS 10215 13 2 ff0e149a5d63fd46d4a28bc05a2e8f549f62289242cdb8012b0fe1b32f0acd17
jeng.xyz 3119 IN RRSIG DS 8 2 3600 1619096532 1616479438 16176 xyz EjzGxgK1ik1W5X3SeTgymMGhxBPkTZBiOyDzW+VdMLqXU/lmnbRZ45ww+VTtnysuy6TGBFS5chxTXkN2do2Y2nCe1lFLddvEDHZvzFeMWYn6l84MeJ7Bu2iVUtMBDPhqT7DAKm1ZGFnu+9ppOgcvhUp6r620OkfX+UrxXJNbA9Q=
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,393 INFO [dnsprovejs] Found 1 DS records for jeng.xyz
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,394 INFO [dnsprovejs] Found 1 RRSIGs over DS RRSET
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,394 INFO [dnsprovejs] Attempting to verify the DS RRSET on jeng.xyz with RRSIG=16176/RSASHA256
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,409 INFO [dnsprovejs] Query[xyz DNSKEY]:
xyz 2125 IN DNSKEY 256 3 8 AwEAAZt8+22nz9lKirxD0yqYrDlR7E6dxJaQL4XRZbrbafV5HvTsS0l/kGhVdalqfWuJPoBHmPv2GCvrSYW1qDJQM3JGn8T2Fnjyxuu1slEeE/4rH3FOzvzKFQeVi/WW+YBdNqvPnHcgmNQY3jxQOKkLU0b1i2jWq5yVzr0naSxf1pe1; keyTag=22414
xyz 2125 IN DNSKEY 256 3 8 AwEAAfkabABLYZi3n75UfIC26tn5tbycugQAwqUjgAQLRICnDm81vji9Vd3odIiuf/vZu2NMKWYC5PbN87JpAniWjQIannJ7VyMq9EADpJo4LLhVNc/tu7Ff9bum1o56IM8E7ety5HLqIztOfeOggtiUUe5825lhzJlPIxVHXo7NNitX; keyTag=16176
xyz 2125 IN DNSKEY 257 3 8 AwEAAbYRTzkgLg4oxcFb/+oFQMvluEut45siTtLiNL7t5Fim/ZnYhkxal6TiCUywnfgiycJyneNmtC/3eoTcz5dlrlRB5dwDehcqiZoFiqjaXGHcykHGFBDynD0/sRcEAQL+bLMv2qA+o2L7pDPHbCGJVXlUq57oTWfS4esbGDIa+1Bs8gDVMGUZcbRmeeKkc/MH2Oq1ApE5EKjH0ZRvYWS6afsWyvlXD2NXDthS5LltVKqqjhi6dy2O02stOt41z1qwfRlU89b3HXfDghlJ/L33DE+OcTyK0yRJ+ay4WpBgQJL8GDFKz1hnR2lOjYXLttJD7aHfcYyVO6zYsx2aeHI0OYM=; keyTag=3599
xyz 2125 IN RRSIG DNSKEY 8 1 3600 1619633993 1617067084 3599 xyz hYwIwurIk4+LWveI5ZLLnJmvFhIUDPTpPQecqR+CjCCLBm6pXG5GKqmJ/roJapMSJyPwMGh+0OjOr5THjR6ajaHZj8y4A8AomcXYSW2uVJcgf2qOS1Arf8P0x7zYkiuvHnNQih6LCy0XmjwKc5l+nSpBfV+xtk/muTCZo56z2hUGLbke+CSDec8iYXtTuSvABcQTsVxdatnGCGirkBiFow7PO+6Uuf4QNlyljZh0ycrrzqIj5SjKb9rCyIhNZpyc5kI9Y6aw7kLydBbNhxLxT5CbP2T+kMpRH5wAf+LTLWAukJyrqQxu2fgNTwKOcZV0WNul0UeHbQHygpU8SHsyMA==
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,410 INFO [dnsprovejs] Found 3 DNSKEY records for xyz
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,410 INFO [dnsprovejs] Found 1 RRSIGs over DNSKEY RRSET
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,410 INFO [dnsprovejs] DNSKEY RRSET on xyz is self-signed; attempting to verify with a DS in parent zone
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,424 INFO [dnsprovejs] Query[xyz DS]:
xyz 85915 IN DS 3599 8 1 3fa3b264f45db5f38bedeaf1a88b76aa318c2c7f
xyz 85915 IN DS 3599 8 2 b9733869bc84c86bb59d102ba5da6b27b2088552332a39dcd54bc4e8d66b0499
xyz 85915 IN RRSIG DS 8 1 86400 1619326800 1618200000 14631 . Bcv3B6UUaeIt55roXArV8HgdH7WwTRPk2mSGn8cr+2OEOPObk2xDIVZJD+pL8yCmehlqlVRHi1Z/Ve4UyYDQK+LGhJngriwA+a6u5COIArAU6B8w9ghbcbJRJvwnf4DsrWo/y8jXJg26w+gwGtCSNcGrUuThE7gqQhLuVnEEHFpKWRnyKzwLqYcNVRHRcNkqawUUvb/Ms1p9WpkMmp0nyZAtFZAos4aL/kWpZMQ2PY34k+6TSpbA5rEGTQY19oHx6FdL1h2+aKtfVmocxBf2S77oRRQtHI4Ml1vpswPFfTobHLgc/AsM2kltTnwzRLMDXg4JfaBz1cCJgXOZz9PDJA==
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,425 INFO [dnsprovejs] Found 2 DS records for xyz
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,425 INFO [dnsprovejs] Found 1 RRSIGs over DS RRSET
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,425 INFO [dnsprovejs] Attempting to verify the DS RRSET on xyz with RRSIG=14631/RSASHA256
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,439 INFO [dnsprovejs] Query[. DNSKEY]:
. 1735 IN DNSKEY 256 3 8 AwEAAa+HvD7XXjmL+1htThUQyZW7oWGnjzKHJASg3TSR5Bmu5LfnSVW7fxqZa2oAYo2ionIQWyqAj/loApzg8GNMhyIibftPJso54uWRQ2GaoMrwLD5SLu676kf7urJq6nqdjNC0aJM/C888li69lVH6tiu2tZm1NH3cmgfnMUJpD60bsrDUqs7XwftmNkdkHa4ltQbM3UNPyfTaNBQYoH3wpOpSjdk3tyDRnreBO6Idrw+DGf/rve4sL3qiSaXfYIkcwAwozxR34iHU5dbCDs8S6FmZYhoSVKVgNSUkudxhd9/6RrZkYRgvwRsQXl3UwsacU1DsXcORqIC+7NlQ6M2OJVU=; keyTag=14631
. 1735 IN DNSKEY 257 3 8 AwEAAaz/tAm8yTn4Mfeh5eyI96WSVexTBAvkMgJzkKTOiW1vkIbzxeF3+/4RgWOq7HrxRixHlFlExOLAJr5emLvN7SWXgnLh4+B5xQlNVz8Og8kvArMtNROxVQuCaSnIDdD5LKyWbRd2n9WGe2R8PzgCmr3EgVLrjyBxWezF0jLHwVN8efS3rCj/EWgvIWgb9tarpVUDK/b58Da+sqqls3eNbuv7pr+eoZG+SrDK6nWeL3c6H5Apxz7LjVc1uTIdsIXxuOLYA4/ilBmSVIzuDWfdRUfhHdY6+cn8HFRm+2hM8AnXGXws9555KrUB5qihylGa8subX2Nn6UwNR1AkUTV74bU=; keyTag=20326
. 1735 IN RRSIG DNSKEY 8 0 172800 1619913600 1618099200 20326 . SjVAq5V3zP96wlXZKWIo3oDNvWyKnwmIl7/HSmnxJ77WX0dmpJxN+c7wTFGzMro6kuZCYAhZgsWb3G7lBEAeiw/Y6hQGK1IdLMH4YMoSoxvdw6u0DkvxiodZUatJblMajeF0Rw8W67I4pwYpwOByZ+3WaTr/nk0sWFir7+1tNbWbPrUNb8E8pHFzW9g7vMATiFnM+jXmZVVbueGnzOSmjo34ow9iAQ7V1OcYVtHTxQVMbfNurnEbEi7XnqYtRacNUkvIv0Fpmb9Yi7wlhV/syyu61p3MMoLnSQydYfsI+may7SoH+I6NQk2a2d3Nvzh5nbNd++cu8aRGX3ZtfreUmQ==
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,439 INFO [dnsprovejs] Found 2 DNSKEY records for .
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,439 INFO [dnsprovejs] Found 1 RRSIGs over DNSKEY RRSET
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,439 INFO [dnsprovejs] DNSKEY RRSET on . is self-signed; attempting to verify with a DS in parent zone
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,443 INFO [dnsprovejs] DS=20326/RSASHA256/SHA256 verifies DNSKEY=20326/RSASHA256 on .
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,443 INFO [dnsprovejs] RRSIG=20326/RSASHA256 verifies the DNSKEY RRSET on .
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,444 INFO [dnsprovejs] RRSIG=14631/RSASHA256 verifies the DS RRSET on xyz
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,444 WARN [dnsprovejs] Unrecognised digest type for DS=3599/1/RSASHA256 on xyz
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,445 INFO [dnsprovejs] DS=3599/RSASHA256/SHA256 verifies DNSKEY=3599/RSASHA256 on xyz
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,446 INFO [dnsprovejs] RRSIG=3599/RSASHA256 verifies the DNSKEY RRSET on xyz
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,446 INFO [dnsprovejs] RRSIG=16176/RSASHA256 verifies the DS RRSET on jeng.xyz
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,446 INFO [dnsprovejs] DS=10215/P256SHA256/SHA256 verifies DNSKEY=10215/P256SHA256 on jeng.xyz
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,447 INFO [dnsprovejs] RRSIG=10215/P256SHA256 verifies the DNSKEY RRSET on jeng.xyz
2.3c83a432.chunk.js:2 2021-04-12 19:57:15,447 INFO [dnsprovejs] RRSIG=56547/P256SHA256 verifies the TXT RRSET on _ens.jeng.xyz
2.3c83a432.chunk.js:2 2021-04-12 19:57:17,223 INFO [dnssecoraclejs] TXT _ens.jeng.xyz has no proofs already known```
So suppose you have
a.b.c.d
b.c.d
c.d
d.
If c.d is up to date, submit b.c.d and a.b.c.d (in that order)
Currently it is only checking if the proof hash generated by the tool and the one in the DNSSEC oracle is same but need to check the expiration as well
https://github.com/ensdomains/dnsprovejs/blob/master/src/prove.ts#L197
Test all these names work
- putbtc.com
- butta.io
- craxyhu.xyz
- markemil.io
0x8bbedf75000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000580000000000000000000000000000000000000000000000000000000000000000c0670757462746303636f6d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000380000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000051002b08020001518061347a11612b2f2999af03636f6d000670757462746303636f6d00002b0001000151800024d6930d02424fb01bf5a21ee88cec76a1ddfa6b21bcd873d16b2dc8530824fb2309ff0c1800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a02c084e87135bddd71f380375fc1dd2bce9e2b2390aa799cf3e1ef6722472e36fbfda79b1c616f9584fcdbfbc43e3d6ea89d669032a98d083278602a9e41c176b5ab125a44b247dc6eaa97c561a676d86f95588e9487a3126759646d16a6f81234d0986372f5b85947035a43a9764b51b2bd2412530b7bc4f165ec0c32d7ef5d2bab08bfac70a7460a91df7351e508219ee94889ba01af63a04a375183db136380000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000d200300d0200000e10cee54ec35e1beb43d6930670757462746303636f6d000670757462746303636f6d000030000100000e1000440100030d8d51a0b4257145395e19afccc9e4aebe68cc513b1f0d0d4606bb7981e26a47df5e0ead0c625be0e7da4a2ca84a4527d7e0818a5feaa9ca1839a635d81618ba600670757462746303636f6d000030000100000e1000440101030d911faea4f68a4c632eeca13d694ae5b3c63f00445c8009cf94883fc1a9a0f487b8d756a1f5ae9e3a07db7e4595cff39c9813d8b6786243ad8d3eb394b8a9b81e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c1bae4445b93ca9f783192e54dc3a44585fe1259032321b8554f8cb7c08a4b81dbc3c4039a5e052174e031fea3fb5bd9eb8d6b4cd447afef4306ec69f394737c000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000006600100d0300000258612f506b612c914bdb310670757462746303636f6d00045f656e730670757462746303636f6d000010000100000258002d2c613d307836633638423743423535664643423363323730353131303743416633666444653564396446323339000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000408bbba82df61b3116c70f8f6f71ba4c224cac9650693242f78c3cbdc1ee5f639c81a23fd6e0e039b8a9ad6e19021fc7bb8e22f8163d648ea0d0067d3c8ef967a600000000000000000000000000000000000000000000000000000000000001cc03636f6d00003000010001518000a80100030803010001c1d6ab82bdae5232914c8ccf42e0fc7001e7366b3fa158fe5819cdeafe0c637837a37b86e475433c8b0fb7645fb2af29de2a42f2bd737ace4991528b45d6294ae1e404ebc84b4c4d09a2c87d9e994671dae69aae00ce7ef6a55e00e6604eadf20d752dff9884a6582adc92b912630bfc0abec5a7d29a739efc80b5b89dcd18bbc29bcb36d80e82ee28bfc7ddcf883c10153710dc176353c9b26bc113568c5c4d03636f6d0000300001000151800106010103080103c3ce574d98cbd9157e0d70d274b849ca0e0eed9affc5dccc9047496906655c35cb08b33c4d171b017ca356f4960262aa6293cdfae8b13b55b21c351cdfa7687d38ef07465f87f84d3ccdab8af24edebd6126bbfea877ed9ba2080fa2211f18dcaf34f69223b14e22ba03b27c3fb5a820cc7457d59ed23a23a23d63cd230494c96399efd566710d462e40ba36562f1b71f0626ca742fea81701affca10b4b0ed949dadb4d0d075ef65ba8c508ec168cb249af826d46ee8299d58885ecef62a1535cd3eec049baa664ded9f7c10653f421d8afc18147bc1ecd1755c74f2abb72627a101dddb29ca3dc30c953122876ff61c31e344f2766b2c08a4a367bf8a0fa3f0000000000000000000000000000000000000000
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.