fix: send hs2019 as algo (to match cavage-12, handle incoming algorithm value

This commit is contained in:
Julian Lam
2024-04-11 10:39:51 -04:00
parent 6fc6cc33cd
commit 8d0876b8d7

View File

@@ -2,7 +2,7 @@
const nconf = require('nconf'); const nconf = require('nconf');
const winston = require('winston'); const winston = require('winston');
const { createHash, createSign, createVerify } = require('crypto'); const { createHash, createSign, createVerify, getHashes } = require('crypto');
const request = require('../request'); const request = require('../request');
const db = require('../database'); const db = require('../database');
@@ -143,7 +143,7 @@ ActivityPub.sign = async ({ key, keyId }, url, payload) => {
return { return {
date, date,
digest, digest,
signature: `keyId="${keyId}",headers="${headers}",signature="${signature}",algorithm="rsa-sha256"`, signature: `keyId="${keyId}",headers="${headers}",signature="${signature}",algorithm="hs2019"`,
}; };
}; };
@@ -155,7 +155,7 @@ ActivityPub.verify = async (req) => {
} }
// Break the signature apart // Break the signature apart
const { keyId, headers, signature } = req.headers.signature.split(',').reduce((memo, cur) => { let { keyId, headers, signature, algorithm } = req.headers.signature.split(',').reduce((memo, cur) => {
const split = cur.split('="'); const split = cur.split('="');
const key = split.shift(); const key = split.shift();
const value = split.join('="'); const value = split.join('="');
@@ -163,6 +163,11 @@ ActivityPub.verify = async (req) => {
return memo; return memo;
}, {}); }, {});
const acceptableHashes = getHashes();
if (algorithm === 'hs2019' || !acceptableHashes.includes(algorithm)) {
algorithm = 'sha256';
}
// Re-construct signature string // Re-construct signature string
const signed_string = headers.split(' ').reduce((memo, cur) => { const signed_string = headers.split(' ').reduce((memo, cur) => {
if (cur === '(request-target)') { if (cur === '(request-target)') {