]>
Commit | Line | Data |
---|---|---|
94a5ff8a C |
1 | import { buildSignedActivity } from '../../../../helpers/activitypub' |
2 | import { getServerActor } from '../../../../helpers/utils' | |
3 | import { ActorModel } from '../../../../models/activitypub/actor' | |
4 | ||
5 | async function computeBody (payload: { body: any, signatureActorId?: number }) { | |
6 | let body = payload.body | |
7 | ||
8 | if (payload.signatureActorId) { | |
9 | const actorSignature = await ActorModel.load(payload.signatureActorId) | |
10 | if (!actorSignature) throw new Error('Unknown signature actor id.') | |
11 | body = await buildSignedActivity(actorSignature, payload.body) | |
12 | } | |
13 | ||
14 | return body | |
15 | } | |
16 | ||
17 | async function buildSignedRequestOptions (payload: { signatureActorId?: number }) { | |
c1e791ba | 18 | let actor: ActorModel | null |
94a5ff8a C |
19 | if (payload.signatureActorId) { |
20 | actor = await ActorModel.load(payload.signatureActorId) | |
21 | if (!actor) throw new Error('Unknown signature actor id.') | |
22 | } else { | |
23 | // We need to sign the request, so use the server | |
24 | actor = await getServerActor() | |
25 | } | |
26 | ||
27 | const keyId = actor.getWebfingerUrl() | |
28 | return { | |
29 | algorithm: 'rsa-sha256', | |
30 | authorizationHeaderName: 'Signature', | |
31 | keyId, | |
32 | key: actor.privateKey | |
33 | } | |
34 | } | |
35 | ||
36 | export { | |
37 | computeBody, | |
38 | buildSignedRequestOptions | |
39 | } |