DNSproof

DNSproof

Proof of DNS ownership using on-chain SSL certificate verification.

Created on 12th October 2024

DNSproof

DNSproof

Proof of DNS ownership using on-chain SSL certificate verification.

The problem DNSproof solves

Can be used as a proof of identity.
The smart contract certifies than a given Sui address owns a given domain name.

Challenges we ran into

Sui only supports ECDSA Secp256r1 signatures natively, this is a problem because certificate authorities use a wide range of algorithm. For example, Let' Encrypt (most used certificate authority) uses ECDSA Secp384r1, we spent a lot of time trying to verify the signature for a real domain before realizing this.
To get around this, we had to use self-signed certificates using openssl, which defeat the point because the certificate authority can no longer be trusted, but technically it works the same.

A better approach would be to implement a dns resolver that communicates with the smart contract, this is what ENS did (https://github.com/ensdomains/ens-contracts/blob/staging/contracts/resolvers/profiles/DNSResolver.sol).
Unfortunaly SuiNS don't yet have this capability and it would have been impossible to implement it in 24h.

Major challenges we ran into:

  • We didn't have time to write parsing logic for X.509 certificates in Sui. This should be straightforward but tedious (see https://github.com/lapo-luchini/asn1js for a javascript parser).
  • We didn't have time to properly connect the frontend with the smart contract.

These two issues makes the project unusable for now but the bulk of the skeleton is there.

Discussion

Builders also viewed

See more projects on Devfolio