@fedify/fedify 2.4.0-dev.2253 → 2.4.0-dev.2259

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.
Files changed (110) hide show
  1. package/dist/{builder-DdUWFCwL.mjs → builder-CBNa1Uw2.mjs} +8 -2
  2. package/dist/compat/mod.d.cts +1 -1
  3. package/dist/compat/mod.d.ts +1 -1
  4. package/dist/compat/transformers.test.mjs +1 -1
  5. package/dist/{compound-proof-CcWDD5VB.mjs → compound-proof-CMPv4UK0.mjs} +20 -3
  6. package/dist/{context-CtI307_A.d.ts → context-7NyiqIcg.d.ts} +111 -2
  7. package/dist/{context-B6X-t8gI.d.cts → context-tsYPJ2Ew.d.cts} +111 -2
  8. package/dist/{deno-D9uhdIuD.mjs → deno-C8XaXmPB.mjs} +1 -1
  9. package/dist/{docloader-fbmPhCdS.mjs → docloader-CpdFLwAg.mjs} +2 -2
  10. package/dist/federation/builder.test.mjs +1 -1
  11. package/dist/federation/compound-fanout.test.mjs +3 -3
  12. package/dist/federation/handler-compound-proof.test.mjs +3 -3
  13. package/dist/federation/handler.test.mjs +76 -5
  14. package/dist/federation/hashlink-media.test.mjs +2 -2
  15. package/dist/federation/idempotency.test.mjs +2 -2
  16. package/dist/federation/inbox-report.test.d.mts +2 -0
  17. package/dist/federation/inbox-report.test.mjs +475 -0
  18. package/dist/federation/metrics.test.mjs +1 -1
  19. package/dist/federation/middleware.test.mjs +7 -7
  20. package/dist/federation/mod.cjs +1 -1
  21. package/dist/federation/mod.d.cts +4 -3
  22. package/dist/federation/mod.d.ts +4 -3
  23. package/dist/federation/mod.js +1 -1
  24. package/dist/federation/outgoing-proof.test.mjs +5 -5
  25. package/dist/federation/portable-actor.test.mjs +3 -3
  26. package/dist/federation/portable-chain.test.mjs +3 -3
  27. package/dist/federation/portable-collection.test.mjs +4 -4
  28. package/dist/federation/portable-delivery.test.mjs +2 -2
  29. package/dist/federation/portable-gateway-keys.test.mjs +4 -4
  30. package/dist/federation/portable-inbox.test.mjs +67 -6
  31. package/dist/federation/portable-parse-uri.test.mjs +1 -1
  32. package/dist/federation/portable-route-activity.test.mjs +2 -2
  33. package/dist/federation/portable.test.mjs +3 -3
  34. package/dist/federation/send.test.mjs +3 -3
  35. package/dist/federation/tasks/enqueue.test.mjs +1 -1
  36. package/dist/federation/tasks/tasks.test.mjs +2 -2
  37. package/dist/federation/temporal.test.mjs +1 -1
  38. package/dist/federation/webfinger.test.mjs +1 -1
  39. package/dist/{federation-B858-Ylk.cjs → federation-D6giSGUT.cjs} +524 -118
  40. package/dist/{http-CUyBaVsQ.mjs → http-BqSbUEiQ.mjs} +141 -98
  41. package/dist/{http-Bp0MKAK3.cjs → http-Cki-npuA.cjs} +456 -116
  42. package/dist/{http-BoGE-nk7.js → http-OMtKlbx1.js} +439 -117
  43. package/dist/{http-DGx0KOws.d.ts → key-C1nv7_jD.d.ts} +638 -229
  44. package/dist/{http-BrwKINQn.d.cts → key-DYxuyd-s.d.cts} +638 -229
  45. package/dist/{key-BlTaKABr.mjs → key-DecAtABm.mjs} +30 -3
  46. package/dist/{kv-cache-Dmqd7s2a.mjs → kv-cache-CWWlMv-s.mjs} +1 -1
  47. package/dist/{kv-cache-BnWemxH2.cjs → kv-cache-D73yVcE5.cjs} +1 -1
  48. package/dist/{kv-cache-DhMzUXEE.js → kv-cache-J0v3UbUn.js} +1 -1
  49. package/dist/{ld-Dx8r_qJU.mjs → ld-UsN-TIPh.mjs} +40 -5
  50. package/dist/{metrics-DFkZkLrO.mjs → metrics-DWCn4VXX.mjs} +2 -1
  51. package/dist/{middleware-DC018B4u.js → middleware-BqzfIlUO.js} +524 -118
  52. package/dist/{middleware-B0RRI88k.mjs → middleware-CkjwiEBd.mjs} +512 -127
  53. package/dist/{middleware-BNhF-Ayx.mjs → middleware-DHn2q0L1.mjs} +1 -1
  54. package/dist/{mod-C7_2j7VT.d.cts → mod-BojP2Bw3.d.cts} +1 -1
  55. package/dist/{mod-Cy9VNHVw.d.ts → mod-CavhAgLw.d.cts} +5 -253
  56. package/dist/{mod-DoTWIc7F.d.cts → mod-CtpF2BU5.d.ts} +5 -253
  57. package/dist/{mod-B8MI1mpi.d.ts → mod-DEZXwV6J.d.ts} +1 -1
  58. package/dist/{mod-DFL6IxYQ.d.cts → mod-Dw-nPxQh.d.cts} +1 -1
  59. package/dist/{mod-BhTaDR5H.d.ts → mod-Xj5P4s4d.d.ts} +1 -1
  60. package/dist/mod.cjs +4 -4
  61. package/dist/mod.d.cts +7 -7
  62. package/dist/mod.d.ts +7 -7
  63. package/dist/mod.js +4 -4
  64. package/dist/nodeinfo/handler.test.mjs +1 -1
  65. package/dist/{owner-B61jjp5K.mjs → owner-CEBn81LD.mjs} +3 -3
  66. package/dist/{portable-collection-DhEA_nWT.cjs → portable-collection-DqTUBKY7.cjs} +1 -1
  67. package/dist/{portable-collection-BnktjQ04.js → portable-collection-ZkUNjtb7.js} +1 -1
  68. package/dist/{portable-collection-CyBJDEzs.mjs → portable-collection-qFSYw4TG.mjs} +2 -2
  69. package/dist/{portable-key-CPN0QZSA.mjs → portable-key-LlMkP-vz.mjs} +1 -1
  70. package/dist/{proof-CZrjvoJ3.mjs → proof-BHRf_jMG.mjs} +142 -22
  71. package/dist/{send-enxOnmZo.mjs → send-DjG8DDU_.mjs} +3 -3
  72. package/dist/sig/compound-proof-discovery.test.mjs +1 -1
  73. package/dist/sig/compound-proof-producer.test.mjs +1 -1
  74. package/dist/sig/compound-proof-verification.test.mjs +19 -2
  75. package/dist/sig/compound-proof.test.mjs +2 -2
  76. package/dist/sig/http.test.mjs +2 -2
  77. package/dist/sig/key.test.mjs +1 -1
  78. package/dist/sig/ld.test.mjs +2 -2
  79. package/dist/sig/mitra-receive-interop.test.d.mts +2 -0
  80. package/dist/sig/mitra-receive-interop.test.mjs +260 -0
  81. package/dist/sig/mitra-send-interop.test.d.mts +2 -0
  82. package/dist/sig/mitra-send-interop.test.mjs +461 -0
  83. package/dist/sig/mod.cjs +2 -2
  84. package/dist/sig/mod.d.cts +2 -2
  85. package/dist/sig/mod.d.ts +2 -2
  86. package/dist/sig/mod.js +2 -2
  87. package/dist/sig/owner.test.mjs +1 -1
  88. package/dist/sig/portable-collection.test.mjs +1 -1
  89. package/dist/sig/portable-interop.test.d.mts +2 -0
  90. package/dist/sig/portable-interop.test.mjs +156 -0
  91. package/dist/sig/portable-key.test.mjs +6 -6
  92. package/dist/sig/proof.test.mjs +161 -3
  93. package/dist/sig/tootik-request-interop.test.d.mts +2 -0
  94. package/dist/sig/tootik-request-interop.test.mjs +190 -0
  95. package/dist/sig/tootik-send-interop.test.d.mts +2 -0
  96. package/dist/sig/tootik-send-interop.test.mjs +331 -0
  97. package/dist/sig/verification.test.d.mts +2 -0
  98. package/dist/sig/verification.test.mjs +310 -0
  99. package/dist/{temporal-CBVv0xRB.mjs → temporal-BRFH_dte.mjs} +1 -1
  100. package/dist/testing/kv.test.mjs +1 -1
  101. package/dist/testing/mod.d.mts +315 -28
  102. package/dist/utils/docloader.test.mjs +2 -2
  103. package/dist/utils/kv-cache.test.mjs +1 -1
  104. package/dist/utils/mod.cjs +1 -1
  105. package/dist/utils/mod.d.cts +1 -1
  106. package/dist/utils/mod.d.ts +1 -1
  107. package/dist/utils/mod.js +1 -1
  108. package/dist/verification-C3954hQh.mjs +5 -0
  109. package/dist/verification-Dpfcw8ml.mjs +105 -0
  110. package/package.json +6 -6
