aboutsummaryrefslogtreecommitdiffhomepage
path: root/server
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2020-01-07 15:24:27 +0100
committerChocobozzz <me@florianbigard.com>2020-01-07 15:56:09 +0100
commite92269053e3fd0e9b9c155ded86a1668444f3d70 (patch)
treefc6c48416a028fa4f471fbe91f5b982122e303bf /server
parent7cde3b9c2e84ea20bb0aae4544598483cde9e22c (diff)
downloadPeerTube-e92269053e3fd0e9b9c155ded86a1668444f3d70.tar.gz
PeerTube-e92269053e3fd0e9b9c155ded86a1668444f3d70.tar.zst
PeerTube-e92269053e3fd0e9b9c155ded86a1668444f3d70.zip
Update http signature
Diffstat (limited to 'server')
-rw-r--r--server/helpers/custom-jsonld-signature.ts14
-rw-r--r--server/helpers/peertube-crypto.ts2
-rw-r--r--server/lib/job-queue/handlers/activitypub-http-unicast.ts2
-rw-r--r--server/middlewares/activitypub.ts5
4 files changed, 17 insertions, 6 deletions
diff --git a/server/helpers/custom-jsonld-signature.ts b/server/helpers/custom-jsonld-signature.ts
index cb07fa3b2..a407a9fec 100644
--- a/server/helpers/custom-jsonld-signature.ts
+++ b/server/helpers/custom-jsonld-signature.ts
@@ -70,12 +70,20 @@ const lru = new AsyncLRU({
70 }) 70 })
71 } 71 }
72 72
73 nodeDocumentLoader(url, cb) 73 nodeDocumentLoader(url)
74 .then(value => cb(null, value))
75 .catch(err => cb(err))
74 } 76 }
75}) 77})
76 78
77jsonld.documentLoader = (url, cb) => { 79jsonld.documentLoader = (url) => {
78 lru.get(url, cb) 80 return new Promise((res, rej) => {
81 lru.get(url, (err, value) => {
82 if (err) return rej(err)
83
84 return res(value)
85 })
86 })
79} 87}
80 88
81export { jsonld } 89export { jsonld }
diff --git a/server/helpers/peertube-crypto.ts b/server/helpers/peertube-crypto.ts
index 9eb782302..89c0ab151 100644
--- a/server/helpers/peertube-crypto.ts
+++ b/server/helpers/peertube-crypto.ts
@@ -51,7 +51,7 @@ function isHTTPSignatureVerified (httpSignatureParsed: any, actor: MActor): bool
51} 51}
52 52
53function parseHTTPSignature (req: Request, clockSkew?: number) { 53function parseHTTPSignature (req: Request, clockSkew?: number) {
54 return httpSignature.parse(req, { authorizationHeaderName: HTTP_SIGNATURE.HEADER_NAME, clockSkew }) 54 return httpSignature.parse(req, { clockSkew })
55} 55}
56 56
57// JSONLD 57// JSONLD
diff --git a/server/lib/job-queue/handlers/activitypub-http-unicast.ts b/server/lib/job-queue/handlers/activitypub-http-unicast.ts
index c70ce3be9..6fbd4a716 100644
--- a/server/lib/job-queue/handlers/activitypub-http-unicast.ts
+++ b/server/lib/job-queue/handlers/activitypub-http-unicast.ts
@@ -20,6 +20,8 @@ async function processActivityPubHttpUnicast (job: Bull.Job) {
20 const body = await computeBody(payload) 20 const body = await computeBody(payload)
21 const httpSignatureOptions = await buildSignedRequestOptions(payload) 21 const httpSignatureOptions = await buildSignedRequestOptions(payload)
22 22
23 logger.info('hello', { httpSignatureOptions })
24
23 const options = { 25 const options = {
24 method: 'POST', 26 method: 'POST',
25 uri, 27 uri,
diff --git a/server/middlewares/activitypub.ts b/server/middlewares/activitypub.ts
index fedac0e05..bd3bdb076 100644
--- a/server/middlewares/activitypub.ts
+++ b/server/middlewares/activitypub.ts
@@ -51,10 +51,11 @@ export {
51// --------------------------------------------------------------------------- 51// ---------------------------------------------------------------------------
52 52
53async function checkHttpSignature (req: Request, res: Response) { 53async function checkHttpSignature (req: Request, res: Response) {
54 // FIXME: mastodon does not include the Signature scheme 54 // FIXME: compatibility with http-signature < v1.3
55 const sig = req.headers[HTTP_SIGNATURE.HEADER_NAME] as string 55 const sig = req.headers[HTTP_SIGNATURE.HEADER_NAME] as string
56 if (sig && sig.startsWith('Signature ') === false) req.headers[HTTP_SIGNATURE.HEADER_NAME] = 'Signature ' + sig 56 if (sig && sig.startsWith('Signature ') === true) req.headers[HTTP_SIGNATURE.HEADER_NAME] = sig.replace(/^Signature /, '')
57 57
58 logger.info('coucou', { signature: req.headers[HTTP_SIGNATURE.HEADER_NAME] })
58 const parsed = parseHTTPSignature(req, HTTP_SIGNATURE.CLOCK_SKEW_SECONDS) 59 const parsed = parseHTTPSignature(req, HTTP_SIGNATURE.CLOCK_SKEW_SECONDS)
59 60
60 const keyId = parsed.keyId 61 const keyId = parsed.keyId