@fedify/fedify 1.0.24 → 1.0.25

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 (149) hide show
  1. package/CHANGES.md +16 -0
  2. package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/equals.js +1 -1
  3. package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/_constants.js +0 -10
  4. package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/satisfies.js +1 -0
  5. package/esm/federation/handler.js +19 -6
  6. package/esm/nodeinfo/types.js +1 -1
  7. package/esm/runtime/key.js +1 -1
  8. package/esm/sig/http.js +1 -1
  9. package/esm/sig/key.js +4 -1
  10. package/esm/vocab/vocab.js +126 -0
  11. package/package.json +1 -1
  12. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/_types.d.ts.map +1 -1
  13. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/concat.d.ts +1 -1
  14. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/concat.d.ts.map +1 -1
  15. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/copy.d.ts.map +1 -1
  16. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/ends_with.d.ts.map +1 -1
  17. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/equals.d.ts.map +1 -1
  18. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/includes_needle.d.ts.map +1 -1
  19. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/index_of_needle.d.ts.map +1 -1
  20. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/last_index_of_needle.d.ts.map +1 -1
  21. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/mod.d.ts.map +1 -1
  22. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/repeat.d.ts.map +1 -1
  23. package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/starts_with.d.ts.map +1 -1
  24. package/types/deps/jsr.io/@std/http/{1.0.13 → 1.0.16}/_negotiation/common.d.ts.map +1 -1
  25. package/types/deps/jsr.io/@std/http/{1.0.13 → 1.0.16}/_negotiation/encoding.d.ts.map +1 -1
  26. package/types/deps/jsr.io/@std/http/{1.0.13 → 1.0.16}/_negotiation/language.d.ts.map +1 -1
  27. package/types/deps/jsr.io/@std/http/{1.0.13 → 1.0.16}/_negotiation/media_type.d.ts.map +1 -1
  28. package/types/deps/jsr.io/@std/http/{1.0.13 → 1.0.16}/negotiation.d.ts.map +1 -1
  29. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/_constants.d.ts +0 -4
  30. package/types/deps/jsr.io/@std/semver/1.0.5/_constants.d.ts.map +1 -0
  31. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/_shared.d.ts.map +1 -1
  32. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/_test_comparator_set.d.ts.map +1 -1
  33. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/can_parse.d.ts.map +1 -1
  34. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/compare.d.ts.map +1 -1
  35. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/difference.d.ts.map +1 -1
  36. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/equals.d.ts.map +1 -1
  37. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/format.d.ts.map +1 -1
  38. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/format_range.d.ts.map +1 -1
  39. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/greater_or_equal.d.ts.map +1 -1
  40. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/greater_than.d.ts.map +1 -1
  41. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/greater_than_range.d.ts.map +1 -1
  42. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/increment.d.ts.map +1 -1
  43. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/is_range.d.ts.map +1 -1
  44. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/is_semver.d.ts.map +1 -1
  45. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/less_or_equal.d.ts.map +1 -1
  46. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/less_than.d.ts.map +1 -1
  47. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/less_than_range.d.ts.map +1 -1
  48. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/max_satisfying.d.ts.map +1 -1
  49. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/min_satisfying.d.ts.map +1 -1
  50. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/mod.d.ts.map +1 -1
  51. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/not_equals.d.ts.map +1 -1
  52. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/parse.d.ts.map +1 -1
  53. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/parse_range.d.ts.map +1 -1
  54. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/range_intersects.d.ts.map +1 -1
  55. package/types/deps/jsr.io/@std/semver/1.0.5/satisfies.d.ts.map +1 -0
  56. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/try_parse.d.ts.map +1 -1
  57. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/try_parse_range.d.ts.map +1 -1
  58. package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/types.d.ts.map +1 -1
  59. package/types/federation/handler.d.ts.map +1 -1
  60. package/types/nodeinfo/types.d.ts +1 -1
  61. package/types/sig/key.d.ts.map +1 -1
  62. package/types/vocab/vocab.d.ts.map +1 -1
  63. package/types/deps/jsr.io/@std/semver/1.0.4/_constants.d.ts.map +0 -1
  64. package/types/deps/jsr.io/@std/semver/1.0.4/satisfies.d.ts.map +0 -1
  65. /package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/_types.js +0 -0
  66. /package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/concat.js +0 -0
  67. /package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/copy.js +0 -0
  68. /package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/ends_with.js +0 -0
  69. /package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/includes_needle.js +0 -0
  70. /package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/index_of_needle.js +0 -0
  71. /package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/last_index_of_needle.js +0 -0
  72. /package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/mod.js +0 -0
  73. /package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/repeat.js +0 -0
  74. /package/esm/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/starts_with.js +0 -0
  75. /package/esm/deps/jsr.io/@std/http/{1.0.13 → 1.0.16}/_negotiation/common.js +0 -0
  76. /package/esm/deps/jsr.io/@std/http/{1.0.13 → 1.0.16}/_negotiation/encoding.js +0 -0
  77. /package/esm/deps/jsr.io/@std/http/{1.0.13 → 1.0.16}/_negotiation/language.js +0 -0
  78. /package/esm/deps/jsr.io/@std/http/{1.0.13 → 1.0.16}/_negotiation/media_type.js +0 -0
  79. /package/esm/deps/jsr.io/@std/http/{1.0.13 → 1.0.16}/negotiation.js +0 -0
  80. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/_shared.js +0 -0
  81. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/_test_comparator_set.js +0 -0
  82. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/can_parse.js +0 -0
  83. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/compare.js +0 -0
  84. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/difference.js +0 -0
  85. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/equals.js +0 -0
  86. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/format.js +0 -0
  87. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/format_range.js +0 -0
  88. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/greater_or_equal.js +0 -0
  89. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/greater_than.js +0 -0
  90. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/greater_than_range.js +0 -0
  91. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/increment.js +0 -0
  92. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/is_range.js +0 -0
  93. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/is_semver.js +0 -0
  94. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/less_or_equal.js +0 -0
  95. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/less_than.js +0 -0
  96. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/less_than_range.js +0 -0
  97. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/max_satisfying.js +0 -0
  98. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/min_satisfying.js +0 -0
  99. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/mod.js +0 -0
  100. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/not_equals.js +0 -0
  101. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/parse.js +0 -0
  102. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/parse_range.js +0 -0
  103. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/range_intersects.js +0 -0
  104. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/try_parse.js +0 -0
  105. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/try_parse_range.js +0 -0
  106. /package/esm/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/types.js +0 -0
  107. /package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/_types.d.ts +0 -0
  108. /package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/copy.d.ts +0 -0
  109. /package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/ends_with.d.ts +0 -0
  110. /package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/equals.d.ts +0 -0
  111. /package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/includes_needle.d.ts +0 -0
  112. /package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/index_of_needle.d.ts +0 -0
  113. /package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/last_index_of_needle.d.ts +0 -0
  114. /package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/mod.d.ts +0 -0
  115. /package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/repeat.d.ts +0 -0
  116. /package/types/deps/jsr.io/@std/bytes/{1.0.5 → 1.0.6}/starts_with.d.ts +0 -0
  117. /package/types/deps/jsr.io/@std/http/{1.0.13 → 1.0.16}/_negotiation/common.d.ts +0 -0
  118. /package/types/deps/jsr.io/@std/http/{1.0.13 → 1.0.16}/_negotiation/encoding.d.ts +0 -0
  119. /package/types/deps/jsr.io/@std/http/{1.0.13 → 1.0.16}/_negotiation/language.d.ts +0 -0
  120. /package/types/deps/jsr.io/@std/http/{1.0.13 → 1.0.16}/_negotiation/media_type.d.ts +0 -0
  121. /package/types/deps/jsr.io/@std/http/{1.0.13 → 1.0.16}/negotiation.d.ts +0 -0
  122. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/_shared.d.ts +0 -0
  123. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/_test_comparator_set.d.ts +0 -0
  124. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/can_parse.d.ts +0 -0
  125. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/compare.d.ts +0 -0
  126. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/difference.d.ts +0 -0
  127. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/equals.d.ts +0 -0
  128. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/format.d.ts +0 -0
  129. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/format_range.d.ts +0 -0
  130. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/greater_or_equal.d.ts +0 -0
  131. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/greater_than.d.ts +0 -0
  132. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/greater_than_range.d.ts +0 -0
  133. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/increment.d.ts +0 -0
  134. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/is_range.d.ts +0 -0
  135. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/is_semver.d.ts +0 -0
  136. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/less_or_equal.d.ts +0 -0
  137. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/less_than.d.ts +0 -0
  138. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/less_than_range.d.ts +0 -0
  139. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/max_satisfying.d.ts +0 -0
  140. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/min_satisfying.d.ts +0 -0
  141. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/mod.d.ts +0 -0
  142. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/not_equals.d.ts +0 -0
  143. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/parse.d.ts +0 -0
  144. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/parse_range.d.ts +0 -0
  145. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/range_intersects.d.ts +0 -0
  146. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/satisfies.d.ts +0 -0
  147. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/try_parse.d.ts +0 -0
  148. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/try_parse_range.d.ts +0 -0
  149. /package/types/deps/jsr.io/@std/semver/{1.0.4 → 1.0.5}/types.d.ts +0 -0