@@ -0,0 +1,331 @@
1
+ import { Temporal } from "temporal-polyfill";
2
+ import "urlpattern-polyfill";
3
+ globalThis.addEventListener = () => {};
4
+ import { t as assertEquals } from "../assert_equals-Z6IcEbWU.mjs";
5
+ import "../std__assert-DvMDRPes.mjs";
6
+ import { t as assert } from "../assert-D1Eafmd_.mjs";
7
+ import { c as verifyPortableObjectProof } from "../proof-BHRf_jMG.mjs";
8
+ import { p as verifyRequestDetailed } from "../http-BqSbUEiQ.mjs";
9
+ import { t as doesActorOwnKey } from "../owner-CEBn81LD.mjs";
10
+ import { Create } from "@fedify/vocab";
11
+ import { decodeMultibase, importDidKey } from "@fedify/vocab-runtime";
12
+ import { mockDocumentLoader, test } from "@fedify/fixture";
13
+ import { encodeHex } from "byte-encodings/hex";
14
+ import serialize from "json-canon";
15
+ //#region test-vectors/fep-ef61/tootik-v0.25.4/send/actor.json
16
+ var actor_default = {
17
+ "@context": [
18
+ "https://www.w3.org/ns/activitystreams",
19
+ "https://w3id.org/fep/ef61",
20
+ "https://w3id.org/security/v1",
21
+ "https://w3id.org/security/data-integrity/v1",
22
+ "https://www.w3.org/ns/did/v1",
23
+ "https://w3id.org/security/multikey/v1",
24
+ "https://gotosocial.org/ns",
25
+ "https://w3id.org/fep/7aa9",
26
+ {
27
+ "alsoKnownAs": {
28
+ "@id": "as:alsoKnownAs",
29
+ "@type": "@id"
30
+ },
31
+ "featuredCollections": {
32
+ "@id": "https://w3id.org/fep/7aa9#featuredCollections",
33
+ "@type": "@id"
34
+ },
35
+ "manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
36
+ "movedTo": {
37
+ "@id": "as:movedTo",
38
+ "@type": "@id"
39
+ },
40
+ "toot": "http://joinmastodon.org/ns#",
41
+ "Emoji": "toot:Emoji",
42
+ "featured": {
43
+ "@id": "toot:featured",
44
+ "@type": "@id"
45
+ },
46
+ "featuredTags": {
47
+ "@id": "toot:featuredTags",
48
+ "@type": "@id"
49
+ },
50
+ "discoverable": "toot:discoverable",
51
+ "suspended": "toot:suspended",
52
+ "memorial": "toot:memorial",
53
+ "indexable": "toot:indexable",
54
+ "schema": "http://schema.org#",
55
+ "PropertyValue": "schema:PropertyValue",
56
+ "value": "schema:value",
57
+ "misskey": "https://misskey-hub.net/ns#",
58
+ "_misskey_followedMessage": "misskey:_misskey_followedMessage",
59
+ "isCat": "misskey:isCat"
60
+ }
61
+ ],
62
+ id: "https://fedify.example/.well-known/apgateway/did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN/actor",
63
+ type: "Person",
64
+ inbox: "https://fedify.example/.well-known/apgateway/did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN/actor/inbox",
65
+ gateways: ["https://fedify.example/"],
66
+ assertionMethod: [{
67
+ "id": "https://fedify.example/.well-known/apgateway/did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN/actor#ed25519-key",
68
+ "type": "Multikey",
69
+ "controller": "https://fedify.example/.well-known/apgateway/did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN/actor",
70
+ "publicKeyMultibase": "z6MkoHdcDxRg36BmHgY8riW5xW8NbZdbgKBMmXUoyDAN9LEX"
71
+ }, {
72
+ "id": "https://fedify.example/.well-known/apgateway/did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN/actor#main-key",
73
+ "type": "Multikey",
74
+ "controller": "https://fedify.example/.well-known/apgateway/did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN/actor",
75
+ "publicKeyMultibase": "zgghBUVkqmWS8e1j5pNkit2HZTY7551YeVnqt4nok9y5j6Qj4zHfHAiTCUWeiSfvfgC8cuknF4312kUZa79gAAwCyoXqA3PZppMxsGmdwRprmxYkGrZkfvmmLfzCvw6faQrsph6hiMvYtFEQUZTwd2n6CG9j7ZqiXA5NGN9WRu5MNqucWNpMTQZFSdPnow2GgMnGy7G5fDhg7BQtSPLCYdEWEipFWJuy6nKwmySnffKYnZQZQRzNysFg2xJ91ZceWVrAjFxHwjekyUe2CrkNM1vYq829SnCoXUfPBsA31ujzVuYBwjDZhCDXmJ87fbWFmDg6zmwyXLdGLRmGY3nbkU8Jwt4iyRNqCpjirKjEx54JQj2wahyxL6r2BBjMnuoisDXNi6vjztoE7WbmHDoMVoz9qGUv5s2b6VVvn7vNgHYjjvKjYLbrj2fhe6ccwycxphU5vphepKWTRCNa3DsC8HpCjBjq3YZ9da8P8JorDKWyZLRAUn6piCn1LMJpHDDbeun1YgdXw3sDhDk5bHfBUJ7y5Lgnob8HpVBcjDA7ttbBEtFJ1RYb7XFYJJcaersNhWAoiZtLaQucHdNoRWJF8ByRJPRp5wz9rk2tkzTQoA5PFdomjbgYhqdq77d9VMuUPHJ97117xGVffGjGFipt5ZEuNazcVfes8Z21XzHBR7D39GyYvGAs1aiFx4wmyLiCw21ATd6Uq2kN6EcHex"
76
+ }],
77
+ proof: {
78
+ "type": "DataIntegrityProof",
79
+ "created": "2026-09-30T14:16:34.822909912Z",
80
+ "cryptosuite": "eddsa-jcs-2022",
81
+ "proofPurpose": "assertionMethod",
82
+ "proofValue": "z2qzHQQ9yWvvfJdZvcWRKU8gYBnKNNMzppy7J6pcr7tqWevY3PFr3RUAVrnK9yuCPh9oP27XWPXrmQjaPDEkJm6Yx",
83
+ "verificationMethod": "did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN#z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN",
84
+ "@context": [
85
+ "https://www.w3.org/ns/activitystreams",
86
+ "https://w3id.org/fep/ef61",
87
+ "https://w3id.org/security/v1",
88
+ "https://w3id.org/security/data-integrity/v1",
89
+ "https://www.w3.org/ns/did/v1",
90
+ "https://w3id.org/security/multikey/v1",
91
+ "https://gotosocial.org/ns",
92
+ "https://w3id.org/fep/7aa9",
93
+ {
94
+ "alsoKnownAs": {
95
+ "@id": "as:alsoKnownAs",
96
+ "@type": "@id"
97
+ },
98
+ "featuredCollections": {
99
+ "@id": "https://w3id.org/fep/7aa9#featuredCollections",
100
+ "@type": "@id"
101
+ },
102
+ "manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
103
+ "movedTo": {
104
+ "@id": "as:movedTo",
105
+ "@type": "@id"
106
+ },
107
+ "toot": "http://joinmastodon.org/ns#",
108
+ "Emoji": "toot:Emoji",
109
+ "featured": {
110
+ "@id": "toot:featured",
111
+ "@type": "@id"
112
+ },
113
+ "featuredTags": {
114
+ "@id": "toot:featuredTags",
115
+ "@type": "@id"
116
+ },
117
+ "discoverable": "toot:discoverable",
118
+ "suspended": "toot:suspended",
119
+ "memorial": "toot:memorial",
120
+ "indexable": "toot:indexable",
121
+ "schema": "http://schema.org#",
122
+ "PropertyValue": "schema:PropertyValue",
123
+ "value": "schema:value",
124
+ "misskey": "https://misskey-hub.net/ns#",
125
+ "_misskey_followedMessage": "misskey:_misskey_followedMessage",
126
+ "isCat": "misskey:isCat"
127
+ }
128
+ ]
129
+ },
130
+ publicKey: {
131
+ "id": "https://fedify.example/.well-known/apgateway/did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN/actor#main-key",
132
+ "type": "CryptographicKey",
133
+ "owner": "https://fedify.example/.well-known/apgateway/did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN/actor",
134
+ "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA5PRU4GP79WfFGwBvSJ4V\ntAmtreYrzQuLY/whIprIZScL7t5lvvdyu8qX6odu0LsBozosQ1A/oyaCv00jyhjj\nupQdtJXhzW+WG9AuZT4rH4Z0r9u1bpGJT67msalb4ffDxS1d8Ipb1Xe/Hfs6Uu+d\niyINnR3S4qj1bOXLBfNt4lI1wfycFwFtmtqOsxLKqY0VMZ2d9yeYnAUYAOh/C82t\ng69nuXkeyyRJUNSBaY7ej6jnSPbJCpSsnYHzL/bE5h37vo0DUClV5ZPUGzFggDYK\nYC6py31LOEXIn94AV4xVSVpKrQEPeBHrcx4ejJuUVpA9s9L5OoLMcUyZS5OSs8ek\nM8Mj+LjCkakzsZWCusWstyebsszYNz1zq/yiXBiJJ0ypcbraYkltLJ5Ui8KSdH6e\n2r5zC951YifyJZp8p+qK+Z52ZGjbMsWlfwHAynZEn8F5Bqzd4Xlo4s8/mgYtJBIk\nKC4t4HgPXZSCH866wyOOJZz1m7jS5XwopX5s/ST7XzLVw9WpTqd2hqRGpAvCGR42\nM8JOcPqHCAi/KjN4Nyhj9e3TzkoETYYqzQvxCy0LeDi/dHr8EDbT7tF5rCAeglc9\nWWSBqpOnromClOWxX9HgklXvUmid4CkstoQzFb5H+uovtbLrPzMY9kokEXnG69UD\nVkq6SwoNVm0551D8M2smtf0CAwEAAQ==\n-----END PUBLIC KEY-----\n"
135
+ },
136
+ name: "Native Fedify portable sender",
137
+ outbox: "https://fedify.example/.well-known/apgateway/did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN/actor/outbox",
138
+ preferredUsername: "fedifyreverse"
139
+ };
140
+ //#endregion
141
+ //#region test-vectors/fep-ef61/tootik-v0.25.4/send/request.json
142
+ var url = "https://tootik.example/.well-known/apgateway/did:key:z6MkqoM6ybQGmFBWcwsDGbD927SQrnLGTHGJxTABHtWk7DVg/actor/inbox";
143
+ var method = "POST";
144
+ var headers = [
145
+ ["content-type", "application/activity+json"],
146
+ ["date", "Wed, 30 Sep 2026 14:16:35 GMT"],
147
+ ["digest", "SHA-256=WB7t6jsP47/AEPHyEcEz/RSb1MTRXkeJ7y/zuMLzJVc="],
148
+ ["host", "tootik.example"],
149
+ ["signature", "keyId=\"https://fedify.example/.well-known/apgateway/did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN/actor#main-key\",algorithm=\"rsa-sha256\",headers=\"(request-target) content-type date digest host\",signature=\"y2ub43LG9Akaqko3y0bTKSWyQwAlbDdH6x2pLFHqyFfogCXm3zjCJGjISkYsDQn56B6PteHT1JWSgKsmS8/ohH+lYvnSqaZ6KYU3DC0DozJTYHRy18nr9GP9w4Sq0EUAx+jOgpMGlud7G3DRMcZ17aeVCaT8IQCTezBbfzbGjb7fh0U6mYhiI+wKYMAqxmHym9lJDiBP+1s2Gctp9vN2lInvZ0Ve9zW9ue4Yfx/7mnHaSk9Kv9rk3Crjh+pf2U2FZMs5MgnXgqmLgQ3xIuzSyXZ/knj3Eqv0pLVGD4oUehypatPC7VGhRRECCYygVfx9GUdCSxHLNRFP0BXAIcQ5rkJ7hI54moSDXL3VP0+7FPI8FhbZmDS+bW0P6prAWlxYJPdpF/Zy/eiwNBPIQiOz0WQkJ8G0++roZH/Ov9QQqSfb2wziNaE+zRBBKdwKRW8NO7mYfFvmHK+q2sPh/WCBZU7zPPSeGTSlREcUO6EIPNLVC5tYEyyGhONgPn/mjfIllxItb/XzNOyzRYbYw3zoDMS7D1CZE81YX/TmX+UcDkXGOxQyiMcBGFCKPWWcEdYQgaQz4MffhLXSR/UqDG520xGk0aaUZRyCalLK/kUhPKYxd4WB3wa61nQ6s6bn0/s2RKbK5U4crsgvDw6f8ebIm5ZO6PcQjz+d3sLx/D/FYgo=\""]
150
+ ];
151
+ var capturedAt = "2026-09-30T14:16:35.040Z";
152
+ //#endregion
153
+ //#region test-vectors/fep-ef61/tootik-v0.25.4/send/first-response.json
154
+ var status$2 = 401;
155
+ var body = "{\"error\":\"actor is too young\"}\n";
156
+ //#endregion
157
+ //#region test-vectors/fep-ef61/tootik-v0.25.4/send/metadata.json
158
+ var sha256 = {
159
+ "requestBody": "581eedea3b0fe3bfc010f1f211c133fd149bd4c4d15e4789ef2ff3b8c2f32557",
160
+ "actorBody": "e164c9b9c9009887a97b4260b3acdad5cb68281b11663a2f99e1e3cf66b8d5c1",
161
+ "recipientBody": "8104376557559155f4a82406a66bc7ac571dd02bd23ee8ad9cbbb9eefc4e6aa5",
162
+ "tamperedBody": "5a6f2c7fe5dccac671511d0a6b43d9bb5158acdb585ae6897d78be34c96a919b"
163
+ };
164
+ //#endregion
165
+ //#region test-vectors/fep-ef61/tootik-v0.25.4/send/processed-note.json
166
+ var rows = [{
167
+ "id": "https://fedify.example/.well-known/apgateway/did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN/notes/native-inbox",
168
+ "author": "https://fedify.example/.well-known/apgateway/did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN/actor",
169
+ "object": {
170
+ "@context": [
171
+ "https://www.w3.org/ns/activitystreams",
172
+ "https://w3id.org/security/data-integrity/v1",
173
+ "https://gotosocial.org/ns",
174
+ {
175
+ "Emoji": "toot:Emoji",
176
+ "Hashtag": "as:Hashtag",
177
+ "QuoteAuthorization": "https://w3id.org/fep/044f#QuoteAuthorization",
178
+ "_misskey_quote": "misskey:_misskey_quote",
179
+ "emojiReactions": {
180
+ "@id": "fedibird:emojiReactions",
181
+ "@type": "@id"
182
+ },
183
+ "fedibird": "http://fedibird.com/ns#",
184
+ "misskey": "https://misskey-hub.net/ns#",
185
+ "quote": {
186
+ "@id": "https://w3id.org/fep/044f#quote",
187
+ "@type": "@id"
188
+ },
189
+ "quoteAuthorization": {
190
+ "@id": "https://w3id.org/fep/044f#quoteAuthorization",
191
+ "@type": "@id"
192
+ },
193
+ "quoteUri": "fedibird:quoteUri",
194
+ "quoteUrl": "as:quoteUrl",
195
+ "sensitive": "as:sensitive",
196
+ "toot": "http://joinmastodon.org/ns#"
197
+ }
198
+ ],
199
+ "id": "https://fedify.example/.well-known/apgateway/did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN/notes/native-inbox",
200
+ "type": "Note",
201
+ "attributedTo": "https://fedify.example/.well-known/apgateway/did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN/actor",
202
+ "content": "<p>Native Fedify to tootik v0.25.4 portable interoperability.</p>",
203
+ "to": ["https://www.w3.org/ns/activitystreams#Public", "https://tootik.example/.well-known/apgateway/did:key:z6MkqoM6ybQGmFBWcwsDGbD927SQrnLGTHGJxTABHtWk7DVg/actor"],
204
+ "proof": {
205
+ "@context": [
206
+ "https://www.w3.org/ns/activitystreams",
207
+ "https://w3id.org/security/data-integrity/v1",
208
+ "https://gotosocial.org/ns",
209
+ {
210
+ "Emoji": "toot:Emoji",
211
+ "Hashtag": "as:Hashtag",
212
+ "QuoteAuthorization": "https://w3id.org/fep/044f#QuoteAuthorization",
213
+ "_misskey_quote": "misskey:_misskey_quote",
214
+ "emojiReactions": {
215
+ "@id": "fedibird:emojiReactions",
216
+ "@type": "@id"
217
+ },
218
+ "fedibird": "http://fedibird.com/ns#",
219
+ "misskey": "https://misskey-hub.net/ns#",
220
+ "quote": {
221
+ "@id": "https://w3id.org/fep/044f#quote",
222
+ "@type": "@id"
223
+ },
224
+ "quoteAuthorization": {
225
+ "@id": "https://w3id.org/fep/044f#quoteAuthorization",
226
+ "@type": "@id"
227
+ },
228
+ "quoteUri": "fedibird:quoteUri",
229
+ "quoteUrl": "as:quoteUrl",
230
+ "sensitive": "as:sensitive",
231
+ "toot": "http://joinmastodon.org/ns#"
232
+ }
233
+ ],
234
+ "type": "DataIntegrityProof",
235
+ "cryptosuite": "eddsa-jcs-2022",
236
+ "verificationMethod": "did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN#z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN",
237
+ "proofPurpose": "assertionMethod",
238
+ "proofValue": "z3Qs33iEXVq9qLD29kiMa26yLGVuYaKvUKCMqPmuj2z3Y4FmjVVtm4Nb3vMGiaeSNvVahpPni6H7ttesNjpZ9SsDe",
239
+ "created": "2026-09-30T14:16:34.84575Z"
240
+ }
241
+ }
242
+ }];
243
+ //#endregion
244
+ //#region test-vectors/fep-ef61/tootik-v0.25.4/send/raw-bodies.json
245
+ var raw_bodies_default = {
246
+ requestBody: "{\"@context\":[\"https://w3id.org/identity/v1\",\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/security/data-integrity/v1\",\"https://gotosocial.org/ns\",{\"toot\":\"http://joinmastodon.org/ns#\",\"misskey\":\"https://misskey-hub.net/ns#\",\"fedibird\":\"http://fedibird.com/ns#\",\"sensitive\":\"as:sensitive\",\"votersCount\":{\"@id\":\"toot:votersCount\",\"@type\":\"http://www.w3.org/2001/XMLSchema#nonNegativeInteger\"},\"Emoji\":\"toot:Emoji\",\"Hashtag\":\"as:Hashtag\",\"ChatMessage\":\"http://litepub.social/ns#ChatMessage\",\"quote\":{\"@id\":\"https://w3id.org/fep/044f#quote\",\"@type\":\"@id\"},\"quoteUrl\":\"as:quoteUrl\",\"_misskey_quote\":\"misskey:_misskey_quote\",\"quoteUri\":\"fedibird:quoteUri\",\"QuoteAuthorization\":\"https://w3id.org/fep/044f#QuoteAuthorization\",\"QuoteRequest\":\"https://w3id.org/fep/044f#QuoteRequest\",\"quoteAuthorization\":{\"@id\":\"https://w3id.org/fep/044f#quoteAuthorization\",\"@type\":\"@id\"},\"emojiReactions\":{\"@id\":\"fedibird:emojiReactions\",\"@type\":\"@id\"}}],\"id\":\"https://fedify.example/.well-known/apgateway/did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN/creates/native-inbox\",\"type\":\"Create\",\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2026-09-30T14:16:34.859806885Z\",\"cryptosuite\":\"eddsa-jcs-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z4fZQxG72dz6Qp2z1xj9NS96bPRCitAnM1FBVWYqHq65pYdQBwbk5ZJ3S7suxuZYHFPjCuL7vPKHFT8v2w4LHbyUK\",\"verificationMethod\":\"did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN#z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN\",\"@context\":[\"https://w3id.org/identity/v1\",\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/security/data-integrity/v1\",\"https://gotosocial.org/ns\",{\"toot\":\"http://joinmastodon.org/ns#\",\"misskey\":\"https://misskey-hub.net/ns#\",\"fedibird\":\"http://fedibird.com/ns#\",\"sensitive\":\"as:sensitive\",\"votersCount\":{\"@id\":\"toot:votersCount\",\"@type\":\"http://www.w3.org/2001/XMLSchema#nonNegativeInteger\"},\"Emoji\":\"toot:Emoji\",\"Hashtag\":\"as:Hashtag\",\"ChatMessage\":\"http://litepub.social/ns#ChatMessage\",\"quote\":{\"@id\":\"https://w3id.org/fep/044f#quote\",\"@type\":\"@id\"},\"quoteUrl\":\"as:quoteUrl\",\"_misskey_quote\":\"misskey:_misskey_quote\",\"quoteUri\":\"fedibird:quoteUri\",\"QuoteAuthorization\":\"https://w3id.org/fep/044f#QuoteAuthorization\",\"QuoteRequest\":\"https://w3id.org/fep/044f#QuoteRequest\",\"quoteAuthorization\":{\"@id\":\"https://w3id.org/fep/044f#quoteAuthorization\",\"@type\":\"@id\"},\"emojiReactions\":{\"@id\":\"fedibird:emojiReactions\",\"@type\":\"@id\"}}]},\"actor\":\"https://fedify.example/.well-known/apgateway/did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN/actor\",\"object\":{\"@context\":[\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/security/data-integrity/v1\",\"https://gotosocial.org/ns\",{\"toot\":\"http://joinmastodon.org/ns#\",\"misskey\":\"https://misskey-hub.net/ns#\",\"fedibird\":\"http://fedibird.com/ns#\",\"sensitive\":\"as:sensitive\",\"Emoji\":\"toot:Emoji\",\"Hashtag\":\"as:Hashtag\",\"quote\":{\"@id\":\"https://w3id.org/fep/044f#quote\",\"@type\":\"@id\"},\"quoteUrl\":\"as:quoteUrl\",\"_misskey_quote\":\"misskey:_misskey_quote\",\"quoteUri\":\"fedibird:quoteUri\",\"QuoteAuthorization\":\"https://w3id.org/fep/044f#QuoteAuthorization\",\"quoteAuthorization\":{\"@id\":\"https://w3id.org/fep/044f#quoteAuthorization\",\"@type\":\"@id\"},\"emojiReactions\":{\"@id\":\"fedibird:emojiReactions\",\"@type\":\"@id\"}}],\"id\":\"https://fedify.example/.well-known/apgateway/did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN/notes/native-inbox\",\"type\":\"Note\",\"attributedTo\":\"https://fedify.example/.well-known/apgateway/did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN/actor\",\"content\":\"<p>Native Fedify to tootik v0.25.4 portable interoperability.</p>\",\"to\":[\"https://www.w3.org/ns/activitystreams#Public\",\"https://tootik.example/.well-known/apgateway/did:key:z6MkqoM6ybQGmFBWcwsDGbD927SQrnLGTHGJxTABHtWk7DVg/actor\"],\"proof\":{\"@context\":[\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/security/data-integrity/v1\",\"https://gotosocial.org/ns\",{\"toot\":\"http://joinmastodon.org/ns#\",\"misskey\":\"https://misskey-hub.net/ns#\",\"fedibird\":\"http://fedibird.com/ns#\",\"sensitive\":\"as:sensitive\",\"Emoji\":\"toot:Emoji\",\"Hashtag\":\"as:Hashtag\",\"quote\":{\"@id\":\"https://w3id.org/fep/044f#quote\",\"@type\":\"@id\"},\"quoteUrl\":\"as:quoteUrl\",\"_misskey_quote\":\"misskey:_misskey_quote\",\"quoteUri\":\"fedibird:quoteUri\",\"QuoteAuthorization\":\"https://w3id.org/fep/044f#QuoteAuthorization\",\"quoteAuthorization\":{\"@id\":\"https://w3id.org/fep/044f#quoteAuthorization\",\"@type\":\"@id\"},\"emojiReactions\":{\"@id\":\"fedibird:emojiReactions\",\"@type\":\"@id\"}}],\"type\":\"DataIntegrityProof\",\"created\":\"2026-09-30T14:16:34.84575Z\",\"cryptosuite\":\"eddsa-jcs-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z3Qs33iEXVq9qLD29kiMa26yLGVuYaKvUKCMqPmuj2z3Y4FmjVVtm4Nb3vMGiaeSNvVahpPni6H7ttesNjpZ9SsDe\",\"verificationMethod\":\"did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN#z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN\"}},\"to\":[\"https://www.w3.org/ns/activitystreams#Public\",\"https://tootik.example/.well-known/apgateway/did:key:z6MkqoM6ybQGmFBWcwsDGbD927SQrnLGTHGJxTABHtWk7DVg/actor\"]}",
247
+ actorBody: "{\"@context\":[\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/fep/ef61\",\"https://w3id.org/security/v1\",\"https://w3id.org/security/data-integrity/v1\",\"https://www.w3.org/ns/did/v1\",\"https://w3id.org/security/multikey/v1\",\"https://gotosocial.org/ns\",\"https://w3id.org/fep/7aa9\",{\"alsoKnownAs\":{\"@id\":\"as:alsoKnownAs\",\"@type\":\"@id\"},\"featuredCollections\":{\"@id\":\"https://w3id.org/fep/7aa9#featuredCollections\",\"@type\":\"@id\"},\"manuallyApprovesFollowers\":\"as:manuallyApprovesFollowers\",\"movedTo\":{\"@id\":\"as:movedTo\",\"@type\":\"@id\"},\"toot\":\"http://joinmastodon.org/ns#\",\"Emoji\":\"toot:Emoji\",\"featured\":{\"@id\":\"toot:featured\",\"@type\":\"@id\"},\"featuredTags\":{\"@id\":\"toot:featuredTags\",\"@type\":\"@id\"},\"discoverable\":\"toot:discoverable\",\"suspended\":\"toot:suspended\",\"memorial\":\"toot:memorial\",\"indexable\":\"toot:indexable\",\"schema\":\"http://schema.org#\",\"PropertyValue\":\"schema:PropertyValue\",\"value\":\"schema:value\",\"misskey\":\"https://misskey-hub.net/ns#\",\"_misskey_followedMessage\":\"misskey:_misskey_followedMessage\",\"isCat\":\"misskey:isCat\"}],\"id\":\"https://fedify.example/.well-known/apgateway/did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN/actor\",\"type\":\"Person\",\"inbox\":\"https://fedify.example/.well-known/apgateway/did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN/actor/inbox\",\"gateways\":[\"https://fedify.example/\"],\"assertionMethod\":[{\"id\":\"https://fedify.example/.well-known/apgateway/did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN/actor#ed25519-key\",\"type\":\"Multikey\",\"controller\":\"https://fedify.example/.well-known/apgateway/did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN/actor\",\"publicKeyMultibase\":\"z6MkoHdcDxRg36BmHgY8riW5xW8NbZdbgKBMmXUoyDAN9LEX\"},{\"id\":\"https://fedify.example/.well-known/apgateway/did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN/actor#main-key\",\"type\":\"Multikey\",\"controller\":\"https://fedify.example/.well-known/apgateway/did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN/actor\",\"publicKeyMultibase\":\"zgghBUVkqmWS8e1j5pNkit2HZTY7551YeVnqt4nok9y5j6Qj4zHfHAiTCUWeiSfvfgC8cuknF4312kUZa79gAAwCyoXqA3PZppMxsGmdwRprmxYkGrZkfvmmLfzCvw6faQrsph6hiMvYtFEQUZTwd2n6CG9j7ZqiXA5NGN9WRu5MNqucWNpMTQZFSdPnow2GgMnGy7G5fDhg7BQtSPLCYdEWEipFWJuy6nKwmySnffKYnZQZQRzNysFg2xJ91ZceWVrAjFxHwjekyUe2CrkNM1vYq829SnCoXUfPBsA31ujzVuYBwjDZhCDXmJ87fbWFmDg6zmwyXLdGLRmGY3nbkU8Jwt4iyRNqCpjirKjEx54JQj2wahyxL6r2BBjMnuoisDXNi6vjztoE7WbmHDoMVoz9qGUv5s2b6VVvn7vNgHYjjvKjYLbrj2fhe6ccwycxphU5vphepKWTRCNa3DsC8HpCjBjq3YZ9da8P8JorDKWyZLRAUn6piCn1LMJpHDDbeun1YgdXw3sDhDk5bHfBUJ7y5Lgnob8HpVBcjDA7ttbBEtFJ1RYb7XFYJJcaersNhWAoiZtLaQucHdNoRWJF8ByRJPRp5wz9rk2tkzTQoA5PFdomjbgYhqdq77d9VMuUPHJ97117xGVffGjGFipt5ZEuNazcVfes8Z21XzHBR7D39GyYvGAs1aiFx4wmyLiCw21ATd6Uq2kN6EcHex\"}],\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2026-09-30T14:16:34.822909912Z\",\"cryptosuite\":\"eddsa-jcs-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z2qzHQQ9yWvvfJdZvcWRKU8gYBnKNNMzppy7J6pcr7tqWevY3PFr3RUAVrnK9yuCPh9oP27XWPXrmQjaPDEkJm6Yx\",\"verificationMethod\":\"did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN#z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN\",\"@context\":[\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/fep/ef61\",\"https://w3id.org/security/v1\",\"https://w3id.org/security/data-integrity/v1\",\"https://www.w3.org/ns/did/v1\",\"https://w3id.org/security/multikey/v1\",\"https://gotosocial.org/ns\",\"https://w3id.org/fep/7aa9\",{\"alsoKnownAs\":{\"@id\":\"as:alsoKnownAs\",\"@type\":\"@id\"},\"featuredCollections\":{\"@id\":\"https://w3id.org/fep/7aa9#featuredCollections\",\"@type\":\"@id\"},\"manuallyApprovesFollowers\":\"as:manuallyApprovesFollowers\",\"movedTo\":{\"@id\":\"as:movedTo\",\"@type\":\"@id\"},\"toot\":\"http://joinmastodon.org/ns#\",\"Emoji\":\"toot:Emoji\",\"featured\":{\"@id\":\"toot:featured\",\"@type\":\"@id\"},\"featuredTags\":{\"@id\":\"toot:featuredTags\",\"@type\":\"@id\"},\"discoverable\":\"toot:discoverable\",\"suspended\":\"toot:suspended\",\"memorial\":\"toot:memorial\",\"indexable\":\"toot:indexable\",\"schema\":\"http://schema.org#\",\"PropertyValue\":\"schema:PropertyValue\",\"value\":\"schema:value\",\"misskey\":\"https://misskey-hub.net/ns#\",\"_misskey_followedMessage\":\"misskey:_misskey_followedMessage\",\"isCat\":\"misskey:isCat\"}]},\"publicKey\":{\"id\":\"https://fedify.example/.well-known/apgateway/did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN/actor#main-key\",\"type\":\"CryptographicKey\",\"owner\":\"https://fedify.example/.well-known/apgateway/did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN/actor\",\"publicKeyPem\":\"-----BEGIN PUBLIC KEY-----\\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA5PRU4GP79WfFGwBvSJ4V\\ntAmtreYrzQuLY/whIprIZScL7t5lvvdyu8qX6odu0LsBozosQ1A/oyaCv00jyhjj\\nupQdtJXhzW+WG9AuZT4rH4Z0r9u1bpGJT67msalb4ffDxS1d8Ipb1Xe/Hfs6Uu+d\\niyINnR3S4qj1bOXLBfNt4lI1wfycFwFtmtqOsxLKqY0VMZ2d9yeYnAUYAOh/C82t\\ng69nuXkeyyRJUNSBaY7ej6jnSPbJCpSsnYHzL/bE5h37vo0DUClV5ZPUGzFggDYK\\nYC6py31LOEXIn94AV4xVSVpKrQEPeBHrcx4ejJuUVpA9s9L5OoLMcUyZS5OSs8ek\\nM8Mj+LjCkakzsZWCusWstyebsszYNz1zq/yiXBiJJ0ypcbraYkltLJ5Ui8KSdH6e\\n2r5zC951YifyJZp8p+qK+Z52ZGjbMsWlfwHAynZEn8F5Bqzd4Xlo4s8/mgYtJBIk\\nKC4t4HgPXZSCH866wyOOJZz1m7jS5XwopX5s/ST7XzLVw9WpTqd2hqRGpAvCGR42\\nM8JOcPqHCAi/KjN4Nyhj9e3TzkoETYYqzQvxCy0LeDi/dHr8EDbT7tF5rCAeglc9\\nWWSBqpOnromClOWxX9HgklXvUmid4CkstoQzFb5H+uovtbLrPzMY9kokEXnG69UD\\nVkq6SwoNVm0551D8M2smtf0CAwEAAQ==\\n-----END PUBLIC KEY-----\\n\"},\"name\":\"Native Fedify portable sender\",\"outbox\":\"https://fedify.example/.well-known/apgateway/did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN/actor/outbox\",\"preferredUsername\":\"fedifyreverse\"}",
248
+ recipientBody: "{\"@context\":[\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/security/data-integrity/v1\",\"https://w3id.org/security/v1\"],\"id\":\"https://tootik.example/.well-known/apgateway/did:key:z6MkqoM6ybQGmFBWcwsDGbD927SQrnLGTHGJxTABHtWk7DVg/actor\",\"type\":\"Application\",\"inbox\":\"https://tootik.example/.well-known/apgateway/did:key:z6MkqoM6ybQGmFBWcwsDGbD927SQrnLGTHGJxTABHtWk7DVg/actor/inbox\",\"outbox\":\"https://tootik.example/.well-known/apgateway/did:key:z6MkqoM6ybQGmFBWcwsDGbD927SQrnLGTHGJxTABHtWk7DVg/actor/outbox\",\"preferredUsername\":\"actor\",\"followers\":\"https://tootik.example/.well-known/apgateway/did:key:z6MkqoM6ybQGmFBWcwsDGbD927SQrnLGTHGJxTABHtWk7DVg/actor/followers\",\"publicKey\":{\"id\":\"https://tootik.example/.well-known/apgateway/did:key:z6MkqoM6ybQGmFBWcwsDGbD927SQrnLGTHGJxTABHtWk7DVg/actor#main-key\",\"owner\":\"https://tootik.example/.well-known/apgateway/did:key:z6MkqoM6ybQGmFBWcwsDGbD927SQrnLGTHGJxTABHtWk7DVg/actor\",\"publicKeyPem\":\"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvOrxaDyQG0jyLQ6OlLYi\\n5GabA3ieKKQi5Z3fS/yVDxV9WEyu79FzCC+uTZQXXXqzljI4ziTA4GmaITRHwGcU\\nji5bYK2y/fvfAQLhwhJotbZF4u4ZeWtyXN8Ds7IQ+Dr67ci7K/htsMNSysAMF/+u\\n5witcW5hdJrWSAIZEg/17UVQO+0EbuPXL5o6fRHm/t1GLchvFCo1pcyV3G+y3q2E\\nOx8FQTIkVPDwPNBzfX21YbBOIDo6AlbqSjB9tWKZePkUymX/JX4FARK3aVJvstUt\\neOX7hPxp8TvjGjA7nzLDf0E6kntFYzjaMG0qumjXftAQZUFZHL7eGCGOaIAgm68Z\\nAQIDAQAB\\n-----END PUBLIC KEY-----\\n\"},\"icon\":[{\"type\":\"Image\",\"mediaType\":\"image/gif\",\"url\":\"https://tootik.example/.well-known/apgateway/did:key:z6MkqoM6ybQGmFBWcwsDGbD927SQrnLGTHGJxTABHtWk7DVg/actor/icon.gif\"}],\"manuallyApprovesFollowers\":false,\"assertionMethod\":[{\"id\":\"https://tootik.example/.well-known/apgateway/did:key:z6MkqoM6ybQGmFBWcwsDGbD927SQrnLGTHGJxTABHtWk7DVg/actor#ed25519-key\",\"type\":\"Multikey\",\"controller\":\"https://tootik.example/.well-known/apgateway/did:key:z6MkqoM6ybQGmFBWcwsDGbD927SQrnLGTHGJxTABHtWk7DVg/actor\",\"publicKeyMultibase\":\"z6MkqoM6ybQGmFBWcwsDGbD927SQrnLGTHGJxTABHtWk7DVg\"},{\"id\":\"https://tootik.example/.well-known/apgateway/did:key:z6MkqoM6ybQGmFBWcwsDGbD927SQrnLGTHGJxTABHtWk7DVg/actor#ml-dsa-44-key\",\"type\":\"Multikey\",\"controller\":\"https://tootik.example/.well-known/apgateway/did:key:z6MkqoM6ybQGmFBWcwsDGbD927SQrnLGTHGJxTABHtWk7DVg/actor\",\"publicKeyMultibase\":\"ukCTy_ExYm-3IjZfDghrCf0O1P76JI3iS6sOVeu0WISMvS0w-0cLogJ9RK_cZivJFOHadKtTHT2IUGufuhLpPnxhymkQnmagnryXEexIvK-Vpl4Q4CV6jldBib_yXSYIZJnIofLK-BfB8itzLns95VMAFI3j_aqpoj4-02sSvcIfW7dQzmk__73LVux8HchjzvumnVhhJtNwnM2IeS60Yo6XQqqDrFfaOJ6-7dEIfabzwGwiJTYjtpn6pwjlg7uvP4b1rEyBosb9jgpuH2tBBxjbTceARNdnndrj6n5LnAPh0V5Zs2cs2Hc097lB_exY_ICOEzZ9Go654IKy9AGcKwDxaLl_BMvIo7YYDSlK8h86q2K6pBVOa1MPx2ixFCrA9HdlNPeqSs5giI_yWmkxR2_Tsm_0WbQ6ZOR7j7Ra4srqJVPGTAIvBpW2hlsOriiL73xjuOMptoQq3-23epnF-hIKVTa5vjSer_7V_UR-qoXHqWfMgAaGXIviMM8CGc4-_12ktGZPA-Okvqf5f3K6_0tIjOCh3zZN1CHblH-rstgXMk5tH7lK22wV2IfUz_i7o98Wd4hm10yUrFu_-cPrL7unhRBpiDVeKtIJ2F4t6xuXypRjV-bN282U1Zve5daiMvT0xb07T6Yfn34l01_HkklxywcgOKVZ8bpXJEaEg9lfozqTTvp2DuvkMlYqIvzoiLa5YbUKQb0g8Bio049_i79R3KDfl6K8aIqLPNtzS3q06BdpP4jflfpm6JXzInV_SX-WnM4xQ2eJJj7N7hsnDV9Tt1oWs5yzQyoi7v0pJSbJpPsnzdlNYyqJPrH8jHXuaq74T0kxX7wGLDNFMAVnOWiW8aIiqRthKOrQ7fxZGBWiREmjOWDtwjmWmay3JFkG6D0nby78zPMnTROPU9I6ZeGIjdZRsi5Mc1eXqpUiqnncuXtaOa1nzUAU5MmMEvj441R8lPk1ax2F0XYbxHWCmUSg3y4K8JQwbn2DBryvBV8KT9EcDibqdSZ9hz158uIXJtJuK70RiQw1JC3iI6tB5A_rnprpt8ooyPXUsLNYyS-dXN_oyrv8eWAWrVh4v3XAwhwajkq9jknzY0V-TNpX37KWWVfPg_z7t9qGwIx_RHND2FjLjrrnm0t-q7dAdWjeVBHXzpaU3eLIzCJRORbPFCsjkbSiiBKnCurBOxXUe4tp-vxzIDkICfKn93vJrs09WpELN93B1CaauiwWEstcjrvcB_2cz_7Z3KmRoOhErJ08G4lxApru4Xuwp4GvPys1uxO7ntBONLzkHsWXd6jwwC0jQwRc8J2lrlljYTeRIhYKiRIjwo47VigHnr3Od4drnMXwr2PJw6QqKhmWvmRvZBWDoncbtEKd7oOEoPE7gA5z-P9Q1ZxkcjVNBd3zniwLUORVCrm9dgChHRy9wpQzRoQX-fPRjVUSm8sS3KLFH7JU74UoUaJfn7eOzUfydz_Ad6peDqpSFWEaWLFUMnr_fsSaNaZRNWaLfvZmskWYq5YGBrPYPdh6rx7P1XctYzBG2chqDKdDblmsWSKKZBJlUxAAas1C-AYC3j_PsZo58MBRhNgxS-UaKDkh73JSYNLGSt7T9WdUSKul5l8mXJSjzxrnIFHmvBozVMcxfHMMe8Ii9h5MogAN5hyTOyN2Ug0QDG47_w9ylz3ljNzzavRGWT49KCk1x3tqlxaf8_Ghx4sKY3B6s1c77YCX_Rne_MO96JA4xDLN11hqai39cVfNfyJoz\"}],\"implements\":[{\"href\":\"https://datatracker.ietf.org/doc/html/rfc9421\",\"name\":\"RFC-9421: HTTP Message Signatures\"},{\"href\":\"https://datatracker.ietf.org/doc/html/rfc9421#name-eddsa-using-curve-edwards25\",\"name\":\"RFC-9421 signatures using the Ed25519 algorithm\"},{\"href\":\"https://c2sp.org/httpsig-pq@v1.0.0#ml-dsa-44\",\"name\":\"RFC-9421 signatures using the ml-dsa-44 algorithm\"}],\"gateways\":[\"https://tootik.example\"],\"proof\":{\"@context\":[\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/security/data-integrity/v1\",\"https://w3id.org/security/v1\"],\"type\":\"DataIntegrityProof\",\"cryptosuite\":\"eddsa-jcs-2022\",\"verificationMethod\":\"did:key:z6MkqoM6ybQGmFBWcwsDGbD927SQrnLGTHGJxTABHtWk7DVg#z6MkqoM6ybQGmFBWcwsDGbD927SQrnLGTHGJxTABHtWk7DVg\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z4dTmsRsKvgqVBBHJnrkxfZUA44bzZxotkkjNwQtx62h77vpGbwA7X3KNNZwaYcT8zTiwCmXCDurPwEdZax9p8oQQ\",\"created\":\"2026-09-30T13:23:34Z\"}}",
249
+ tamperedBody: "{\"@context\":[\"https://w3id.org/identity/v1\",\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/security/data-integrity/v1\",\"https://gotosocial.org/ns\",{\"toot\":\"http://joinmastodon.org/ns#\",\"misskey\":\"https://misskey-hub.net/ns#\",\"fedibird\":\"http://fedibird.com/ns#\",\"sensitive\":\"as:sensitive\",\"votersCount\":{\"@id\":\"toot:votersCount\",\"@type\":\"http://www.w3.org/2001/XMLSchema#nonNegativeInteger\"},\"Emoji\":\"toot:Emoji\",\"Hashtag\":\"as:Hashtag\",\"ChatMessage\":\"http://litepub.social/ns#ChatMessage\",\"quote\":{\"@id\":\"https://w3id.org/fep/044f#quote\",\"@type\":\"@id\"},\"quoteUrl\":\"as:quoteUrl\",\"_misskey_quote\":\"misskey:_misskey_quote\",\"quoteUri\":\"fedibird:quoteUri\",\"QuoteAuthorization\":\"https://w3id.org/fep/044f#QuoteAuthorization\",\"QuoteRequest\":\"https://w3id.org/fep/044f#QuoteRequest\",\"quoteAuthorization\":{\"@id\":\"https://w3id.org/fep/044f#quoteAuthorization\",\"@type\":\"@id\"},\"emojiReactions\":{\"@id\":\"fedibird:emojiReactions\",\"@type\":\"@id\"}}],\"id\":\"https://fedify.example/.well-known/apgateway/did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN/creates/native-inbox\",\"type\":\"Create\",\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2026-09-30T14:16:34.859806885Z\",\"cryptosuite\":\"eddsa-jcs-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z4fZQxG72dz6Qp2z1xj9NS96bPRCitAnM1FBVWYqHq65pYdQBwbk5ZJ3S7suxuZYHFPjCuL7vPKHFT8v2w4LHbyUK\",\"verificationMethod\":\"did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN#z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN\",\"@context\":[\"https://w3id.org/identity/v1\",\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/security/data-integrity/v1\",\"https://gotosocial.org/ns\",{\"toot\":\"http://joinmastodon.org/ns#\",\"misskey\":\"https://misskey-hub.net/ns#\",\"fedibird\":\"http://fedibird.com/ns#\",\"sensitive\":\"as:sensitive\",\"votersCount\":{\"@id\":\"toot:votersCount\",\"@type\":\"http://www.w3.org/2001/XMLSchema#nonNegativeInteger\"},\"Emoji\":\"toot:Emoji\",\"Hashtag\":\"as:Hashtag\",\"ChatMessage\":\"http://litepub.social/ns#ChatMessage\",\"quote\":{\"@id\":\"https://w3id.org/fep/044f#quote\",\"@type\":\"@id\"},\"quoteUrl\":\"as:quoteUrl\",\"_misskey_quote\":\"misskey:_misskey_quote\",\"quoteUri\":\"fedibird:quoteUri\",\"QuoteAuthorization\":\"https://w3id.org/fep/044f#QuoteAuthorization\",\"QuoteRequest\":\"https://w3id.org/fep/044f#QuoteRequest\",\"quoteAuthorization\":{\"@id\":\"https://w3id.org/fep/044f#quoteAuthorization\",\"@type\":\"@id\"},\"emojiReactions\":{\"@id\":\"fedibird:emojiReactions\",\"@type\":\"@id\"}}]},\"actor\":\"https://fedify.example/.well-known/apgateway/did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN/actor\",\"object\":{\"@context\":[\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/security/data-integrity/v1\",\"https://gotosocial.org/ns\",{\"toot\":\"http://joinmastodon.org/ns#\",\"misskey\":\"https://misskey-hub.net/ns#\",\"fedibird\":\"http://fedibird.com/ns#\",\"sensitive\":\"as:sensitive\",\"Emoji\":\"toot:Emoji\",\"Hashtag\":\"as:Hashtag\",\"quote\":{\"@id\":\"https://w3id.org/fep/044f#quote\",\"@type\":\"@id\"},\"quoteUrl\":\"as:quoteUrl\",\"_misskey_quote\":\"misskey:_misskey_quote\",\"quoteUri\":\"fedibird:quoteUri\",\"QuoteAuthorization\":\"https://w3id.org/fep/044f#QuoteAuthorization\",\"quoteAuthorization\":{\"@id\":\"https://w3id.org/fep/044f#quoteAuthorization\",\"@type\":\"@id\"},\"emojiReactions\":{\"@id\":\"fedibird:emojiReactions\",\"@type\":\"@id\"}}],\"id\":\"https://fedify.example/.well-known/apgateway/did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN/notes/native-inbox\",\"type\":\"Note\",\"attributedTo\":\"https://fedify.example/.well-known/apgateway/did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN/actor\",\"content\":\"<p>Tampered after signing.</p>\",\"to\":[\"https://www.w3.org/ns/activitystreams#Public\",\"https://tootik.example/.well-known/apgateway/did:key:z6MkqoM6ybQGmFBWcwsDGbD927SQrnLGTHGJxTABHtWk7DVg/actor\"],\"proof\":{\"@context\":[\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/security/data-integrity/v1\",\"https://gotosocial.org/ns\",{\"toot\":\"http://joinmastodon.org/ns#\",\"misskey\":\"https://misskey-hub.net/ns#\",\"fedibird\":\"http://fedibird.com/ns#\",\"sensitive\":\"as:sensitive\",\"Emoji\":\"toot:Emoji\",\"Hashtag\":\"as:Hashtag\",\"quote\":{\"@id\":\"https://w3id.org/fep/044f#quote\",\"@type\":\"@id\"},\"quoteUrl\":\"as:quoteUrl\",\"_misskey_quote\":\"misskey:_misskey_quote\",\"quoteUri\":\"fedibird:quoteUri\",\"QuoteAuthorization\":\"https://w3id.org/fep/044f#QuoteAuthorization\",\"quoteAuthorization\":{\"@id\":\"https://w3id.org/fep/044f#quoteAuthorization\",\"@type\":\"@id\"},\"emojiReactions\":{\"@id\":\"fedibird:emojiReactions\",\"@type\":\"@id\"}}],\"type\":\"DataIntegrityProof\",\"created\":\"2026-09-30T14:16:34.84575Z\",\"cryptosuite\":\"eddsa-jcs-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z3Qs33iEXVq9qLD29kiMa26yLGVuYaKvUKCMqPmuj2z3Y4FmjVVtm4Nb3vMGiaeSNvVahpPni6H7ttesNjpZ9SsDe\",\"verificationMethod\":\"did:key:z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN#z6MkuVzJw5PGsWVBkEtE7k2vsNqCgWwnBm9iBFAVGmzfCjwN\"}},\"to\":[\"https://www.w3.org/ns/activitystreams#Public\",\"https://tootik.example/.well-known/apgateway/did:key:z6MkqoM6ybQGmFBWcwsDGbD927SQrnLGTHGJxTABHtWk7DVg/actor\"]}"
250
+ };
251
+ //#endregion
252
+ //#region test-vectors/fep-ef61/tootik-v0.25.4/send/response.json
253
+ var status$1 = 202;
254
+ //#endregion
255
+ //#region test-vectors/fep-ef61/tootik-v0.25.4/send/tampered-response.json
256
+ var status = 401;
257
+ //#endregion
258
+ //#region src/sig/tootik-send-interop.test.ts
259
+ const activity = JSON.parse(raw_bodies_default.requestBody);
260
+ const tampered = JSON.parse(raw_bodies_default.tamperedBody);
261
+ async function digest(value) {
262
+ return new Uint8Array(await crypto.subtle.digest("SHA-256", new TextEncoder().encode(value)));
263
+ }
264
+ async function verifyRawJcs(document) {
265
+ const { proof, ...unsecured } = document;
266
+ assert(proof != null && typeof proof === "object" && !Array.isArray(proof));
267
+ const { proofValue, ...configuration } = proof;
268
+ assertEquals(configuration.cryptosuite, "eddsa-jcs-2022");
269
+ configuration["@context"] ??= document["@context"];
270
+ assert(typeof configuration.verificationMethod === "string");
271
+ assert(typeof proofValue === "string");
272
+ const key = await importDidKey(configuration.verificationMethod.split("#")[0]);
273
+ const combined = /* @__PURE__ */ new Uint8Array(64);
274
+ combined.set(await digest(serialize(configuration)), 0);
275
+ combined.set(await digest(serialize(unsecured)), 32);
276
+ return await crypto.subtle.verify("Ed25519", key, new Uint8Array(decodeMultibase(proofValue)), combined);
277
+ }
278
+ const options = {
279
+ contextLoader: mockDocumentLoader,
280
+ documentLoader(url) {
281
+ assertEquals(url.split("#")[0], actor_default.id);
282
+ return Promise.resolve({
283
+ document: structuredClone(actor_default),
284
+ documentUrl: actor_default.id,
285
+ contextUrl: null
286
+ });
287
+ },
288
+ currentTime: Temporal.Instant.from(capturedAt)
289
+ };
290
+ function request() {
291
+ return new Request(url, {
292
+ method,
293
+ headers,
294
+ body: raw_bodies_default.requestBody
295
+ });
296
+ }
297
+ test("Fedify to tootik v0.25.4 captured actor and compound proofs verify raw JCS", async () => {
298
+ for (const [name, value] of Object.entries(raw_bodies_default)) assertEquals(encodeHex(await digest(value)), sha256[name]);
299
+ assertEquals(JSON.parse(raw_bodies_default.actorBody), actor_default);
300
+ assert(await verifyRawJcs(actor_default));
301
+ assert(await verifyRawJcs(activity));
302
+ assert(await verifyRawJcs(activity.object));
303
+ assert((await verifyPortableObjectProof(actor_default, options)).verified);
304
+ assert((await verifyPortableObjectProof(activity, options)).verified);
305
+ assert((await verifyPortableObjectProof(activity.object, options)).verified);
306
+ });
307
+ test("Fedify to tootik v0.25.4 captured HTTP signature belongs to its portable actor", async () => {
308
+ const verified = await verifyRequestDetailed(request(), options);
309
+ assert(verified.verified);
310
+ assertEquals(verified.key.id?.href, actor_default.publicKey.id);
311
+ assert(await doesActorOwnKey(await Create.fromJsonLd(activity, options), verified.key, options));
312
+ });
313
+ test("Fedify to tootik v0.25.4 captured result records native Note processing", () => {
314
+ assertEquals(status$2, 401);
315
+ assertEquals(JSON.parse(body).error, "actor is too young");
316
+ assertEquals(status$1, 202);
317
+ assertEquals(rows.length, 1);
318
+ assertEquals(rows[0].id, activity.object.id);
319
+ assertEquals(rows[0].author, actor_default.id);
320
+ assertEquals(rows[0].object.content, activity.object.content);
321
+ assertEquals(rows[0].object.proof.proofValue, activity.object.proof.proofValue);
322
+ });
323
+ test("Fedify to tootik v0.25.4 captured nested tampering invalidates both proofs", async () => {
324
+ assertEquals(status, 401);
325
+ assertEquals(tampered.id, activity.id);
326
+ assert(tampered.object.content !== activity.object.content);
327
+ assertEquals(await verifyRawJcs(tampered), false);
328
+ assertEquals(await verifyRawJcs(tampered.object), false);
329
+ });
330
+ //#endregion
331
+ export {};
@@ -0,0 +1,2 @@
1
+ import { Temporal } from "temporal-polyfill";
2
+ import { URLPattern } from "urlpattern-polyfill";