@fedify/fedify 2.4.0-dev.2127 → 2.4.0-dev.2141
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{builder-B2bgGYbP.mjs → builder-BI7H61zO.mjs} +3 -3
- package/dist/compat/mod.d.cts +1 -1
- package/dist/compat/mod.d.ts +1 -1
- package/dist/compat/transformers.test.mjs +1 -1
- package/dist/{compound-proof-SVlHSzV7.mjs → compound-proof-D0H4LLvQ.mjs} +15 -20
- package/dist/{context-Ci5vuUr_.d.ts → context-B2C8nuN3.d.ts} +4 -3
- package/dist/{context-Bm6ldGvx.d.cts → context-CrDDVrbF.d.cts} +4 -3
- package/dist/{deno-Be9xoxps.mjs → deno-BXI_BLNy.mjs} +1 -1
- package/dist/{docloader-Dtuyb0ps.mjs → docloader-B5BIo7e9.mjs} +2 -2
- package/dist/federation/builder.test.mjs +1 -1
- package/dist/federation/compound-fanout.test.mjs +3 -3
- package/dist/federation/handler-compound-proof.test.mjs +64 -8
- package/dist/federation/handler.test.mjs +5 -5
- package/dist/federation/hashlink-media.test.mjs +2 -2
- package/dist/federation/idempotency.test.mjs +2 -2
- package/dist/federation/metrics.test.mjs +1 -1
- package/dist/federation/middleware.test.mjs +7 -7
- package/dist/federation/mod.cjs +1 -1
- package/dist/federation/mod.d.cts +2 -2
- package/dist/federation/mod.d.ts +2 -2
- package/dist/federation/mod.js +1 -1
- package/dist/federation/outgoing-proof.test.mjs +6 -6
- package/dist/federation/portable-actor.test.mjs +3 -3
- package/dist/federation/portable-chain.test.mjs +17 -5
- package/dist/federation/portable-gateway-keys.test.mjs +76 -5
- package/dist/federation/portable-inbox.test.mjs +9 -4
- package/dist/federation/portable.test.mjs +3 -3
- package/dist/federation/send.test.mjs +3 -3
- package/dist/federation/tasks/enqueue.test.mjs +1 -1
- package/dist/federation/tasks/tasks.test.mjs +2 -2
- package/dist/federation/temporal.test.mjs +1 -1
- package/dist/federation/webfinger.test.mjs +1 -1
- package/dist/{federation-B6IHuS6n.cjs → federation-DqDOPjWo.cjs} +23 -28
- package/dist/{http-D76Py0M4.d.cts → http-C-x_OLSp.d.ts} +57 -14
- package/dist/{http-BFeK9sBg.mjs → http-CEx2SZjf.mjs} +18 -12
- package/dist/{http-BrQgkJay.d.ts → http-CjezPjFX.d.cts} +57 -14
- package/dist/{http-Rmbiu-5S.js → http-D4KW2GTi.js} +376 -36
- package/dist/{http-o8l4QeUY.cjs → http-DSYQQn23.cjs} +392 -34
- package/dist/{key-Cc1b6pW9.mjs → key-C0giKuki.mjs} +103 -16
- package/dist/{kv-cache-tLKBfxHc.mjs → kv-cache-AWTrxTq3.mjs} +1 -1
- package/dist/{kv-cache-BUkgZAcX.cjs → kv-cache-BcsvaCCL.cjs} +1 -1
- package/dist/{kv-cache-BweDce2I.js → kv-cache-D_E-2K3i.js} +1 -1
- package/dist/{ld-DQNTIrAe.mjs → ld-CWDReGMZ.mjs} +3 -3
- package/dist/{metrics-DDE9S63Q.mjs → metrics-DxlVXwn5.mjs} +1 -1
- package/dist/{middleware-K9aLnf57.js → middleware-1mv9QR16.js} +23 -28
- package/dist/{middleware-CsQorLC_.mjs → middleware-B7stx5gy.mjs} +1 -1
- package/dist/{middleware-BdhvduR9.mjs → middleware-CAWRGSwH.mjs} +24 -24
- package/dist/{mod-AVir5nVI.d.cts → mod-B7SfEqIP.d.cts} +1 -1
- package/dist/{mod-Co53r-VP.d.ts → mod-Bz9tFXI2.d.ts} +1 -1
- package/dist/{mod-eVOUPbQE.d.ts → mod-C06GoL5Z.d.ts} +1 -1
- package/dist/{mod-Cwdt_CWU.d.ts → mod-CZetqT5h.d.ts} +1 -1
- package/dist/{mod-Cr79cQlc.d.cts → mod-D4g9ffEn.d.cts} +1 -1
- package/dist/{mod-Byt5tvAS.d.cts → mod-S--JxYjo.d.cts} +1 -1
- package/dist/mod.cjs +4 -4
- package/dist/mod.d.cts +5 -5
- package/dist/mod.d.ts +5 -5
- package/dist/mod.js +4 -4
- package/dist/nodeinfo/handler.test.mjs +1 -1
- package/dist/{owner-CCfdL83M.mjs → owner-CgoCOTUQ.mjs} +37 -4
- package/dist/{portable-collection-WXaHkNqC.mjs → portable-collection-0_5DyXMt.mjs} +2 -2
- package/dist/{portable-collection-DXogVs__.cjs → portable-collection-BD8fE3j3.cjs} +34 -1
- package/dist/{portable-collection-DdXsKBg4.js → portable-collection-CG9P_i0E.js} +34 -1
- package/dist/portable-key-BXkgMpw1.mjs +395 -0
- package/dist/{portable-key-id-T7lecIbt.mjs → portable-key-id-Bg259c4Z.mjs} +69 -2
- package/dist/{proof-CW8k0R1G.mjs → proof-B5s-W6Sm.mjs} +7 -6
- package/dist/{send--FORaIc4.mjs → send-BAJvkdNL.mjs} +3 -3
- package/dist/sig/compound-proof-discovery.test.mjs +1 -1
- package/dist/sig/compound-proof-producer.test.mjs +1 -1
- package/dist/sig/compound-proof-verification.test.mjs +196 -2
- package/dist/sig/compound-proof.test.mjs +2 -2
- package/dist/sig/http.test.mjs +2 -2
- package/dist/sig/key.test.mjs +1 -1
- package/dist/sig/ld.test.mjs +2 -2
- package/dist/sig/mod.cjs +2 -2
- package/dist/sig/mod.d.cts +2 -2
- package/dist/sig/mod.d.ts +2 -2
- package/dist/sig/mod.js +2 -2
- package/dist/sig/owner.test.mjs +1 -1
- package/dist/sig/portable-collection.test.mjs +1 -1
- package/dist/sig/portable-key.test.mjs +479 -5
- package/dist/sig/proof.test.mjs +45 -3
- package/dist/{temporal-CffY_XOJ.mjs → temporal-BkCPJ_uC.mjs} +1 -1
- package/dist/testing/kv.test.mjs +1 -1
- package/dist/testing/mod.d.mts +3 -2
- package/dist/utils/docloader.test.mjs +2 -2
- package/dist/utils/kv-cache.test.mjs +1 -1
- 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/package.json +6 -6
- package/dist/portable-key-C-fPq_Yf.mjs +0 -214
|
@@ -2,10 +2,12 @@ import "temporal-polyfill";
|
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
4
|
import { isActor } from "@fedify/vocab";
|
|
5
|
-
import { canonicalizePortableUri, formatIri, fromCompatibleEf61Id, getFe34Origin, toCompatibleEf61Id } from "@fedify/vocab-runtime";
|
|
5
|
+
import { canonicalizePortableUri, formatIri, fromCompatibleEf61Id, getFe34Origin, parseIri, toCompatibleEf61Id } from "@fedify/vocab-runtime";
|
|
6
6
|
import { isCompatibleEf61Iri } from "@fedify/vocab-runtime/internal/portable-dereference";
|
|
7
7
|
//#region src/sig/portable-key-id.ts
|
|
8
8
|
const COMPATIBLE_KEY_ID_PATH_PATTERN = /^\/\.well-known\/apgateway\/did(?::|%3A)/i;
|
|
9
|
+
const RAW_PORTABLE_URI_PATTERN = /^ap(?:\+ef61)?:\/\//i;
|
|
10
|
+
const RAW_COMPATIBLE_ID_PREFIX_PATTERN = /^https?:\/\/[^/?#]*\/\.well-known\/apgateway\/(?=did(?::|%3A))/i;
|
|
9
11
|
/**
|
|
10
12
|
* Checks whether the URL is an `ap:` or `ap+ef61:` URI.
|
|
11
13
|
* @internal
|
|
@@ -69,6 +71,20 @@ function isCompatibleKeyId(keyId) {
|
|
|
69
71
|
return (keyId.protocol === "http:" || keyId.protocol === "https:") && COMPATIBLE_KEY_ID_PATH_PATTERN.test(keyId.pathname);
|
|
70
72
|
}
|
|
71
73
|
/**
|
|
74
|
+
* Checks whether a key ID may name a key that is valid only for HTTP
|
|
75
|
+
* Signatures: a gateway key at an [FEP-ef61] compatible identifier, or a key
|
|
76
|
+
* of a portable actor at an `ap:` or `ap+ef61:` URI. Neither ever makes or
|
|
77
|
+
* verifies an Object Integrity Proof or a Linked Data Signature: a portable
|
|
78
|
+
* object's proof is made by its DID, and a proof made with a gateway key
|
|
79
|
+
* would claim that the gateway authored the object.
|
|
80
|
+
*
|
|
81
|
+
* [FEP-ef61]: https://w3id.org/fep/ef61
|
|
82
|
+
* @internal
|
|
83
|
+
*/
|
|
84
|
+
function isPortableKeyId(keyId) {
|
|
85
|
+
return isPortableUri(keyId) || isCompatibleKeyId(keyId);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
72
88
|
* Gets the canonical portable ID of an actor ID that is either an `ap:` or
|
|
73
89
|
* `ap+ef61:` URI or a compatible identifier.
|
|
74
90
|
* @returns The canonical portable ID, or `null` if the ID is neither, or is
|
|
@@ -87,6 +103,57 @@ function getCanonicalPortableId(id) {
|
|
|
87
103
|
}
|
|
88
104
|
}
|
|
89
105
|
/**
|
|
106
|
+
* Gets the canonical portable ID of an `ap:` or `ap+ef61:` URI or
|
|
107
|
+
* a compatible identifier as it is written, before any URL parsing.
|
|
108
|
+
* Parsing an ID into a `URL` resolves dot segments in its path, which would
|
|
109
|
+
* make it identify another portable object, e.g.,
|
|
110
|
+
* `ap://did:key:z6Mk…/x/../actor` would become `ap://did:key:z6Mk…/actor`.
|
|
111
|
+
* Such an ID has no canonical portable ID here.
|
|
112
|
+
* @param raw The ID as it is written.
|
|
113
|
+
* @returns The canonical portable ID, fragment included, or `null` if the ID
|
|
114
|
+
* is neither an `ap:` or `ap+ef61:` URI nor a compatible identifier,
|
|
115
|
+
* is malformed, or would identify another object once parsed.
|
|
116
|
+
* @internal
|
|
117
|
+
*/
|
|
118
|
+
function getRawCanonicalPortableId(raw) {
|
|
119
|
+
let canonical;
|
|
120
|
+
let parsed;
|
|
121
|
+
try {
|
|
122
|
+
if (RAW_PORTABLE_URI_PATTERN.test(raw)) {
|
|
123
|
+
canonical = canonicalizePortableUri(raw);
|
|
124
|
+
parsed = canonicalizePortableUri(formatIri(parseIri(raw)));
|
|
125
|
+
} else {
|
|
126
|
+
const prefix = raw.match(RAW_COMPATIBLE_ID_PREFIX_PATTERN);
|
|
127
|
+
if (prefix == null || !URL.canParse(raw)) return null;
|
|
128
|
+
canonical = canonicalizePortableUri("ap://" + raw.slice(prefix[0].length));
|
|
129
|
+
parsed = getCanonicalPortableId(new URL(raw));
|
|
130
|
+
}
|
|
131
|
+
} catch (error) {
|
|
132
|
+
if (error instanceof TypeError) return null;
|
|
133
|
+
throw error;
|
|
134
|
+
}
|
|
135
|
+
return canonical === parsed ? canonical : null;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Parses a key ID, e.g., the `keyId` of an HTTP Signature, into a `URL`.
|
|
139
|
+
* An `ap:` or `ap+ef61:` key ID is parsed into the internal `URL` form of
|
|
140
|
+
* portable URIs. A portable or compatible key ID that is malformed, or
|
|
141
|
+
* whose identity URL parsing would change, e.g., by resolving dot segments in
|
|
142
|
+
* its path, is refused, so that it can never be taken for, or looked up in
|
|
143
|
+
* the key cache as, the key of another object.
|
|
144
|
+
* @param raw The key ID as it is written.
|
|
145
|
+
* @returns The parsed key ID, or `null` if it is invalid.
|
|
146
|
+
* @internal
|
|
147
|
+
*/
|
|
148
|
+
function parseKeyIdString(raw) {
|
|
149
|
+
if (RAW_PORTABLE_URI_PATTERN.test(raw)) return getRawCanonicalPortableId(raw) == null ? null : parseIri(raw);
|
|
150
|
+
if (!URL.canParse(raw)) return null;
|
|
151
|
+
const url = new URL(raw);
|
|
152
|
+
if (isPortableUri(url)) return null;
|
|
153
|
+
if (!RAW_COMPATIBLE_ID_PREFIX_PATTERN.test(raw)) return isCompatibleKeyId(url) ? null : url;
|
|
154
|
+
return getRawCanonicalPortableId(raw) == null ? null : url;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
90
157
|
* Builds the base of the key IDs of a gateway's keys for a portable actor:
|
|
91
158
|
* the actor's compatible identifier on the gateway.
|
|
92
159
|
* @param actorId The portable actor's ID, either an `ap:` or `ap+ef61:` URI
|
|
@@ -134,4 +201,4 @@ async function isSamePublicKey(a, b) {
|
|
|
134
201
|
return x.kty === y.kty && x.crv === y.crv && x.n === y.n && x.e === y.e && x.x === y.x && x.y === y.y;
|
|
135
202
|
}
|
|
136
203
|
//#endregion
|
|
137
|
-
export {
|
|
204
|
+
export { hasPortableActor as a, isPortableId as c, isSamePublicKey as d, parseKeyIdString as f, getRawCanonicalPortableId as i, isPortableKeyId as l, getGatewayKeyBase as n, isCompatibleKeyId as o, getPortableDid as r, isPortableActorDocument as s, getCanonicalPortableId as t, isPortableUri as u };
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { Temporal } from "temporal-polyfill";
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
|
-
import { n as version, t as name } from "./deno-
|
|
5
|
-
import { n as getDurationMs, r as getFederationMetrics, s as measureSignatureKeyFetch } from "./metrics-
|
|
6
|
-
import {
|
|
7
|
-
import { c as validateCryptoKey, i as fetchKey, t as bypassKeyCacheReads } from "./key-
|
|
4
|
+
import { n as version, t as name } from "./deno-BXI_BLNy.mjs";
|
|
5
|
+
import { n as getDurationMs, r as getFederationMetrics, s as measureSignatureKeyFetch } from "./metrics-DxlVXwn5.mjs";
|
|
6
|
+
import { c as isPortableId, r as getPortableDid } from "./portable-key-id-Bg259c4Z.mjs";
|
|
7
|
+
import { c as validateCryptoKey, i as fetchKey, t as bypassKeyCacheReads } from "./key-C0giKuki.mjs";
|
|
8
8
|
import { n as preloadedOnlyDocumentLoader } from "./public-audience--klBIOk1.mjs";
|
|
9
9
|
import { r as normalizeOutgoingActivityJsonLd } from "./outgoing-jsonld-4IJqPYos.mjs";
|
|
10
|
-
import { c as getNormalizationContextLoader } from "./ld-
|
|
10
|
+
import { c as getNormalizationContextLoader } from "./ld-CWDReGMZ.mjs";
|
|
11
11
|
import { getLogger } from "@logtape/logtape";
|
|
12
12
|
import { Activity, DataIntegrityProof, Multikey, getTypeId } from "@fedify/vocab";
|
|
13
13
|
import { SpanStatusCode, trace } from "@opentelemetry/api";
|
|
@@ -1092,7 +1092,8 @@ async function verifyObject(cls, jsonLd, options = {}) {
|
|
|
1092
1092
|
...options,
|
|
1093
1093
|
documentLoader: proofDocumentLoader,
|
|
1094
1094
|
gateways: [],
|
|
1095
|
-
verifyPortableObject: acceptPortableProofDocument
|
|
1095
|
+
verifyPortableObject: acceptPortableProofDocument,
|
|
1096
|
+
inheritPortableObjectVerifier: false
|
|
1096
1097
|
})) {
|
|
1097
1098
|
const rawProofCandidate = takeRawProofCandidate(rawProofCandidatePool, proof);
|
|
1098
1099
|
if (rawProofCandidate == null) return null;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import "temporal-polyfill";
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
|
-
import { n as version, t as name } from "./deno-
|
|
5
|
-
import { n as getDurationMs, r as getFederationMetrics } from "./metrics-
|
|
6
|
-
import { n as doubleKnock } from "./http-
|
|
4
|
+
import { n as version, t as name } from "./deno-BXI_BLNy.mjs";
|
|
5
|
+
import { n as getDurationMs, r as getFederationMetrics } from "./metrics-DxlVXwn5.mjs";
|
|
6
|
+
import { n as doubleKnock } from "./http-CEx2SZjf.mjs";
|
|
7
7
|
import { getLogger } from "@logtape/logtape";
|
|
8
8
|
import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
|
|
9
9
|
import { FetchError, UrlError, validatePublicUrl } from "@fedify/vocab-runtime";
|
|
@@ -3,7 +3,7 @@ import "urlpattern-polyfill";
|
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
4
|
import { t as assertEquals } from "../assert_equals-Z6IcEbWU.mjs";
|
|
5
5
|
import "../std__assert-DvMDRPes.mjs";
|
|
6
|
-
import { i as inspectCompoundPortableObjectApplicability, n as discoverCompoundProofDocuments } from "../compound-proof-
|
|
6
|
+
import { i as inspectCompoundPortableObjectApplicability, n as discoverCompoundProofDocuments } from "../compound-proof-D0H4LLvQ.mjs";
|
|
7
7
|
import { t as map_local_create_note_default } from "../map-local-create-note-B0SeXJms.mjs";
|
|
8
8
|
import { test } from "@fedify/fixture";
|
|
9
9
|
//#region src/sig/compound-proof-discovery.test.ts
|
|
@@ -3,7 +3,7 @@ import "urlpattern-polyfill";
|
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
4
|
import { t as assertEquals } from "../assert_equals-Z6IcEbWU.mjs";
|
|
5
5
|
import "../std__assert-DvMDRPes.mjs";
|
|
6
|
-
import { i as inspectCompoundPortableObjectApplicability, r as findUnsupportedCompoundProofShape, t as containsCompoundPortableObject } from "../compound-proof-
|
|
6
|
+
import { i as inspectCompoundPortableObjectApplicability, r as findUnsupportedCompoundProofShape, t as containsCompoundPortableObject } from "../compound-proof-D0H4LLvQ.mjs";
|
|
7
7
|
import { test } from "@fedify/fixture";
|
|
8
8
|
//#region src/sig/compound-proof-producer.test.ts
|
|
9
9
|
const portableId = "ap+ef61://did:key:z6MkAlice/objects/1";
|
|
@@ -4,9 +4,9 @@ globalThis.addEventListener = () => {};
|
|
|
4
4
|
import { t as assertEquals } from "../assert_equals-Z6IcEbWU.mjs";
|
|
5
5
|
import "../std__assert-DvMDRPes.mjs";
|
|
6
6
|
import { t as assert } from "../assert-D1Eafmd_.mjs";
|
|
7
|
-
import { a as verifyMapLocalProof, c as verifyPortableObjectProofPolicy } from "../proof-
|
|
7
|
+
import { a as verifyMapLocalProof, c as verifyPortableObjectProofPolicy } from "../proof-B5s-W6Sm.mjs";
|
|
8
8
|
import { n as ed25519PrivateKey, r as ed25519PublicKey, s as rsaPublicKey2 } from "../keys-DIJNHW-Y.mjs";
|
|
9
|
-
import { a as verifyCompoundPortableObjectProofs, i as inspectCompoundPortableObjectApplicability, o as verifyCompoundProofDocuments, t as containsCompoundPortableObject } from "../compound-proof-
|
|
9
|
+
import { a as verifyCompoundPortableObjectProofs, i as inspectCompoundPortableObjectApplicability, o as verifyCompoundProofDocuments, t as containsCompoundPortableObject } from "../compound-proof-D0H4LLvQ.mjs";
|
|
10
10
|
import { t as map_local_create_note_default } from "../map-local-create-note-B0SeXJms.mjs";
|
|
11
11
|
import { t as map_local_context_conflict_default } from "../map-local-context-conflict-DOYEEJ3u.mjs";
|
|
12
12
|
import { CryptographicKey, Multikey, Person } from "@fedify/vocab";
|
|
@@ -618,5 +618,199 @@ test("verifyCompoundPortableObjectProofs() exempts only keys of the parent itsel
|
|
|
618
618
|
assert(result.portableObjects.some((o) => o.path !== "" && !o.verified), name);
|
|
619
619
|
}
|
|
620
620
|
});
|
|
621
|
+
/**
|
|
622
|
+
* Rewrites the IDs of a {@link compatibleActor}'s keys as they are written,
|
|
623
|
+
* e.g., as `ap:` URIs, which the serializer would canonicalize otherwise.
|
|
624
|
+
*/
|
|
625
|
+
function withKeyIds(actor, keyBase, { id = actor.id, owner = id } = {}) {
|
|
626
|
+
const [multikey] = actor.assertionMethod;
|
|
627
|
+
return {
|
|
628
|
+
...actor,
|
|
629
|
+
id,
|
|
630
|
+
publicKey: {
|
|
631
|
+
...asRecord(actor.publicKey),
|
|
632
|
+
id: `${keyBase}#main-key`,
|
|
633
|
+
owner
|
|
634
|
+
},
|
|
635
|
+
assertionMethod: [{
|
|
636
|
+
...multikey,
|
|
637
|
+
id: `${keyBase}#ed25519-key`,
|
|
638
|
+
controller: owner
|
|
639
|
+
}]
|
|
640
|
+
};
|
|
641
|
+
}
|
|
642
|
+
const apActorId = `ap://${compatibleDid}/actor`;
|
|
643
|
+
test("verifyCompoundPortableObjectProofs() exempts keys at ap: URIs embedded in portable actors", async () => {
|
|
644
|
+
const actor = await compatibleActor();
|
|
645
|
+
const encodedDid = encodeURIComponent(compatibleDid);
|
|
646
|
+
const cases = {
|
|
647
|
+
"ap: keys of an ap: actor": [apActorId, apActorId],
|
|
648
|
+
"ap: keys of a compatible-ID actor": [compatibleActorId, apActorId],
|
|
649
|
+
"ap+ef61: keys": [apActorId, `ap+ef61://${compatibleDid}/actor`],
|
|
650
|
+
"keys with percent-encoded DIDs": [apActorId, `ap://${encodedDid}/actor`],
|
|
651
|
+
"ap+ef61: keys of a percent-encoded actor": [`ap+ef61://${encodedDid}/actor`, `ap+ef61://${encodedDid}/actor`],
|
|
652
|
+
"keys with an uppercase scheme": [apActorId, `AP://${compatibleDid}/actor`],
|
|
653
|
+
"keys with location hints": [apActorId, `${apActorId}?@gateway=https%3A%2F%2Fgw.example`]
|
|
654
|
+
};
|
|
655
|
+
for (const [name, [id, keyBase]] of Object.entries(cases)) {
|
|
656
|
+
const result = await verifyCompoundPortableObjectProofs(await signCompatible(withKeyIds(actor, keyBase, { id })), limits, options);
|
|
657
|
+
assert(result.status === "ok", name);
|
|
658
|
+
assert(result.verified, name);
|
|
659
|
+
assertEquals(result.portableObjects.map((o) => o.path), [""], name);
|
|
660
|
+
}
|
|
661
|
+
const apActor = withKeyIds(actor, apActorId, { id: apActorId });
|
|
662
|
+
const atIdKeys = (key) => {
|
|
663
|
+
const { id, ...rest } = asRecord(key);
|
|
664
|
+
return {
|
|
665
|
+
...rest,
|
|
666
|
+
"@id": id
|
|
667
|
+
};
|
|
668
|
+
};
|
|
669
|
+
const withAtIds = await verifyCompoundPortableObjectProofs(await signCompatible({
|
|
670
|
+
...apActor,
|
|
671
|
+
publicKey: atIdKeys(apActor.publicKey),
|
|
672
|
+
assertionMethod: apActor.assertionMethod.map(atIdKeys)
|
|
673
|
+
}), limits, options);
|
|
674
|
+
assert(withAtIds.status === "ok");
|
|
675
|
+
assert(withAtIds.verified);
|
|
676
|
+
assertEquals(withAtIds.portableObjects.map((o) => o.path), [""]);
|
|
677
|
+
const withApTerm = await verifyCompoundPortableObjectProofs(await signCompatible({
|
|
678
|
+
...withKeyIds(actor, apActorId, { id: apActorId }),
|
|
679
|
+
"@context": [...actor["@context"], { ap: "https://ap.example/" }]
|
|
680
|
+
}), limits, options);
|
|
681
|
+
assert(withApTerm.status === "ok");
|
|
682
|
+
assert(withApTerm.verified);
|
|
683
|
+
assertEquals(withApTerm.portableObjects.map((o) => o.path), [""]);
|
|
684
|
+
const result = await verifyCompoundPortableObjectProofs(await signCompatible({
|
|
685
|
+
"@context": [...compatibleContext],
|
|
686
|
+
id: `ap://${compatibleDid}/activities/1`,
|
|
687
|
+
type: "Update",
|
|
688
|
+
actor: apActorId,
|
|
689
|
+
object: await signCompatible(withKeyIds(actor, apActorId, { id: apActorId }))
|
|
690
|
+
}), limits, options);
|
|
691
|
+
assert(result.status === "ok");
|
|
692
|
+
assert(result.verified);
|
|
693
|
+
assertEquals(result.portableObjects.map((o) => o.path), ["/object", ""]);
|
|
694
|
+
});
|
|
695
|
+
test("verifyCompoundPortableObjectProofs() exempts only ap: keys of the parent itself", async () => {
|
|
696
|
+
const actor = withKeyIds(await compatibleActor(), apActorId, { id: apActorId });
|
|
697
|
+
const publicKey = asRecord(actor.publicKey);
|
|
698
|
+
const otherDid = "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK";
|
|
699
|
+
const keyIds = {
|
|
700
|
+
"a key of another actor": `ap://${compatibleDid}/other#main-key`,
|
|
701
|
+
"a key of another DID": `ap://${otherDid}/actor#main-key`,
|
|
702
|
+
"a key without a fragment": apActorId,
|
|
703
|
+
"a key with an empty fragment": `${apActorId}#`,
|
|
704
|
+
"a key with dot segments": `ap://${compatibleDid}/x/../actor#main-key`,
|
|
705
|
+
"a key with encoded dot segments": `ap://${compatibleDid}/x/%2E%2E/actor#main-key`,
|
|
706
|
+
"a key with an encoded slash": `${apActorId}%2F#main-key`,
|
|
707
|
+
"a key with an encoded fragment delimiter": `${apActorId}%23main-key`,
|
|
708
|
+
"a compatible key with dot segments": `https://gw.example/.well-known/apgateway/${compatibleDid}/x/../actor#main-key`
|
|
709
|
+
};
|
|
710
|
+
const cases = {};
|
|
711
|
+
for (const [name, id] of Object.entries(keyIds)) cases[name] = {
|
|
712
|
+
...actor,
|
|
713
|
+
publicKey: {
|
|
714
|
+
...publicKey,
|
|
715
|
+
id
|
|
716
|
+
}
|
|
717
|
+
};
|
|
718
|
+
Object.assign(cases, {
|
|
719
|
+
"a key owned by another actor": {
|
|
720
|
+
...actor,
|
|
721
|
+
publicKey: {
|
|
722
|
+
...publicKey,
|
|
723
|
+
owner: `ap://${otherDid}/actor`
|
|
724
|
+
}
|
|
725
|
+
},
|
|
726
|
+
"a key controlled by another actor": {
|
|
727
|
+
...actor,
|
|
728
|
+
assertionMethod: actor.assertionMethod.map((key) => ({
|
|
729
|
+
...key,
|
|
730
|
+
controller: `ap://${otherDid}/actor`
|
|
731
|
+
}))
|
|
732
|
+
},
|
|
733
|
+
"a key with extra content": {
|
|
734
|
+
...actor,
|
|
735
|
+
publicKey: {
|
|
736
|
+
...publicKey,
|
|
737
|
+
name: "Extra"
|
|
738
|
+
}
|
|
739
|
+
},
|
|
740
|
+
"a key with a scoped context": {
|
|
741
|
+
...actor,
|
|
742
|
+
publicKey: {
|
|
743
|
+
...publicKey,
|
|
744
|
+
"@context": { CryptographicKey: {
|
|
745
|
+
"@id": "https://w3id.org/security#Key",
|
|
746
|
+
"@context": {}
|
|
747
|
+
} }
|
|
748
|
+
}
|
|
749
|
+
}
|
|
750
|
+
});
|
|
751
|
+
for (const [name, document] of Object.entries(cases)) {
|
|
752
|
+
const result = await verifyCompoundPortableObjectProofs(await signCompatible(document), limits, options);
|
|
753
|
+
assert(result.status === "ok", name);
|
|
754
|
+
assertEquals(result.verified, false, name);
|
|
755
|
+
assert(result.portableObjects.find((o) => o.path === "")?.verified, name);
|
|
756
|
+
assert(result.portableObjects.some((o) => o.path !== "" && !o.verified), name);
|
|
757
|
+
}
|
|
758
|
+
const conflicting = await verifyCompoundPortableObjectProofs(await signCompatible({
|
|
759
|
+
...actor,
|
|
760
|
+
publicKey: {
|
|
761
|
+
...publicKey,
|
|
762
|
+
"@id": `ap://${compatibleDid}/other#main-key`
|
|
763
|
+
}
|
|
764
|
+
}), limits, options);
|
|
765
|
+
assert(conflicting.status === "ok");
|
|
766
|
+
assertEquals(conflicting.verified, false);
|
|
767
|
+
});
|
|
768
|
+
test("verifyCompoundPortableObjectProofs() exempts ap: keys only of verified actors", async () => {
|
|
769
|
+
const actor = withKeyIds(await compatibleActor(), apActorId, { id: apActorId });
|
|
770
|
+
const signed = await signCompatible(actor);
|
|
771
|
+
const unverified = {
|
|
772
|
+
"": true,
|
|
773
|
+
"/object": false,
|
|
774
|
+
"/object/publicKey": false,
|
|
775
|
+
"/object/assertionMethod/0": false
|
|
776
|
+
};
|
|
777
|
+
const cases = {
|
|
778
|
+
"an unsigned actor": [actor, unverified],
|
|
779
|
+
"a tampered actor": [{
|
|
780
|
+
...signed,
|
|
781
|
+
name: "Tampered"
|
|
782
|
+
}, unverified],
|
|
783
|
+
"an actor with a key with an invalid proof": [await signCompatible({
|
|
784
|
+
...actor,
|
|
785
|
+
publicKey: {
|
|
786
|
+
...asRecord(actor.publicKey),
|
|
787
|
+
"@context": [...compatibleContext],
|
|
788
|
+
proof: asRecord(signed.proof)
|
|
789
|
+
}
|
|
790
|
+
}), {
|
|
791
|
+
"": true,
|
|
792
|
+
"/object": true,
|
|
793
|
+
"/object/publicKey": false
|
|
794
|
+
}]
|
|
795
|
+
};
|
|
796
|
+
for (const [name, [object, expected]] of Object.entries(cases)) {
|
|
797
|
+
const result = await verifyCompoundPortableObjectProofs(await signCompatible({
|
|
798
|
+
"@context": [...compatibleContext],
|
|
799
|
+
id: `ap://${compatibleDid}/activities/1`,
|
|
800
|
+
type: "Update",
|
|
801
|
+
actor: apActorId,
|
|
802
|
+
object
|
|
803
|
+
}), limits, options);
|
|
804
|
+
assert(result.status === "ok", name);
|
|
805
|
+
assertEquals(result.verified, false, name);
|
|
806
|
+
assertEquals(Object.fromEntries(result.portableObjects.map((o) => [o.path, o.verified])), expected, name);
|
|
807
|
+
}
|
|
808
|
+
});
|
|
809
|
+
test("verifyCompoundPortableObjectProofs() leaves keys at DID URLs alone", async () => {
|
|
810
|
+
const result = await verifyCompoundPortableObjectProofs(await signCompatible(withKeyIds(await compatibleActor(), compatibleDid, { id: apActorId })), limits, options);
|
|
811
|
+
assert(result.status === "ok");
|
|
812
|
+
assert(result.verified);
|
|
813
|
+
assertEquals(result.portableObjects.map((o) => o.path), [""]);
|
|
814
|
+
});
|
|
621
815
|
//#endregion
|
|
622
816
|
export {};
|
|
@@ -6,9 +6,9 @@ import "../std__assert-DvMDRPes.mjs";
|
|
|
6
6
|
import { t as assert } from "../assert-D1Eafmd_.mjs";
|
|
7
7
|
import { n as preloadedOnlyDocumentLoader } from "../public-audience--klBIOk1.mjs";
|
|
8
8
|
import { r as normalizeOutgoingActivityJsonLd } from "../outgoing-jsonld-4IJqPYos.mjs";
|
|
9
|
-
import { i as signObject, u as verifyProof } from "../proof-
|
|
9
|
+
import { i as signObject, u as verifyProof } from "../proof-B5s-W6Sm.mjs";
|
|
10
10
|
import { n as ed25519PrivateKey, r as ed25519PublicKey } from "../keys-DIJNHW-Y.mjs";
|
|
11
|
-
import { o as verifyCompoundProofDocuments } from "../compound-proof-
|
|
11
|
+
import { o as verifyCompoundProofDocuments } from "../compound-proof-D0H4LLvQ.mjs";
|
|
12
12
|
import { t as map_local_create_note_default } from "../map-local-create-note-B0SeXJms.mjs";
|
|
13
13
|
import { t as map_local_context_conflict_default } from "../map-local-context-conflict-DOYEEJ3u.mjs";
|
|
14
14
|
import { Create, DataIntegrityProof, Note, Question } from "@fedify/vocab";
|
package/dist/sig/http.test.mjs
CHANGED
|
@@ -11,8 +11,8 @@ import { t as assertThrows } from "../assert_throws-BYITOvPO.mjs";
|
|
|
11
11
|
import "../std__assert-DvMDRPes.mjs";
|
|
12
12
|
import { t as assertRejects } from "../assert_rejects-CTptdYck.mjs";
|
|
13
13
|
import { t as assert } from "../assert-D1Eafmd_.mjs";
|
|
14
|
-
import { n as exportJwk } from "../key-
|
|
15
|
-
import { a as listRequestSignatures, c as selectRequestSignature, d as verifyRequest, f as verifyRequestDetailed, i as formatRfc9421SignatureParameters, l as signRequest, n as doubleKnock, o as parseRfc9421Signature, r as formatRfc9421Signature, s as parseRfc9421SignatureInput, t as createRfc9421SignatureBase, u as timingSafeEqual } from "../http-
|
|
14
|
+
import { n as exportJwk } from "../key-C0giKuki.mjs";
|
|
15
|
+
import { a as listRequestSignatures, c as selectRequestSignature, d as verifyRequest, f as verifyRequestDetailed, i as formatRfc9421SignatureParameters, l as signRequest, n as doubleKnock, o as parseRfc9421Signature, r as formatRfc9421Signature, s as parseRfc9421SignatureInput, t as createRfc9421SignatureBase, u as timingSafeEqual } from "../http-CEx2SZjf.mjs";
|
|
16
16
|
import { i as rsaPrivateKey2, l as rsaPublicKey5, o as rsaPublicKey1, s as rsaPublicKey2 } from "../keys-DIJNHW-Y.mjs";
|
|
17
17
|
import { createTestMeterProvider, createTestTracerProvider, mockDocumentLoader, test } from "@fedify/fixture";
|
|
18
18
|
import { FetchError, exportSpki } from "@fedify/vocab-runtime";
|
package/dist/sig/key.test.mjs
CHANGED
|
@@ -6,7 +6,7 @@ import { t as assertThrows } from "../assert_throws-BYITOvPO.mjs";
|
|
|
6
6
|
import "../std__assert-DvMDRPes.mjs";
|
|
7
7
|
import { t as assertRejects } from "../assert_rejects-CTptdYck.mjs";
|
|
8
8
|
import { t as assert } from "../assert-D1Eafmd_.mjs";
|
|
9
|
-
import { a as fetchKeyDetailed, c as validateCryptoKey, i as fetchKey, n as exportJwk, o as generateCryptoKeyPair, s as importJwk } from "../key-
|
|
9
|
+
import { a as fetchKeyDetailed, c as validateCryptoKey, i as fetchKey, n as exportJwk, o as generateCryptoKeyPair, s as importJwk } from "../key-C0giKuki.mjs";
|
|
10
10
|
import { c as rsaPublicKey3, i as rsaPrivateKey2, o as rsaPublicKey1, r as ed25519PublicKey, s as rsaPublicKey2, t as ed25519Multikey } from "../keys-DIJNHW-Y.mjs";
|
|
11
11
|
import { CryptographicKey, Multikey } from "@fedify/vocab";
|
|
12
12
|
import { createTestMeterProvider, createTestTracerProvider, mockDocumentLoader, test } from "@fedify/fixture";
|
package/dist/sig/ld.test.mjs
CHANGED
|
@@ -8,8 +8,8 @@ import { t as assertInstanceOf } from "../assert_instance_of-mrXWWNY-.mjs";
|
|
|
8
8
|
import { t as assertThrows } from "../assert_throws-BYITOvPO.mjs";
|
|
9
9
|
import { t as assertRejects } from "../assert_rejects-CTptdYck.mjs";
|
|
10
10
|
import { t as assert } from "../assert-D1Eafmd_.mjs";
|
|
11
|
-
import { o as generateCryptoKeyPair } from "../key-
|
|
12
|
-
import { a as compactJsonLd, f as isInvalidUrlTypeError, g as verifySignature, h as verifyJsonLd, i as attachSignature, n as UnsafeJsonLdError, o as createSignature, p as signJsonLd, s as detachSignature, u as hasSignatureLike } from "../ld-
|
|
11
|
+
import { o as generateCryptoKeyPair } from "../key-C0giKuki.mjs";
|
|
12
|
+
import { a as compactJsonLd, f as isInvalidUrlTypeError, g as verifySignature, h as verifyJsonLd, i as attachSignature, n as UnsafeJsonLdError, o as createSignature, p as signJsonLd, s as detachSignature, u as hasSignatureLike } from "../ld-CWDReGMZ.mjs";
|
|
13
13
|
import { a as rsaPrivateKey3, c as rsaPublicKey3, i as rsaPrivateKey2, n as ed25519PrivateKey, s as rsaPublicKey2, t as ed25519Multikey } from "../keys-DIJNHW-Y.mjs";
|
|
14
14
|
import { CryptographicKey } from "@fedify/vocab";
|
|
15
15
|
import { createTestMeterProvider, mockDocumentLoader, test } from "@fedify/fixture";
|
package/dist/sig/mod.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const { URLPattern } = require("urlpattern-polyfill");
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const require_http = require("../http-
|
|
4
|
-
const require_portable_collection = require("../portable-collection-
|
|
3
|
+
const require_http = require("../http-DSYQQn23.cjs");
|
|
4
|
+
const require_portable_collection = require("../portable-collection-BD8fE3j3.cjs");
|
|
5
5
|
exports.attachSignature = require_http.attachSignature;
|
|
6
6
|
exports.createProof = require_http.createProof;
|
|
7
7
|
exports.createSignature = require_http.createSignature;
|
package/dist/sig/mod.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference lib="esnext.temporal" />
|
|
2
|
-
import { C as exportJwk, D as importJwk, E as generateCryptoKeyPair, S as KeyCache, T as fetchKeyDetailed, _ as validateAcceptSignature, a as VerifyRequestDetailedResult, b as FetchKeyOptions, c as signRequest, d as AcceptSignatureMember, f as AcceptSignatureParameters, g as parseAcceptSignature, h as fulfillAcceptSignature, i as SignRequestOptions, l as verifyRequest, m as formatAcceptSignature, n as HttpMessageSignaturesSpecDeterminer, o as VerifyRequestFailureReason, p as FulfillAcceptSignatureResult, r as Rfc9421SignRequestOptions, s as VerifyRequestOptions, t as HttpMessageSignaturesSpec, u as verifyRequestDetailed, v as FetchKeyDetailedResult, w as fetchKey, x as FetchKeyResult, y as FetchKeyErrorResult } from "../http-
|
|
2
|
+
import { C as exportJwk, D as importJwk, E as generateCryptoKeyPair, S as KeyCache, T as fetchKeyDetailed, _ as validateAcceptSignature, a as VerifyRequestDetailedResult, b as FetchKeyOptions, c as signRequest, d as AcceptSignatureMember, f as AcceptSignatureParameters, g as parseAcceptSignature, h as fulfillAcceptSignature, i as SignRequestOptions, l as verifyRequest, m as formatAcceptSignature, n as HttpMessageSignaturesSpecDeterminer, o as VerifyRequestFailureReason, p as FulfillAcceptSignatureResult, r as Rfc9421SignRequestOptions, s as VerifyRequestOptions, t as HttpMessageSignaturesSpec, u as verifyRequestDetailed, v as FetchKeyDetailedResult, w as fetchKey, x as FetchKeyResult, y as FetchKeyErrorResult } from "../http-CjezPjFX.cjs";
|
|
3
3
|
import { i as getKeyOwner, n as GetKeyOwnerOptions, r as doesActorOwnKey, t as DoesActorOwnKeyOptions } from "../owner-BF0L9cMt.cjs";
|
|
4
|
-
import { C as createSignature, D as verifyJsonLd, E as signJsonLd, O as verifySignature, S as attachSignature, T as hasSignatureLike, _ as verifyProof, a as CreateProofOptions, b as VerifyJsonLdOptions, c as VerifyPortableObjectProofFailureReason, d as VerifyProofOptions, f as createProof, g as verifyPortableObjectProof, h as verifyObject, i as verifyPortableObject, l as VerifyPortableObjectProofOptions, m as signObject, n as VerifyPortableObjectOptions, o as SignObjectOptions, p as hasProofLike, r as VerifyPortableObjectResult, s as VerifyObjectOptions, t as VerifyPortableObjectFailureReason, u as VerifyPortableObjectProofResult, v as CreateSignatureOptions, w as detachSignature, x as VerifySignatureOptions, y as SignJsonLdOptions } from "../mod-
|
|
4
|
+
import { C as createSignature, D as verifyJsonLd, E as signJsonLd, O as verifySignature, S as attachSignature, T as hasSignatureLike, _ as verifyProof, a as CreateProofOptions, b as VerifyJsonLdOptions, c as VerifyPortableObjectProofFailureReason, d as VerifyProofOptions, f as createProof, g as verifyPortableObjectProof, h as verifyObject, i as verifyPortableObject, l as VerifyPortableObjectProofOptions, m as signObject, n as VerifyPortableObjectOptions, o as SignObjectOptions, p as hasProofLike, r as VerifyPortableObjectResult, s as VerifyObjectOptions, t as VerifyPortableObjectFailureReason, u as VerifyPortableObjectProofResult, v as CreateSignatureOptions, w as detachSignature, x as VerifySignatureOptions, y as SignJsonLdOptions } from "../mod-S--JxYjo.cjs";
|
|
5
5
|
export { AcceptSignatureMember, AcceptSignatureParameters, CreateProofOptions, CreateSignatureOptions, DoesActorOwnKeyOptions, FetchKeyDetailedResult, FetchKeyErrorResult, FetchKeyOptions, FetchKeyResult, FulfillAcceptSignatureResult, GetKeyOwnerOptions, HttpMessageSignaturesSpec, HttpMessageSignaturesSpecDeterminer, KeyCache, Rfc9421SignRequestOptions, SignJsonLdOptions, SignObjectOptions, SignRequestOptions, VerifyJsonLdOptions, VerifyObjectOptions, VerifyPortableObjectFailureReason, VerifyPortableObjectOptions, VerifyPortableObjectProofFailureReason, VerifyPortableObjectProofOptions, VerifyPortableObjectProofResult, VerifyPortableObjectResult, VerifyProofOptions, VerifyRequestDetailedResult, VerifyRequestFailureReason, VerifyRequestOptions, VerifySignatureOptions, attachSignature, createProof, createSignature, detachSignature, doesActorOwnKey, exportJwk, fetchKey, fetchKeyDetailed, formatAcceptSignature, fulfillAcceptSignature, generateCryptoKeyPair, getKeyOwner, hasProofLike, hasSignatureLike, importJwk, parseAcceptSignature, signJsonLd, signObject, signRequest, validateAcceptSignature, verifyJsonLd, verifyObject, verifyPortableObject, verifyPortableObjectProof, verifyProof, verifyRequest, verifyRequestDetailed, verifySignature };
|
package/dist/sig/mod.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference lib="esnext.temporal" />
|
|
2
|
-
import { C as exportJwk, D as importJwk, E as generateCryptoKeyPair, S as KeyCache, T as fetchKeyDetailed, _ as validateAcceptSignature, a as VerifyRequestDetailedResult, b as FetchKeyOptions, c as signRequest, d as AcceptSignatureMember, f as AcceptSignatureParameters, g as parseAcceptSignature, h as fulfillAcceptSignature, i as SignRequestOptions, l as verifyRequest, m as formatAcceptSignature, n as HttpMessageSignaturesSpecDeterminer, o as VerifyRequestFailureReason, p as FulfillAcceptSignatureResult, r as Rfc9421SignRequestOptions, s as VerifyRequestOptions, t as HttpMessageSignaturesSpec, u as verifyRequestDetailed, v as FetchKeyDetailedResult, w as fetchKey, x as FetchKeyResult, y as FetchKeyErrorResult } from "../http-
|
|
2
|
+
import { C as exportJwk, D as importJwk, E as generateCryptoKeyPair, S as KeyCache, T as fetchKeyDetailed, _ as validateAcceptSignature, a as VerifyRequestDetailedResult, b as FetchKeyOptions, c as signRequest, d as AcceptSignatureMember, f as AcceptSignatureParameters, g as parseAcceptSignature, h as fulfillAcceptSignature, i as SignRequestOptions, l as verifyRequest, m as formatAcceptSignature, n as HttpMessageSignaturesSpecDeterminer, o as VerifyRequestFailureReason, p as FulfillAcceptSignatureResult, r as Rfc9421SignRequestOptions, s as VerifyRequestOptions, t as HttpMessageSignaturesSpec, u as verifyRequestDetailed, v as FetchKeyDetailedResult, w as fetchKey, x as FetchKeyResult, y as FetchKeyErrorResult } from "../http-C-x_OLSp.js";
|
|
3
3
|
import { i as getKeyOwner, n as GetKeyOwnerOptions, r as doesActorOwnKey, t as DoesActorOwnKeyOptions } from "../owner-BSzr5-I8.js";
|
|
4
|
-
import { C as createSignature, D as verifyJsonLd, E as signJsonLd, O as verifySignature, S as attachSignature, T as hasSignatureLike, _ as verifyProof, a as CreateProofOptions, b as VerifyJsonLdOptions, c as VerifyPortableObjectProofFailureReason, d as VerifyProofOptions, f as createProof, g as verifyPortableObjectProof, h as verifyObject, i as verifyPortableObject, l as VerifyPortableObjectProofOptions, m as signObject, n as VerifyPortableObjectOptions, o as SignObjectOptions, p as hasProofLike, r as VerifyPortableObjectResult, s as VerifyObjectOptions, t as VerifyPortableObjectFailureReason, u as VerifyPortableObjectProofResult, v as CreateSignatureOptions, w as detachSignature, x as VerifySignatureOptions, y as SignJsonLdOptions } from "../mod-
|
|
4
|
+
import { C as createSignature, D as verifyJsonLd, E as signJsonLd, O as verifySignature, S as attachSignature, T as hasSignatureLike, _ as verifyProof, a as CreateProofOptions, b as VerifyJsonLdOptions, c as VerifyPortableObjectProofFailureReason, d as VerifyProofOptions, f as createProof, g as verifyPortableObjectProof, h as verifyObject, i as verifyPortableObject, l as VerifyPortableObjectProofOptions, m as signObject, n as VerifyPortableObjectOptions, o as SignObjectOptions, p as hasProofLike, r as VerifyPortableObjectResult, s as VerifyObjectOptions, t as VerifyPortableObjectFailureReason, u as VerifyPortableObjectProofResult, v as CreateSignatureOptions, w as detachSignature, x as VerifySignatureOptions, y as SignJsonLdOptions } from "../mod-Bz9tFXI2.js";
|
|
5
5
|
export { AcceptSignatureMember, AcceptSignatureParameters, CreateProofOptions, CreateSignatureOptions, DoesActorOwnKeyOptions, FetchKeyDetailedResult, FetchKeyErrorResult, FetchKeyOptions, FetchKeyResult, FulfillAcceptSignatureResult, GetKeyOwnerOptions, HttpMessageSignaturesSpec, HttpMessageSignaturesSpecDeterminer, KeyCache, Rfc9421SignRequestOptions, SignJsonLdOptions, SignObjectOptions, SignRequestOptions, VerifyJsonLdOptions, VerifyObjectOptions, VerifyPortableObjectFailureReason, VerifyPortableObjectOptions, VerifyPortableObjectProofFailureReason, VerifyPortableObjectProofOptions, VerifyPortableObjectProofResult, VerifyPortableObjectResult, VerifyProofOptions, VerifyRequestDetailedResult, VerifyRequestFailureReason, VerifyRequestOptions, VerifySignatureOptions, attachSignature, createProof, createSignature, detachSignature, doesActorOwnKey, exportJwk, fetchKey, fetchKeyDetailed, formatAcceptSignature, fulfillAcceptSignature, generateCryptoKeyPair, getKeyOwner, hasProofLike, hasSignatureLike, importJwk, parseAcceptSignature, signJsonLd, signObject, signRequest, validateAcceptSignature, verifyJsonLd, verifyObject, verifyPortableObject, verifyPortableObjectProof, verifyProof, verifyRequest, verifyRequestDetailed, verifySignature };
|
package/dist/sig/mod.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Temporal } from "temporal-polyfill";
|
|
2
2
|
import { URLPattern } from "urlpattern-polyfill";
|
|
3
|
-
import { B as
|
|
4
|
-
import { n as doesActorOwnKey, r as getKeyOwner, t as verifyPortableObject } from "../portable-collection-
|
|
3
|
+
import { B as fetchKeyDetailed, C as attachSignature, E as detachSignature, F as verifySignature, H as importJwk, L as exportJwk, M as signJsonLd, P as verifyJsonLd, T as createSignature, V as generateCryptoKeyPair, a as signRequest, d as createProof, dt as parseAcceptSignature, f as hasProofLike, ft as validateAcceptSignature, g as verifyPortableObjectProof, h as verifyObject, k as hasSignatureLike, lt as formatAcceptSignature, o as verifyRequest, p as signObject, s as verifyRequestDetailed, ut as fulfillAcceptSignature, y as verifyProof, z as fetchKey } from "../http-D4KW2GTi.js";
|
|
4
|
+
import { n as doesActorOwnKey, r as getKeyOwner, t as verifyPortableObject } from "../portable-collection-CG9P_i0E.js";
|
|
5
5
|
export { attachSignature, createProof, createSignature, detachSignature, doesActorOwnKey, exportJwk, fetchKey, fetchKeyDetailed, formatAcceptSignature, fulfillAcceptSignature, generateCryptoKeyPair, getKeyOwner, hasProofLike, hasSignatureLike, importJwk, parseAcceptSignature, signJsonLd, signObject, signRequest, validateAcceptSignature, verifyJsonLd, verifyObject, verifyPortableObject, verifyPortableObjectProof, verifyProof, verifyRequest, verifyRequestDetailed, verifySignature };
|
package/dist/sig/owner.test.mjs
CHANGED
|
@@ -6,7 +6,7 @@ import { t as assertFalse } from "../assert_false-CPdRnc3E.mjs";
|
|
|
6
6
|
import "../std__assert-DvMDRPes.mjs";
|
|
7
7
|
import { t as assert } from "../assert-D1Eafmd_.mjs";
|
|
8
8
|
import { o as rsaPublicKey1, s as rsaPublicKey2 } from "../keys-DIJNHW-Y.mjs";
|
|
9
|
-
import { n as getKeyOwner, t as doesActorOwnKey } from "../owner-
|
|
9
|
+
import { n as getKeyOwner, t as doesActorOwnKey } from "../owner-CgoCOTUQ.mjs";
|
|
10
10
|
import { Create, CryptographicKey, lookupObject } from "@fedify/vocab";
|
|
11
11
|
import { createTestTracerProvider, mockDocumentLoader, test } from "@fedify/fixture";
|
|
12
12
|
//#region src/sig/owner.test.ts
|
|
@@ -2,7 +2,7 @@ import "temporal-polyfill";
|
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
4
|
import { n as ed25519PrivateKey, r as ed25519PublicKey } from "../keys-DIJNHW-Y.mjs";
|
|
5
|
-
import { t as verifyPortableObject } from "../portable-collection-
|
|
5
|
+
import { t as verifyPortableObject } from "../portable-collection-0_5DyXMt.mjs";
|
|
6
6
|
import { Collection, CollectionPage, Note, OrderedCollection, Person, traverseCollection } from "@fedify/vocab";
|
|
7
7
|
import { test } from "@fedify/fixture";
|
|
8
8
|
import { FetchError, encodeMultibase, exportDidKey, preloadedContexts } from "@fedify/vocab-runtime";
|