@fedify/fedify 2.4.0-pr.936.41 → 2.5.0-dev.2271
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/README.md +50 -39
- package/dist/{assert-CJ1KXcvv.mjs → assert-D1Eafmd_.mjs} +1 -1
- package/dist/{assert_equals-BV7oLMxm.mjs → assert_equals-Z6IcEbWU.mjs} +2 -28
- package/dist/assert_exists-cffSpJ7X.mjs +28 -0
- package/dist/assert_false-CPdRnc3E.mjs +23 -0
- package/dist/assert_greater_or_equal-BlafOF4-.mjs +31 -0
- package/dist/{assert_instance_of-Q9KTBnrf.mjs → assert_instance_of-mrXWWNY-.mjs} +1 -1
- package/dist/{assert_not_equals-EPJPoxuf.mjs → assert_not_equals-CpPK2t89.mjs} +2 -1
- package/dist/assert_rejects-CTptdYck.mjs +39 -0
- package/dist/{assert_strict_equals-Ec20AUwa.mjs → assert_strict_equals-CYvBmkpC.mjs} +2 -1
- package/dist/{assert_throws-NiFfqbnH.mjs → assert_throws-BYITOvPO.mjs} +2 -1
- package/dist/assertion_error-B-cx0fFA.mjs +31 -0
- package/dist/audience-CHQ-FlLD.mjs +95 -0
- package/dist/{builder-DonuxRl_.mjs → builder-Bda6LK7A.mjs} +169 -14
- package/dist/{circuit-breaker-CBGyz5F7.mjs → circuit-breaker-XJ53md4S.mjs} +224 -17
- package/dist/circuit-breaker-test-utils-DW6YC_Pe.mjs +14 -0
- package/dist/{client-CjF5IYQS.mjs → client-CEnNz8O7.mjs} +144 -8
- package/dist/{codec-BBga-FWI.mjs → codec-C6rTrpIp.mjs} +26 -3
- package/dist/{collection-BIhlldqK.mjs → collection-CnnP1UAv.mjs} +1 -1
- package/dist/compat/mod.cjs +1 -1
- package/dist/compat/mod.d.cts +1 -1
- package/dist/compat/mod.d.ts +1 -1
- package/dist/compat/mod.js +1 -1
- package/dist/compat/outgoing-jsonld.test.mjs +71 -3
- package/dist/compat/public-audience.test.mjs +14 -5
- package/dist/compat/secured-document.test.d.mts +2 -0
- package/dist/compat/secured-document.test.mjs +58 -0
- package/dist/compat/transformers.test.mjs +5 -5
- package/dist/compound-proof-B-9mXxFW.mjs +989 -0
- package/dist/{context-Zii1f5xS.d.ts → context-7NyiqIcg.d.ts} +1600 -25
- package/dist/{context-BJXxPElm.mjs → context-8Tu9kea0.mjs} +21 -63
- package/dist/{context-lxX6I7as.d.cts → context-tsYPJ2Ew.d.cts} +1600 -25
- package/dist/{deno-BHzKn9Ig.mjs → deno-oR5aJKpU.mjs} +1 -1
- package/dist/dist-DJQM4u7i.mjs +189 -0
- package/dist/docloader-DBoYbvYW.mjs +87 -0
- package/dist/{esm-yYQfPhIY.mjs → esm-BHXXx4Wx.mjs} +13 -6
- package/dist/federation/audience.test.d.mts +2 -0
- package/dist/federation/audience.test.mjs +130 -0
- package/dist/federation/builder.test.mjs +54 -5
- package/dist/federation/circuit-breaker.test.mjs +838 -7
- package/dist/federation/collection.test.mjs +3 -3
- package/dist/federation/compound-fanout.test.d.mts +2 -0
- package/dist/federation/compound-fanout.test.mjs +228 -0
- package/dist/federation/handler-compound-proof.test.d.mts +2 -0
- package/dist/federation/handler-compound-proof.test.mjs +384 -0
- package/dist/federation/handler.test.mjs +385 -15
- package/dist/federation/hashlink-media.test.d.mts +2 -0
- package/dist/federation/hashlink-media.test.mjs +422 -0
- package/dist/federation/idempotency.test.mjs +6 -6
- package/dist/federation/inbox-report.test.d.mts +2 -0
- package/dist/federation/inbox-report.test.mjs +475 -0
- package/dist/federation/inbox.test.mjs +3 -3
- package/dist/federation/keycache.test.mjs +215 -14
- package/dist/federation/kv.test.mjs +3 -3
- package/dist/federation/metrics.test.mjs +5 -5
- package/dist/federation/middleware.test.mjs +967 -35
- package/dist/federation/mod.cjs +18 -261
- package/dist/federation/mod.d.cts +5 -5
- package/dist/federation/mod.d.ts +5 -5
- package/dist/federation/mod.js +279 -1
- package/dist/federation/mq.test.mjs +123 -47
- package/dist/federation/negotiation.test.mjs +4 -4
- package/dist/federation/outgoing-proof.test.d.mts +2 -0
- package/dist/federation/outgoing-proof.test.mjs +931 -0
- package/dist/federation/portable-actor.test.d.mts +2 -0
- package/dist/federation/portable-actor.test.mjs +496 -0
- package/dist/federation/portable-chain.test.d.mts +2 -0
- package/dist/federation/portable-chain.test.mjs +370 -0
- package/dist/federation/portable-collection.test.d.mts +2 -0
- package/dist/federation/portable-collection.test.mjs +832 -0
- package/dist/federation/portable-delivery.test.d.mts +2 -0
- package/dist/federation/portable-delivery.test.mjs +746 -0
- package/dist/federation/portable-gateway-keys.test.d.mts +2 -0
- package/dist/federation/portable-gateway-keys.test.mjs +686 -0
- package/dist/federation/portable-inbox.test.d.mts +2 -0
- package/dist/federation/portable-inbox.test.mjs +1535 -0
- package/dist/federation/portable-parse-uri.test.d.mts +2 -0
- package/dist/federation/portable-parse-uri.test.mjs +348 -0
- package/dist/federation/portable-route-activity.test.d.mts +2 -0
- package/dist/federation/portable-route-activity.test.mjs +259 -0
- package/dist/federation/portable.test.d.mts +2 -0
- package/dist/federation/portable.test.mjs +1072 -0
- package/dist/federation/retry.test.mjs +4 -3
- package/dist/federation/router.test.mjs +9 -159
- package/dist/federation/send.test.mjs +245 -27
- package/dist/federation/tasks/codec.test.mjs +4 -4
- package/dist/federation/tasks/enqueue.test.mjs +42 -4
- package/dist/federation/tasks/tasks.test.mjs +7 -6
- package/dist/federation/temporal.test.mjs +4 -4
- package/dist/federation/webfinger.test.mjs +275 -12
- package/dist/{middleware-FrSMAYEx.cjs → federation-CkZiAcWY.cjs} +8640 -3722
- package/dist/http-B5JT115n.cjs +10630 -0
- package/dist/http-DydWCB7R.js +6527 -0
- package/dist/{http-CPVMUgsW.mjs → http-siciWkmx.mjs} +397 -168
- package/dist/key-BspPiXqn.mjs +951 -0
- package/dist/key-C1nv7_jD.d.ts +1125 -0
- package/dist/key-DYxuyd-s.d.cts +1125 -0
- package/dist/key-owner-evidence-APB6NpSk.mjs +108 -0
- package/dist/keycache-Da8A8mZa.mjs +200 -0
- package/dist/{kv-D6hNiMTK.d.ts → kv-B2mzK5tl.d.cts} +3 -2
- package/dist/{kv-gJ8LYbxX.d.cts → kv-B2mzK5tl.d.ts} +3 -2
- package/dist/kv-DBRWVx3Q.mjs +104 -0
- package/dist/{kv-cache-KyGqJqSp.mjs → kv-cache-BF1hnW65.mjs} +1 -1
- package/dist/{kv-cache-5bnX3-Jq.js → kv-cache-CTQr1tbn.js} +54 -16
- package/dist/{kv-cache-DQ29C4XL.cjs → kv-cache-DCac1nEU.cjs} +55 -19
- package/dist/{ld-Cj9F_5AP.mjs → ld-CzaP-hJl.mjs} +44 -12
- package/dist/map-local-context-conflict-DOYEEJ3u.mjs +204 -0
- package/dist/map-local-create-note-B0SeXJms.mjs +214 -0
- package/dist/{metrics-DMk-nTxI.mjs → metrics-CYg9yxBL.mjs} +3 -2
- package/dist/metrics-DVKYY6K1.d.cts +36 -0
- package/dist/metrics-DoRtI0qU.d.ts +36 -0
- package/dist/{middleware-Y-kpsp6S.js → middleware-CsDDXKuL.js} +5493 -1103
- package/dist/{middleware-CvwTUgnP.mjs → middleware-D7_LO-Vs.mjs} +3157 -272
- package/dist/{middleware-CEctxBN6.mjs → middleware-DWjrfpcz.mjs} +1 -1
- package/dist/{mod-gOlPDuT8.d.cts → mod-BojP2Bw3.d.cts} +1 -1
- package/dist/mod-CavhAgLw.d.cts +320 -0
- package/dist/mod-CtpF2BU5.d.ts +320 -0
- package/dist/{mod-BtEaIEcD.d.cts → mod-DEZXwV6J.d.ts} +10 -4
- package/dist/{mod-UMmveiO0.d.ts → mod-Dw-nPxQh.d.cts} +10 -4
- package/dist/{mod-DLc2Ot6f.d.ts → mod-Xj5P4s4d.d.ts} +1 -1
- package/dist/mod.cjs +40 -39
- package/dist/mod.d.cts +10 -11
- package/dist/mod.d.ts +10 -11
- package/dist/mod.js +9 -9
- package/dist/{mq-llHKivST.mjs → mq-Dm1Wmtm-.mjs} +6 -0
- package/dist/nodeinfo/client.test.mjs +139 -4
- package/dist/nodeinfo/handler.test.mjs +5 -5
- package/dist/nodeinfo/mod.cjs +1 -1
- package/dist/nodeinfo/mod.d.cts +1 -1
- package/dist/nodeinfo/mod.d.ts +1 -1
- package/dist/nodeinfo/mod.js +1 -1
- package/dist/nodeinfo/types.test.mjs +4 -4
- package/dist/otel/exporter.test.mjs +3 -3
- package/dist/otel/mod.cjs +0 -1
- package/dist/otel/mod.d.cts +1 -1
- package/dist/otel/mod.d.ts +1 -1
- package/dist/{outgoing-jsonld-URuqsICz.mjs → outgoing-jsonld-4IJqPYos.mjs} +12 -10
- package/dist/{owner-DEvZuyOE.d.cts → owner-BF0L9cMt.d.cts} +11 -0
- package/dist/{owner-CnngXDNJ.d.ts → owner-BSzr5-I8.d.ts} +11 -0
- package/dist/owner-DYgfTFHy.mjs +267 -0
- package/dist/portable-collection-BpsVsRov.js +670 -0
- package/dist/portable-collection-C74P1vtC.mjs +418 -0
- package/dist/portable-collection-DZd2bm7M.cjs +686 -0
- package/dist/portable-key-BIMLrAP4.mjs +549 -0
- package/dist/portable-key-id-Ca30-hOa.mjs +248 -0
- package/dist/proof-Dxy6ByqI.mjs +1299 -0
- package/dist/{public-audience-Cr5MsnMq.mjs → public-audience--klBIOk1.mjs} +15 -10
- package/dist/router-u5O5KCQr.mjs +156 -0
- package/dist/runtime/mod.cjs +1 -1
- package/dist/runtime/mod.js +1 -1
- package/dist/secured-document-CxzZZ9nL.mjs +35 -0
- package/dist/send-C4dDpAxm.mjs +495 -0
- package/dist/sig/accept.test.mjs +1 -1
- package/dist/sig/compound-proof-discovery.test.d.mts +2 -0
- package/dist/sig/compound-proof-discovery.test.mjs +331 -0
- package/dist/sig/compound-proof-producer.test.d.mts +2 -0
- package/dist/sig/compound-proof-producer.test.mjs +107 -0
- package/dist/sig/compound-proof-verification.test.d.mts +2 -0
- package/dist/sig/compound-proof-verification.test.mjs +833 -0
- package/dist/sig/compound-proof.test.d.mts +2 -0
- package/dist/sig/compound-proof.test.mjs +411 -0
- package/dist/sig/http.test.mjs +702 -31
- package/dist/sig/key-owner-evidence.test.d.mts +2 -0
- package/dist/sig/key-owner-evidence.test.mjs +100 -0
- package/dist/sig/key.test.mjs +220 -8
- package/dist/sig/ld.test.mjs +65 -7
- package/dist/sig/mitra-receive-interop.test.d.mts +2 -0
- package/dist/sig/mitra-receive-interop.test.mjs +260 -0
- package/dist/sig/mitra-send-interop.test.d.mts +2 -0
- package/dist/sig/mitra-send-interop.test.mjs +461 -0
- package/dist/sig/mod.cjs +18 -16
- package/dist/sig/mod.d.cts +4 -4
- package/dist/sig/mod.d.ts +4 -4
- package/dist/sig/mod.js +3 -3
- package/dist/sig/owner.test.mjs +108 -9
- package/dist/sig/portable-collection.test.d.mts +2 -0
- package/dist/sig/portable-collection.test.mjs +697 -0
- package/dist/sig/portable-interop.test.d.mts +2 -0
- package/dist/sig/portable-interop.test.mjs +156 -0
- package/dist/sig/portable-key-id.test.d.mts +2 -0
- package/dist/sig/portable-key-id.test.mjs +67 -0
- package/dist/sig/portable-key.test.d.mts +2 -0
- package/dist/sig/portable-key.test.mjs +1439 -0
- package/dist/sig/proof.test.mjs +1753 -16
- package/dist/sig/tootik-request-interop.test.d.mts +2 -0
- package/dist/sig/tootik-request-interop.test.mjs +190 -0
- package/dist/sig/tootik-send-interop.test.d.mts +2 -0
- package/dist/sig/tootik-send-interop.test.mjs +331 -0
- package/dist/sig/verification.test.d.mts +2 -0
- package/dist/sig/verification.test.mjs +310 -0
- package/dist/std__assert-DvMDRPes.mjs +8 -0
- package/dist/{testing-CO7ftO8A.mjs → tasks-IG3pHfvZ.mjs} +2 -2
- package/dist/{temporal-fsXO5IvD.mjs → temporal-D0KJI4NF.mjs} +3 -3
- package/dist/testing/context.test.d.mts +2 -0
- package/dist/testing/context.test.mjs +19 -0
- package/dist/testing/kv.test.d.mts +2 -0
- package/dist/testing/kv.test.mjs +101 -0
- package/dist/testing/mod.d.mts +1617 -48
- package/dist/testing/mod.mjs +6 -3
- package/dist/testing-t8xDeJZ5.mjs +8 -0
- package/dist/{transformers-DGwl-hD1.cjs → transformers-BalCrSsr.cjs} +0 -1
- package/dist/{types-DC1pNgJA.js → types-_S2_MeLF.js} +144 -8
- package/dist/{types-CPym83zc.cjs → types-poIao40f.cjs} +160 -7
- package/dist/utils/docloader.test.mjs +530 -8
- package/dist/utils/kv-cache.test.mjs +2 -2
- package/dist/utils/mod.cjs +1 -1
- package/dist/utils/mod.d.cts +1 -1
- package/dist/utils/mod.d.ts +1 -1
- package/dist/utils/mod.js +1 -1
- package/dist/verification-C3954hQh.mjs +5 -0
- package/dist/verification-Dpfcw8ml.mjs +105 -0
- package/dist/vocab/cjs.test.mjs +1 -1
- package/package.json +8 -8
- package/dist/assert_rejects-EgstcQy5.mjs +0 -82
- package/dist/docloader-e1khNUKy.mjs +0 -49
- package/dist/http-CsmQ-BQ4.js +0 -2483
- package/dist/http-VyDTd4G3.d.cts +0 -553
- package/dist/http-hlIjmewS.cjs +0 -2694
- package/dist/http-lf8Hsd91.d.ts +0 -553
- package/dist/key-DfPsX8hv.mjs +0 -453
- package/dist/keycache-_DHqz5z_.mjs +0 -97
- package/dist/metrics-CoUJLQhZ.d.cts +0 -276
- package/dist/metrics-Dc4jR-IC.d.ts +0 -276
- package/dist/mod-B0hW12_O.d.cts +0 -307
- package/dist/mod-COIAjwRS.d.ts +0 -307
- package/dist/owner-Br9YYzn_.mjs +0 -120
- package/dist/proof-B4ngoaNQ.mjs +0 -316
- package/dist/proof-B6E0XUXJ.js +0 -1415
- package/dist/proof-NN4xCQGL.cjs +0 -1562
- package/dist/send-CxHKUNzv.mjs +0 -239
- package/dist/std__assert-B2NnY9bq.mjs +0 -79
- package/dist/temporal-polyfill-BCdTHexd.cjs +0 -3565
- /package/dist/{accept-8PiolDP7.mjs → accept-CPVqki78.mjs} +0 -0
- /package/dist/{activity-listener-BtTSxZWA.mjs → activity-listener-C-BSbKI7.mjs} +0 -0
- /package/dist/{client-CAM_bQXx.d.cts → client-D-XP_Ccb.d.cts} +0 -0
- /package/dist/{client-CSddvgWN.d.ts → client-D-XP_Ccb.d.ts} +0 -0
- /package/dist/{keys-Dbyd7bhl.mjs → keys-DIJNHW-Y.mjs} +0 -0
- /package/dist/{kv-CXBAok3k.mjs → kv-DCHkaJ9-.mjs} +0 -0
- /package/dist/{negotiation-RuwrPFqi.mjs → negotiation-CCocWT_N.mjs} +0 -0
- /package/dist/{retry-DgFqeS5k.mjs → retry-zX5xw5e0.mjs} +0 -0
- /package/dist/{chunk-D5IdezsZ.js → rolldown-runtime-BC-Eo5Mj.js} +0 -0
- /package/dist/{chunk-Czpeue4M.cjs → rolldown-runtime-Dmm3t92W.cjs} +0 -0
- /package/dist/{transformers-DXze6FUB.js → transformers-DAtXl_Kc.js} +0 -0
- /package/dist/{types-CrtdVuDP.mjs → types-DE_LV1JB.mjs} +0 -0
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import "temporal-polyfill";
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
|
-
import { n as
|
|
5
|
-
import { n as
|
|
6
|
-
import { n as
|
|
4
|
+
import { a as verificationObservation, i as triedKey, n as observeCheck, t as observeAttempt } from "./verification-Dpfcw8ml.mjs";
|
|
5
|
+
import { n as version, t as name } from "./deno-oR5aJKpU.mjs";
|
|
6
|
+
import { n as getDurationMs, r as getFederationMetrics, s as measureSignatureKeyFetch } from "./metrics-CYg9yxBL.mjs";
|
|
7
|
+
import { c as validateCryptoKey, i as fetchKey, t as bypassKeyCacheReads } from "./key-BspPiXqn.mjs";
|
|
7
8
|
import { getLogger } from "@logtape/logtape";
|
|
8
9
|
import { Activity, CryptographicKey, Object as Object$1, getTypeId } from "@fedify/vocab";
|
|
9
10
|
import { SpanStatusCode, trace } from "@opentelemetry/api";
|
|
@@ -25,7 +26,7 @@ const localContext = [
|
|
|
25
26
|
];
|
|
26
27
|
const localContextUrls = new Set(localContext);
|
|
27
28
|
const builtInContextLoader = getDocumentLoader();
|
|
28
|
-
const disallowedJsonLdKeywords = new Set([
|
|
29
|
+
const disallowedJsonLdKeywords = /* @__PURE__ */ new Set([
|
|
29
30
|
"@graph",
|
|
30
31
|
"@included",
|
|
31
32
|
"@reverse"
|
|
@@ -206,7 +207,7 @@ function normalizeContextReference(reference, baseUrl) {
|
|
|
206
207
|
/** @internal */
|
|
207
208
|
function isInvalidUrlTypeError(error) {
|
|
208
209
|
const code = error.code;
|
|
209
|
-
return error instanceof TypeError && (code === "ERR_INVALID_URL" || /^Invalid URL(?::|$)/.test(error.message) || / cannot be parsed as a URL\.?$/.test(error.message));
|
|
210
|
+
return error instanceof TypeError && (code === "ERR_INVALID_URL" || error.message === "Invalid URL string." || /^Invalid URL(?::|$)/.test(error.message) || / cannot be parsed as a URL\.?$/.test(error.message));
|
|
210
211
|
}
|
|
211
212
|
async function applyGraphAliasContext(state, context, documentLoader, remoteContextCache, baseUrl = null, processingContexts = /* @__PURE__ */ new Set()) {
|
|
212
213
|
if (context === null) return createGraphAliasContextState();
|
|
@@ -450,6 +451,13 @@ function detachSignature(jsonLd) {
|
|
|
450
451
|
*/
|
|
451
452
|
async function verifySignature(jsonLd, options = {}) {
|
|
452
453
|
if (!hasSignature(jsonLd)) return null;
|
|
454
|
+
if (options[verificationObservation]?.attempt != null && options[verificationObservation]?.check == null) {
|
|
455
|
+
const declared = getLdSignatureObject(jsonLd)?.creator;
|
|
456
|
+
return await observeCheck(options, { mechanism: "linkedData" }, typeof declared === "string" ? declared : null, (observation) => verifySignature(jsonLd, {
|
|
457
|
+
...options,
|
|
458
|
+
[verificationObservation]: observation
|
|
459
|
+
}));
|
|
460
|
+
}
|
|
453
461
|
const sig = jsonLd.signature;
|
|
454
462
|
let signature;
|
|
455
463
|
try {
|
|
@@ -495,6 +503,7 @@ async function verifySignature(jsonLd, options = {}) {
|
|
|
495
503
|
const encoder = new TextEncoder();
|
|
496
504
|
const message = sigOptsHash + docHash;
|
|
497
505
|
const messageBytes = encoder.encode(message);
|
|
506
|
+
triedKey(options, key);
|
|
498
507
|
if (await crypto.subtle.verify("RSASSA-PKCS1-v1_5", key.publicKey, signature.slice(), messageBytes)) return key;
|
|
499
508
|
if (cached) {
|
|
500
509
|
logger.debug("Failed to verify with the cached key {keyId}; signature {signatureValue} is invalid. Retrying with the freshly fetched key...", {
|
|
@@ -503,12 +512,10 @@ async function verifySignature(jsonLd, options = {}) {
|
|
|
503
512
|
});
|
|
504
513
|
const { key } = await measureSignatureKeyFetch(options.meterProvider, "linked_data", () => fetchKey(new URL(sig.creator), CryptographicKey, {
|
|
505
514
|
...options,
|
|
506
|
-
keyCache:
|
|
507
|
-
get: () => Promise.resolve(void 0),
|
|
508
|
-
set: async (keyId, key) => await options.keyCache?.set(keyId, key)
|
|
509
|
-
}
|
|
515
|
+
keyCache: bypassKeyCacheReads(options.keyCache)
|
|
510
516
|
}));
|
|
511
517
|
if (key == null) return null;
|
|
518
|
+
triedKey(options, key);
|
|
512
519
|
return await crypto.subtle.verify("RSASSA-PKCS1-v1_5", key.publicKey, signature.slice(), messageBytes) ? key : null;
|
|
513
520
|
}
|
|
514
521
|
logger.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}", {
|
|
@@ -525,7 +532,7 @@ async function verifySignature(jsonLd, options = {}) {
|
|
|
525
532
|
* only from external documents and are dropped from the metric attribute to
|
|
526
533
|
* avoid attacker-controlled cardinality.
|
|
527
534
|
*/
|
|
528
|
-
const LD_KNOWN_SIGNATURE_TYPES = new Set(["RsaSignature2017"]);
|
|
535
|
+
const LD_KNOWN_SIGNATURE_TYPES = /* @__PURE__ */ new Set(["RsaSignature2017"]);
|
|
529
536
|
/**
|
|
530
537
|
* Reports only whether a `signature` key is present on the document, with
|
|
531
538
|
* no shape check on its value. This is intentionally looser than
|
|
@@ -562,6 +569,14 @@ async function verifyCompactJsonLd(jsonLd, options = {}) {
|
|
|
562
569
|
return await verifyJsonLdInternal(jsonLd, options, false);
|
|
563
570
|
}
|
|
564
571
|
async function verifyJsonLdInternal(jsonLd, options, compact) {
|
|
572
|
+
if (options[verificationObservation]?.attempt == null) return await observeAttempt({
|
|
573
|
+
...options,
|
|
574
|
+
[verificationObservation]: options[verificationObservation] ?? { attempts: [] }
|
|
575
|
+
}, "linkedData", (observation) => verifyJsonLdInternal(jsonLd, {
|
|
576
|
+
...options,
|
|
577
|
+
[verificationObservation]: observation
|
|
578
|
+
}, compact), (value) => value);
|
|
579
|
+
const observation = options[verificationObservation];
|
|
565
580
|
return await (options.tracerProvider ?? trace.getTracerProvider()).getTracer(name, version).startActiveSpan("ld_signatures.verify", async (span) => {
|
|
566
581
|
const start = performance.now();
|
|
567
582
|
let verified = false;
|
|
@@ -574,6 +589,8 @@ async function verifyJsonLdInternal(jsonLd, options, compact) {
|
|
|
574
589
|
} : options;
|
|
575
590
|
const compacted = compact ? hasSignature(jsonLd) ? await compactJsonLd(jsonLd, options.contextLoader) : jsonLd : jsonLd;
|
|
576
591
|
const object = await Object$1.fromJsonLd(compacted, verificationOptions);
|
|
592
|
+
observation?.parsedObject?.(object);
|
|
593
|
+
if (observation?.subject != null) observation.subject.id = object.id == null ? null : new URL(object.id.href);
|
|
577
594
|
if (object.id != null) span.setAttribute("activitypub.object.id", object.id.href);
|
|
578
595
|
span.setAttribute("activitypub.object.type", getTypeId(object).href);
|
|
579
596
|
const sig = getLdSignatureObject(jsonLd);
|
|
@@ -588,13 +605,21 @@ async function verifyJsonLdInternal(jsonLd, options, compact) {
|
|
|
588
605
|
const attributions = new Set(object.attributionIds.map((uri) => uri.href));
|
|
589
606
|
if (object instanceof Activity) for (const uri of object.actorIds) attributions.add(uri.href);
|
|
590
607
|
const key = await verifySignature(compacted, verificationOptions);
|
|
591
|
-
if (key == null)
|
|
608
|
+
if (key == null) {
|
|
609
|
+
if (observation?.attempt != null && !hasLdSignatureProperty(jsonLd)) observation.attempt.reason = { type: "noSignature" };
|
|
610
|
+
return false;
|
|
611
|
+
}
|
|
592
612
|
if (key.ownerId == null) {
|
|
613
|
+
if (observation?.attempt != null) observation.attempt.reason = { type: "missingOwner" };
|
|
593
614
|
logger.debug("Key {keyId} has no owner.", { keyId: key.id?.href });
|
|
594
615
|
return false;
|
|
595
616
|
}
|
|
596
617
|
attributions.delete(key.ownerId.href);
|
|
597
618
|
if (attributions.size > 0) {
|
|
619
|
+
if (observation?.attempt != null) observation.attempt.reason = {
|
|
620
|
+
type: "uncoveredAttribution",
|
|
621
|
+
attributionIds: [...attributions].map((id) => new URL(id))
|
|
622
|
+
};
|
|
598
623
|
logger.debug("Some attributions are not authenticated by the Linked Data Signatures: {attributions}.", { attributions: [...attributions] });
|
|
599
624
|
return false;
|
|
600
625
|
}
|
|
@@ -608,8 +633,15 @@ async function verifyJsonLdInternal(jsonLd, options, compact) {
|
|
|
608
633
|
});
|
|
609
634
|
throw error;
|
|
610
635
|
} finally {
|
|
636
|
+
if (observation?.attempt?.reason != null) {
|
|
637
|
+
span.setAttribute("activitypub.verification.failure_reason", observation.attempt.reason.type);
|
|
638
|
+
span.setStatus({ code: SpanStatusCode.ERROR });
|
|
639
|
+
}
|
|
611
640
|
const classified = threw ? "error" : verified ? "verified" : hasLdSignatureProperty(jsonLd) ? "rejected" : "missing";
|
|
612
|
-
getFederationMetrics(options.meterProvider).recordSignatureVerificationDuration(getDurationMs(start), "linked_data", classified, {
|
|
641
|
+
getFederationMetrics(options.meterProvider).recordSignatureVerificationDuration(getDurationMs(start), "linked_data", classified, {
|
|
642
|
+
ldType: signatureType,
|
|
643
|
+
verificationFailureReason: verified || threw ? void 0 : observation?.attempt?.reason?.type ?? (hasLdSignatureProperty(jsonLd) ? "signatureVerificationFailed" : "noSignature")
|
|
644
|
+
});
|
|
613
645
|
span.end();
|
|
614
646
|
}
|
|
615
647
|
});
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import "temporal-polyfill";
|
|
2
|
+
import "urlpattern-polyfill";
|
|
3
|
+
globalThis.addEventListener = () => {};
|
|
4
|
+
//#region test-vectors/fep-8b32/map-local-context-conflict.json
|
|
5
|
+
var map_local_context_conflict_default = {
|
|
6
|
+
id: "fedify-fep-8b32-map-local-context-conflict-v1",
|
|
7
|
+
profile: "Fedify map-local compound proof profile",
|
|
8
|
+
cryptosuite: "eddsa-jcs-2022",
|
|
9
|
+
notes: [
|
|
10
|
+
"The parent sets a default language that the child's local context does not reset.",
|
|
11
|
+
"The inner proof authenticates the extracted standalone child JSON map.",
|
|
12
|
+
"The outer proof authenticates the complete compound JSON snapshot.",
|
|
13
|
+
"Both proofs can be valid even though standalone and in-parent JSON-LD expansions differ."
|
|
14
|
+
],
|
|
15
|
+
keys: {
|
|
16
|
+
"outer": {
|
|
17
|
+
"controller": "did:key:z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2",
|
|
18
|
+
"verificationMethod": "did:key:z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2#z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2",
|
|
19
|
+
"publicKeyMultibase": "z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2",
|
|
20
|
+
"publicKeyJwk": {
|
|
21
|
+
"kty": "OKP",
|
|
22
|
+
"crv": "Ed25519",
|
|
23
|
+
"x": "sA2Nk45_dz1RVlqtNqYj9TRPf10ZYPnPPo4SYg6igQ8",
|
|
24
|
+
"key_ops": ["verify"],
|
|
25
|
+
"ext": true
|
|
26
|
+
},
|
|
27
|
+
"testPrivateKeyJwk": {
|
|
28
|
+
"kty": "OKP",
|
|
29
|
+
"crv": "Ed25519",
|
|
30
|
+
"d": "yW756hDF5BTEcXI6_53nLDX6W3D66X6IMuysfS4rjtY",
|
|
31
|
+
"x": "sA2Nk45_dz1RVlqtNqYj9TRPf10ZYPnPPo4SYg6igQ8",
|
|
32
|
+
"key_ops": ["sign"],
|
|
33
|
+
"ext": true
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"inner": {
|
|
37
|
+
"controller": "did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3",
|
|
38
|
+
"verificationMethod": "did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3#z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3",
|
|
39
|
+
"publicKeyMultibase": "z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3",
|
|
40
|
+
"publicKeyJwk": {
|
|
41
|
+
"kty": "OKP",
|
|
42
|
+
"crv": "Ed25519",
|
|
43
|
+
"x": "LR8epAGDe-cVq5p2Tx49CCfphpk1rNhkNoY9i-XEUfg",
|
|
44
|
+
"key_ops": ["verify"],
|
|
45
|
+
"ext": true
|
|
46
|
+
},
|
|
47
|
+
"testPrivateKeyJwk": {
|
|
48
|
+
"kty": "OKP",
|
|
49
|
+
"crv": "Ed25519",
|
|
50
|
+
"d": "LledL195fP9TQGQrkE2l2Y2k48UvqCzYI9M1zXyh7zQ",
|
|
51
|
+
"x": "LR8epAGDe-cVq5p2Tx49CCfphpk1rNhkNoY9i-XEUfg",
|
|
52
|
+
"key_ops": ["sign"],
|
|
53
|
+
"ext": true
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
documents: {
|
|
58
|
+
"finalSecuredCompound": {
|
|
59
|
+
"@context": [
|
|
60
|
+
"https://www.w3.org/ns/activitystreams",
|
|
61
|
+
"https://w3id.org/security/data-integrity/v1",
|
|
62
|
+
{ "@language": "en" }
|
|
63
|
+
],
|
|
64
|
+
"id": "ap+ef61://did:key:z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2/activities/context-conflict",
|
|
65
|
+
"type": "Create",
|
|
66
|
+
"actor": "ap+ef61://did:key:z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2/actor",
|
|
67
|
+
"object": {
|
|
68
|
+
"@context": ["https://www.w3.org/ns/activitystreams", "https://w3id.org/security/data-integrity/v1"],
|
|
69
|
+
"id": "ap+ef61://did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3/objects/context-conflict",
|
|
70
|
+
"type": "Note",
|
|
71
|
+
"attributedTo": "ap+ef61://did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3/actor",
|
|
72
|
+
"content": "A portable note with inherited language",
|
|
73
|
+
"proof": {
|
|
74
|
+
"@context": ["https://www.w3.org/ns/activitystreams", "https://w3id.org/security/data-integrity/v1"],
|
|
75
|
+
"type": "DataIntegrityProof",
|
|
76
|
+
"cryptosuite": "eddsa-jcs-2022",
|
|
77
|
+
"verificationMethod": "did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3#z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3",
|
|
78
|
+
"proofPurpose": "assertionMethod",
|
|
79
|
+
"created": "2023-02-24T23:36:38Z",
|
|
80
|
+
"proofValue": "z3arp9jZdt6kcLacoXxx5kb6QVM8GZFXD13nEisfna52uwMprZz2yJCXsbyMBvvBKZopCCNRq3o22UqYgudLum5eM"
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
"proof": {
|
|
84
|
+
"@context": [
|
|
85
|
+
"https://www.w3.org/ns/activitystreams",
|
|
86
|
+
"https://w3id.org/security/data-integrity/v1",
|
|
87
|
+
{ "@language": "en" }
|
|
88
|
+
],
|
|
89
|
+
"type": "DataIntegrityProof",
|
|
90
|
+
"cryptosuite": "eddsa-jcs-2022",
|
|
91
|
+
"verificationMethod": "did:key:z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2#z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2",
|
|
92
|
+
"proofPurpose": "assertionMethod",
|
|
93
|
+
"created": "2023-02-24T23:36:38Z",
|
|
94
|
+
"proofValue": "z33BeAxXEtbCKnt9mKodwoJFSDKqK2Q2zMrWN36TtpFhDn9K9FFX7rvyfY2jkFh8gcUo3iQvUutzqBKXZdsyKZAEz"
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
"securedInner": {
|
|
98
|
+
"@context": ["https://www.w3.org/ns/activitystreams", "https://w3id.org/security/data-integrity/v1"],
|
|
99
|
+
"id": "ap+ef61://did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3/objects/context-conflict",
|
|
100
|
+
"type": "Note",
|
|
101
|
+
"attributedTo": "ap+ef61://did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3/actor",
|
|
102
|
+
"content": "A portable note with inherited language",
|
|
103
|
+
"proof": {
|
|
104
|
+
"@context": ["https://www.w3.org/ns/activitystreams", "https://w3id.org/security/data-integrity/v1"],
|
|
105
|
+
"type": "DataIntegrityProof",
|
|
106
|
+
"cryptosuite": "eddsa-jcs-2022",
|
|
107
|
+
"verificationMethod": "did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3#z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3",
|
|
108
|
+
"proofPurpose": "assertionMethod",
|
|
109
|
+
"created": "2023-02-24T23:36:38Z",
|
|
110
|
+
"proofValue": "z3arp9jZdt6kcLacoXxx5kb6QVM8GZFXD13nEisfna52uwMprZz2yJCXsbyMBvvBKZopCCNRq3o22UqYgudLum5eM"
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
"outerUnsecuredDocument": {
|
|
114
|
+
"@context": [
|
|
115
|
+
"https://www.w3.org/ns/activitystreams",
|
|
116
|
+
"https://w3id.org/security/data-integrity/v1",
|
|
117
|
+
{ "@language": "en" }
|
|
118
|
+
],
|
|
119
|
+
"id": "ap+ef61://did:key:z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2/activities/context-conflict",
|
|
120
|
+
"type": "Create",
|
|
121
|
+
"actor": "ap+ef61://did:key:z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2/actor",
|
|
122
|
+
"object": {
|
|
123
|
+
"@context": ["https://www.w3.org/ns/activitystreams", "https://w3id.org/security/data-integrity/v1"],
|
|
124
|
+
"id": "ap+ef61://did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3/objects/context-conflict",
|
|
125
|
+
"type": "Note",
|
|
126
|
+
"attributedTo": "ap+ef61://did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3/actor",
|
|
127
|
+
"content": "A portable note with inherited language",
|
|
128
|
+
"proof": {
|
|
129
|
+
"@context": ["https://www.w3.org/ns/activitystreams", "https://w3id.org/security/data-integrity/v1"],
|
|
130
|
+
"type": "DataIntegrityProof",
|
|
131
|
+
"cryptosuite": "eddsa-jcs-2022",
|
|
132
|
+
"verificationMethod": "did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3#z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3",
|
|
133
|
+
"proofPurpose": "assertionMethod",
|
|
134
|
+
"created": "2023-02-24T23:36:38Z",
|
|
135
|
+
"proofValue": "z3arp9jZdt6kcLacoXxx5kb6QVM8GZFXD13nEisfna52uwMprZz2yJCXsbyMBvvBKZopCCNRq3o22UqYgudLum5eM"
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
"innerUnsecuredDocument": {
|
|
140
|
+
"@context": ["https://www.w3.org/ns/activitystreams", "https://w3id.org/security/data-integrity/v1"],
|
|
141
|
+
"id": "ap+ef61://did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3/objects/context-conflict",
|
|
142
|
+
"type": "Note",
|
|
143
|
+
"attributedTo": "ap+ef61://did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3/actor",
|
|
144
|
+
"content": "A portable note with inherited language"
|
|
145
|
+
},
|
|
146
|
+
"outerProofConfiguration": {
|
|
147
|
+
"@context": [
|
|
148
|
+
"https://www.w3.org/ns/activitystreams",
|
|
149
|
+
"https://w3id.org/security/data-integrity/v1",
|
|
150
|
+
{ "@language": "en" }
|
|
151
|
+
],
|
|
152
|
+
"type": "DataIntegrityProof",
|
|
153
|
+
"cryptosuite": "eddsa-jcs-2022",
|
|
154
|
+
"verificationMethod": "did:key:z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2#z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2",
|
|
155
|
+
"proofPurpose": "assertionMethod",
|
|
156
|
+
"created": "2023-02-24T23:36:38Z"
|
|
157
|
+
},
|
|
158
|
+
"innerProofConfiguration": {
|
|
159
|
+
"@context": ["https://www.w3.org/ns/activitystreams", "https://w3id.org/security/data-integrity/v1"],
|
|
160
|
+
"type": "DataIntegrityProof",
|
|
161
|
+
"cryptosuite": "eddsa-jcs-2022",
|
|
162
|
+
"verificationMethod": "did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3#z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3",
|
|
163
|
+
"proofPurpose": "assertionMethod",
|
|
164
|
+
"created": "2023-02-24T23:36:38Z"
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
canonicalization: {
|
|
168
|
+
"outer": {
|
|
169
|
+
"documentJcs": "{\"@context\":[\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/security/data-integrity/v1\",{\"@language\":\"en\"}],\"actor\":\"ap+ef61://did:key:z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2/actor\",\"id\":\"ap+ef61://did:key:z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2/activities/context-conflict\",\"object\":{\"@context\":[\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/security/data-integrity/v1\"],\"attributedTo\":\"ap+ef61://did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3/actor\",\"content\":\"A portable note with inherited language\",\"id\":\"ap+ef61://did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3/objects/context-conflict\",\"proof\":{\"@context\":[\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/security/data-integrity/v1\"],\"created\":\"2023-02-24T23:36:38Z\",\"cryptosuite\":\"eddsa-jcs-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z3arp9jZdt6kcLacoXxx5kb6QVM8GZFXD13nEisfna52uwMprZz2yJCXsbyMBvvBKZopCCNRq3o22UqYgudLum5eM\",\"type\":\"DataIntegrityProof\",\"verificationMethod\":\"did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3#z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3\"},\"type\":\"Note\"},\"type\":\"Create\"}",
|
|
170
|
+
"proofConfigurationJcs": "{\"@context\":[\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/security/data-integrity/v1\",{\"@language\":\"en\"}],\"created\":\"2023-02-24T23:36:38Z\",\"cryptosuite\":\"eddsa-jcs-2022\",\"proofPurpose\":\"assertionMethod\",\"type\":\"DataIntegrityProof\",\"verificationMethod\":\"did:key:z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2#z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2\"}"
|
|
171
|
+
},
|
|
172
|
+
"inner": {
|
|
173
|
+
"documentJcs": "{\"@context\":[\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/security/data-integrity/v1\"],\"attributedTo\":\"ap+ef61://did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3/actor\",\"content\":\"A portable note with inherited language\",\"id\":\"ap+ef61://did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3/objects/context-conflict\",\"type\":\"Note\"}",
|
|
174
|
+
"proofConfigurationJcs": "{\"@context\":[\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/security/data-integrity/v1\"],\"created\":\"2023-02-24T23:36:38Z\",\"cryptosuite\":\"eddsa-jcs-2022\",\"proofPurpose\":\"assertionMethod\",\"type\":\"DataIntegrityProof\",\"verificationMethod\":\"did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3#z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3\"}"
|
|
175
|
+
}
|
|
176
|
+
},
|
|
177
|
+
hashes: {
|
|
178
|
+
"outer": {
|
|
179
|
+
"documentSha256": "7b0a0d3668e43492c8c54cb98d0227a1bf0aefd11da7adb48af6e31f6d5322df",
|
|
180
|
+
"proofConfigurationSha256": "94b98e0a2519065217496bad2936e6e892bfe12ccb176282ec274ce8eb98a6a3",
|
|
181
|
+
"combinedSigningInput": "94b98e0a2519065217496bad2936e6e892bfe12ccb176282ec274ce8eb98a6a37b0a0d3668e43492c8c54cb98d0227a1bf0aefd11da7adb48af6e31f6d5322df"
|
|
182
|
+
},
|
|
183
|
+
"inner": {
|
|
184
|
+
"documentSha256": "3772e3a906c7b49d195345b05d73c3156bb3d61a5d1c641d64f4f03d661f7eeb",
|
|
185
|
+
"proofConfigurationSha256": "1ebdc71cb480bd324b030f85c02dc6f8db879716faf0f7ee0f05df4c395d71b4",
|
|
186
|
+
"combinedSigningInput": "1ebdc71cb480bd324b030f85c02dc6f8db879716faf0f7ee0f05df4c395d71b43772e3a906c7b49d195345b05d73c3156bb3d61a5d1c641d64f4f03d661f7eeb"
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
proofValues: {
|
|
190
|
+
"outer": "z33BeAxXEtbCKnt9mKodwoJFSDKqK2Q2zMrWN36TtpFhDn9K9FFX7rvyfY2jkFh8gcUo3iQvUutzqBKXZdsyKZAEz",
|
|
191
|
+
"inner": "z3arp9jZdt6kcLacoXxx5kb6QVM8GZFXD13nEisfna52uwMprZz2yJCXsbyMBvvBKZopCCNRq3o22UqYgudLum5eM"
|
|
192
|
+
},
|
|
193
|
+
expectedVerification: { "original": {
|
|
194
|
+
"inner": true,
|
|
195
|
+
"outer": true
|
|
196
|
+
} },
|
|
197
|
+
expectedInterpretation: {
|
|
198
|
+
"standaloneAndInParentExpansionsEqual": false,
|
|
199
|
+
"standaloneContentLanguage": null,
|
|
200
|
+
"inParentContentLanguage": "en"
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
//#endregion
|
|
204
|
+
export { map_local_context_conflict_default as t };
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import "temporal-polyfill";
|
|
2
|
+
import "urlpattern-polyfill";
|
|
3
|
+
globalThis.addEventListener = () => {};
|
|
4
|
+
//#region test-vectors/fep-8b32/map-local-create-note.json
|
|
5
|
+
var map_local_create_note_default = {
|
|
6
|
+
id: "fedify-fep-8b32-map-local-create-note-v1",
|
|
7
|
+
profile: "Fedify map-local compound proof profile",
|
|
8
|
+
cryptosuite: "eddsa-jcs-2022",
|
|
9
|
+
notes: [
|
|
10
|
+
"Each map has one direct literal proof property.",
|
|
11
|
+
"Each map has an explicit local context.",
|
|
12
|
+
"The outer unsecured document retains the complete secured inner map.",
|
|
13
|
+
"Combined inputs concatenate proof-configuration SHA-256 first and document SHA-256 second."
|
|
14
|
+
],
|
|
15
|
+
keys: {
|
|
16
|
+
"outer": {
|
|
17
|
+
"controller": "did:key:z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2",
|
|
18
|
+
"verificationMethod": "did:key:z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2#z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2",
|
|
19
|
+
"publicKeyMultibase": "z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2",
|
|
20
|
+
"publicKeyJwk": {
|
|
21
|
+
"kty": "OKP",
|
|
22
|
+
"crv": "Ed25519",
|
|
23
|
+
"x": "sA2Nk45_dz1RVlqtNqYj9TRPf10ZYPnPPo4SYg6igQ8",
|
|
24
|
+
"key_ops": ["verify"],
|
|
25
|
+
"ext": true
|
|
26
|
+
},
|
|
27
|
+
"testPrivateKeyJwk": {
|
|
28
|
+
"kty": "OKP",
|
|
29
|
+
"crv": "Ed25519",
|
|
30
|
+
"d": "yW756hDF5BTEcXI6_53nLDX6W3D66X6IMuysfS4rjtY",
|
|
31
|
+
"x": "sA2Nk45_dz1RVlqtNqYj9TRPf10ZYPnPPo4SYg6igQ8",
|
|
32
|
+
"key_ops": ["sign"],
|
|
33
|
+
"ext": true
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"inner": {
|
|
37
|
+
"controller": "did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3",
|
|
38
|
+
"verificationMethod": "did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3#z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3",
|
|
39
|
+
"publicKeyMultibase": "z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3",
|
|
40
|
+
"publicKeyJwk": {
|
|
41
|
+
"kty": "OKP",
|
|
42
|
+
"crv": "Ed25519",
|
|
43
|
+
"x": "LR8epAGDe-cVq5p2Tx49CCfphpk1rNhkNoY9i-XEUfg",
|
|
44
|
+
"key_ops": ["verify"],
|
|
45
|
+
"ext": true
|
|
46
|
+
},
|
|
47
|
+
"testPrivateKeyJwk": {
|
|
48
|
+
"kty": "OKP",
|
|
49
|
+
"crv": "Ed25519",
|
|
50
|
+
"d": "LledL195fP9TQGQrkE2l2Y2k48UvqCzYI9M1zXyh7zQ",
|
|
51
|
+
"x": "LR8epAGDe-cVq5p2Tx49CCfphpk1rNhkNoY9i-XEUfg",
|
|
52
|
+
"key_ops": ["sign"],
|
|
53
|
+
"ext": true
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
documents: {
|
|
58
|
+
"finalSecuredCompound": {
|
|
59
|
+
"@context": ["https://www.w3.org/ns/activitystreams", "https://w3id.org/security/data-integrity/v1"],
|
|
60
|
+
"id": "ap+ef61://did:key:z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2/activities/1",
|
|
61
|
+
"type": "Create",
|
|
62
|
+
"actor": "ap+ef61://did:key:z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2/actor",
|
|
63
|
+
"object": {
|
|
64
|
+
"@context": ["https://www.w3.org/ns/activitystreams", "https://w3id.org/security/data-integrity/v1"],
|
|
65
|
+
"id": "ap+ef61://did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3/objects/1",
|
|
66
|
+
"type": "Note",
|
|
67
|
+
"attributedTo": "ap+ef61://did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3/actor",
|
|
68
|
+
"content": "A portable note",
|
|
69
|
+
"proof": {
|
|
70
|
+
"@context": ["https://www.w3.org/ns/activitystreams", "https://w3id.org/security/data-integrity/v1"],
|
|
71
|
+
"type": "DataIntegrityProof",
|
|
72
|
+
"cryptosuite": "eddsa-jcs-2022",
|
|
73
|
+
"verificationMethod": "did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3#z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3",
|
|
74
|
+
"proofPurpose": "assertionMethod",
|
|
75
|
+
"created": "2023-02-24T23:36:38Z",
|
|
76
|
+
"proofValue": "z2GCde7JjRjsTipz43CEeCjiDF7NCGbAcvqAkwuywq2u1mQTXs7U9WeT3jXmi6ib6uqpdiT53CxFrkSPLsHiQxhk7"
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
"proof": {
|
|
80
|
+
"@context": ["https://www.w3.org/ns/activitystreams", "https://w3id.org/security/data-integrity/v1"],
|
|
81
|
+
"type": "DataIntegrityProof",
|
|
82
|
+
"cryptosuite": "eddsa-jcs-2022",
|
|
83
|
+
"verificationMethod": "did:key:z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2#z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2",
|
|
84
|
+
"proofPurpose": "assertionMethod",
|
|
85
|
+
"created": "2023-02-24T23:36:38Z",
|
|
86
|
+
"proofValue": "z5KEH1yoB2DsDs39emBhGJM2GqgM9waar91Mj34gqaa238KgyyEvyTrVvBTWKxHxR5Xin6X8tPYr4Ucb6WDzBkMMz"
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
"securedInner": {
|
|
90
|
+
"@context": ["https://www.w3.org/ns/activitystreams", "https://w3id.org/security/data-integrity/v1"],
|
|
91
|
+
"id": "ap+ef61://did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3/objects/1",
|
|
92
|
+
"type": "Note",
|
|
93
|
+
"attributedTo": "ap+ef61://did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3/actor",
|
|
94
|
+
"content": "A portable note",
|
|
95
|
+
"proof": {
|
|
96
|
+
"@context": ["https://www.w3.org/ns/activitystreams", "https://w3id.org/security/data-integrity/v1"],
|
|
97
|
+
"type": "DataIntegrityProof",
|
|
98
|
+
"cryptosuite": "eddsa-jcs-2022",
|
|
99
|
+
"verificationMethod": "did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3#z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3",
|
|
100
|
+
"proofPurpose": "assertionMethod",
|
|
101
|
+
"created": "2023-02-24T23:36:38Z",
|
|
102
|
+
"proofValue": "z2GCde7JjRjsTipz43CEeCjiDF7NCGbAcvqAkwuywq2u1mQTXs7U9WeT3jXmi6ib6uqpdiT53CxFrkSPLsHiQxhk7"
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
"outerUnsecuredDocument": {
|
|
106
|
+
"@context": ["https://www.w3.org/ns/activitystreams", "https://w3id.org/security/data-integrity/v1"],
|
|
107
|
+
"id": "ap+ef61://did:key:z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2/activities/1",
|
|
108
|
+
"type": "Create",
|
|
109
|
+
"actor": "ap+ef61://did:key:z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2/actor",
|
|
110
|
+
"object": {
|
|
111
|
+
"@context": ["https://www.w3.org/ns/activitystreams", "https://w3id.org/security/data-integrity/v1"],
|
|
112
|
+
"id": "ap+ef61://did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3/objects/1",
|
|
113
|
+
"type": "Note",
|
|
114
|
+
"attributedTo": "ap+ef61://did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3/actor",
|
|
115
|
+
"content": "A portable note",
|
|
116
|
+
"proof": {
|
|
117
|
+
"@context": ["https://www.w3.org/ns/activitystreams", "https://w3id.org/security/data-integrity/v1"],
|
|
118
|
+
"type": "DataIntegrityProof",
|
|
119
|
+
"cryptosuite": "eddsa-jcs-2022",
|
|
120
|
+
"verificationMethod": "did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3#z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3",
|
|
121
|
+
"proofPurpose": "assertionMethod",
|
|
122
|
+
"created": "2023-02-24T23:36:38Z",
|
|
123
|
+
"proofValue": "z2GCde7JjRjsTipz43CEeCjiDF7NCGbAcvqAkwuywq2u1mQTXs7U9WeT3jXmi6ib6uqpdiT53CxFrkSPLsHiQxhk7"
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
"innerUnsecuredDocument": {
|
|
128
|
+
"@context": ["https://www.w3.org/ns/activitystreams", "https://w3id.org/security/data-integrity/v1"],
|
|
129
|
+
"id": "ap+ef61://did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3/objects/1",
|
|
130
|
+
"type": "Note",
|
|
131
|
+
"attributedTo": "ap+ef61://did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3/actor",
|
|
132
|
+
"content": "A portable note"
|
|
133
|
+
},
|
|
134
|
+
"outerProofConfiguration": {
|
|
135
|
+
"@context": ["https://www.w3.org/ns/activitystreams", "https://w3id.org/security/data-integrity/v1"],
|
|
136
|
+
"type": "DataIntegrityProof",
|
|
137
|
+
"cryptosuite": "eddsa-jcs-2022",
|
|
138
|
+
"verificationMethod": "did:key:z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2#z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2",
|
|
139
|
+
"proofPurpose": "assertionMethod",
|
|
140
|
+
"created": "2023-02-24T23:36:38Z"
|
|
141
|
+
},
|
|
142
|
+
"innerProofConfiguration": {
|
|
143
|
+
"@context": ["https://www.w3.org/ns/activitystreams", "https://w3id.org/security/data-integrity/v1"],
|
|
144
|
+
"type": "DataIntegrityProof",
|
|
145
|
+
"cryptosuite": "eddsa-jcs-2022",
|
|
146
|
+
"verificationMethod": "did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3#z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3",
|
|
147
|
+
"proofPurpose": "assertionMethod",
|
|
148
|
+
"created": "2023-02-24T23:36:38Z"
|
|
149
|
+
},
|
|
150
|
+
"replacementInnerProof": {
|
|
151
|
+
"@context": ["https://www.w3.org/ns/activitystreams", "https://w3id.org/security/data-integrity/v1"],
|
|
152
|
+
"type": "DataIntegrityProof",
|
|
153
|
+
"cryptosuite": "eddsa-jcs-2022",
|
|
154
|
+
"verificationMethod": "did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3#z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3",
|
|
155
|
+
"proofPurpose": "assertionMethod",
|
|
156
|
+
"created": "2023-02-25T23:36:38Z",
|
|
157
|
+
"proofValue": "z2fmC2UAoxpesDmSJ6LWoRReCRhPGCKTHgBCsq1491B2Hx2SN8MszWgfcgJkF1poPnyhFAEGrpeqGWchiw261np9z"
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
canonicalization: {
|
|
161
|
+
"outer": {
|
|
162
|
+
"documentJcs": "{\"@context\":[\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/security/data-integrity/v1\"],\"actor\":\"ap+ef61://did:key:z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2/actor\",\"id\":\"ap+ef61://did:key:z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2/activities/1\",\"object\":{\"@context\":[\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/security/data-integrity/v1\"],\"attributedTo\":\"ap+ef61://did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3/actor\",\"content\":\"A portable note\",\"id\":\"ap+ef61://did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3/objects/1\",\"proof\":{\"@context\":[\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/security/data-integrity/v1\"],\"created\":\"2023-02-24T23:36:38Z\",\"cryptosuite\":\"eddsa-jcs-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z2GCde7JjRjsTipz43CEeCjiDF7NCGbAcvqAkwuywq2u1mQTXs7U9WeT3jXmi6ib6uqpdiT53CxFrkSPLsHiQxhk7\",\"type\":\"DataIntegrityProof\",\"verificationMethod\":\"did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3#z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3\"},\"type\":\"Note\"},\"type\":\"Create\"}",
|
|
163
|
+
"proofConfigurationJcs": "{\"@context\":[\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/security/data-integrity/v1\"],\"created\":\"2023-02-24T23:36:38Z\",\"cryptosuite\":\"eddsa-jcs-2022\",\"proofPurpose\":\"assertionMethod\",\"type\":\"DataIntegrityProof\",\"verificationMethod\":\"did:key:z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2#z6MkrJVnaZkeFzdQyMZu1cgjg7k1pZZ6pvBQ7XJPt4swbTQ2\"}"
|
|
164
|
+
},
|
|
165
|
+
"inner": {
|
|
166
|
+
"documentJcs": "{\"@context\":[\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/security/data-integrity/v1\"],\"attributedTo\":\"ap+ef61://did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3/actor\",\"content\":\"A portable note\",\"id\":\"ap+ef61://did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3/objects/1\",\"type\":\"Note\"}",
|
|
167
|
+
"proofConfigurationJcs": "{\"@context\":[\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/security/data-integrity/v1\"],\"created\":\"2023-02-24T23:36:38Z\",\"cryptosuite\":\"eddsa-jcs-2022\",\"proofPurpose\":\"assertionMethod\",\"type\":\"DataIntegrityProof\",\"verificationMethod\":\"did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3#z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3\"}"
|
|
168
|
+
},
|
|
169
|
+
"replacementInner": {
|
|
170
|
+
"documentJcs": "{\"@context\":[\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/security/data-integrity/v1\"],\"attributedTo\":\"ap+ef61://did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3/actor\",\"content\":\"A portable note\",\"id\":\"ap+ef61://did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3/objects/1\",\"type\":\"Note\"}",
|
|
171
|
+
"proofConfigurationJcs": "{\"@context\":[\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/security/data-integrity/v1\"],\"created\":\"2023-02-25T23:36:38Z\",\"cryptosuite\":\"eddsa-jcs-2022\",\"proofPurpose\":\"assertionMethod\",\"type\":\"DataIntegrityProof\",\"verificationMethod\":\"did:key:z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3#z6MkhVPuyvgG1RkMv67azDqDCDERPXVrUg1i3qchXY5EACE3\"}"
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
hashes: {
|
|
175
|
+
"outer": {
|
|
176
|
+
"documentSha256": "f49f8c592c02d0ee85b7f7182fd593ddf6e7f432d8388843e4d086238f45bafc",
|
|
177
|
+
"proofConfigurationSha256": "c9842a6bca0a0594e99f1525344ce4f0c8c6096f5a832525a05205aacd8791e0",
|
|
178
|
+
"combinedSigningInput": "c9842a6bca0a0594e99f1525344ce4f0c8c6096f5a832525a05205aacd8791e0f49f8c592c02d0ee85b7f7182fd593ddf6e7f432d8388843e4d086238f45bafc"
|
|
179
|
+
},
|
|
180
|
+
"inner": {
|
|
181
|
+
"documentSha256": "9c9ffa1efcc871d219b8622e98253168ac65867ee76d6e4183ee0ca0226c2fd3",
|
|
182
|
+
"proofConfigurationSha256": "1ebdc71cb480bd324b030f85c02dc6f8db879716faf0f7ee0f05df4c395d71b4",
|
|
183
|
+
"combinedSigningInput": "1ebdc71cb480bd324b030f85c02dc6f8db879716faf0f7ee0f05df4c395d71b49c9ffa1efcc871d219b8622e98253168ac65867ee76d6e4183ee0ca0226c2fd3"
|
|
184
|
+
},
|
|
185
|
+
"replacementInner": {
|
|
186
|
+
"documentSha256": "9c9ffa1efcc871d219b8622e98253168ac65867ee76d6e4183ee0ca0226c2fd3",
|
|
187
|
+
"proofConfigurationSha256": "00da7da35af5e922313de14cf0f8f63c9a27152205b1eb5ef049a7f6023589ad",
|
|
188
|
+
"combinedSigningInput": "00da7da35af5e922313de14cf0f8f63c9a27152205b1eb5ef049a7f6023589ad9c9ffa1efcc871d219b8622e98253168ac65867ee76d6e4183ee0ca0226c2fd3"
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
proofValues: {
|
|
192
|
+
"outer": "z5KEH1yoB2DsDs39emBhGJM2GqgM9waar91Mj34gqaa238KgyyEvyTrVvBTWKxHxR5Xin6X8tPYr4Ucb6WDzBkMMz",
|
|
193
|
+
"inner": "z2GCde7JjRjsTipz43CEeCjiDF7NCGbAcvqAkwuywq2u1mQTXs7U9WeT3jXmi6ib6uqpdiT53CxFrkSPLsHiQxhk7",
|
|
194
|
+
"replacementInner": "z2fmC2UAoxpesDmSJ6LWoRReCRhPGCKTHgBCsq1491B2Hx2SN8MszWgfcgJkF1poPnyhFAEGrpeqGWchiw261np9z"
|
|
195
|
+
},
|
|
196
|
+
expectedVerification: {
|
|
197
|
+
"original": {
|
|
198
|
+
"inner": true,
|
|
199
|
+
"outer": true
|
|
200
|
+
},
|
|
201
|
+
"tamperedInnerContent": {
|
|
202
|
+
"inner": false,
|
|
203
|
+
"outer": false
|
|
204
|
+
},
|
|
205
|
+
"replacedInnerProof": {
|
|
206
|
+
"inner": true,
|
|
207
|
+
"outer": false
|
|
208
|
+
},
|
|
209
|
+
"standaloneInner": true,
|
|
210
|
+
"standaloneOuter": true
|
|
211
|
+
}
|
|
212
|
+
};
|
|
213
|
+
//#endregion
|
|
214
|
+
export { map_local_create_note_default as t };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "temporal-polyfill";
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
|
-
import { n as version, t as name } from "./deno-
|
|
4
|
+
import { n as version, t as name } from "./deno-oR5aJKpU.mjs";
|
|
5
5
|
import { metrics } from "@opentelemetry/api";
|
|
6
6
|
import { FetchError } from "@fedify/vocab-runtime";
|
|
7
7
|
//#region src/federation/metrics.ts
|
|
@@ -302,6 +302,7 @@ var FederationMetrics = class {
|
|
|
302
302
|
};
|
|
303
303
|
if (extra.algorithm != null) attributes["http_signatures.algorithm"] = extra.algorithm;
|
|
304
304
|
if (extra.failureReason != null) attributes["http_signatures.failure_reason"] = extra.failureReason;
|
|
305
|
+
if (extra.verificationFailureReason != null) attributes["activitypub.verification.failure_reason"] = extra.verificationFailureReason;
|
|
305
306
|
if (extra.ldType != null) attributes["ld_signatures.type"] = extra.ldType;
|
|
306
307
|
if (extra.cryptosuite != null) attributes["object_integrity_proofs.cryptosuite"] = extra.cryptosuite;
|
|
307
308
|
this.signatureVerificationDuration.record(durationMs, attributes);
|
|
@@ -770,7 +771,7 @@ function isAbortError(error) {
|
|
|
770
771
|
const name = error.name;
|
|
771
772
|
return typeof name === "string" && name === "AbortError";
|
|
772
773
|
}
|
|
773
|
-
const KNOWN_HTTP_METHODS = new Set([
|
|
774
|
+
const KNOWN_HTTP_METHODS = /* @__PURE__ */ new Set([
|
|
774
775
|
"CONNECT",
|
|
775
776
|
"DELETE",
|
|
776
777
|
"GET",
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/// <reference lib="esnext.temporal" />
|
|
2
|
+
import { DocumentLoader } from "@fedify/vocab-runtime";
|
|
3
|
+
import { MeterProvider } from "@opentelemetry/api";
|
|
4
|
+
|
|
5
|
+
//#region src/federation/metrics.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* The kind of remote ActivityPub lookup, recorded as
|
|
8
|
+
* `activitypub.lookup.kind` on the public-key lookup and remote document
|
|
9
|
+
* fetch metric families.
|
|
10
|
+
*
|
|
11
|
+
* - `public_key`: a public key lookup performed by `fetchKey` /
|
|
12
|
+
* `fetchKeyDetailed` (always recorded on `activitypub.key.lookup*`).
|
|
13
|
+
* - `actor`: a document fetch whose resolved value is an Actor. The
|
|
14
|
+
* bucket exists in the taxonomy for future actor-aware call sites;
|
|
15
|
+
* today, actor documents fetched through Fedify's generic document
|
|
16
|
+
* loader are still classified as `object` because the kind is decided
|
|
17
|
+
* at the loader boundary, before the response is parsed.
|
|
18
|
+
* - `object`: a generic ActivityPub object fetch through Fedify's
|
|
19
|
+
* document loader. This is the default classification for
|
|
20
|
+
* `documentLoader` invocations that do not match a more specific
|
|
21
|
+
* bucket.
|
|
22
|
+
* - `context`: a JSON-LD `@context` document fetch through Fedify's
|
|
23
|
+
* context loader.
|
|
24
|
+
* - `other`: a fetch that does not fit any of the above classifications.
|
|
25
|
+
* @since 2.3.0
|
|
26
|
+
*/
|
|
27
|
+
type LookupKind = "public_key" | "actor" | "object" | "context" | "other";
|
|
28
|
+
/**
|
|
29
|
+
* The {@link LookupKind} values that can appear on remote document fetch
|
|
30
|
+
* metrics. `public_key` lookups are reported on the
|
|
31
|
+
* `activitypub.key.lookup` metric family instead, so it is excluded here.
|
|
32
|
+
* @since 2.3.0
|
|
33
|
+
*/
|
|
34
|
+
type DocumentFetchKind = Exclude<LookupKind, "public_key">;
|
|
35
|
+
//#endregion
|
|
36
|
+
export { DocumentFetchKind as t };
|