@prosopo/provider 5.12.1 → 5.12.3

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 (56) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +8 -5
  2. package/.turbo/turbo-build$colon$tsc.log +27 -27
  3. package/.turbo/turbo-build.log +9 -6
  4. package/CHANGELOG.md +56 -0
  5. package/dist/api/captcha/assetSeal.d.ts +15 -0
  6. package/dist/api/captcha/assetSeal.d.ts.map +1 -0
  7. package/dist/api/captcha/assetSeal.js +22 -0
  8. package/dist/api/captcha/assetSeal.js.map +1 -0
  9. package/dist/api/captcha/assetSealFormat.d.ts +23 -0
  10. package/dist/api/captcha/assetSealFormat.d.ts.map +1 -0
  11. package/dist/api/captcha/assetSealFormat.js +87 -0
  12. package/dist/api/captcha/assetSealFormat.js.map +1 -0
  13. package/dist/api/captcha/getImageCaptchaChallenge.d.ts.map +1 -1
  14. package/dist/api/captcha/getImageCaptchaChallenge.js +2 -1
  15. package/dist/api/captcha/getImageCaptchaChallenge.js.map +1 -1
  16. package/dist/api/captcha/sealedAssetsResolver.d.ts +22 -0
  17. package/dist/api/captcha/sealedAssetsResolver.d.ts.map +1 -0
  18. package/dist/api/captcha/sealedAssetsResolver.js +69 -0
  19. package/dist/api/captcha/sealedAssetsResolver.js.map +1 -0
  20. package/dist/api/captcha/signedAssetsResolver.d.ts +2 -1
  21. package/dist/api/captcha/signedAssetsResolver.d.ts.map +1 -1
  22. package/dist/api/captcha/signedAssetsResolver.js +6 -5
  23. package/dist/api/captcha/signedAssetsResolver.js.map +1 -1
  24. package/dist/cjs/api/captcha/assetSeal.cjs +22 -0
  25. package/dist/cjs/api/captcha/assetSealFormat.cjs +95 -0
  26. package/dist/cjs/api/captcha/getImageCaptchaChallenge.cjs +2 -1
  27. package/dist/cjs/api/captcha/sealedAssetsResolver.cjs +70 -0
  28. package/dist/cjs/api/captcha/signedAssetsResolver.cjs +6 -4
  29. package/dist/cjs/tasks/powCaptcha/powTasksUtils.cjs +2 -2
  30. package/dist/edge/assetSealHandler.d.ts +9 -0
  31. package/dist/edge/assetSealHandler.d.ts.map +1 -0
  32. package/dist/edge/assetSealHandler.js +74 -0
  33. package/dist/edge/assetSealHandler.js.map +1 -0
  34. package/dist/tasks/powCaptcha/powTasksUtils.js +1 -1
  35. package/dist/tasks/powCaptcha/powTasksUtils.js.map +1 -1
  36. package/dist/tests/integration/powCaptcha.integration.test.js +1 -1
  37. package/dist/tests/integration/powCaptcha.integration.test.js.map +1 -1
  38. package/dist/tests/integration/webBotAuthAuthenticated.integration.test.js +2 -2
  39. package/dist/tests/integration/webBotAuthAuthenticated.integration.test.js.map +1 -1
  40. package/dist/tests/unit/api/captcha/assetSeal.unit.test.d.ts +2 -0
  41. package/dist/tests/unit/api/captcha/assetSeal.unit.test.d.ts.map +1 -0
  42. package/dist/tests/unit/api/captcha/assetSeal.unit.test.js +132 -0
  43. package/dist/tests/unit/api/captcha/assetSeal.unit.test.js.map +1 -0
  44. package/dist/tests/unit/api/captcha/sealedAssetsResolver.unit.test.d.ts +2 -0
  45. package/dist/tests/unit/api/captcha/sealedAssetsResolver.unit.test.d.ts.map +1 -0
  46. package/dist/tests/unit/api/captcha/sealedAssetsResolver.unit.test.js +151 -0
  47. package/dist/tests/unit/api/captcha/sealedAssetsResolver.unit.test.js.map +1 -0
  48. package/dist/tests/unit/edge/assetSealHandler.unit.test.d.ts +2 -0
  49. package/dist/tests/unit/edge/assetSealHandler.unit.test.d.ts.map +1 -0
  50. package/dist/tests/unit/edge/assetSealHandler.unit.test.js +145 -0
  51. package/dist/tests/unit/edge/assetSealHandler.unit.test.js.map +1 -0
  52. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js +1 -1
  53. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js.map +1 -1
  54. package/edge/entry.ts +62 -0
  55. package/package.json +25 -23
  56. package/scripts/buildEdgeScript.mjs +31 -0
