@fedify/fedify 1.9.6 → 1.9.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{actor-CEGEmRll.js → actor-BTA45fXF.js} +1205 -2768
- package/dist/{actor-Ydzhc8dj.d.cts → actor-Be-68iJP.d.cts} +3 -3
- package/dist/{actor-C1Euqngb.d.ts → actor-C5AY0Tno.d.ts} +3 -3
- package/dist/{actor-DbpZ6pzg.js → actor-DGa1EWaV.mjs} +8 -15
- package/dist/{actor-DlS-Q8hE.cjs → actor-DxfJk4lY.cjs} +3112 -4674
- package/dist/{assert-MZs1qjMx.js → assert-DikXweDx.mjs} +5 -9
- package/dist/{assert_equals-DSbWqCm3.js → assert_equals-Ew3jOFa3.mjs} +55 -69
- package/dist/{assert_instance_of-DHz7EHNU.js → assert_instance_of-C4Ri6VuN.mjs} +5 -9
- package/dist/{assert_is_error-BPGph1Jx.js → assert_is_error-C50x8tnw.mjs} +5 -9
- package/dist/{assert_not_equals-f3m3epl3.js → assert_not_equals--wG9hV7u.mjs} +6 -13
- package/dist/{assert_rejects-DiIiJbZn.js → assert_rejects-CJC9ThS-.mjs} +6 -11
- package/dist/{assert_throws-BOO88avQ.js → assert_throws-BIL7gChy.mjs} +6 -10
- package/dist/{authdocloader-DUQcOTRS.js → authdocloader-BC2rYCy1.mjs} +9 -14
- package/dist/{authdocloader-CT_V4Z7G.cjs → authdocloader-BrhFB421.cjs} +14 -22
- package/dist/{authdocloader-BLqMyboS.js → authdocloader-CqtNsX_N.js} +8 -15
- package/dist/{builder-BO61xeXE.js → builder-CIkAhIGC.mjs} +31 -40
- package/dist/{client-DF8anIB5.d.ts → client-D8OSiPBT.d.ts} +2 -2
- package/dist/{client-UG5wpNhG.js → client-MXqit6c-.mjs} +11 -15
- package/dist/{client-DjT_tegg.d.cts → client-T0VFOdMw.d.cts} +2 -2
- package/dist/{collection-CSzG2j1P.js → collection-BD6-SZ6O.mjs} +7 -12
- package/dist/compat/mod.cjs +5 -8
- package/dist/compat/mod.d.cts +78 -12
- package/dist/compat/mod.d.ts +78 -12
- package/dist/compat/mod.js +4 -8
- package/dist/compat/transformers.test.mjs +62 -0
- package/dist/{context-CwUAkopp.d.cts → context-CACMqDzl.d.cts} +33 -26
- package/dist/{context-CXUibY4L.d.ts → context-K4cCphQj.d.ts} +33 -26
- package/dist/{denokv-Bv33Xxea.js → denokv-CoSB_Eps.mjs} +22 -11
- package/dist/{docloader-BIFI3OS7.cjs → docloader-BVuUhBLI.cjs} +112 -212
- package/dist/{docloader-fJgJeqiX.js → docloader-BoXhusJ1.js} +17 -151
- package/dist/{docloader-CxWcuWqQ.d.ts → docloader-DSaLRXEA.d.ts} +2 -7
- package/dist/{docloader-D-MrRyHl.d.cts → docloader-DpGRDZrn.d.cts} +2 -7
- package/dist/{esm-C1EfGjSS.js → esm-BHJ7sdNg.mjs} +49 -85
- package/dist/federation/{builder.test.js → builder.test.mjs} +22 -41
- package/dist/federation/collection.test.d.mts +2 -0
- package/dist/federation/collection.test.mjs +21 -0
- package/dist/federation/handler.test.d.mts +2 -0
- package/dist/federation/{handler.test.js → handler.test.mjs} +22 -49
- package/dist/federation/idempotency.test.d.mts +2 -0
- package/dist/federation/{idempotency.test.js → idempotency.test.mjs} +29 -59
- package/dist/federation/inbox.test.d.mts +2 -0
- package/dist/federation/{inbox.test.js → inbox.test.mjs} +10 -15
- package/dist/federation/keycache.test.d.mts +2 -0
- package/dist/federation/{keycache.test.js → keycache.test.mjs} +13 -18
- package/dist/federation/kv.test.d.mts +2 -0
- package/dist/federation/{kv.test.js → kv.test.mjs} +9 -20
- package/dist/federation/middleware.test.d.mts +2 -0
- package/dist/federation/{middleware.test.js → middleware.test.mjs} +182 -197
- package/dist/federation/mod.cjs +223 -21
- package/dist/federation/mod.d.cts +4 -13
- package/dist/federation/mod.d.ts +4 -13
- package/dist/federation/mod.js +218 -18
- package/dist/federation/mq.test.d.mts +2 -0
- package/dist/federation/{mq.test.js → mq.test.mjs} +23 -38
- package/dist/federation/retry.test.d.mts +2 -0
- package/dist/federation/{retry.test.js → retry.test.mjs} +9 -14
- package/dist/federation/router.test.d.mts +2 -0
- package/dist/federation/{router.test.js → router.test.mjs} +12 -19
- package/dist/federation/send.test.d.mts +2 -0
- package/dist/federation/{send.test.js → send.test.mjs} +17 -26
- package/dist/{http-wsGR6KkT.d.ts → http-BZpls--H.d.ts} +5 -9
- package/dist/{http-CR-Eg1Uq.js → http-Bu5ZNlhZ.mjs} +16 -32
- package/dist/{http-B1_DzfAU.d.cts → http-C7WoprmE.d.cts} +5 -9
- package/dist/{http-BgopPF-8.cjs → http-DKw-O_VY.cjs} +51 -68
- package/dist/{http-05HxN-lp.js → http-VJbz6sKD.js} +17 -33
- package/dist/{inbox-DcJN1cxM.js → inbox-DkbTULXE.mjs} +17 -25
- package/dist/key-4fu6v0Jf.mjs +5 -0
- package/dist/{key-DjS1X9TG.cjs → key-B-wFdaPB.cjs} +42 -50
- package/dist/{key-ibMO03_0.js → key-BNMK_IVr.mjs} +12 -18
- package/dist/key-CancShOo.cjs +4 -0
- package/dist/{key-CPJcJjp-.js → key-DK3o0FEH.js} +19 -19
- package/dist/{keycache-CMUfqYqr.js → keycache-D-Vj8z88.mjs} +6 -10
- package/dist/{keys-IZ5050fT.js → keys-B27nVeIs.mjs} +6 -10
- package/dist/{kv-C7sopW2E.d.ts → kv-Bq9QLKm5.d.ts} +1 -1
- package/dist/{kv-CRZrzyXm.js → kv-DM1zFCtL.mjs} +6 -10
- package/dist/{kv-63Cil1MD.d.cts → kv-GIrOktyG.d.cts} +1 -1
- package/dist/{ld-DHNA2RSQ.js → ld-6jAVu3jV.mjs} +17 -31
- package/dist/{lookup-CKZfuyxA.js → lookup-BaU75j-d.js} +5 -11
- package/dist/{lookup-C4_dVYz7.cjs → lookup-BiIPmTwB.cjs} +16 -23
- package/dist/{lookup-BMAWLsP2.js → lookup-DmeJ8WUw.mjs} +8 -17
- package/dist/middleware-9ByEpBvV.cjs +4 -0
- package/dist/{middleware-CGbvIGvy.cjs → middleware-C188G4Go.cjs} +494 -547
- package/dist/{middleware-DrhEvfTo.js → middleware-Db1yZQaT.mjs} +276 -321
- package/dist/{middleware-ODfDRN3q.js → middleware-Do06X21v.js} +349 -393
- package/dist/middleware-DrfZEjyc.mjs +5 -0
- package/dist/{mod-CDObsV1d.d.ts → mod-BSwc3_rD.d.ts} +3 -3
- package/dist/{mod-DBzN0aCM.d.ts → mod-BTNpXcPj.d.ts} +2 -2
- package/dist/{mod-fjqfsrty.d.cts → mod-Chb_NKPp.d.cts} +4 -4
- package/dist/{mod-DgcYoyZK.d.ts → mod-DHoc3toL.d.ts} +4 -4
- package/dist/{mod-jQ4OODsl.d.cts → mod-DIMx6YjJ.d.cts} +2 -2
- package/dist/{mod-BUbqxBev.d.cts → mod-HElaq2UB.d.cts} +3 -3
- package/dist/mod.cjs +31 -33
- package/dist/mod.d.cts +15 -17
- package/dist/mod.d.ts +15 -17
- package/dist/mod.js +20 -23
- package/dist/{mq-B7R1Q-M5.d.cts → mq-CrItclRD.d.cts} +1 -1
- package/dist/{mq-CRGm1e_F.d.ts → mq-D_ZZRdby.d.ts} +1 -1
- package/dist/nodeinfo/client.test.d.mts +2 -0
- package/dist/nodeinfo/{client.test.js → client.test.mjs} +23 -45
- package/dist/nodeinfo/handler.test.d.mts +2 -0
- package/dist/nodeinfo/{handler.test.js → handler.test.mjs} +14 -43
- package/dist/nodeinfo/mod.cjs +5 -9
- package/dist/nodeinfo/mod.d.cts +2 -5
- package/dist/nodeinfo/mod.d.ts +2 -5
- package/dist/nodeinfo/mod.js +4 -9
- package/dist/nodeinfo/semver.test.d.mts +2 -0
- package/dist/nodeinfo/{semver.test.js → semver.test.mjs} +28 -51
- package/dist/nodeinfo/types.test.d.mts +2 -0
- package/dist/nodeinfo/{types.test.js → types.test.mjs} +10 -21
- package/dist/{owner-DDHsHYQO.js → owner-CKuGt_T9.mjs} +10 -13
- package/dist/{owner-BbeUDvOu.d.ts → owner-DPAPnB0R.d.ts} +4 -4
- package/dist/{owner-6KSEp9eV.d.cts → owner-_rFs0ik_.d.cts} +4 -4
- package/dist/{proof-V1uQaB2y.js → proof-CmTtG_t-.js} +33 -57
- package/dist/{proof-CX7ujFFX.cjs → proof-DLOy7HYU.cjs} +112 -135
- package/dist/{proof-exgGRW88.js → proof-mJLL2gSA.mjs} +20 -32
- package/dist/{retry-D4GJ670a.js → retry-Ddbq3AcK.mjs} +4 -7
- package/dist/rolldown-runtime-C7fyD9f2.js +15 -0
- package/dist/runtime/authdocloader.test.d.mts +2 -0
- package/dist/runtime/{authdocloader.test.js → authdocloader.test.mjs} +16 -28
- package/dist/runtime/docloader.test.d.mts +2 -0
- package/dist/runtime/{docloader.test.js → docloader.test.mjs} +52 -72
- package/dist/runtime/key.test.d.mts +2 -0
- package/dist/runtime/{key.test.js → key.test.mjs} +27 -57
- package/dist/runtime/langstr.test.d.mts +2 -0
- package/dist/runtime/{langstr.test.js → langstr.test.mjs} +9 -19
- package/dist/runtime/link.test.d.mts +2 -0
- package/dist/runtime/{link.test.js → link.test.mjs} +7 -11
- package/dist/runtime/mod.cjs +7 -13
- package/dist/runtime/mod.d.cts +103 -6
- package/dist/runtime/mod.d.ts +103 -6
- package/dist/runtime/mod.js +6 -13
- package/dist/runtime/multibase/multibase.test.d.mts +2 -0
- package/dist/runtime/multibase/{multibase.test.js → multibase.test.mjs} +16 -33
- package/dist/runtime/url.test.d.mts +2 -0
- package/dist/runtime/{url.test.js → url.test.mjs} +10 -15
- package/dist/{semver-dArNLkR9.js → semver-CgD82xxg.mjs} +13 -28
- package/dist/{send-BfMYakUE.js → send-BsQbGuw4.mjs} +7 -12
- package/dist/sig/http.test.d.mts +2 -0
- package/dist/sig/{http.test.js → http.test.mjs} +119 -203
- package/dist/sig/key.test.d.mts +2 -0
- package/dist/sig/{key.test.js → key.test.mjs} +13 -22
- package/dist/sig/ld.test.d.mts +2 -0
- package/dist/sig/{ld.test.js → ld.test.mjs} +24 -39
- package/dist/sig/mod.cjs +7 -13
- package/dist/sig/mod.d.cts +3 -7
- package/dist/sig/mod.d.ts +3 -7
- package/dist/sig/mod.js +6 -13
- package/dist/sig/owner.test.d.mts +2 -0
- package/dist/sig/owner.test.mjs +39 -0
- package/dist/sig/proof.test.d.mts +2 -0
- package/dist/sig/{proof.test.js → proof.test.mjs} +18 -31
- package/dist/{std__assert-X-_kMxKM.js → std__assert-2v7gYiZp.mjs} +13 -24
- package/dist/testing/docloader.test.d.mts +2 -0
- package/dist/testing/docloader.test.mjs +12 -0
- package/dist/testing/{mod.d.ts → mod.d.mts} +371 -541
- package/dist/testing/mod.mjs +5 -0
- package/dist/{testing-RPOc_gVG.js → testing-DS3gcq8V.mjs} +27 -35
- package/dist/{transformers-CoBS-oFG.cjs → transformers-BM0M8hnW.cjs} +20 -25
- package/dist/{transformers-BFT6d7J5.js → transformers-BV4OeK9o.js} +3 -7
- package/dist/{types-Cptev2nt.js → types-BXfL-dsX.js} +18 -36
- package/dist/{types-BIgY6c-l.js → types-CAnkAQGM.mjs} +5 -9
- package/dist/{types-CGnM1vft.cjs → types-DpM4FhjW.cjs} +45 -64
- package/dist/vocab/actor.test.d.mts +2 -0
- package/dist/vocab/{actor.test.js → actor.test.mjs} +308 -550
- package/dist/vocab/cjs.test.d.mts +2 -0
- package/dist/vocab/cjs.test.mjs +14 -0
- package/dist/vocab/lookup.test.d.mts +2 -0
- package/dist/vocab/{lookup.test.js → lookup.test.mjs} +29 -45
- package/dist/vocab/mod.cjs +251 -16
- package/dist/vocab/mod.d.cts +3 -5
- package/dist/vocab/mod.d.ts +3 -5
- package/dist/vocab/mod.js +244 -10
- package/dist/vocab/type.test.d.mts +2 -0
- package/dist/vocab/type.test.mjs +16 -0
- package/dist/vocab/vocab.test.d.mts +2 -0
- package/dist/vocab/{vocab.test.js → vocab.test.mjs} +178 -311
- package/dist/{vocab-CDHNj5zp.d.ts → vocab-BLvSEtuz.d.cts} +2 -4
- package/dist/{type-COPv6pMi.js → vocab-DuW9rL1h.mjs} +1177 -2871
- package/dist/{vocab-Cfs0937i.d.cts → vocab-lhCS9lzq.d.ts} +4 -2
- package/dist/webfinger/handler.test.d.mts +2 -0
- package/dist/webfinger/{handler.test.js → handler.test.mjs} +23 -56
- package/dist/webfinger/lookup.test.d.mts +2 -0
- package/dist/webfinger/{lookup.test.js → lookup.test.mjs} +13 -27
- package/dist/webfinger/mod.cjs +5 -9
- package/dist/webfinger/mod.d.cts +1 -3
- package/dist/webfinger/mod.d.ts +1 -3
- package/dist/webfinger/mod.js +4 -9
- package/dist/x/cfworkers.cjs +25 -14
- package/dist/x/cfworkers.d.cts +33 -6
- package/dist/x/cfworkers.d.ts +33 -6
- package/dist/x/cfworkers.js +22 -12
- package/dist/x/cfworkers.test.d.mts +2 -0
- package/dist/x/{cfworkers.test.js → cfworkers.test.mjs} +28 -26
- package/dist/x/hono.cjs +25 -14
- package/dist/x/hono.d.cts +1 -11
- package/dist/x/hono.d.ts +1 -11
- package/dist/x/hono.js +22 -12
- package/dist/x/sveltekit.cjs +23 -12
- package/dist/x/sveltekit.d.cts +1 -11
- package/dist/x/sveltekit.d.ts +1 -11
- package/dist/x/sveltekit.js +20 -10
- package/package.json +2 -2
- package/dist/chunk-DqRYRqnO.cjs +0 -34
- package/dist/compat/transformers.test.d.ts +0 -3
- package/dist/compat/transformers.test.js +0 -86
- package/dist/compat-DmDDELst.cjs +0 -4
- package/dist/compat-nxUqe4Z-.js +0 -4
- package/dist/federation/builder.test.d.ts +0 -3
- package/dist/federation/collection.test.d.ts +0 -3
- package/dist/federation/collection.test.js +0 -35
- package/dist/federation/handler.test.d.ts +0 -3
- package/dist/federation/idempotency.test.d.ts +0 -3
- package/dist/federation/inbox.test.d.ts +0 -3
- package/dist/federation/keycache.test.d.ts +0 -3
- package/dist/federation/kv.test.d.ts +0 -3
- package/dist/federation/middleware.test.d.ts +0 -3
- package/dist/federation/mq.test.d.ts +0 -3
- package/dist/federation/retry.test.d.ts +0 -3
- package/dist/federation/router.test.d.ts +0 -3
- package/dist/federation/send.test.d.ts +0 -3
- package/dist/federation-D1U8YY9t.js +0 -226
- package/dist/federation-H2_En3j5.cjs +0 -244
- package/dist/key-BCUd8FWp.js +0 -10
- package/dist/key-BUardnTH.cjs +0 -10
- package/dist/key-Dr6H_e3K.js +0 -10
- package/dist/middleware-BJ83veqi.js +0 -26
- package/dist/middleware-CJ4W2ir5.cjs +0 -17
- package/dist/middleware-Ve2mHJgo.js +0 -17
- package/dist/mod-BcObK1Lz.d.ts +0 -82
- package/dist/mod-C2tOeRkN.d.cts +0 -1
- package/dist/mod-CIbqfZW0.d.ts +0 -104
- package/dist/mod-Dt-G9ZOS.d.cts +0 -102
- package/dist/mod-FZd39qVq.d.cts +0 -1
- package/dist/mod-mXx9V0q5.d.cts +0 -80
- package/dist/nodeinfo/client.test.d.ts +0 -3
- package/dist/nodeinfo/handler.test.d.ts +0 -3
- package/dist/nodeinfo/semver.test.d.ts +0 -3
- package/dist/nodeinfo/types.test.d.ts +0 -3
- package/dist/nodeinfo-Co9lJrWl.cjs +0 -4
- package/dist/nodeinfo-DfycQ8Wf.js +0 -4
- package/dist/runtime/authdocloader.test.d.ts +0 -3
- package/dist/runtime/docloader.test.d.ts +0 -3
- package/dist/runtime/key.test.d.ts +0 -3
- package/dist/runtime/langstr.test.d.ts +0 -3
- package/dist/runtime/link.test.d.ts +0 -3
- package/dist/runtime/multibase/multibase.test.d.ts +0 -3
- package/dist/runtime/url.test.d.ts +0 -3
- package/dist/runtime-C58AJWSv.cjs +0 -4
- package/dist/runtime-DPYEDf-o.js +0 -4
- package/dist/sig/http.test.d.ts +0 -3
- package/dist/sig/key.test.d.ts +0 -3
- package/dist/sig/ld.test.d.ts +0 -3
- package/dist/sig/owner.test.d.ts +0 -3
- package/dist/sig/owner.test.js +0 -52
- package/dist/sig/proof.test.d.ts +0 -3
- package/dist/sig-ByHXzqUi.cjs +0 -4
- package/dist/sig-Cj3tk-ig.js +0 -4
- package/dist/testing/docloader.test.d.ts +0 -3
- package/dist/testing/docloader.test.js +0 -24
- package/dist/testing/mod.js +0 -10
- package/dist/vocab/actor.test.d.ts +0 -3
- package/dist/vocab/lookup.test.d.ts +0 -3
- package/dist/vocab/type.test.d.ts +0 -3
- package/dist/vocab/type.test.js +0 -25
- package/dist/vocab/vocab.test.d.ts +0 -3
- package/dist/vocab-BFy1CS5L.cjs +0 -289
- package/dist/vocab-BPFiQ650.js +0 -253
- package/dist/webfinger/handler.test.d.ts +0 -3
- package/dist/webfinger/lookup.test.d.ts +0 -3
- package/dist/webfinger-BjOEdFPs.cjs +0 -4
- package/dist/webfinger-De_bU0iE.js +0 -4
- package/dist/x/cfworkers.test.d.ts +0 -3
- /package/dist/{mod-1pDWKvUL.d.ts → compat/transformers.test.d.mts} +0 -0
- /package/dist/{mod-g0xFzAP9.d.ts → federation/builder.test.d.mts} +0 -0
|
@@ -1,17 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
import { Activity, CryptographicKey, DataIntegrityProof, Multikey, Object as Object$1, getTypeId, isActor } from "./actor-CEGEmRll.js";
|
|
7
|
-
import { fetchKey, validateCryptoKey } from "./key-ibMO03_0.js";
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
import "urlpattern-polyfill";
|
|
3
|
+
import { d as name, f as version, i as getDocumentLoader } from "./docloader-BoXhusJ1.js";
|
|
4
|
+
import { G as Multikey, Tt as getTypeId, b as DataIntegrityProof, i as isActor, q as Object$1, s as Activity, y as CryptographicKey } from "./actor-BTA45fXF.js";
|
|
5
|
+
import { n as fetchKey, o as validateCryptoKey } from "./key-DK3o0FEH.js";
|
|
8
6
|
import { getLogger } from "@logtape/logtape";
|
|
9
7
|
import { SpanStatusCode, trace } from "@opentelemetry/api";
|
|
10
8
|
import jsonld from "jsonld";
|
|
11
9
|
import { decodeBase64, encodeBase64 } from "byte-encodings/base64";
|
|
12
10
|
import { encodeHex } from "byte-encodings/hex";
|
|
13
11
|
import serialize from "json-canon";
|
|
14
|
-
|
|
15
12
|
//#region src/sig/ld.ts
|
|
16
13
|
const logger$1 = getLogger([
|
|
17
14
|
"fedify",
|
|
@@ -53,11 +50,8 @@ async function createSignature(jsonLd, privateKey, keyId, { contextLoader, creat
|
|
|
53
50
|
creator: keyId.href,
|
|
54
51
|
created: created?.toString() ?? (/* @__PURE__ */ new Date()).toISOString()
|
|
55
52
|
};
|
|
56
|
-
const
|
|
57
|
-
const
|
|
58
|
-
const message = optionsHash + docHash;
|
|
59
|
-
const encoder = new TextEncoder();
|
|
60
|
-
const messageBytes = encoder.encode(message);
|
|
53
|
+
const message = await hashJsonLd(options, contextLoader) + await hashJsonLd(jsonLd, contextLoader);
|
|
54
|
+
const messageBytes = new TextEncoder().encode(message);
|
|
61
55
|
const signature = await crypto.subtle.sign("RSASSA-PKCS1-v1_5", privateKey, messageBytes);
|
|
62
56
|
return {
|
|
63
57
|
...options,
|
|
@@ -79,9 +73,7 @@ async function createSignature(jsonLd, privateKey, keyId, { contextLoader, creat
|
|
|
79
73
|
* @since 1.0.0
|
|
80
74
|
*/
|
|
81
75
|
async function signJsonLd(jsonLd, privateKey, keyId, options) {
|
|
82
|
-
|
|
83
|
-
const tracer = tracerProvider.getTracer(deno_default.name, deno_default.version);
|
|
84
|
-
return await tracer.startActiveSpan("ld_signatures.sign", { attributes: { "ld_signatures.key_id": keyId.href } }, async (span) => {
|
|
76
|
+
return await (options.tracerProvider ?? trace.getTracerProvider()).getTracer(name, version).startActiveSpan("ld_signatures.sign", { attributes: { "ld_signatures.key_id": keyId.href } }, async (span) => {
|
|
85
77
|
try {
|
|
86
78
|
const signature = await createSignature(jsonLd, privateKey, keyId, options);
|
|
87
79
|
if (span.isRecording()) {
|
|
@@ -183,23 +175,21 @@ async function verifySignature(jsonLd, options = {}) {
|
|
|
183
175
|
const encoder = new TextEncoder();
|
|
184
176
|
const message = sigOptsHash + docHash;
|
|
185
177
|
const messageBytes = encoder.encode(message);
|
|
186
|
-
|
|
187
|
-
if (verified) return key;
|
|
178
|
+
if (await crypto.subtle.verify("RSASSA-PKCS1-v1_5", key.publicKey, signature.slice(), messageBytes)) return key;
|
|
188
179
|
if (cached) {
|
|
189
180
|
logger$1.debug("Failed to verify with the cached key {keyId}; signature {signatureValue} is invalid. Retrying with the freshly fetched key...", {
|
|
190
181
|
keyId: sig.creator,
|
|
191
182
|
...sig
|
|
192
183
|
});
|
|
193
|
-
const { key
|
|
184
|
+
const { key } = await fetchKey(new URL(sig.creator), CryptographicKey, {
|
|
194
185
|
...options,
|
|
195
186
|
keyCache: {
|
|
196
187
|
get: () => Promise.resolve(void 0),
|
|
197
|
-
set: async (keyId, key
|
|
188
|
+
set: async (keyId, key) => await options.keyCache?.set(keyId, key)
|
|
198
189
|
}
|
|
199
190
|
});
|
|
200
|
-
if (key
|
|
201
|
-
|
|
202
|
-
return verified$1 ? key$1 : null;
|
|
191
|
+
if (key == null) return null;
|
|
192
|
+
return await crypto.subtle.verify("RSASSA-PKCS1-v1_5", key.publicKey, signature.slice(), messageBytes) ? key : null;
|
|
203
193
|
}
|
|
204
194
|
logger$1.debug("Failed to verify with the fetched key {keyId}; signature {signatureValue} is invalid. Check if the key is correct or if the signed message is correct. The message to sign is:\n{message}", {
|
|
205
195
|
keyId: sig.creator,
|
|
@@ -218,9 +208,7 @@ async function verifySignature(jsonLd, options = {}) {
|
|
|
218
208
|
* @returns `true` if the document is authentic; `false` otherwise.
|
|
219
209
|
*/
|
|
220
210
|
async function verifyJsonLd(jsonLd, options = {}) {
|
|
221
|
-
|
|
222
|
-
const tracer = tracerProvider.getTracer(deno_default.name, deno_default.version);
|
|
223
|
-
return await tracer.startActiveSpan("ld_signatures.verify", async (span) => {
|
|
211
|
+
return await (options.tracerProvider ?? trace.getTracerProvider()).getTracer(name, version).startActiveSpan("ld_signatures.verify", async (span) => {
|
|
224
212
|
try {
|
|
225
213
|
const object = await Object$1.fromJsonLd(jsonLd, options);
|
|
226
214
|
if (object.id != null) span.setAttribute("activitypub.object.id", object.id.href);
|
|
@@ -261,10 +249,8 @@ async function hashJsonLd(jsonLd, contextLoader) {
|
|
|
261
249
|
documentLoader: contextLoader ?? getDocumentLoader()
|
|
262
250
|
});
|
|
263
251
|
const encoder = new TextEncoder();
|
|
264
|
-
|
|
265
|
-
return encodeHex(hash);
|
|
252
|
+
return encodeHex(await crypto.subtle.digest("SHA-256", encoder.encode(canon)));
|
|
266
253
|
}
|
|
267
|
-
|
|
268
254
|
//#endregion
|
|
269
255
|
//#region src/sig/owner.ts
|
|
270
256
|
/**
|
|
@@ -322,9 +308,9 @@ async function getKeyOwner(keyId, options) {
|
|
|
322
308
|
contextLoader,
|
|
323
309
|
tracerProvider
|
|
324
310
|
});
|
|
325
|
-
} catch (e
|
|
326
|
-
if (e
|
|
327
|
-
throw e
|
|
311
|
+
} catch (e) {
|
|
312
|
+
if (e instanceof TypeError) return null;
|
|
313
|
+
throw e;
|
|
328
314
|
}
|
|
329
315
|
}
|
|
330
316
|
}
|
|
@@ -342,7 +328,6 @@ async function getKeyOwner(keyId, options) {
|
|
|
342
328
|
for (const kid of owner.publicKeyIds) if (kid.href === keyId.href) return owner;
|
|
343
329
|
return null;
|
|
344
330
|
}
|
|
345
|
-
|
|
346
331
|
//#endregion
|
|
347
332
|
//#region src/sig/proof.ts
|
|
348
333
|
const logger = getLogger([
|
|
@@ -360,29 +345,27 @@ const logger = getLogger([
|
|
|
360
345
|
* @throws {TypeError} If the private key is invalid or unsupported.
|
|
361
346
|
* @since 0.10.0
|
|
362
347
|
*/
|
|
363
|
-
async function createProof(object, privateKey, keyId, { contextLoader, context
|
|
348
|
+
async function createProof(object, privateKey, keyId, { contextLoader, context, created } = {}) {
|
|
364
349
|
validateCryptoKey(privateKey, "private");
|
|
365
350
|
if (privateKey.algorithm.name !== "Ed25519") throw new TypeError("Unsupported algorithm: " + privateKey.algorithm.name);
|
|
366
|
-
const
|
|
367
|
-
const compactMsg = await objectWithoutProofs.toJsonLd({
|
|
351
|
+
const compactMsg = await object.clone({ proofs: [] }).toJsonLd({
|
|
368
352
|
format: "compact",
|
|
369
353
|
contextLoader,
|
|
370
|
-
context
|
|
354
|
+
context
|
|
371
355
|
});
|
|
372
356
|
const msgCanon = serialize(compactMsg);
|
|
373
357
|
const encoder = new TextEncoder();
|
|
374
358
|
const msgBytes = encoder.encode(msgCanon);
|
|
375
359
|
const msgDigest = await crypto.subtle.digest("SHA-256", msgBytes);
|
|
376
360
|
created ??= Temporal.Now.instant();
|
|
377
|
-
const
|
|
361
|
+
const proofCanon = serialize({
|
|
378
362
|
"@context": compactMsg["@context"],
|
|
379
363
|
type: "DataIntegrityProof",
|
|
380
364
|
cryptosuite: "eddsa-jcs-2022",
|
|
381
365
|
verificationMethod: keyId.href,
|
|
382
366
|
proofPurpose: "assertionMethod",
|
|
383
367
|
created: created.toString()
|
|
384
|
-
};
|
|
385
|
-
const proofCanon = serialize(proofConfig);
|
|
368
|
+
});
|
|
386
369
|
const proofBytes = encoder.encode(proofCanon);
|
|
387
370
|
const proofDigest = await crypto.subtle.digest("SHA-256", proofBytes);
|
|
388
371
|
const digest = new Uint8Array(proofDigest.byteLength + msgDigest.byteLength);
|
|
@@ -408,13 +391,11 @@ async function createProof(object, privateKey, keyId, { contextLoader, context:
|
|
|
408
391
|
* @since 0.10.0
|
|
409
392
|
*/
|
|
410
393
|
async function signObject(object, privateKey, keyId, options = {}) {
|
|
411
|
-
|
|
412
|
-
const tracer = tracerProvider.getTracer(deno_default.name, deno_default.version);
|
|
413
|
-
return await tracer.startActiveSpan("object_integrity_proofs.sign", { attributes: { "activitypub.object.type": getTypeId(object).href } }, async (span) => {
|
|
394
|
+
return await (options.tracerProvider ?? trace.getTracerProvider()).getTracer(name, version).startActiveSpan("object_integrity_proofs.sign", { attributes: { "activitypub.object.type": getTypeId(object).href } }, async (span) => {
|
|
414
395
|
try {
|
|
415
396
|
if (object.id != null) span.setAttribute("activitypub.object.id", object.id.href);
|
|
416
397
|
const existingProofs = [];
|
|
417
|
-
for await (const proof
|
|
398
|
+
for await (const proof of object.getProofs(options)) existingProofs.push(proof);
|
|
418
399
|
const proof = await createProof(object, privateKey, keyId, options);
|
|
419
400
|
if (span.isRecording()) {
|
|
420
401
|
if (proof.cryptosuite != null) span.setAttribute("object_integrity_proofs.cryptosuite", proof.cryptosuite);
|
|
@@ -444,9 +425,7 @@ async function signObject(object, privateKey, keyId, options = {}) {
|
|
|
444
425
|
* @since 0.10.0
|
|
445
426
|
*/
|
|
446
427
|
async function verifyProof(jsonLd, proof, options = {}) {
|
|
447
|
-
|
|
448
|
-
const tracer = tracerProvider.getTracer(deno_default.name, deno_default.version);
|
|
449
|
-
return await tracer.startActiveSpan("object_integrity_proofs.verify", async (span) => {
|
|
428
|
+
return await (options.tracerProvider ?? trace.getTracerProvider()).getTracer(name, version).startActiveSpan("object_integrity_proofs.verify", async (span) => {
|
|
450
429
|
if (span.isRecording()) {
|
|
451
430
|
if (proof.cryptosuite != null) span.setAttribute("object_integrity_proofs.cryptosuite", proof.cryptosuite);
|
|
452
431
|
if (proof.verificationMethodId != null) span.setAttribute("object_integrity_proofs.key_id", proof.verificationMethodId.href);
|
|
@@ -470,15 +449,14 @@ async function verifyProof(jsonLd, proof, options = {}) {
|
|
|
470
449
|
async function verifyProofInternal(jsonLd, proof, options) {
|
|
471
450
|
if (typeof jsonLd !== "object" || proof.cryptosuite !== "eddsa-jcs-2022" || proof.verificationMethodId == null || proof.proofPurpose !== "assertionMethod" || proof.proofValue == null || proof.created == null) return null;
|
|
472
451
|
const publicKeyPromise = fetchKey(proof.verificationMethodId, Multikey, options);
|
|
473
|
-
const
|
|
452
|
+
const proofCanon = serialize({
|
|
474
453
|
"@context": jsonLd["@context"],
|
|
475
454
|
type: "DataIntegrityProof",
|
|
476
455
|
cryptosuite: proof.cryptosuite,
|
|
477
456
|
verificationMethod: proof.verificationMethodId.href,
|
|
478
457
|
proofPurpose: proof.proofPurpose,
|
|
479
458
|
created: proof.created.toString()
|
|
480
|
-
};
|
|
481
|
-
const proofCanon = serialize(proofConfig);
|
|
459
|
+
});
|
|
482
460
|
const encoder = new TextEncoder();
|
|
483
461
|
const proofBytes = encoder.encode(proofCanon);
|
|
484
462
|
const proofDigest = await crypto.subtle.digest("SHA-256", proofBytes);
|
|
@@ -529,8 +507,7 @@ async function verifyProofInternal(jsonLd, proof, options) {
|
|
|
529
507
|
});
|
|
530
508
|
return null;
|
|
531
509
|
}
|
|
532
|
-
|
|
533
|
-
if (!verified) {
|
|
510
|
+
if (!await crypto.subtle.verify("Ed25519", publicKey.publicKey, proof.proofValue.slice(), digest)) {
|
|
534
511
|
if (fetchedKey.cached) {
|
|
535
512
|
logger.debug("Failed to verify the proof with the cached key {keyId}; retrying with the freshly fetched key...", {
|
|
536
513
|
keyId: proof.verificationMethodId.href,
|
|
@@ -567,7 +544,7 @@ async function verifyProofInternal(jsonLd, proof, options) {
|
|
|
567
544
|
* @since 0.10.0
|
|
568
545
|
*/
|
|
569
546
|
async function verifyObject(cls, jsonLd, options = {}) {
|
|
570
|
-
const logger
|
|
547
|
+
const logger = getLogger([
|
|
571
548
|
"fedify",
|
|
572
549
|
"sig",
|
|
573
550
|
"proof"
|
|
@@ -579,17 +556,16 @@ async function verifyObject(cls, jsonLd, options = {}) {
|
|
|
579
556
|
const key = await verifyProof(jsonLd, proof, options);
|
|
580
557
|
if (key === null) return null;
|
|
581
558
|
if (key.controllerId == null) {
|
|
582
|
-
logger
|
|
559
|
+
logger.debug("Key {keyId} does not have a controller.", { keyId: key.id?.href });
|
|
583
560
|
continue;
|
|
584
561
|
}
|
|
585
562
|
attributions.delete(key.controllerId.href);
|
|
586
563
|
}
|
|
587
564
|
if (attributions.size > 0) {
|
|
588
|
-
logger
|
|
565
|
+
logger.debug("Some attributions are not authenticated by the proofs: {attributions}.", { attributions: [...attributions] });
|
|
589
566
|
return null;
|
|
590
567
|
}
|
|
591
568
|
return object;
|
|
592
569
|
}
|
|
593
|
-
|
|
594
570
|
//#endregion
|
|
595
|
-
export {
|
|
571
|
+
export { doesActorOwnKey as a, createSignature as c, signJsonLd as d, verifyJsonLd as f, verifyProof as i, detachSignature as l, signObject as n, getKeyOwner as o, verifySignature as p, verifyObject as r, attachSignature as s, createProof as t, hasSignature as u };
|