@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.
- package/.turbo/turbo-build$colon$cjs.log +8 -5
- package/.turbo/turbo-build$colon$tsc.log +27 -27
- package/.turbo/turbo-build.log +9 -6
- package/CHANGELOG.md +56 -0
- package/dist/api/captcha/assetSeal.d.ts +15 -0
- package/dist/api/captcha/assetSeal.d.ts.map +1 -0
- package/dist/api/captcha/assetSeal.js +22 -0
- package/dist/api/captcha/assetSeal.js.map +1 -0
- package/dist/api/captcha/assetSealFormat.d.ts +23 -0
- package/dist/api/captcha/assetSealFormat.d.ts.map +1 -0
- package/dist/api/captcha/assetSealFormat.js +87 -0
- package/dist/api/captcha/assetSealFormat.js.map +1 -0
- package/dist/api/captcha/getImageCaptchaChallenge.d.ts.map +1 -1
- package/dist/api/captcha/getImageCaptchaChallenge.js +2 -1
- package/dist/api/captcha/getImageCaptchaChallenge.js.map +1 -1
- package/dist/api/captcha/sealedAssetsResolver.d.ts +22 -0
- package/dist/api/captcha/sealedAssetsResolver.d.ts.map +1 -0
- package/dist/api/captcha/sealedAssetsResolver.js +69 -0
- package/dist/api/captcha/sealedAssetsResolver.js.map +1 -0
- package/dist/api/captcha/signedAssetsResolver.d.ts +2 -1
- package/dist/api/captcha/signedAssetsResolver.d.ts.map +1 -1
- package/dist/api/captcha/signedAssetsResolver.js +6 -5
- package/dist/api/captcha/signedAssetsResolver.js.map +1 -1
- package/dist/cjs/api/captcha/assetSeal.cjs +22 -0
- package/dist/cjs/api/captcha/assetSealFormat.cjs +95 -0
- package/dist/cjs/api/captcha/getImageCaptchaChallenge.cjs +2 -1
- package/dist/cjs/api/captcha/sealedAssetsResolver.cjs +70 -0
- package/dist/cjs/api/captcha/signedAssetsResolver.cjs +6 -4
- package/dist/cjs/tasks/powCaptcha/powTasksUtils.cjs +2 -2
- package/dist/edge/assetSealHandler.d.ts +9 -0
- package/dist/edge/assetSealHandler.d.ts.map +1 -0
- package/dist/edge/assetSealHandler.js +74 -0
- package/dist/edge/assetSealHandler.js.map +1 -0
- package/dist/tasks/powCaptcha/powTasksUtils.js +1 -1
- package/dist/tasks/powCaptcha/powTasksUtils.js.map +1 -1
- package/dist/tests/integration/powCaptcha.integration.test.js +1 -1
- package/dist/tests/integration/powCaptcha.integration.test.js.map +1 -1
- package/dist/tests/integration/webBotAuthAuthenticated.integration.test.js +2 -2
- package/dist/tests/integration/webBotAuthAuthenticated.integration.test.js.map +1 -1
- package/dist/tests/unit/api/captcha/assetSeal.unit.test.d.ts +2 -0
- package/dist/tests/unit/api/captcha/assetSeal.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/api/captcha/assetSeal.unit.test.js +132 -0
- package/dist/tests/unit/api/captcha/assetSeal.unit.test.js.map +1 -0
- package/dist/tests/unit/api/captcha/sealedAssetsResolver.unit.test.d.ts +2 -0
- package/dist/tests/unit/api/captcha/sealedAssetsResolver.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/api/captcha/sealedAssetsResolver.unit.test.js +151 -0
- package/dist/tests/unit/api/captcha/sealedAssetsResolver.unit.test.js.map +1 -0
- package/dist/tests/unit/edge/assetSealHandler.unit.test.d.ts +2 -0
- package/dist/tests/unit/edge/assetSealHandler.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/edge/assetSealHandler.unit.test.js +145 -0
- package/dist/tests/unit/edge/assetSealHandler.unit.test.js.map +1 -0
- package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js +1 -1
- package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js.map +1 -1
- package/edge/entry.ts +62 -0
- package/package.json +25 -23
- 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":"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"}
|
|
@@ -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
|
|
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,
|
|
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 ??
|
|
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
|
-
|
|
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) ||
|
|
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":"AAkCA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"signedAssetsResolver.js","sourceRoot":"","sources":["../../../src/api/captcha/signedAssetsResolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -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 ??
|
|
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
|
-
|
|
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) ||
|
|
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
|
|
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,
|
|
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/
|
|
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,
|
|
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/
|
|
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.
|
|
58
|
+
privateKey = ed25519.utils.randomSecretKey();
|
|
59
59
|
publicKey = ed25519.getPublicKey(privateKey);
|
|
60
60
|
const jwksPort = await reservePort();
|
|
61
61
|
signerUrl = `http://localhost:${jwksPort}`;
|