@@ -0,0 +1,69 @@
1
+ import { parseSealKeys } from "./assetSealFormat.js";
2
+ import { sealAssetPath } from "./assetSeal.js";
3
+ var SealedAssetsResolver = class {
4
+ constructor(options) {
5
+ this.key = options.key;
6
+ this.keyId = options.keyId;
7
+ this.ttlSeconds = options.ttlSeconds ?? 300;
8
+ this.urlPrefix = options.urlPrefix ?? "s";
9
+ this.now = options.now ?? (() => Date.now());
10
+ }
11
+ resolveAsset(assetURI) {
12
+ const url = this.toUrl(assetURI);
13
+ if (!url) return {
14
+ URI: assetURI,
15
+ getURL: () => assetURI
16
+ };
17
+ if (url.search !== "") throw new Error(`Cannot seal an asset URL that has a query string: ${assetURI}`);
18
+ const blob = sealAssetPath({
19
+ path: url.pathname,
20
+ key: this.key,
21
+ keyId: this.keyId,
22
+ expiresAtSeconds: Math.floor(this.now() / 1e3) + this.ttlSeconds
23
+ });
24
+ const sealed = `${url.origin}/${this.urlPrefix}/${blob}${extensionOf(url.pathname)}`;
25
+ return {
26
+ URI: assetURI,
27
+ getURL: () => sealed
28
+ };
29
+ }
30
+ toUrl(assetURI) {
31
+ try {
32
+ const url = new URL(assetURI);
33
+ return url.protocol === "http:" || url.protocol === "https:" ? url : void 0;
34
+ } catch {
35
+ return;
36
+ }
37
+ }
38
+ };
39
+ var extensionOf = (pathname) => {
40
+ const lastDot = pathname.lastIndexOf(".");
41
+ if (lastDot <= pathname.lastIndexOf("/") + 1) return "";
42
+ const extension = pathname.slice(lastDot);
43
+ return /^\.[a-zA-Z0-9]{1,8}$/.test(extension) ? extension : "";
44
+ };
45
+ function getSealedAssetsResolver() {
46
+ const spec = process.env.PROSOPO_ASSET_SEAL_KEYS;
47
+ if (!spec) return;
48
+ const keys = parseSealKeys(spec);
49
+ const keyId = activeKeyId(keys);
50
+ const key = keys.get(keyId);
51
+ if (!key) throw new Error(`PROSOPO_ASSET_SEAL_ACTIVE_KEY_ID ${keyId} is not in PROSOPO_ASSET_SEAL_KEYS`);
52
+ return new SealedAssetsResolver({
53
+ key,
54
+ keyId,
55
+ ttlSeconds: Number.parseInt(process.env.PROSOPO_ASSET_SEAL_TTL_SECONDS ?? "", 10) || 300,
56
+ urlPrefix: process.env.PROSOPO_ASSET_SEAL_URL_PREFIX || "s"
57
+ });
58
+ }
59
+ var activeKeyId = (keys) => {
60
+ const configured = process.env.PROSOPO_ASSET_SEAL_ACTIVE_KEY_ID;
61
+ if (configured) {
62
+ const parsed = Number.parseInt(configured, 10);
63
+ if (!Number.isInteger(parsed)) throw new Error("PROSOPO_ASSET_SEAL_ACTIVE_KEY_ID must be an integer");
64
+ return parsed;
65
+ }
66
+ return Math.max(...keys.keys());
67
+ };
68
+ //#endregion
69
+ export { SealedAssetsResolver, getSealedAssetsResolver };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sealedAssetsResolver.js","sourceRoot":"","sources":["../../../src/api/captcha/sealedAssetsResolver.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAG,CAAC;AAElD,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,CAAC;AAUjD,MAAM,OAAO,oBAAoB;IAOhC,YAAY,OAAoC;QAC/C,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,8BAA8B,CAAC;QACvE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,6BAA6B,CAAC;QACpE,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,YAAY,CAAC,QAAgB;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEjC,IAAI,CAAC,GAAG,EAAE,CAAC;YACV,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAW,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC1D,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACd,qDAAqD,QAAQ,EAAE,CAC/D,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAG,aAAa,CAAC;YAC1B,IAAI,EAAE,GAAG,CAAC,QAAQ;YAClB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU;SACjE,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAErF,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAW,EAAE,CAAC,MAAM,EAAE,CAAC;IACxD,CAAC;IAEO,KAAK,CAAC,QAAgB;QAC7B,IAAI,CAAC;YACJ,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC9B,OAAO,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ;gBAC3D,CAAC,CAAC,GAAG;gBACL,CAAC,CAAC,SAAS,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,SAAS,CAAC;QAClB,CAAC;IACF,CAAC;CACD;AAED,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAU,EAAE;IAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC5C,IAAI,OAAO,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,CAAC;IACX,CAAC;IACD,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC1C,OAAO,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;AAChE,CAAC,CAAC;AAEF,MAAM,UAAU,uBAAuB;IACtC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;IACjD,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,CAAC,GAAG,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACd,oCAAoC,KAAK,oCAAoC,CAC7E,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GACf,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,EAAE,EAAE,EAAE,CAAC;QACrE,8BAA8B,CAAC;IAEhC,OAAO,IAAI,oBAAoB,CAAC;QAC/B,GAAG;QACH,KAAK;QACL,UAAU;QACV,SAAS,EACR,OAAO,CAAC,GAAG,CAAC,6BAA6B;YACzC,6BAA6B;KAC9B,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,IAAqC,EAAU,EAAE;IACrE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC;IAChE,IAAI,UAAU,EAAE,CAAC;QAChB,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACjC,CAAC,CAAC"}
@@ -1,5 +1,6 @@
1
+ import { DEFAULT_ASSET_TOKEN_TTL_SECONDS } from "@prosopo/datasets";
1
2
  import type { Asset, AssetsResolver } from "@prosopo/types";
