mirror of
https://github.com/versia-pub/docs.git
synced 2026-01-26 03:56:02 +01:00
docs: 📝 Feature more information on SPKI key encoding
This commit is contained in:
parent
fe451d018c
commit
32aa7cf164
|
|
@ -74,7 +74,7 @@ Check the entity's documentation page to see if it supports this (it will be not
|
||||||
```
|
```
|
||||||
|
|
||||||
- `algorithm`: Algorithm used for the public key. Can only be `ed25519` for now.
|
- `algorithm`: Algorithm used for the public key. Can only be `ed25519` for now.
|
||||||
- `key`: Instance public key, in SPKI-encoded base64 (from raw bytes, not a PEM format).
|
- `key`: Instance public key, in [SPKI-encoded base64](/signatures#exporting-the-public-key).
|
||||||
</Property>
|
</Property>
|
||||||
<Property name="moderators" type="URI" required={false}>
|
<Property name="moderators" type="URI" required={false}>
|
||||||
URI to [Collection](/structures/collection) of instance moderators.
|
URI to [Collection](/structures/collection) of instance moderators.
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,7 @@ Instance **must** be the host of the instance the user is on (hostname with opti
|
||||||
The user's public key. Must follow the [Versia Public Key](/signatures) format. `actor` may be a URI to another user's profile, in which case this key may allow the other user act on behalf of this user (see [delegation](/federation/delegation)).
|
The user's public key. Must follow the [Versia Public Key](/signatures) format. `actor` may be a URI to another user's profile, in which case this key may allow the other user act on behalf of this user (see [delegation](/federation/delegation)).
|
||||||
|
|
||||||
- `algorithm`: Must be `ed25519` for now.
|
- `algorithm`: Must be `ed25519` for now.
|
||||||
- `key`: The public key in SPKI-encoded base64 (from raw bytes, not a PEM format). Must be the key associated with the `actor` URI.
|
- `key`: The public key in [SPKI-encoded base64](/signatures#exporting-the-public-key). Must be the key associated with the `actor` URI.
|
||||||
- `actor`: URI to a user's profile, most often the user's own profile.
|
- `actor`: URI to a user's profile, most often the user's own profile.
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
|
|
|
||||||
|
|
@ -156,3 +156,27 @@ if (!isVerified) {
|
||||||
return new Response("Signature verification failed", { status: 401 });
|
return new Response("Signature verification failed", { status: 401 });
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Exporting the Public Key
|
||||||
|
|
||||||
|
Public keys are always encoded using `base64` and must be in SPKI format. You will need to look up the appropriate method for your cryptographic library to convert the key to this format.
|
||||||
|
|
||||||
|
<Note>
|
||||||
|
This is **not** the same as the key's raw bytes.
|
||||||
|
|
||||||
|
This is also not related to the commonly used "PEM" format.
|
||||||
|
</Note>
|
||||||
|
|
||||||
|
```typescript {{ title: "Example using TypeScript and the WebCrypto API" }}
|
||||||
|
/**
|
||||||
|
* Using Node.js's Buffer API for brevity
|
||||||
|
* If using another runtime, you may need to use a different method to convert to/from Base64
|
||||||
|
*/
|
||||||
|
const spkiEncodedPublicKey = await crypto.subtle.exportKey(
|
||||||
|
"spki",
|
||||||
|
/* Your public key */
|
||||||
|
publicKey,
|
||||||
|
);
|
||||||
|
|
||||||
|
const base64PublicKey = Buffer.from(publicKey).toString("base64");
|
||||||
|
```
|
||||||
Loading…
Reference in a new issue