async generateSignatureHeaders(ctx) { const { url, body, actorUri } = ctx.params; const actorId = getSlugFromUri(actorUri); const headers = { Date: new Date().toUTCString(), Digest: this.buildDigest(body) }; // Generate signature string const requestOptions = { url, method: 'POST', headers }; const includeHeaders = ['(request-target)', 'host', 'date', 'digest']; const signatureString = createSignatureString({ includeHeaders, requestOptions }); // Hash signature string const signer = createSign('sha256'); signer.update(signatureString); const privateKey = await fsPromises.readFile(path.join(this.settings.actorsKeyPairsDir, actorId + '.key')); const signatureHash = signer.sign(privateKey).toString('base64'); headers.Signature = createAuthzHeader({ includeHeaders, keyId: actorUri, signature: signatureHash }).substr('Signature '.length); return headers; }
signer.update(data)
data = new TextDecoder().decode(data) let signer = crypto.createSign(hashName) signer.update(data) return signer.sign(pem).buffer } catch (error) {
data = new TextDecoder().decode(data) let signer = crypto.createSign(hashName) signer.update(data) return signer.sign({ key: pem,