mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
fix: handle (created) and (expires) in http signatures
This commit is contained in:
@@ -155,7 +155,7 @@ ActivityPub.verify = async (req) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Break the signature apart
|
// Break the signature apart
|
||||||
let { keyId, headers, signature, algorithm } = req.headers.signature.split(',').reduce((memo, cur) => {
|
let { keyId, headers, signature, algorithm, created, expires } = 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('="');
|
||||||
@@ -170,10 +170,26 @@ ActivityPub.verify = async (req) => {
|
|||||||
|
|
||||||
// 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)') {
|
switch (cur) {
|
||||||
memo.push(`${cur}: ${String(req.method).toLowerCase()} ${req.baseUrl}${req.path}`);
|
case '(request-target)': {
|
||||||
} else if (req.headers.hasOwnProperty(cur)) {
|
memo.push(`${cur}: ${String(req.method).toLowerCase()} ${req.baseUrl}${req.path}`);
|
||||||
memo.push(`${cur}: ${req.headers[cur]}`);
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case '(created)': {
|
||||||
|
memo.push(`(created): ${created}`);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case '(expires)': {
|
||||||
|
memo.push(`(expires): ${expires}`);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
default: {
|
||||||
|
memo.push(`${cur}: ${req.headers[cur]}`);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return memo;
|
return memo;
|
||||||
|
|||||||
Reference in New Issue
Block a user