From e4626ecec7299a2a26d1f25c3261b696d04d47f2 Mon Sep 17 00:00:00 2001 From: silverpill Date: Sat, 14 Oct 2023 18:32:47 +0000 Subject: [PATCH] FEP-521a: Update proposal - Set the normative definition of Multikey to the Data Integrity spec - Fix link to publicKey definition. - Add detailed description of Multikey object. - Add links to verification relationships. - Fix JSON-LD context in example. --- fep/521a/fep-521a.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/fep/521a/fep-521a.md b/fep/521a/fep-521a.md index c19f9e1..85bb9a8 100644 --- a/fep/521a/fep-521a.md +++ b/fep/521a/fep-521a.md @@ -13,9 +13,9 @@ This proposal describes how to represent public keys associated with [ActivityPu ## Rationale -Historically, Fediverse services used [publicKey](https://w3c.github.io/vc-data-integrity/vocab/security/vocabulary.html#publicKey) property to represent actor's public key. Implementations usually allow only one key per actor, therefore a new approach is needed to support use cases where additional keys are required. +Historically, Fediverse services used [publicKey](https://w3c-ccg.github.io/security-vocab/#publicKey) property to represent actor's public key. Implementations usually allow only one key per actor, therefore a new approach is needed to support use cases where additional keys are required. -Furthermore, `publicKey` property is marked as deprecated in the latest version of [Security Vocabulary](https://w3c.github.io/vc-data-integrity/vocab/security/vocabulary.html). +Furthermore, `publicKey` property was removed from the latest version of [Security Vocabulary](https://w3c.github.io/vc-data-integrity/vocab/security/vocabulary.html). ## Requirements @@ -23,9 +23,12 @@ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "S ## Multikey -Actor's key MUST be represented as an object with `Multikey` type and properties `id`, `controller` and `publicKeyMultibase`, as defined in section **2.1.1 Multikey** of [EdDSA Cryptosuite v2022](https://w3c.github.io/vc-di-eddsa/#multikey) specification. +Actor's public key MUST be represented as an object with `Multikey` type, as defined in section **2.3.1.2 Multikey** of [Data Integrity](https://www.w3.org/TR/vc-data-integrity/#multikey) specification. This object MUST have the following properties: -The value of `controller` property MUST match actor ID. +- `id`: the unique global identifier of the public key. +- `type`: the value of this property MUST contain the string `Multikey`. +- `controller`: the value of this property MUST match actor ID. +- `publicKeyMultibase`: a [Multibase](https://www.w3.org/TR/vc-data-integrity/#multibase-0) encoded value of the key. Implementations MUST use `base-58-btc` alphabet. ### Key types @@ -33,9 +36,9 @@ Implementers can use cryptographic keys of any type for which [Multicodec](https ### Key purposes -If the key is intended to be used for signing ActivityPub objects, it MUST be added to the `assertionMethod` property of actor object. +If the key is intended to be used for signing ActivityPub objects, it MUST be added to the [`assertionMethod`](https://www.w3.org/TR/vc-data-integrity/#assertion) array of the actor object. -If the key is intended to be used for authentication, it MUST be added to the `authentication` property of actor object. +If the key is intended to be used for authentication, it MUST be added to the [`authentication`](https://www.w3.org/TR/vc-data-integrity/#authentication) array of the actor object. Other use cases are currently out of scope of this proposal. @@ -45,7 +48,7 @@ Other use cases are currently out of scope of this proposal. { "@context": [ "https://www.w3.org/ns/activitystreams", - "https://w3id.org/security/data-integrity/v1", + "https://www.w3.org/ns/did/v1", "https://w3id.org/security/multikey/v1" ], "type": "Person", @@ -74,7 +77,7 @@ This proposal describes how to represent actor's public keys. The corresponding - [ActivityPub] Christine Lemmer Webber, Jessica Tallon, [ActivityPub](https://www.w3.org/TR/activitypub/), 2018 - [Security Vocabulary] Ivan Herman, Manu Sporny, Dave Longley [Security Vocabulary](https://w3c.github.io/vc-data-integrity/vocab/security/vocabulary.html), 2023 - [RFC-2119] S. Bradner, [Key words for use in RFCs to Indicate Requirement Levels](https://tools.ietf.org/html/rfc2119.html), 1997 -- [EdDSA Cryptosuite v2022] Dave Longley, Manu Sporny, [EdDSA Cryptosuite v2022](https://w3c.github.io/vc-di-eddsa/), 2023 +- [Data Integrity] Dave Longley, Manu Sporny, [Verifiable Credential Data Integrity 1.0](https://www.w3.org/TR/vc-data-integrity/), 2023 - [Multicodec] Protocol Labs, [Multicodec](https://github.com/multiformats/multicodec/) ## Copyright