This is a specification draft for a linked data signature suite using Ethereum EIP-712.
Linked data signatures are used to cryptographically sign and verify linked data documents, such as Verifiable Credentials (in their linked data proof format), and Authorization Capabilities for Linked Data (ZCAP-LD).
EIP-712 defines a way to cryptographically hash and sign a typed data structure. Its hashing (digest) algorithm is keccak256
, and signature algorithm is secp256k1
. The data structure type system is based on that of the Solidity programming language.
Cryptocurrency wallet and browser extensions such as Metamask support EIP-712 signing requests. A web application, using APIs such as web3, can request a user of such a wallet to sign a message using their private key. The wallet prompts the user to sign the message or reject the request. By using EIP-712, the message can be a data structure, typically appearing like a JSON object, rather than text or a byte string.
EthereumEip712Signature2021
, the type of linked data signature defined in this specification, uses EIP-712 for its cryptographic operations. With this signature suite, a EIP-712 signing request can represent a request to issue a Verifiable Credential, or to present a Verifiable Credential in a Verifiable Presentation, or to sign linked documents for other purposes, such as to delegate and invoke Authorization Capabilities.
🚧 This linked data suite specification is under development; DO NOT use this in production without thorough review.
Breaking changes may be pushed regularly.
Latest rendered editor's draft: https://w3c-ccg.github.io/ethereum-eip712-signature-2021-spec/