My quick search unfortunately, did not reveal a good description of the context. It was introduced in Verifiable Credentials Data Model v2.0 . The good news is that the context allows for adding an âexpiresâ term. This is important as we will want to encourage usage of âtime to liveâ for ActivityPub.
@helge Iâm happy to report that my implementation of jcs-eddsa-2022 cryptosuite produces the same signed document as yours!
Iâm not deploying it to production though. It would be prudent to wait until workgroup fixes the vc-di-eddsa spec.
jcs-eddsa-2022 description was fixed a couple of days ago (PR). I proceeded with implementation of the algorithm and incorporated it into my software (here is the signing function). However, Iâm not sure how to distribute EdDSA keys. The most logical place for them seems to be publicKey property, which can take the form of array where the first item represents RSA key and the second item represents EdDSA key. But servers may expect publicKey to be an object and fail to process an array, making gradual upgrade impossible. So we need to either use some new property (authentication?) or keep RSA as the recommended signature algorithm.
I donât see any disadvantages in this approach compared to using a âpublicKeyâ property or similar. I see some advantages in this approach, thatâs why the above fep discusses it.
I think this conflicts with the usage of alsoKnownAs property in the Fediverse (things controlled by the same entity). As I pointed out in another thread, there are two possible meanings of the word âaliasâ, and I think we should not conflate them. If alsoKnowAs is used to describe things controlled by the same entity, aliases should be used to describe different identifiers of the same thing. The definition of xrd:Alias seems to support this:
The <Alias> element does not identify additional resources the XRD is describing, but rather provides additional identifiers for the same resource.
acct:ben@chatty.social and did:key:z6MkekwC6R9bj9ErToB7AiZJfyCSDhaZe1UxhDbCqJrhqpS5 are not additional identifiers of the same resource. The first one points to AP actor, the second one to DID document. Therefore, alsoKnownAs would be more appropriate here.
Or we can flip these properties and use aliases to describe different things controlled by the same entity. This would conflict with the usage of alsoKnownAs property but coincide with the usage of âAliasâ in Mastodon documentation.
In the context of FEP-8b32, however, I would prefer to use different property. Maybe even Multikey attachment
One should explain the distinction between an identifier and a public key. This is not a technical distinction (both can be considered as points on Curve 25519) but a distinction of purpose.
An Identifier identifies an actor
A Public Key is used by the actor to prove he did something, i.e. by signing it. (Awful sentence)
There are more key types see
Given their use, one can rotate public keys quite frequently. For example, I could issue a new public key every week with a 2 week expiry. Once the public key is expired, I publish the private key. This means that signatures donât make it impossible to delete objects.
Iâm unsure if I like the name âMultiKeyâ. âMultiâ might be taken to mean âmultipurposeâ instead of being a format. It might be better to specify the use as âSigningKeyâ. Maybe, one can invent a naming scheme that also covers fep-c390 and uses such as
@codenamedmitriproposed to use properties like authentication, keyAgreement etc to make the purpose of the key clear. I support this.
FEP-521a allows actor to have multiple keys, so you can add a new key without removing the expired one (just mark it as âexpiredâ somehow).
I took it from âEdDSA Cryptosuite v2022â document. Thereâs a warning about moving it to Data Integrity spec, so we can expect it to become standard. If we replace attachment with authentication, the ambiguity will disappear.