2
- export declare const DEFAULT_ASSET_TOKEN_TTL_SECONDS = 300;
3
+ export { DEFAULT_ASSET_TOKEN_TTL_SECONDS };
3
4
  export interface SignedAssetsResolverOptions {
4
5
  securityKey: string;
5
6
  ttlSeconds?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"signedAssetsResolver.d.ts","sourceRoot":"","sources":["../../../src/api/captcha/signedAssetsResolver.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAEnD,MAAM,WAAW,2BAA2B;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACnB;AAED,qBAAa,oBAAqB,YAAW,cAAc;IAC1D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;gBAEvB,OAAO,EAAE,2BAA2B;IAOhD,OAAO,CAAC,IAAI;IAUZ,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK;IA0BrC,OAAO,CAAC,KAAK;CAUb;AAQD,wBAAgB,uBAAuB,CACtC,QAAQ,CAAC,EAAE,MAAM,GACf,cAAc,GAAG,SAAS,CAqB5B"}
1
+ {"version":3,"file":"signedAssetsResolver.d.ts","sourceRoot":"","sources":["../../../src/api/captcha/signedAssetsResolver.ts"],"names":[],"mappings":"AAmCA,OAAO,EACN,+BAA+B,EAG/B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EAAE,+BAA+B,EAAE,CAAC;AAE3C,MAAM,WAAW,2BAA2B;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACnB;AAED,qBAAa,oBAAqB,YAAW,cAAc;IAC1D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;gBAEvB,OAAO,EAAE,2BAA2B;IAOhD,OAAO,CAAC,IAAI;IAYZ,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK;IA0BrC,OAAO,CAAC,KAAK;CAUb;AAQD,wBAAgB,uBAAuB,CACtC,QAAQ,CAAC,EAAE,MAAM,GACf,cAAc,GAAG,SAAS,CAqB5B"}
@@ -1,14 +1,15 @@
1
1
  import { createHash } from "node:crypto";
2
+ import { DEFAULT_ASSET_TOKEN_TTL_SECONDS, assetTokenBase, encodeAssetToken } from "@prosopo/datasets";
3
+ //#region src/api/captcha/signedAssetsResolver.ts
2
4
  var SignedAssetsResolver = class {
3
5
  constructor(options) {
4
6
  this.securityKey = options.securityKey;
5
- this.ttlSeconds = options.ttlSeconds ?? 300;
7
+ this.ttlSeconds = options.ttlSeconds ?? DEFAULT_ASSET_TOKEN_TTL_SECONDS;
6
8
  this.clientIp = options.clientIp;
7
9
  this.now = options.now ?? (() => Date.now());
8
10
  }
9
11
  sign(path, expires) {
10
- const base = `${this.securityKey}${path}${expires}${this.clientIp ?? ""}`;
11
- return createHash("sha256").update(base).digest("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "");
12
+ return encodeAssetToken(new Uint8Array(createHash("sha256").update(assetTokenBase(this.securityKey, path, expires, this.clientIp)).digest()));
12
13
  }
13
14
  resolveAsset(assetURI) {
14
15
  const url = this.toUrl(assetURI);
@@ -45,9 +46,9 @@ function getSignedAssetsResolver(clientIp) {
45
46
  if (!securityKey) return;
46
47
  return new SignedAssetsResolver({
47
48
  securityKey,
48
- ttlSeconds: Number.parseInt(process.env.PROSOPO_ASSET_TOKEN_TTL_SECONDS ?? "", 10) || 300,
49
+ ttlSeconds: Number.parseInt(process.env.PROSOPO_ASSET_TOKEN_TTL_SECONDS ?? "", 10) || DEFAULT_ASSET_TOKEN_TTL_SECONDS,
49
50
  ...process.env.PROSOPO_ASSET_TOKEN_BIND_IP === "true" && clientIp ? { clientIp } : {}
50
51
  });
51
52
  }
52
53
  //#endregion
53
- export { SignedAssetsResolver, getSignedAssetsResolver };
54
+ export { DEFAULT_ASSET_TOKEN_TTL_SECONDS, SignedAssetsResolver, getSignedAssetsResolver };
@@ -1 +1 @@
1
- {"version":3,"file":"signedAssetsResolver.js","sourceRoot":"","sources":["../../../src/api/captcha/signedAssetsResolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signedAssetsResolver.js","sourceRoot":"","sources":["../../../src/api/captcha/signedAssetsResolver.ts"],"names":[],"mappings":"AAkCA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACN,+BAA+B,EAC/B,cAAc,EACd,gBAAgB,GAChB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,+BAA+B,EAAE,CAAC;AAY3C,MAAM,OAAO,oBAAoB;IAMhC,YAAY,OAAoC;QAC/C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,+BAA+B,CAAC;QACxE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9C,CAAC;IAEO,IAAI,CAAC,IAAY,EAAE,OAAe;QACzC,OAAO,gBAAgB,CACtB,IAAI,UAAU,CACb,UAAU,CAAC,QAAQ,CAAC;aAClB,MAAM,CACN,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAC9D;aACA,MAAM,EAAE,CACV,CACD,CAAC;IACH,CAAC;IAED,YAAY,CAAC,QAAgB;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAIjC,IAAI,CAAC,GAAG,EAAE,CAAC;YACV,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAW,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC1D,CAAC;QAMD,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACd,6DAA6D,QAAQ,EAAE,CACvE,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAChE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ,UAAU,KAAK,YAAY,OAAO,EAAE,CAAC;QAEhF,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAW,EAAE,CAAC,MAAM,EAAE,CAAC;IACxD,CAAC;IAEO,KAAK,CAAC,QAAgB;QAC7B,IAAI,CAAC;YACJ,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC9B,OAAO,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ;gBAC3D,CAAC,CAAC,GAAG;gBACL,CAAC,CAAC,SAAS,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,SAAS,CAAC;QAClB,CAAC;IACF,CAAC;CACD;AAQD,MAAM,UAAU,uBAAuB,CACtC,QAAiB;IAEjB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;IACxD,IAAI,CAAC,WAAW,EAAE,CAAC;QAClB,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,MAAM,UAAU,GACf,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,EAAE,EAAE,EAAE,CAAC;QACtE,+BAA+B,CAAC;IAMjC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,KAAK,MAAM,CAAC;IAElE,OAAO,IAAI,oBAAoB,CAAC;QAC/B,WAAW;QACX,UAAU;QACV,GAAG,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3C,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,22 @@
1
+ const require_assetSealFormat = require("./assetSealFormat.cjs");
2
+ let node_crypto = require("node:crypto");
3
+ //#region src/api/captcha/assetSeal.ts
4
+ var CIPHER = "aes-256-gcm";
5
+ var GCM_OPTIONS = { authTagLength: 16 };
6
+ var sealAssetPath = (params) => {
7
+ if (!require_assetSealFormat.isSafeAssetPath(params.path)) throw new Error(`Refusing to seal an unusable asset path: ${params.path}`);
8
+ const iv = (0, node_crypto.randomBytes)(12);
9
+ const cipher = (0, node_crypto.createCipheriv)(CIPHER, params.key, iv, GCM_OPTIONS);
10
+ cipher.setAAD(require_assetSealFormat.additionalData(params.keyId));
11
+ const ciphertext = Buffer.concat([cipher.update(require_assetSealFormat.encodePayload({
12
+ expiresAtSeconds: params.expiresAtSeconds,
13
+ path: params.path
14
+ })), cipher.final()]);
15
+ return require_assetSealFormat.encodeEnvelope({
16
+ keyId: params.keyId,
17
+ iv: new Uint8Array(iv),
18
+ sealed: new Uint8Array(Buffer.concat([ciphertext, cipher.getAuthTag()]))
19
+ });
20
+ };
21
+ //#endregion
22
+ exports.sealAssetPath = sealAssetPath;
@@ -0,0 +1,95 @@
1
+ var AAD_BYTES = 2;
2
+ var EXPIRY_BYTES = 4;
3
+ var MAX_KEY_ID = 255;
4
+ var BASE64URL_PATTERN = /^[A-Za-z0-9_-]+$/;
5
+ var textEncoder = new TextEncoder();
6
+ var textDecoder = new TextDecoder("utf-8", { fatal: true });
7
+ var toBase64Url = (bytes) => {
8
+ let binary = "";
9
+ for (const byte of bytes) binary += String.fromCharCode(byte);
10
+ return btoa(binary).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
11
+ };
12
+ var fromBase64Url = (value) => {
13
+ if (!BASE64URL_PATTERN.test(value)) return;
14
+ const normalised = value.replace(/-/g, "+").replace(/_/g, "/");
15
+ const padded = normalised.padEnd(normalised.length + (4 - normalised.length % 4) % 4, "=");
16
+ try {
17
+ const binary = atob(padded);
18
+ const bytes = new Uint8Array(binary.length);
19
+ for (let index = 0; index < binary.length; index += 1) bytes[index] = binary.charCodeAt(index);
20
+ return bytes;
21
+ } catch {
22
+ return;
23
+ }
24
+ };
25
+ var additionalData = (keyId) => new Uint8Array([1, keyId]);
26
+ var encodeEnvelope = (envelope) => {
27
+ const bytes = new Uint8Array(AAD_BYTES + envelope.iv.length + envelope.sealed.length);
28
+ bytes.set(additionalData(envelope.keyId), 0);
29
+ bytes.set(envelope.iv, AAD_BYTES);
30
+ bytes.set(envelope.sealed, AAD_BYTES + envelope.iv.length);
31
+ return toBase64Url(bytes);
32
+ };
33
+ var decodeEnvelope = (blob) => {
34
+ const bytes = fromBase64Url(blob);
35
+ if (!bytes || bytes.length <= 14) return;
36
+ if (bytes[0] !== 1) return;
37
+ const keyId = bytes[1];
38
+ if (void 0 === keyId) return;
39
+ return {
40
+ keyId,
41
+ iv: bytes.slice(AAD_BYTES, 14),
42
+ sealed: bytes.slice(14)
43
+ };
44
+ };
45
+ var encodePayload = (payload) => {
46
+ const path = textEncoder.encode(payload.path);
47
+ const bytes = new Uint8Array(EXPIRY_BYTES + path.length);
48
+ new DataView(bytes.buffer).setUint32(0, payload.expiresAtSeconds, false);
49
+ bytes.set(path, EXPIRY_BYTES);
50
+ return bytes;
51
+ };
52
+ var decodePayload = (bytes) => {
53
+ if (bytes.length <= EXPIRY_BYTES) return;
54
+ const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
55
+ try {
56
+ return {
57
+ expiresAtSeconds: view.getUint32(0, false),
58
+ path: textDecoder.decode(bytes.subarray(EXPIRY_BYTES))
59
+ };
60
+ } catch {
61
+ return;
62
+ }
63
+ };
64
+ var isSafeAssetPath = (path, requiredPrefix) => {
65
+ if (!path.startsWith("/") || path.length > 512) return false;
66
+ if (path.includes("..") || path.includes("//")) return false;
67
+ if (/[\u0000-\u001f\u007f]/.test(path)) return false;
68
+ return void 0 === requiredPrefix || path.startsWith(requiredPrefix);
69
+ };
70
+ var parseSealKeys = (spec) => {
71
+ const keys = /* @__PURE__ */ new Map();
72
+ for (const entry of spec.split(",")) {
73
+ const trimmed = entry.trim();
74
+ if ("" === trimmed) continue;
75
+ const separator = trimmed.indexOf(":");
76
+ if (separator <= 0) throw new Error("Malformed seal key entry: expected \"keyId:base64key\"");
77
+ const keyId = Number(trimmed.slice(0, separator));
78
+ if (!Number.isInteger(keyId) || keyId < 0 || keyId > MAX_KEY_ID) throw new Error(`Seal key id must be an integer in [0, ${MAX_KEY_ID}]`);
79
+ const key = fromBase64Url(trimmed.slice(separator + 1).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, ""));
80
+ if (!key || key.length !== 32) throw new Error(`Seal key ${keyId} must be 32 base64-encoded bytes`);
81
+ keys.set(keyId, key);
82
+ }
83
+ if (0 === keys.size) throw new Error("No seal keys configured");
84
+ return keys;
85
+ };
86
+ //#endregion
87
+ exports.additionalData = additionalData;
88
+ exports.decodeEnvelope = decodeEnvelope;
89
+ exports.decodePayload = decodePayload;
90
+ exports.encodeEnvelope = encodeEnvelope;
91
+ exports.encodePayload = encodePayload;
92
+ exports.fromBase64Url = fromBase64Url;
93
+ exports.isSafeAssetPath = isSafeAssetPath;
94
+ exports.parseSealKeys = parseSealKeys;
95
+ exports.toBase64Url = toBase64Url;
@@ -7,6 +7,7 @@ const require_testSiteKey = require("../testSiteKey.cjs");
7
7
  const require_normalizeRequestIp = require("../../utils/normalizeRequestIp.cjs");
8
8
  const require_maintenanceModeResponses = require("./maintenanceModeResponses.cjs");
9
9
  const require_trafficFilterRequestTime = require("./trafficFilterRequestTime.cjs");
10
+ const require_sealedAssetsResolver = require("./sealedAssetsResolver.cjs");
10
11
  const require_signedAssetsResolver = require("./signedAssetsResolver.cjs");
11
12
  let _prosopo_common = require("@prosopo/common");
12
13
  let _prosopo_types = require("@prosopo/types");
@@ -112,7 +113,7 @@ var getImageCaptchaChallenge_default = (env, userAccessRulesStorage) => async (r
112
113
  }));
113
114
  });
114
115
  const taskData = await tasks.imgCaptchaManager.getRandomCaptchasAndRequestHash(datasetId, user, ipAddress, captchaConfig, clientRecord.settings.imageThreshold ?? .8, validSessionId, req.ipInfo);
115
- const assetsResolver = require_signedAssetsResolver.getSignedAssetsResolver(ipAddress.toString()) ?? env.assetsResolver;
116
+ const assetsResolver = require_sealedAssetsResolver.getSealedAssetsResolver() ?? require_signedAssetsResolver.getSignedAssetsResolver(ipAddress.toString()) ?? env.assetsResolver;
116
117
  const captchaResponse = {
117
118
  [_prosopo_types.ApiParams.status]: "ok",
118
119
  [_prosopo_types.ApiParams.captchas]: taskData.captchas.map((captcha) => ({
@@ -0,0 +1,70 @@
1
+ const require_assetSealFormat = require("./assetSealFormat.cjs");
2
+ const require_assetSeal = require("./assetSeal.cjs");
3
+ var SealedAssetsResolver = class {
4
+ constructor(options) {
5
+ this.key = options.key;
6
+ this.keyId = options.keyId;
7
+ this.ttlSeconds = options.ttlSeconds ?? 300;
8
+ this.urlPrefix = options.urlPrefix ?? "s";
9
+ this.now = options.now ?? (() => Date.now());
10
+ }
11
+ resolveAsset(assetURI) {
12
+ const url = this.toUrl(assetURI);
13
+ if (!url) return {
14
+ URI: assetURI,
15
+ getURL: () => assetURI
16
+ };
17
+ if (url.search !== "") throw new Error(`Cannot seal an asset URL that has a query string: ${assetURI}`);
18
+ const blob = require_assetSeal.sealAssetPath({
19
+ path: url.pathname,
20
+ key: this.key,
21
+ keyId: this.keyId,
22
+ expiresAtSeconds: Math.floor(this.now() / 1e3) + this.ttlSeconds
23
+ });
24
+ const sealed = `${url.origin}/${this.urlPrefix}/${blob}${extensionOf(url.pathname)}`;
25
+ return {
26
+ URI: assetURI,
27
+ getURL: () => sealed
28
+ };
29
+ }
30
+ toUrl(assetURI) {
31
+ try {
32
+ const url = new URL(assetURI);
33
+ return url.protocol === "http:" || url.protocol === "https:" ? url : void 0;
34
+ } catch {
35
+ return;
36
+ }
37
+ }
38
+ };
39
+ var extensionOf = (pathname) => {
40
+ const lastDot = pathname.lastIndexOf(".");
41
+ if (lastDot <= pathname.lastIndexOf("/") + 1) return "";
42
+ const extension = pathname.slice(lastDot);
43
+ return /^\.[a-zA-Z0-9]{1,8}$/.test(extension) ? extension : "";
44
+ };
45
+ function getSealedAssetsResolver() {
46
+ const spec = process.env.PROSOPO_ASSET_SEAL_KEYS;
47
+ if (!spec) return;
48
+ const keys = require_assetSealFormat.parseSealKeys(spec);
49
+ const keyId = activeKeyId(keys);
50
+ const key = keys.get(keyId);
51
+ if (!key) throw new Error(`PROSOPO_ASSET_SEAL_ACTIVE_KEY_ID ${keyId} is not in PROSOPO_ASSET_SEAL_KEYS`);
52
+ return new SealedAssetsResolver({
53
+ key,
54
+ keyId,
55
+ ttlSeconds: Number.parseInt(process.env.PROSOPO_ASSET_SEAL_TTL_SECONDS ?? "", 10) || 300,
56
+ urlPrefix: process.env.PROSOPO_ASSET_SEAL_URL_PREFIX || "s"
57
+ });
58
+ }
59
+ var activeKeyId = (keys) => {
60
+ const configured = process.env.PROSOPO_ASSET_SEAL_ACTIVE_KEY_ID;
61
+ if (configured) {
62
+ const parsed = Number.parseInt(configured, 10);
63
+ if (!Number.isInteger(parsed)) throw new Error("PROSOPO_ASSET_SEAL_ACTIVE_KEY_ID must be an integer");
64
+ return parsed;
65
+ }
66
+ return Math.max(...keys.keys());
67
+ };
68
+ //#endregion
69
+ exports.SealedAssetsResolver = SealedAssetsResolver;
70
+ exports.getSealedAssetsResolver = getSealedAssetsResolver;
@@ -1,14 +1,15 @@
1
1
  let node_crypto = require("node:crypto");
2
+ let _prosopo_datasets = require("@prosopo/datasets");
3
+ //#region src/api/captcha/signedAssetsResolver.ts
2
4
  var SignedAssetsResolver = class {
3
5
  constructor(options) {
4
6
  this.securityKey = options.securityKey;
5
- this.ttlSeconds = options.ttlSeconds ?? 300;
7
+ this.ttlSeconds = options.ttlSeconds ?? _prosopo_datasets.DEFAULT_ASSET_TOKEN_TTL_SECONDS;
6
8
  this.clientIp = options.clientIp;
7
9
  this.now = options.now ?? (() => Date.now());
8
10
  }
9
11
  sign(path, expires) {
10
- const base = `${this.securityKey}${path}${expires}${this.clientIp ?? ""}`;
11
- return (0, node_crypto.createHash)("sha256").update(base).digest("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "");
12
+ return (0, _prosopo_datasets.encodeAssetToken)(new Uint8Array((0, node_crypto.createHash)("sha256").update((0, _prosopo_datasets.assetTokenBase)(this.securityKey, path, expires, this.clientIp)).digest()));
12
13
  }
13
14
  resolveAsset(assetURI) {
14
15
  const url = this.toUrl(assetURI);
@@ -45,10 +46,11 @@ function getSignedAssetsResolver(clientIp) {
45
46
  if (!securityKey) return;
46
47
  return new SignedAssetsResolver({
47
48
  securityKey,
48
- ttlSeconds: Number.parseInt(process.env.PROSOPO_ASSET_TOKEN_TTL_SECONDS ?? "", 10) || 300,
49
+ ttlSeconds: Number.parseInt(process.env.PROSOPO_ASSET_TOKEN_TTL_SECONDS ?? "", 10) || _prosopo_datasets.DEFAULT_ASSET_TOKEN_TTL_SECONDS,
49
50
  ...process.env.PROSOPO_ASSET_TOKEN_BIND_IP === "true" && clientIp ? { clientIp } : {}
50
51
  });
51
52
  }
52
53
  //#endregion
54
+ exports.DEFAULT_ASSET_TOKEN_TTL_SECONDS = _prosopo_datasets.DEFAULT_ASSET_TOKEN_TTL_SECONDS;
53
55
  exports.SignedAssetsResolver = SignedAssetsResolver;
54
56
  exports.getSignedAssetsResolver = getSignedAssetsResolver;
@@ -2,9 +2,9 @@ let _prosopo_common = require("@prosopo/common");
2
2
  let _prosopo_util = require("@prosopo/util");
3
3
  let _prosopo_util_crypto = require("@prosopo/util-crypto");
4
4
  let _polkadot_util = require("@polkadot/util");
5
- let _noble_hashes_sha256 = require("@noble/hashes/sha256");
5
+ let _noble_hashes_sha2_js = require("@noble/hashes/sha2.js");
6
6
  //#region src/tasks/powCaptcha/powTasksUtils.ts
7
- var validateSolution = (nonce, challenge, difficulty) => (0, _prosopo_util.hashMeetsDifficulty)((0, _noble_hashes_sha256.sha256)(new TextEncoder().encode(nonce + challenge)), difficulty);
7
+ var validateSolution = (nonce, challenge, difficulty) => (0, _prosopo_util.hashMeetsDifficulty)((0, _noble_hashes_sha2_js.sha256)(new TextEncoder().encode(nonce + challenge)), difficulty);
8
8
  var checkPowSignature = (message, signature, address, signatureType) => {
9
9
  if (!(0, _prosopo_util_crypto.signatureVerify)((0, _polkadot_util.stringToHex)(message), signature, address).isValid) throw new _prosopo_common.ProsopoApiError("GENERAL.INVALID_SIGNATURE", { context: {
10
10
  ERROR: `Signature is invalid for this message: ${signatureType}`,
@@ -0,0 +1,9 @@
1
+ export interface AssetSealHandlerOptions {
2
+ readonly keys: ReadonlyMap<number, Uint8Array>;
3
+ readonly urlPrefix: string;
4
+ readonly requiredPathPrefix?: string;
5
+ readonly now?: () => number;
6
+ }
7
+ export type AssetSealHandler = (request: Request) => Promise<Request | Response>;
8
+ export declare const createAssetSealHandler: (options: AssetSealHandlerOptions) => AssetSealHandler;
9
+ //# sourceMappingURL=assetSealHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assetSealHandler.d.ts","sourceRoot":"","sources":["../../src/edge/assetSealHandler.ts"],"names":[],"mappings":"AAwBA,MAAM,WAAW,uBAAuB;IACvC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC/C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,gBAAgB,GAAG,CAC9B,OAAO,EAAE,OAAO,KACZ,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC,CAAC;AAWjC,eAAO,MAAM,sBAAsB,YACzB,uBAAuB,KAC9B,gBA4EF,CAAC"}
@@ -0,0 +1,74 @@
1
+ import { additionalData, decodeEnvelope, decodePayload, isSafeAssetPath, } from "../api/captcha/assetSealFormat.js";
2
+ const TAG_BYTES = 16;
3
+ const notFound = () => new Response("Not found", {
4
+ status: 404,
5
+ headers: {
6
+ "content-type": "text/plain; charset=utf-8",
7
+ "cache-control": "no-store",
8
+ },
9
+ });
10
+ export const createAssetSealHandler = (options) => {
11
+ const imported = new Map();
12
+ const now = options.now ?? (() => Date.now());
13
+ const marker = `/${options.urlPrefix}/`;
14
+ const keyFor = (keyId) => {
15
+ const raw = options.keys.get(keyId);
16
+ if (!raw) {
17
+ return undefined;
18
+ }
19
+ const existing = imported.get(keyId);
20
+ if (existing) {
21
+ return existing;
22
+ }
23
+ const promise = crypto.subtle.importKey("raw", raw.slice(), { name: "AES-GCM" }, false, ["decrypt"]);
24
+ imported.set(keyId, promise);
25
+ return promise;
26
+ };
27
+ const open = async (blob) => {
28
+ const envelope = decodeEnvelope(blob);
29
+ if (!envelope || envelope.sealed.length <= TAG_BYTES) {
30
+ return undefined;
31
+ }
32
+ const key = keyFor(envelope.keyId);
33
+ if (!key) {
34
+ return undefined;
35
+ }
36
+ let payload;
37
+ try {
38
+ const plaintext = await crypto.subtle.decrypt({
39
+ name: "AES-GCM",
40
+ iv: envelope.iv,
41
+ additionalData: additionalData(envelope.keyId),
42
+ tagLength: TAG_BYTES * 8,
43
+ }, await key, envelope.sealed);
44
+ payload = decodePayload(new Uint8Array(plaintext));
45
+ }
46
+ catch {
47
+ return undefined;
48
+ }
49
+ if (!payload || payload.expiresAtSeconds <= Math.floor(now() / 1000)) {
50
+ return undefined;
51
+ }
52
+ return isSafeAssetPath(payload.path, options.requiredPathPrefix)
53
+ ? payload.path
54
+ : undefined;
55
+ };
56
+ return async (request) => {
57
+ const url = new URL(request.url);
58
+ if (!url.pathname.startsWith(marker)) {
59
+ return request;
60
+ }
61
+ const path = await open(stripExtension(url.pathname.slice(marker.length)));
62
+ if (!path) {
63
+ return notFound();
64
+ }
65
+ url.pathname = path;
66
+ url.search = "";
67
+ return new Request(url, request);
68
+ };
69
+ };
70
+ const stripExtension = (segment) => {
71
+ const dot = segment.indexOf(".");
72
+ return dot === -1 ? segment : segment.slice(0, dot);
73
+ };
74
+ //# sourceMappingURL=assetSealHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assetSealHandler.js","sourceRoot":"","sources":["../../src/edge/assetSealHandler.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { ProsopoApiError } from "@prosopo/common";
2
2
  import { hashMeetsDifficulty } from "@prosopo/util";
3
3
  import { signatureVerify } from "@prosopo/util-crypto";
4
4
  import { stringToHex } from "@polkadot/util";
5
- import { sha256 } from "@noble/hashes/sha256";
5
+ import { sha256 } from "@noble/hashes/sha2.js";
6
6
  //#region src/tasks/powCaptcha/powTasksUtils.ts
7
7
  var validateSolution = (nonce, challenge, difficulty) => hashMeetsDifficulty(sha256(new TextEncoder().encode(nonce + challenge)), difficulty);
8
8
  var checkPowSignature = (message, signature, address, signatureType) => {
@@ -1 +1 @@
1
- {"version":3,"file":"powTasksUtils.js","sourceRoot":"","sources":["../../../src/tasks/powCaptcha/powTasksUtils.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC/B,KAAa,EACb,SAAiB,EACjB,UAAkB,EACR,EAAE,CACZ,mBAAmB,CAClB,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,EACnD,UAAU,CACV,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAChC,OAAe,EACf,SAAiB,EACjB,OAAe,EACf,aAAsB,EACf,EAAE;IACT,MAAM,qBAAqB,GAAG,eAAe,CAC5C,WAAW,CAAC,OAAO,CAAC,EACpB,SAAS,EACT,OAAO,CACP,CAAC;IACF,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,IAAI,eAAe,CAAC,2BAA2B,EAAE;YACtD,OAAO,EAAE;gBACR,KAAK,EAAE,0CAA0C,aAAa,EAAE;gBAChE,cAAc,EAAE,iBAAiB,CAAC,IAAI;gBACtC,OAAO;gBACP,OAAO;gBACP,SAAS;gBACT,aAAa;aACb;SACD,CAAC,CAAC;IACJ,CAAC;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"powTasksUtils.js","sourceRoot":"","sources":["../../../src/tasks/powCaptcha/powTasksUtils.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC/B,KAAa,EACb,SAAiB,EACjB,UAAkB,EACR,EAAE,CACZ,mBAAmB,CAClB,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,EACnD,UAAU,CACV,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAChC,OAAe,EACf,SAAiB,EACjB,OAAe,EACf,aAAsB,EACf,EAAE;IACT,MAAM,qBAAqB,GAAG,eAAe,CAC5C,WAAW,CAAC,OAAO,CAAC,EACpB,SAAS,EACT,OAAO,CACP,CAAC;IACF,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,IAAI,eAAe,CAAC,2BAA2B,EAAE;YACtD,OAAO,EAAE;gBACR,KAAK,EAAE,0CAA0C,aAAa,EAAE;gBAChE,cAAc,EAAE,iBAAiB,CAAC,IAAI;gBACtC,OAAO;gBACP,OAAO;gBACP,SAAS;gBACT,aAAa;aACb;SACD,CAAC,CAAC;IACJ,CAAC;AACF,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { sha256 } from "@noble/hashes/sha256";
1
+ import { sha256 } from "@noble/hashes/sha2.js";
2
2
  import { datasetWithSolutionHashes } from "@prosopo/datasets";
3
3
  import { ProviderEnvironment } from "@prosopo/env";
4
4
  import { generateMnemonic, getPair } from "@prosopo/keyring";
@@ -1 +1 @@
1
- {"version":3,"file":"powCaptcha.integration.test.js","sourceRoot":"","sources":["../../../src/tests/integration/powCaptcha.integration.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"powCaptcha.integration.test.js","sourceRoot":"","sources":["../../../src/tests/integration/powCaptcha.integration.test.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { createServer } from "node:http";
2
2
  import { dirname, join } from "node:path";
3
3
  import { fileURLToPath } from "node:url";
4
- import { ed25519 } from "@noble/curves/ed25519";
4
+ import { ed25519 } from "@noble/curves/ed25519.js";
5
5
  import { stringToU8a, u8aToHex } from "@polkadot/util";
6
6
  import { ProviderEnvironment } from "@prosopo/env";
7
7
  import { generateMnemonic, getPair } from "@prosopo/keyring";
@@ -55,7 +55,7 @@ describe("Web Bot Auth authenticated flow (integration)", () => {
55
55
  const protocol = isTlsAvailable() ? "https" : "http";
56
56
  baseUrl = `${protocol}://localhost:${testPort}`;
57
57
  authority = `localhost:${testPort}`;
58
- privateKey = ed25519.utils.randomPrivateKey();
58
+ privateKey = ed25519.utils.randomSecretKey();
59
59
  publicKey = ed25519.getPublicKey(privateKey);
60
60
  const jwksPort = await reservePort();
61
61
  signerUrl = `http://localhost:${jwksPort}`;