This specification describes a standard signature suite created in 2018 for the Ed25519 signature scheme using Curve25519, used e.g. by Hyperledger Indy.
This is an experimental specification and is undergoing regular revisions. It is not fit for production deployment.
This specification describes a standard signature suite created in 2018 for the Linked Data Signatures [[LD-SIGNATURES]] specification. It uses the RDF Dataset Normalization Algorithm [[RDF-DATASET-NORMALIZATION]] to transform the input document into its canonical form. It uses SHA-256 [[RFC6234]] as the message digest algorithm and Ed25519 [[ED25519]] as the signature algorithm.
The following terms are used to describe concepts involved in the generation and verification of the Ed25519 2018 signature suite.
A simple example of an Ed25519 2018 Signature Verification Key:
{ "@context": ["https://w3id.org/security/v2"], "id": "did:example:123456789abcdefghi#keys-1", "type": "Ed25519VerificationKey2018", "controller": "did:example:123456789abcdefghi", "expires": "2017-02-08T16:02:20Z", "publicKeyBase58" : "H3C2AVvLMv6gmMNam3uVAjZpfkcJCwDwnZn6z3wXmqPV" }
Note: The publicKeyBase58
property contains the raw public key bytes. The encoding is Base58 using the same alphabet as Bitcoin addresses and IPFS hashes.
The Ed25519 2018 signature suite MUST be used in conjunction with the signing and verification algorithms in the Linked Data Signatures [[LD-SIGNATURES]] specification. The suite consists of the following algorithms:
Parameter | Value | Specification |
---|---|---|
canonicalizationAlgorithm | https://w3id.org/security#URDNA2015 | [[RDF-DATASET-NORMALIZATION]] |
digestAlgorithm | http://w3id.org/digests#sha256 | [[RFC6234]] |
signatureAlgorithm | http://w3id.org/security#ed25519 | [[ED25519]] |
No modifications to the Linked Data Signature algorithms are provided other than the algorithms specified in the previous signature suite section.
The following section describes security considerations that developers implementing this specification should be aware of in order to create secure software.
A simple example of a Ed25519 2018 Signature:
{ "@context": ["http://schema.org/", "https://w3id.org/security/v2"], "description": "Hello world!", "proof": { "type": "Ed25519Signature2018", "created": "2016-10-23T05:50:16Z", "verificationMethod": "did:example:123456789abcdefghi#key1", "proofPurpose": "assertionMethod", "jws" : "eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..AUQ3AJ23WM5vMOWNtYKuqZBekRAOUibOMH9XuvOd39my1sO-X9R4QyAXLD2ospssLvIuwmQVhJa-F0xMOnkvBg" } }