package/CHANGES.md CHANGED
@@ -3,6 +3,22 @@
3
3
  Fedify changelog
4
4
  ================
5
5
 
6
+ Version 1.0.25
7
+ --------------
8
+
9
+ Released on May 16, 2025.
10
+
11
+ - Fixed a bug where inbox handler had thrown a `jsonld.SyntaxError` which
12
+ caused a `500 Internal Server Error` when the received activity had
13
+ an invalid JSON-LD syntax. Now it logs the error and responds with
14
+ a `400 Bad Request` error instead. [[#232]]
15
+
16
+ - The `exportJwk()` function now populates the `alg` property of a returned
17
+ `JsonWebKey` object with `"Ed25519"` if the input key is an Ed25519 key.
18
+
19
+ [#232]: https://github.com/fedify-dev/fedify/issues/232
20
+
21
+
6
22
  Version 1.0.24
7
23
  --------------
8
24
 
@@ -48,7 +48,7 @@ function equals32Bit(a, b) {
48
48
  * Byte length threshold for when to use 32-bit comparisons, based on
49
49
  * benchmarks.
50
50
  *
51
- * @see {@link https://github.com/denoland/deno_std/pull/4635}
51
+ * @see {@link https://github.com/denoland/std/pull/4635}
52
52
  */
53
53
  const THRESHOLD_32_BIT = 160;
54
54
  /**
@@ -1,14 +1,4 @@
1
1
  // Copyright 2018-2025 the Deno authors. MIT license.
2
- /**
3
- * The minimum valid SemVer object. Equivalent to `0.0.0`.
4
- */
5
- export const MIN = {
6
- major: 0,
7
- minor: 0,
8
- patch: 0,
9
- prerelease: [],
10
- build: [],
11
- };
12
2
  /**
13
3
  * ANY is a sentinel value used by some range calculations. It is not a valid
14
4
  * SemVer object and should not be used directly.
@@ -1,4 +1,5 @@
1
1
  // Copyright 2018-2025 the Deno authors. MIT license.
2
+ // This module is browser compatible.
2
3
  import { testComparatorSet } from "./_test_comparator_set.js";
3
4
  /**
4
5
  * Test to see if the SemVer satisfies the range.
@@ -1,6 +1,6 @@
1
1
  import * as dntShim from "../_dnt.shims.js";
2
2
  import { getLogger } from "@logtape/logtape";
3
- import { accepts } from "../deps/jsr.io/@std/http/1.0.13/negotiation.js";
3
+ import { accepts } from "../deps/jsr.io/@std/http/1.0.16/negotiation.js";
4
4
  import { verifyRequest } from "../sig/http.js";
5
5
  import { detachSignature, verifyJsonLd } from "../sig/ld.js";
6
6
  import { doesActorOwnKey } from "../sig/owner.js";
@@ -247,11 +247,24 @@ export async function handleInbox(request, { identifier, context, inboxContextFa
247
247
  await kv.set([...kvPrefixes.publicKey, keyId.href], serialized);
248
248
  },
249
249
  };
250
- const ldSigVerified = await verifyJsonLd(json, {
251
- contextLoader: context.contextLoader,
252
- documentLoader: context.documentLoader,
253
- keyCache,
254
- });
250
+ let ldSigVerified;
251
+ try {
252
+ ldSigVerified = await verifyJsonLd(json, {
253
+ contextLoader: context.contextLoader,
254
+ documentLoader: context.documentLoader,
255
+ keyCache,
256
+ });
257
+ }
258
+ catch (error) {
259
+ if (error instanceof Error && error.name === "jsonld.SyntaxError") {
260
+ logger.error("Failed to parse JSON-LD:\n{error}", { identifier, error });
261
+ return new Response("Invalid JSON-LD.", {
262
+ status: 400,
263
+ headers: { "Content-Type": "text/plain; charset=utf-8" },
264
+ });
265
+ }
266
+ ldSigVerified = false;
267
+ }
255
268
  const jsonWithoutSig = detachSignature(json);
256
269
  let activity = null;
257
270
  if (ldSigVerified) {
@@ -1,4 +1,4 @@
1
- import { format } from "../deps/jsr.io/@std/semver/1.0.4/mod.js";
1
+ import { format } from "../deps/jsr.io/@std/semver/1.0.5/mod.js";
2
2
  /**
3
3
  * Converts a {@link NodeInfo} object to a JSON value.
4
4
  * @param nodeInfo The {@link NodeInfo} object to convert.
@@ -1,6 +1,6 @@
1
1
  import * as dntShim from "../_dnt.shims.js";
2
2
  import { createPublicKey } from "node:crypto";
3
- import { concat } from "../deps/jsr.io/@std/bytes/1.0.5/concat.js";
3
+ import { concat } from "../deps/jsr.io/@std/bytes/1.0.6/concat.js";
4
4
  import { decodeBase64, encodeBase64 } from "../deps/jsr.io/@std/encoding/1.0.7/base64.js";
5
5
  import { decodeBase64Url } from "../deps/jsr.io/@std/encoding/1.0.7/base64url.js";
6
6
  import { decodeHex } from "../deps/jsr.io/@std/encoding/1.0.7/hex.js";
package/esm/sig/http.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as dntShim from "../_dnt.shims.js";
2
2
  import { getLogger } from "@logtape/logtape";
3
- import { equals } from "../deps/jsr.io/@std/bytes/1.0.5/mod.js";
3
+ import { equals } from "../deps/jsr.io/@std/bytes/1.0.6/mod.js";
4
4
  import { decodeBase64, encodeBase64 } from "../deps/jsr.io/@std/encoding/1.0.7/base64.js";
5
5
  import { CryptographicKey } from "../vocab/vocab.js";
6
6
  import { fetchKey, validateCryptoKey } from "./key.js";
package/esm/sig/key.js CHANGED
@@ -68,7 +68,10 @@ export function generateCryptoKeyPair(algorithm) {
68
68
  */
69
69
  export async function exportJwk(key) {
70
70
  validateCryptoKey(key);
71
- return await dntShim.crypto.subtle.exportKey("jwk", key);
71
+ const jwk = await dntShim.crypto.subtle.exportKey("jwk", key);
72
+ if (jwk.crv === "Ed25519")
73
+ jwk.alg = "Ed25519";
74
+ return jwk;
72
75
  }
73
76
  /**
74
77
  * Imports a key from JWK format.