@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,5 +1,5 @@
|
|
|
1
1
|
/// <reference lib="esnext.temporal" />
|
|
2
|
-
import {
|
|
2
|
+
import { Jt as WebFingerLinksDispatcher, St as ActorHandleMapper, bt as ActorAliasMapper, p as RequestContext, xt as ActorDispatcher } from "./context-tsYPJ2Ew.cjs";
|
|
3
3
|
import { MeterProvider, Span, Tracer } from "@opentelemetry/api";
|
|
4
4
|
import { RouterError, RouterOptions, RouterRouteResult } from "@fedify/uri-template";
|
|
5
5
|
|
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
/// <reference lib="esnext.temporal" />
|
|
2
|
+
import { B as VerifyPortableObjectProofOptions, a as KeyCache, v as VerificationObservationOptions, z as VerifyPortableObjectProofFailureReason } from "./key-DYxuyd-s.cjs";
|
|
3
|
+
import { CryptographicKey, Multikey } from "@fedify/vocab";
|
|
4
|
+
import { DocumentLoader, PortableObjectVerifierOptions } from "@fedify/vocab-runtime";
|
|
5
|
+
import { MeterProvider, TracerProvider } from "@opentelemetry/api";
|
|
6
|
+
|
|
7
|
+
//#region src/sig/ld.d.ts
|
|
8
|
+
/**
|
|
9
|
+
* A signature of a JSON-LD document.
|
|
10
|
+
* @since 1.0.0
|
|
11
|
+
*/
|
|
12
|
+
interface Signature {
|
|
13
|
+
"@context"?: "https://w3id.org/identity/v1";
|
|
14
|
+
type: "RsaSignature2017";
|
|
15
|
+
id?: string;
|
|
16
|
+
creator: string;
|
|
17
|
+
created: string;
|
|
18
|
+
signatureValue: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Attaches a LD signature to the given JSON-LD document.
|
|
22
|
+
* @param jsonLd The JSON-LD document to attach the signature to. It is not
|
|
23
|
+
* modified.
|
|
24
|
+
* @param signature The signature to attach.
|
|
25
|
+
* @returns The JSON-LD document with the attached signature.
|
|
26
|
+
* @throws {TypeError} If the input document is not a valid JSON-LD document.
|
|
27
|
+
* @since 1.0.0
|
|
28
|
+
*/
|
|
29
|
+
declare function attachSignature(jsonLd: unknown, signature: Signature): {
|
|
30
|
+
signature: Signature;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Options for creating Linked Data Signatures.
|
|
34
|
+
* @since 1.0.0
|
|
35
|
+
*/
|
|
36
|
+
interface CreateSignatureOptions {
|
|
37
|
+
/**
|
|
38
|
+
* The context loader for loading remote JSON-LD contexts.
|
|
39
|
+
*/
|
|
40
|
+
contextLoader?: DocumentLoader;
|
|
41
|
+
/**
|
|
42
|
+
* The time when the signature was created. If not specified, the current
|
|
43
|
+
* time will be used.
|
|
44
|
+
*/
|
|
45
|
+
created?: Temporal.Instant;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Creates a LD signature for the given JSON-LD document.
|
|
49
|
+
* @param jsonLd The JSON-LD document to sign.
|
|
50
|
+
* @param privateKey The private key to sign the document.
|
|
51
|
+
* @param keyId The ID of the public key that corresponds to the private key.
|
|
52
|
+
* @param options Additional options for creating the signature.
|
|
53
|
+
* See also {@link CreateSignatureOptions}.
|
|
54
|
+
* @return The created signature.
|
|
55
|
+
* @throws {TypeError} If the private key is invalid or unsupported.
|
|
56
|
+
* @since 1.0.0
|
|
57
|
+
*/
|
|
58
|
+
declare function createSignature(jsonLd: unknown, privateKey: CryptoKey, keyId: URL, {
|
|
59
|
+
contextLoader,
|
|
60
|
+
created
|
|
61
|
+
}?: CreateSignatureOptions): Promise<Signature>;
|
|
62
|
+
/**
|
|
63
|
+
* Options for signing JSON-LD documents.
|
|
64
|
+
* @since 1.0.0
|
|
65
|
+
*/
|
|
66
|
+
interface SignJsonLdOptions extends CreateSignatureOptions {
|
|
67
|
+
/**
|
|
68
|
+
* The OpenTelemetry tracer provider for tracing the signing process.
|
|
69
|
+
* If omitted, the global tracer provider is used.
|
|
70
|
+
* @since 1.3.0
|
|
71
|
+
*/
|
|
72
|
+
tracerProvider?: TracerProvider;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Signs the given JSON-LD document with the private key and returns the signed
|
|
76
|
+
* JSON-LD document.
|
|
77
|
+
* @param jsonLd The JSON-LD document to sign.
|
|
78
|
+
* @param privateKey The private key to sign the document.
|
|
79
|
+
* @param keyId The key ID to use in the signature. It will be used by the
|
|
80
|
+
* verifier to fetch the corresponding public key.
|
|
81
|
+
* @param options Additional options for signing the document.
|
|
82
|
+
* See also {@link SignJsonLdOptions}.
|
|
83
|
+
* @returns The signed JSON-LD document.
|
|
84
|
+
* @throws {TypeError} If the private key is invalid or unsupported.
|
|
85
|
+
* @since 1.0.0
|
|
86
|
+
*/
|
|
87
|
+
declare function signJsonLd(jsonLd: unknown, privateKey: CryptoKey, keyId: URL, options: SignJsonLdOptions): Promise<{
|
|
88
|
+
signature: Signature;
|
|
89
|
+
}>;
|
|
90
|
+
/**
|
|
91
|
+
* Checks if the given JSON-LD document has a Linked Data Signature-like
|
|
92
|
+
* object, without restricting it to a single suite-specific shape.
|
|
93
|
+
* @param jsonLd The JSON-LD document to check.
|
|
94
|
+
* @returns `true` if the document has a signature-like object; `false`
|
|
95
|
+
* otherwise.
|
|
96
|
+
* @since 2.2.0
|
|
97
|
+
*/
|
|
98
|
+
declare function hasSignatureLike(jsonLd: unknown): boolean;
|
|
99
|
+
/**
|
|
100
|
+
* Detaches Linked Data Signatures from the given JSON-LD document.
|
|
101
|
+
* @param jsonLd The JSON-LD document to modify.
|
|
102
|
+
* @returns The modified JSON-LD document. If the input document does not
|
|
103
|
+
* contain a signature, the original document is returned.
|
|
104
|
+
* @since 1.0.0
|
|
105
|
+
*/
|
|
106
|
+
declare function detachSignature(jsonLd: unknown): unknown;
|
|
107
|
+
/**
|
|
108
|
+
* Options for verifying Linked Data Signatures.
|
|
109
|
+
* @since 1.0.0
|
|
110
|
+
*/
|
|
111
|
+
interface VerifySignatureOptions extends VerificationObservationOptions {
|
|
112
|
+
/**
|
|
113
|
+
* The document loader to use for fetching the public key.
|
|
114
|
+
*/
|
|
115
|
+
documentLoader?: DocumentLoader;
|
|
116
|
+
/**
|
|
117
|
+
* The context loader to use for JSON-LD context retrieval.
|
|
118
|
+
*/
|
|
119
|
+
contextLoader?: DocumentLoader;
|
|
120
|
+
/**
|
|
121
|
+
* The key cache to use for caching public keys.
|
|
122
|
+
*/
|
|
123
|
+
keyCache?: KeyCache;
|
|
124
|
+
/**
|
|
125
|
+
* The OpenTelemetry tracer provider for tracing the verification process.
|
|
126
|
+
* If omitted, the global tracer provider is used.
|
|
127
|
+
* @since 1.3.0
|
|
128
|
+
*/
|
|
129
|
+
tracerProvider?: TracerProvider;
|
|
130
|
+
/**
|
|
131
|
+
* The OpenTelemetry meter provider. If omitted, the global meter provider
|
|
132
|
+
* is used.
|
|
133
|
+
* @since 2.3.0
|
|
134
|
+
*/
|
|
135
|
+
meterProvider?: MeterProvider;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Verifies Linked Data Signatures of the given JSON-LD document.
|
|
139
|
+
*
|
|
140
|
+
* This is a low-level utility that only checks the cryptographic signature
|
|
141
|
+
* and (optionally) the cached key. It does not run the JSON-LD parsing,
|
|
142
|
+
* attribution, and owner checks that a complete inbound LD verification
|
|
143
|
+
* needs. For incoming activities, prefer {@link verifyJsonLd}, which is
|
|
144
|
+
* the public verification entry point and the one that emits the
|
|
145
|
+
* `activitypub.signature.verification.duration` metric for the LD path.
|
|
146
|
+
* `verifySignature` itself only emits
|
|
147
|
+
* `activitypub.signature.key_fetch.duration`, since the rest of the work
|
|
148
|
+
* that the verification-duration metric is meant to cover happens in
|
|
149
|
+
* `verifyJsonLd`.
|
|
150
|
+
* @param jsonLd The JSON-LD document to verify.
|
|
151
|
+
* @param options Options for verifying the signature.
|
|
152
|
+
* @returns The public key that signed the document or `null` if the signature
|
|
153
|
+
* is invalid or the key is not found.
|
|
154
|
+
* @since 1.0.0
|
|
155
|
+
*/
|
|
156
|
+
declare function verifySignature(jsonLd: unknown, options?: VerifySignatureOptions): Promise<CryptographicKey | null>;
|
|
157
|
+
/**
|
|
158
|
+
* Options for verifying JSON-LD documents.
|
|
159
|
+
*/
|
|
160
|
+
interface VerifyJsonLdOptions extends VerifySignatureOptions {}
|
|
161
|
+
/**
|
|
162
|
+
* Verify the authenticity of the given JSON-LD document using Linked Data
|
|
163
|
+
* Signatures. If the document is signed, this function verifies the signature
|
|
164
|
+
* and checks if the document is attributed to the owner of the public key.
|
|
165
|
+
* If the document is not signed, this function returns `false`.
|
|
166
|
+
* @param jsonLd The JSON-LD document to verify.
|
|
167
|
+
* @param options Options for verifying the document.
|
|
168
|
+
* @returns `true` if the document is authentic; `false` otherwise.
|
|
169
|
+
*/
|
|
170
|
+
declare function verifyJsonLd(jsonLd: unknown, options?: VerifyJsonLdOptions): Promise<boolean>;
|
|
171
|
+
//#endregion
|
|
172
|
+
//#region src/sig/portable-collection.d.ts
|
|
173
|
+
/**
|
|
174
|
+
* Options for {@link verifyPortableObject}.
|
|
175
|
+
*
|
|
176
|
+
* Besides the options for {@link verifyPortableObjectProof}, it takes where
|
|
177
|
+
* the document came from, which property accessors pass automatically when
|
|
178
|
+
* `verifyPortableObject()` is used as their `verifyPortableObject` option.
|
|
179
|
+
* @since 2.4.0
|
|
180
|
+
*/
|
|
181
|
+
interface VerifyPortableObjectOptions extends VerifyPortableObjectProofOptions, Omit<PortableObjectVerifierOptions, "documentLoader" | "contextLoader" | "tracerProvider"> {}
|
|
182
|
+
/**
|
|
183
|
+
* The reason why {@link verifyPortableObject} did not accept a document.
|
|
184
|
+
*
|
|
185
|
+
* Besides the reasons of {@link verifyPortableObjectProof}, it describes why
|
|
186
|
+
* an unsecured portable collection was not trusted. The
|
|
187
|
+
* `unsecuredCollection` reason itself never appears, since such collections
|
|
188
|
+
* are judged by the gateway trust policy instead.
|
|
189
|
+
* @since 2.4.0
|
|
190
|
+
*/
|
|
191
|
+
type VerifyPortableObjectFailureReason = Exclude<VerifyPortableObjectProofFailureReason, {
|
|
192
|
+
readonly type: "unsecuredCollection";
|
|
193
|
+
}> | {
|
|
194
|
+
/**
|
|
195
|
+
* The unsecured collection was not retrieved from a gateway, i.e., the
|
|
196
|
+
* document's final URL is missing or is not a compatible identifier for
|
|
197
|
+
* the same portable collection.
|
|
198
|
+
*/
|
|
199
|
+
readonly type: "unknownCollectionSource"; /** The final URL of the document, if known. */
|
|
200
|
+
readonly documentUrl: URL | null;
|
|
201
|
+
} | {
|
|
202
|
+
/**
|
|
203
|
+
* The actor that owns the unsecured collection cannot be determined
|
|
204
|
+
* unambiguously.
|
|
205
|
+
*/
|
|
206
|
+
readonly type: "unknownCollectionOwner";
|
|
207
|
+
} | {
|
|
208
|
+
/** The collection, its pages, or its referrer disagree on its owner. */readonly type: "conflictingCollectionOwners"; /** The owner candidates that disagree. */
|
|
209
|
+
readonly candidates: readonly URL[];
|
|
210
|
+
} | {
|
|
211
|
+
/**
|
|
212
|
+
* A collection page does not belong to the collection it was reached
|
|
213
|
+
* from: its `partOf` names another collection, or its cryptographic
|
|
214
|
+
* origin differs.
|
|
215
|
+
*/
|
|
216
|
+
readonly type: "collectionPageMismatch"; /** The page. */
|
|
217
|
+
readonly pageId: URL; /** The collection that the page was reached from. */
|
|
218
|
+
readonly collectionId: URL; /** The mismatching `partOf`, or `null` if the origin differs. */
|
|
219
|
+
readonly partOf: URL | null;
|
|
220
|
+
} | {
|
|
221
|
+
/**
|
|
222
|
+
* The owner's actor document could not be retrieved or verified, or it
|
|
223
|
+
* lists no gateways.
|
|
224
|
+
*/
|
|
225
|
+
readonly type: "collectionOwnerUnavailable"; /** The owner candidate. */
|
|
226
|
+
readonly owner: URL;
|
|
227
|
+
} | {
|
|
228
|
+
/**
|
|
229
|
+
* The owner's actor document does not list the collection as its
|
|
230
|
+
* `inbox`, `outbox`, `followers`, `following`, or `liked`.
|
|
231
|
+
*/
|
|
232
|
+
readonly type: "collectionNotListedByOwner"; /** The owner. */
|
|
233
|
+
readonly owner: URL; /** The collection. */
|
|
234
|
+
readonly collectionId: URL;
|
|
235
|
+
} | {
|
|
236
|
+
/**
|
|
237
|
+
* The unsecured collection was retrieved from a gateway that its owner
|
|
238
|
+
* does not list in its `gateways`.
|
|
239
|
+
*/
|
|
240
|
+
readonly type: "untrustedGateway"; /** The owner. */
|
|
241
|
+
readonly owner: URL; /** The gateway that served the collection. */
|
|
242
|
+
readonly gateway: URL; /** The owner's gateways. */
|
|
243
|
+
readonly gateways: readonly URL[];
|
|
244
|
+
};
|
|
245
|
+
/**
|
|
246
|
+
* The result of {@link verifyPortableObject}.
|
|
247
|
+
* @since 2.4.0
|
|
248
|
+
*/
|
|
249
|
+
type VerifyPortableObjectResult = {
|
|
250
|
+
/** Whether the document is accepted. */readonly verified: true; /** The document carries valid Object Integrity Proofs. */
|
|
251
|
+
readonly method: "proof"; /** The public keys used by the verified proofs, in proof order. */
|
|
252
|
+
readonly keys: readonly Multikey[];
|
|
253
|
+
/**
|
|
254
|
+
* Opaque state for verifying the pages of a portable collection. Do not
|
|
255
|
+
* inspect it; property accessors pass it back automatically.
|
|
256
|
+
*/
|
|
257
|
+
readonly collectionContext?: unknown;
|
|
258
|
+
} | {
|
|
259
|
+
/** Whether the document is accepted. */readonly verified: true;
|
|
260
|
+
/**
|
|
261
|
+
* The document is an unsecured portable collection served by a gateway
|
|
262
|
+
* that its owner lists.
|
|
263
|
+
*/
|
|
264
|
+
readonly method: "gateway"; /** The document has no integrity proof. */
|
|
265
|
+
readonly unsecured: true; /** The actor that owns the collection. */
|
|
266
|
+
readonly owner: URL; /** The gateway that served the collection. */
|
|
267
|
+
readonly gateway: URL;
|
|
268
|
+
/**
|
|
269
|
+
* Opaque state for verifying the pages of a portable collection. Do not
|
|
270
|
+
* inspect it; property accessors pass it back automatically.
|
|
271
|
+
*/
|
|
272
|
+
readonly collectionContext: unknown;
|
|
273
|
+
} | {
|
|
274
|
+
/** Whether the document is accepted. */readonly verified: false; /** Why the document was not accepted. */
|
|
275
|
+
readonly reason: VerifyPortableObjectFailureReason;
|
|
276
|
+
};
|
|
277
|
+
/**
|
|
278
|
+
* Applies the [FEP-ef61] trust policy to a portable object fetched through
|
|
279
|
+
* a gateway.
|
|
280
|
+
*
|
|
281
|
+
* Portable actors, activities, objects, and collections with proofs are
|
|
282
|
+
* verified by {@link verifyPortableObjectProof}. A portable collection or
|
|
283
|
+
* collection page without a proof is accepted only if all of the following
|
|
284
|
+
* hold:
|
|
285
|
+
*
|
|
286
|
+
* - It was retrieved from a gateway: its final URL (`documentUrl`) is
|
|
287
|
+
* a compatible identifier for the same portable collection.
|
|
288
|
+
* - Its owner is determined unambiguously: the actor whose `inbox`,
|
|
289
|
+
* `outbox`, `followers`, `following`, or `liked` property referred to
|
|
290
|
+
* the collection, or the single actor in its `attributedTo`. A page
|
|
291
|
+
* inherits the owner of the collection it was reached from through
|
|
292
|
+
* `first`, `last`, `current`, `next`, or `prev`, and must not name
|
|
293
|
+
* another collection in `partOf`.
|
|
294
|
+
* - The owner's actor document is verified by its proof and lists the
|
|
295
|
+
* collection as its `inbox`, `outbox`, `followers`, `following`, or
|
|
296
|
+
* `liked`.
|
|
297
|
+
* - The gateway that served the collection is in the owner's `gateways`.
|
|
298
|
+
*
|
|
299
|
+
* Where the document came from and which object referred to it are passed
|
|
300
|
+
* by property accessors when this function is used as their
|
|
301
|
+
* `verifyPortableObject` option. Objects embedded in an unsecured
|
|
302
|
+
* collection accepted this way are not trusted: accessors dereference and
|
|
303
|
+
* verify them one by one.
|
|
304
|
+
*
|
|
305
|
+
* Note that acceptance through the gateway policy does not verify anything
|
|
306
|
+
* cryptographically; it only means that the owner trusts the gateway.
|
|
307
|
+
*
|
|
308
|
+
* [FEP-ef61]: https://w3id.org/fep/ef61
|
|
309
|
+
*
|
|
310
|
+
* @param jsonLd The JSON-LD document to verify.
|
|
311
|
+
* @param options Additional options. See also
|
|
312
|
+
* {@link VerifyPortableObjectOptions}.
|
|
313
|
+
* @returns The detailed result.
|
|
314
|
+
* @throws {TypeError} If the input is not a single JSON-LD object or has a
|
|
315
|
+
* malformed portable ID.
|
|
316
|
+
* @since 2.4.0
|
|
317
|
+
*/
|
|
318
|
+
declare function verifyPortableObject(jsonLd: unknown, options?: VerifyPortableObjectOptions): Promise<VerifyPortableObjectResult>;
|
|
319
|
+
//#endregion
|
|
320
|
+
export { CreateSignatureOptions as a, VerifySignatureOptions as c, detachSignature as d, hasSignatureLike as f, verifySignature as h, verifyPortableObject as i, attachSignature as l, verifyJsonLd as m, VerifyPortableObjectOptions as n, SignJsonLdOptions as o, signJsonLd as p, VerifyPortableObjectResult as r, VerifyJsonLdOptions as s, VerifyPortableObjectFailureReason as t, createSignature as u };
|
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
/// <reference lib="esnext.temporal" />
|
|
2
|
+
import { B as VerifyPortableObjectProofOptions, a as KeyCache, v as VerificationObservationOptions, z as VerifyPortableObjectProofFailureReason } from "./key-C1nv7_jD.js";
|
|
3
|
+
import { CryptographicKey, Multikey } from "@fedify/vocab";
|
|
4
|
+
import { MeterProvider, TracerProvider } from "@opentelemetry/api";
|
|
5
|
+
import { DocumentLoader, PortableObjectVerifierOptions } from "@fedify/vocab-runtime";
|
|
6
|
+
|
|
7
|
+
//#region src/sig/ld.d.ts
|
|
8
|
+
/**
|
|
9
|
+
* A signature of a JSON-LD document.
|
|
10
|
+
* @since 1.0.0
|
|
11
|
+
*/
|
|
12
|
+
interface Signature {
|
|
13
|
+
"@context"?: "https://w3id.org/identity/v1";
|
|
14
|
+
type: "RsaSignature2017";
|
|
15
|
+
id?: string;
|
|
16
|
+
creator: string;
|
|
17
|
+
created: string;
|
|
18
|
+
signatureValue: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Attaches a LD signature to the given JSON-LD document.
|
|
22
|
+
* @param jsonLd The JSON-LD document to attach the signature to. It is not
|
|
23
|
+
* modified.
|
|
24
|
+
* @param signature The signature to attach.
|
|
25
|
+
* @returns The JSON-LD document with the attached signature.
|
|
26
|
+
* @throws {TypeError} If the input document is not a valid JSON-LD document.
|
|
27
|
+
* @since 1.0.0
|
|
28
|
+
*/
|
|
29
|
+
declare function attachSignature(jsonLd: unknown, signature: Signature): {
|
|
30
|
+
signature: Signature;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Options for creating Linked Data Signatures.
|
|
34
|
+
* @since 1.0.0
|
|
35
|
+
*/
|
|
36
|
+
interface CreateSignatureOptions {
|
|
37
|
+
/**
|
|
38
|
+
* The context loader for loading remote JSON-LD contexts.
|
|
39
|
+
*/
|
|
40
|
+
contextLoader?: DocumentLoader;
|
|
41
|
+
/**
|
|
42
|
+
* The time when the signature was created. If not specified, the current
|
|
43
|
+
* time will be used.
|
|
44
|
+
*/
|
|
45
|
+
created?: Temporal.Instant;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Creates a LD signature for the given JSON-LD document.
|
|
49
|
+
* @param jsonLd The JSON-LD document to sign.
|
|
50
|
+
* @param privateKey The private key to sign the document.
|
|
51
|
+
* @param keyId The ID of the public key that corresponds to the private key.
|
|
52
|
+
* @param options Additional options for creating the signature.
|
|
53
|
+
* See also {@link CreateSignatureOptions}.
|
|
54
|
+
* @return The created signature.
|
|
55
|
+
* @throws {TypeError} If the private key is invalid or unsupported.
|
|
56
|
+
* @since 1.0.0
|
|
57
|
+
*/
|
|
58
|
+
declare function createSignature(jsonLd: unknown, privateKey: CryptoKey, keyId: URL, {
|
|
59
|
+
contextLoader,
|
|
60
|
+
created
|
|
61
|
+
}?: CreateSignatureOptions): Promise<Signature>;
|
|
62
|
+
/**
|
|
63
|
+
* Options for signing JSON-LD documents.
|
|
64
|
+
* @since 1.0.0
|
|
65
|
+
*/
|
|
66
|
+
interface SignJsonLdOptions extends CreateSignatureOptions {
|
|
67
|
+
/**
|
|
68
|
+
* The OpenTelemetry tracer provider for tracing the signing process.
|
|
69
|
+
* If omitted, the global tracer provider is used.
|
|
70
|
+
* @since 1.3.0
|
|
71
|
+
*/
|
|
72
|
+
tracerProvider?: TracerProvider;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Signs the given JSON-LD document with the private key and returns the signed
|
|
76
|
+
* JSON-LD document.
|
|
77
|
+
* @param jsonLd The JSON-LD document to sign.
|
|
78
|
+
* @param privateKey The private key to sign the document.
|
|
79
|
+
* @param keyId The key ID to use in the signature. It will be used by the
|
|
80
|
+
* verifier to fetch the corresponding public key.
|
|
81
|
+
* @param options Additional options for signing the document.
|
|
82
|
+
* See also {@link SignJsonLdOptions}.
|
|
83
|
+
* @returns The signed JSON-LD document.
|
|
84
|
+
* @throws {TypeError} If the private key is invalid or unsupported.
|
|
85
|
+
* @since 1.0.0
|
|
86
|
+
*/
|
|
87
|
+
declare function signJsonLd(jsonLd: unknown, privateKey: CryptoKey, keyId: URL, options: SignJsonLdOptions): Promise<{
|
|
88
|
+
signature: Signature;
|
|
89
|
+
}>;
|
|
90
|
+
/**
|
|
91
|
+
* Checks if the given JSON-LD document has a Linked Data Signature-like
|
|
92
|
+
* object, without restricting it to a single suite-specific shape.
|
|
93
|
+
* @param jsonLd The JSON-LD document to check.
|
|
94
|
+
* @returns `true` if the document has a signature-like object; `false`
|
|
95
|
+
* otherwise.
|
|
96
|
+
* @since 2.2.0
|
|
97
|
+
*/
|
|
98
|
+
declare function hasSignatureLike(jsonLd: unknown): boolean;
|
|
99
|
+
/**
|
|
100
|
+
* Detaches Linked Data Signatures from the given JSON-LD document.
|
|
101
|
+
* @param jsonLd The JSON-LD document to modify.
|
|
102
|
+
* @returns The modified JSON-LD document. If the input document does not
|
|
103
|
+
* contain a signature, the original document is returned.
|
|
104
|
+
* @since 1.0.0
|
|
105
|
+
*/
|
|
106
|
+
declare function detachSignature(jsonLd: unknown): unknown;
|
|
107
|
+
/**
|
|
108
|
+
* Options for verifying Linked Data Signatures.
|
|
109
|
+
* @since 1.0.0
|
|
110
|
+
*/
|
|
111
|
+
interface VerifySignatureOptions extends VerificationObservationOptions {
|
|
112
|
+
/**
|
|
113
|
+
* The document loader to use for fetching the public key.
|
|
114
|
+
*/
|
|
115
|
+
documentLoader?: DocumentLoader;
|
|
116
|
+
/**
|
|
117
|
+
* The context loader to use for JSON-LD context retrieval.
|
|
118
|
+
*/
|
|
119
|
+
contextLoader?: DocumentLoader;
|
|
120
|
+
/**
|
|
121
|
+
* The key cache to use for caching public keys.
|
|
122
|
+
*/
|
|
123
|
+
keyCache?: KeyCache;
|
|
124
|
+
/**
|
|
125
|
+
* The OpenTelemetry tracer provider for tracing the verification process.
|
|
126
|
+
* If omitted, the global tracer provider is used.
|
|
127
|
+
* @since 1.3.0
|
|
128
|
+
*/
|
|
129
|
+
tracerProvider?: TracerProvider;
|
|
130
|
+
/**
|
|
131
|
+
* The OpenTelemetry meter provider. If omitted, the global meter provider
|
|
132
|
+
* is used.
|
|
133
|
+
* @since 2.3.0
|
|
134
|
+
*/
|
|
135
|
+
meterProvider?: MeterProvider;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Verifies Linked Data Signatures of the given JSON-LD document.
|
|
139
|
+
*
|
|
140
|
+
* This is a low-level utility that only checks the cryptographic signature
|
|
141
|
+
* and (optionally) the cached key. It does not run the JSON-LD parsing,
|
|
142
|
+
* attribution, and owner checks that a complete inbound LD verification
|
|
143
|
+
* needs. For incoming activities, prefer {@link verifyJsonLd}, which is
|
|
144
|
+
* the public verification entry point and the one that emits the
|
|
145
|
+
* `activitypub.signature.verification.duration` metric for the LD path.
|
|
146
|
+
* `verifySignature` itself only emits
|
|
147
|
+
* `activitypub.signature.key_fetch.duration`, since the rest of the work
|
|
148
|
+
* that the verification-duration metric is meant to cover happens in
|
|
149
|
+
* `verifyJsonLd`.
|
|
150
|
+
* @param jsonLd The JSON-LD document to verify.
|
|
151
|
+
* @param options Options for verifying the signature.
|
|
152
|
+
* @returns The public key that signed the document or `null` if the signature
|
|
153
|
+
* is invalid or the key is not found.
|
|
154
|
+
* @since 1.0.0
|
|
155
|
+
*/
|
|
156
|
+
declare function verifySignature(jsonLd: unknown, options?: VerifySignatureOptions): Promise<CryptographicKey | null>;
|
|
157
|
+
/**
|
|
158
|
+
* Options for verifying JSON-LD documents.
|
|
159
|
+
*/
|
|
160
|
+
interface VerifyJsonLdOptions extends VerifySignatureOptions {}
|
|
161
|
+
/**
|
|
162
|
+
* Verify the authenticity of the given JSON-LD document using Linked Data
|
|
163
|
+
* Signatures. If the document is signed, this function verifies the signature
|
|
164
|
+
* and checks if the document is attributed to the owner of the public key.
|
|
165
|
+
* If the document is not signed, this function returns `false`.
|
|
166
|
+
* @param jsonLd The JSON-LD document to verify.
|
|
167
|
+
* @param options Options for verifying the document.
|
|
168
|
+
* @returns `true` if the document is authentic; `false` otherwise.
|
|
169
|
+
*/
|
|
170
|
+
declare function verifyJsonLd(jsonLd: unknown, options?: VerifyJsonLdOptions): Promise<boolean>;
|
|
171
|
+
//#endregion
|
|
172
|
+
//#region src/sig/portable-collection.d.ts
|
|
173
|
+
/**
|
|
174
|
+
* Options for {@link verifyPortableObject}.
|
|
175
|
+
*
|
|
176
|
+
* Besides the options for {@link verifyPortableObjectProof}, it takes where
|
|
177
|
+
* the document came from, which property accessors pass automatically when
|
|
178
|
+
* `verifyPortableObject()` is used as their `verifyPortableObject` option.
|
|
179
|
+
* @since 2.4.0
|
|
180
|
+
*/
|
|
181
|
+
interface VerifyPortableObjectOptions extends VerifyPortableObjectProofOptions, Omit<PortableObjectVerifierOptions, "documentLoader" | "contextLoader" | "tracerProvider"> {}
|
|
182
|
+
/**
|
|
183
|
+
* The reason why {@link verifyPortableObject} did not accept a document.
|
|
184
|
+
*
|
|
185
|
+
* Besides the reasons of {@link verifyPortableObjectProof}, it describes why
|
|
186
|
+
* an unsecured portable collection was not trusted. The
|
|
187
|
+
* `unsecuredCollection` reason itself never appears, since such collections
|
|
188
|
+
* are judged by the gateway trust policy instead.
|
|
189
|
+
* @since 2.4.0
|
|
190
|
+
*/
|
|
191
|
+
type VerifyPortableObjectFailureReason = Exclude<VerifyPortableObjectProofFailureReason, {
|
|
192
|
+
readonly type: "unsecuredCollection";
|
|
193
|
+
}> | {
|
|
194
|
+
/**
|
|
195
|
+
* The unsecured collection was not retrieved from a gateway, i.e., the
|
|
196
|
+
* document's final URL is missing or is not a compatible identifier for
|
|
197
|
+
* the same portable collection.
|
|
198
|
+
*/
|
|
199
|
+
readonly type: "unknownCollectionSource"; /** The final URL of the document, if known. */
|
|
200
|
+
readonly documentUrl: URL | null;
|
|
201
|
+
} | {
|
|
202
|
+
/**
|
|
203
|
+
* The actor that owns the unsecured collection cannot be determined
|
|
204
|
+
* unambiguously.
|
|
205
|
+
*/
|
|
206
|
+
readonly type: "unknownCollectionOwner";
|
|
207
|
+
} | {
|
|
208
|
+
/** The collection, its pages, or its referrer disagree on its owner. */readonly type: "conflictingCollectionOwners"; /** The owner candidates that disagree. */
|
|
209
|
+
readonly candidates: readonly URL[];
|
|
210
|
+
} | {
|
|
211
|
+
/**
|
|
212
|
+
* A collection page does not belong to the collection it was reached
|
|
213
|
+
* from: its `partOf` names another collection, or its cryptographic
|
|
214
|
+
* origin differs.
|
|
215
|
+
*/
|
|
216
|
+
readonly type: "collectionPageMismatch"; /** The page. */
|
|
217
|
+
readonly pageId: URL; /** The collection that the page was reached from. */
|
|
218
|
+
readonly collectionId: URL; /** The mismatching `partOf`, or `null` if the origin differs. */
|
|
219
|
+
readonly partOf: URL | null;
|
|
220
|
+
} | {
|
|
221
|
+
/**
|
|
222
|
+
* The owner's actor document could not be retrieved or verified, or it
|
|
223
|
+
* lists no gateways.
|
|
224
|
+
*/
|
|
225
|
+
readonly type: "collectionOwnerUnavailable"; /** The owner candidate. */
|
|
226
|
+
readonly owner: URL;
|
|
227
|
+
} | {
|
|
228
|
+
/**
|
|
229
|
+
* The owner's actor document does not list the collection as its
|
|
230
|
+
* `inbox`, `outbox`, `followers`, `following`, or `liked`.
|
|
231
|
+
*/
|
|
232
|
+
readonly type: "collectionNotListedByOwner"; /** The owner. */
|
|
233
|
+
readonly owner: URL; /** The collection. */
|
|
234
|
+
readonly collectionId: URL;
|
|
235
|
+
} | {
|
|
236
|
+
/**
|
|
237
|
+
* The unsecured collection was retrieved from a gateway that its owner
|
|
238
|
+
* does not list in its `gateways`.
|
|
239
|
+
*/
|
|
240
|
+
readonly type: "untrustedGateway"; /** The owner. */
|
|
241
|
+
readonly owner: URL; /** The gateway that served the collection. */
|
|
242
|
+
readonly gateway: URL; /** The owner's gateways. */
|
|
243
|
+
readonly gateways: readonly URL[];
|
|
244
|
+
};
|
|
245
|
+
/**
|
|
246
|
+
* The result of {@link verifyPortableObject}.
|
|
247
|
+
* @since 2.4.0
|
|
248
|
+
*/
|
|
249
|
+
type VerifyPortableObjectResult = {
|
|
250
|
+
/** Whether the document is accepted. */readonly verified: true; /** The document carries valid Object Integrity Proofs. */
|
|
251
|
+
readonly method: "proof"; /** The public keys used by the verified proofs, in proof order. */
|
|
252
|
+
readonly keys: readonly Multikey[];
|
|
253
|
+
/**
|
|
254
|
+
* Opaque state for verifying the pages of a portable collection. Do not
|
|
255
|
+
* inspect it; property accessors pass it back automatically.
|
|
256
|
+
*/
|
|
257
|
+
readonly collectionContext?: unknown;
|
|
258
|
+
} | {
|
|
259
|
+
/** Whether the document is accepted. */readonly verified: true;
|
|
260
|
+
/**
|
|
261
|
+
* The document is an unsecured portable collection served by a gateway
|
|
262
|
+
* that its owner lists.
|
|
263
|
+
*/
|
|
264
|
+
readonly method: "gateway"; /** The document has no integrity proof. */
|
|
265
|
+
readonly unsecured: true; /** The actor that owns the collection. */
|
|
266
|
+
readonly owner: URL; /** The gateway that served the collection. */
|
|
267
|
+
readonly gateway: URL;
|
|
268
|
+
/**
|
|
269
|
+
* Opaque state for verifying the pages of a portable collection. Do not
|
|
270
|
+
* inspect it; property accessors pass it back automatically.
|
|
271
|
+
*/
|
|
272
|
+
readonly collectionContext: unknown;
|
|
273
|
+
} | {
|
|
274
|
+
/** Whether the document is accepted. */readonly verified: false; /** Why the document was not accepted. */
|
|
275
|
+
readonly reason: VerifyPortableObjectFailureReason;
|
|
276
|
+
};
|
|
277
|
+
/**
|
|
278
|
+
* Applies the [FEP-ef61] trust policy to a portable object fetched through
|
|
279
|
+
* a gateway.
|
|
280
|
+
*
|
|
281
|
+
* Portable actors, activities, objects, and collections with proofs are
|
|
282
|
+
* verified by {@link verifyPortableObjectProof}. A portable collection or
|
|
283
|
+
* collection page without a proof is accepted only if all of the following
|
|
284
|
+
* hold:
|
|
285
|
+
*
|
|
286
|
+
* - It was retrieved from a gateway: its final URL (`documentUrl`) is
|
|
287
|
+
* a compatible identifier for the same portable collection.
|
|
288
|
+
* - Its owner is determined unambiguously: the actor whose `inbox`,
|
|
289
|
+
* `outbox`, `followers`, `following`, or `liked` property referred to
|
|
290
|
+
* the collection, or the single actor in its `attributedTo`. A page
|
|
291
|
+
* inherits the owner of the collection it was reached from through
|
|
292
|
+
* `first`, `last`, `current`, `next`, or `prev`, and must not name
|
|
293
|
+
* another collection in `partOf`.
|
|
294
|
+
* - The owner's actor document is verified by its proof and lists the
|
|
295
|
+
* collection as its `inbox`, `outbox`, `followers`, `following`, or
|
|
296
|
+
* `liked`.
|
|
297
|
+
* - The gateway that served the collection is in the owner's `gateways`.
|
|
298
|
+
*
|
|
299
|
+
* Where the document came from and which object referred to it are passed
|
|
300
|
+
* by property accessors when this function is used as their
|
|
301
|
+
* `verifyPortableObject` option. Objects embedded in an unsecured
|
|
302
|
+
* collection accepted this way are not trusted: accessors dereference and
|
|
303
|
+
* verify them one by one.
|
|
304
|
+
*
|
|
305
|
+
* Note that acceptance through the gateway policy does not verify anything
|
|
306
|
+
* cryptographically; it only means that the owner trusts the gateway.
|
|
307
|
+
*
|
|
308
|
+
* [FEP-ef61]: https://w3id.org/fep/ef61
|
|
309
|
+
*
|
|
310
|
+
* @param jsonLd The JSON-LD document to verify.
|
|
311
|
+
* @param options Additional options. See also
|
|
312
|
+
* {@link VerifyPortableObjectOptions}.
|
|
313
|
+
* @returns The detailed result.
|
|
314
|
+
* @throws {TypeError} If the input is not a single JSON-LD object or has a
|
|
315
|
+
* malformed portable ID.
|
|
316
|
+
* @since 2.4.0
|
|
317
|
+
*/
|
|
318
|
+
declare function verifyPortableObject(jsonLd: unknown, options?: VerifyPortableObjectOptions): Promise<VerifyPortableObjectResult>;
|
|
319
|
+
//#endregion
|
|
320
|
+
export { CreateSignatureOptions as a, VerifySignatureOptions as c, detachSignature as d, hasSignatureLike as f, verifySignature as h, verifyPortableObject as i, attachSignature as l, verifyJsonLd as m, VerifyPortableObjectOptions as n, SignJsonLdOptions as o, signJsonLd as p, VerifyPortableObjectResult as r, VerifyJsonLdOptions as s, VerifyPortableObjectFailureReason as t, createSignature as u };
|