@prosopo/procaptcha 0.1.10 → 0.1.13
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/assets/contracts-page.png +0 -0
- package/dist/api/Extension.d.ts +3 -2
- package/dist/api/Extension.d.ts.map +1 -1
- package/dist/api/Extension.js.map +1 -1
- package/dist/api/ExtensionWeb2.d.ts +3 -2
- package/dist/api/ExtensionWeb2.d.ts.map +1 -1
- package/dist/api/ExtensionWeb2.js +24 -18
- package/dist/api/ExtensionWeb2.js.map +1 -1
- package/dist/api/ExtensionWeb3.d.ts +3 -2
- package/dist/api/ExtensionWeb3.d.ts.map +1 -1
- package/dist/api/ExtensionWeb3.js +1 -1
- package/dist/api/ExtensionWeb3.js.map +1 -1
- package/dist/api/errors.d.ts +3 -0
- package/dist/api/errors.d.ts.map +1 -1
- package/dist/api/errors.js +7 -1
- package/dist/api/errors.js.map +1 -1
- package/dist/api/handlers.js +1 -1
- package/dist/api/handlers.js.map +1 -1
- package/dist/api/index.d.ts +0 -3
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +0 -3
- package/dist/api/index.js.map +1 -1
- package/dist/api/sign.d.ts +5 -0
- package/dist/api/sign.d.ts.map +1 -0
- package/dist/api/sign.js +16 -0
- package/dist/api/sign.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/modules/Manager.d.ts +9 -0
- package/dist/modules/Manager.d.ts.map +1 -1
- package/dist/modules/Manager.js +113 -40
- package/dist/modules/Manager.js.map +1 -1
- package/dist/modules/ProsopoCaptchaApi.d.ts +10 -8
- package/dist/modules/ProsopoCaptchaApi.d.ts.map +1 -1
- package/dist/modules/ProsopoCaptchaApi.js +55 -35
- package/dist/modules/ProsopoCaptchaApi.js.map +1 -1
- package/dist/modules/canvas.js +2 -2
- package/dist/modules/canvas.js.map +1 -1
- package/dist/modules/storage.d.ts.map +1 -1
- package/dist/modules/storage.js +15 -0
- package/dist/modules/storage.js.map +1 -1
- package/dist/types/api.d.ts +1 -17
- package/dist/types/api.d.ts.map +1 -1
- package/dist/types/client.d.ts +3 -9
- package/dist/types/client.d.ts.map +1 -1
- package/dist/types/contract.d.ts.map +1 -1
- package/dist/types/manager.d.ts +20 -27
- package/dist/types/manager.d.ts.map +1 -1
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +5 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +21 -24
- package/.eslintignore +0 -3
- package/.eslintrc.js +0 -36
- package/.prettierrc.js +0 -7
- package/LICENSE +0 -201
- package/dist/api/AsyncFactory.d.ts +0 -7
- package/dist/api/AsyncFactory.d.ts.map +0 -1
- package/dist/api/AsyncFactory.js +0 -30
- package/dist/api/AsyncFactory.js.map +0 -1
- package/dist/api/ProsopoContract.d.ts +0 -13
- package/dist/api/ProsopoContract.d.ts.map +0 -1
- package/dist/api/ProsopoContract.js +0 -59
- package/dist/api/ProsopoContract.js.map +0 -1
- package/dist/api/ProsopoContractBase.d.ts +0 -30
- package/dist/api/ProsopoContractBase.d.ts.map +0 -1
- package/dist/api/ProsopoContractBase.js +0 -139
- package/dist/api/ProsopoContractBase.js.map +0 -1
- package/dist/modules/ProsopoCaptchaStateClient.d.ts +0 -1
- package/dist/modules/ProsopoCaptchaStateClient.d.ts.map +0 -1
- package/dist/modules/ProsopoCaptchaStateClient.js +0 -2
- package/dist/modules/ProsopoCaptchaStateClient.js.map +0 -1
- package/tsconfig.json +0 -27
package/dist/modules/Manager.js
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Manager = exports.defaultState = void 0;
|
|
3
|
+
exports.Manager = exports.getNetwork = exports.defaultState = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
-
const
|
|
5
|
+
const api_1 = require("@polkadot/api");
|
|
6
|
+
const api_2 = require("@prosopo/api");
|
|
7
|
+
const contract_1 = require("@prosopo/contract");
|
|
6
8
|
const rpc_provider_1 = require("@polkadot/rpc-provider");
|
|
7
|
-
const
|
|
8
|
-
const api_1 = require("@prosopo/api");
|
|
9
|
-
const util_1 = require("@polkadot/util");
|
|
10
|
-
const ProsopoCaptchaApi_1 = tslib_1.__importDefault(require("./ProsopoCaptchaApi"));
|
|
9
|
+
const util_crypto_1 = require("@polkadot/util-crypto");
|
|
11
10
|
const utils_1 = require("../utils/utils");
|
|
11
|
+
const util_1 = require("@polkadot/util");
|
|
12
|
+
const common_1 = require("@prosopo/common");
|
|
12
13
|
const ExtensionWeb2_1 = tslib_1.__importDefault(require("../api/ExtensionWeb2"));
|
|
13
14
|
const ExtensionWeb3_1 = tslib_1.__importDefault(require("../api/ExtensionWeb3"));
|
|
14
|
-
const
|
|
15
|
+
const ProsopoCaptchaApi_1 = tslib_1.__importDefault(require("./ProsopoCaptchaApi"));
|
|
16
|
+
const storage_1 = tslib_1.__importDefault(require("./storage"));
|
|
15
17
|
const defaultState = () => {
|
|
16
18
|
return {
|
|
17
19
|
// note order matters! see buildUpdateState. These fields are set in order, so disable modal first, then set loading to false, etc.
|
|
@@ -23,6 +25,7 @@ const defaultState = () => {
|
|
|
23
25
|
isHuman: false,
|
|
24
26
|
captchaApi: undefined,
|
|
25
27
|
account: undefined,
|
|
28
|
+
// don't handle timeout here, this should be handled by the state management
|
|
26
29
|
};
|
|
27
30
|
};
|
|
28
31
|
exports.defaultState = defaultState;
|
|
@@ -39,6 +42,14 @@ const buildUpdateState = (state, onStateUpdate) => {
|
|
|
39
42
|
};
|
|
40
43
|
return updateCurrentState;
|
|
41
44
|
};
|
|
45
|
+
const getNetwork = (config) => {
|
|
46
|
+
const network = config.networks[config.defaultEnvironment];
|
|
47
|
+
if (!network) {
|
|
48
|
+
throw new Error(`No network found for environment ${config.defaultEnvironment}`);
|
|
49
|
+
}
|
|
50
|
+
return network;
|
|
51
|
+
};
|
|
52
|
+
exports.getNetwork = getNetwork;
|
|
42
53
|
/**
|
|
43
54
|
* The state operator. This is used to mutate the state of Procaptcha during the captcha process. State updates are published via the onStateUpdate callback. This should be used by frontends, e.g. react, to maintain the state of Procaptcha across renders.
|
|
44
55
|
*/
|
|
@@ -49,7 +60,7 @@ const Manager = (configOptional, state, onStateUpdate, callbacks) => {
|
|
|
49
60
|
alert(`Account ${address} not found`);
|
|
50
61
|
},
|
|
51
62
|
onError: (error) => {
|
|
52
|
-
alert(error
|
|
63
|
+
alert(`${error?.message ?? 'An unexpected error occurred'}, please try again`);
|
|
53
64
|
},
|
|
54
65
|
onHuman: (output) => {
|
|
55
66
|
console.log('onHuman event triggered', output);
|
|
@@ -57,12 +68,19 @@ const Manager = (configOptional, state, onStateUpdate, callbacks) => {
|
|
|
57
68
|
onExtensionNotFound: () => {
|
|
58
69
|
alert('No extension found');
|
|
59
70
|
},
|
|
71
|
+
onExpired: () => {
|
|
72
|
+
alert('Challenge has expired, please try again');
|
|
73
|
+
},
|
|
74
|
+
onFailed: () => {
|
|
75
|
+
alert('Captcha challenge failed. Please try again');
|
|
76
|
+
},
|
|
60
77
|
}, callbacks);
|
|
61
78
|
// mapping of type of error to relevant event callback
|
|
62
79
|
const errorToEventMap = {
|
|
63
80
|
AccountNotFoundError: events.onAccountNotFound,
|
|
64
81
|
ExtensionNotFoundError: events.onExtensionNotFound,
|
|
65
82
|
Error: events.onError,
|
|
83
|
+
ExpiredError: events.onExpired,
|
|
66
84
|
};
|
|
67
85
|
// get the state update mechanism
|
|
68
86
|
const updateState = buildUpdateState(state, onStateUpdate);
|
|
@@ -72,7 +90,6 @@ const Manager = (configOptional, state, onStateUpdate, callbacks) => {
|
|
|
72
90
|
*/
|
|
73
91
|
const getConfig = () => {
|
|
74
92
|
const config = {
|
|
75
|
-
web2: false,
|
|
76
93
|
userAccountAddress: '',
|
|
77
94
|
...configOptional,
|
|
78
95
|
};
|
|
@@ -86,6 +103,7 @@ const Manager = (configOptional, state, onStateUpdate, callbacks) => {
|
|
|
86
103
|
* Called on start of user verification. This is when the user ticks the box to claim they are human.
|
|
87
104
|
*/
|
|
88
105
|
const start = async () => {
|
|
106
|
+
console.log('Starting procaptcha');
|
|
89
107
|
try {
|
|
90
108
|
if (state.loading) {
|
|
91
109
|
console.log('Procaptcha already loading');
|
|
@@ -100,7 +118,7 @@ const Manager = (configOptional, state, onStateUpdate, callbacks) => {
|
|
|
100
118
|
updateState({ loading: true });
|
|
101
119
|
// snapshot the config into the state
|
|
102
120
|
const config = getConfig();
|
|
103
|
-
|
|
121
|
+
updateState({ dappAccount: config.account.address });
|
|
104
122
|
// allow UI to catch up with the loading state
|
|
105
123
|
await (0, utils_1.sleep)(100);
|
|
106
124
|
// check accounts / setup accounts
|
|
@@ -109,11 +127,20 @@ const Manager = (configOptional, state, onStateUpdate, callbacks) => {
|
|
|
109
127
|
// first, ask the smart contract
|
|
110
128
|
const contract = await loadContract();
|
|
111
129
|
// We don't need to show CAPTCHA challenges if the user is determined as human by the contract
|
|
112
|
-
|
|
130
|
+
let contractIsHuman = false;
|
|
131
|
+
try {
|
|
132
|
+
contractIsHuman = (await contract.query.dappOperatorIsHumanUser(account.account.address, config.solutionThreshold)).value
|
|
133
|
+
.unwrap()
|
|
134
|
+
.unwrap();
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
console.warn(error);
|
|
138
|
+
}
|
|
113
139
|
if (contractIsHuman) {
|
|
114
140
|
updateState({ isHuman: true, loading: false });
|
|
115
141
|
events.onHuman({
|
|
116
|
-
|
|
142
|
+
user: account.account.address,
|
|
143
|
+
dapp: config.account.address,
|
|
117
144
|
});
|
|
118
145
|
return;
|
|
119
146
|
}
|
|
@@ -130,7 +157,8 @@ const Manager = (configOptional, state, onStateUpdate, callbacks) => {
|
|
|
130
157
|
updateState({ isHuman: true, loading: false });
|
|
131
158
|
events.onHuman({
|
|
132
159
|
providerUrl: providerUrlFromStorage,
|
|
133
|
-
|
|
160
|
+
user: account.account.address,
|
|
161
|
+
dapp: config.account.address,
|
|
134
162
|
commitmentId: verifyDappUserResponse.commitmentId,
|
|
135
163
|
});
|
|
136
164
|
return;
|
|
@@ -142,26 +170,47 @@ const Manager = (configOptional, state, onStateUpdate, callbacks) => {
|
|
|
142
170
|
// continue as if the provider was not in storage
|
|
143
171
|
}
|
|
144
172
|
}
|
|
173
|
+
const payload = {
|
|
174
|
+
address: account.account.address,
|
|
175
|
+
data: (0, util_1.stringToU8a)('message'),
|
|
176
|
+
type: 'bytes',
|
|
177
|
+
};
|
|
178
|
+
const signed = await account.extension.signer.signRaw(payload);
|
|
179
|
+
console.log('Signature:', signed);
|
|
145
180
|
// get a random provider
|
|
146
|
-
const
|
|
147
|
-
|
|
148
|
-
|
|
181
|
+
const getRandomProviderResponse = await (0, contract_1.wrapQuery)(contract.query.getRandomActiveProvider, contract.query)(account.account.address, config.account.address);
|
|
182
|
+
const blockNumber = getRandomProviderResponse.blockNumber;
|
|
183
|
+
console.log('provider', getRandomProviderResponse);
|
|
184
|
+
const providerUrl = (0, common_1.trimProviderUrl)(getRandomProviderResponse.provider.url.toString());
|
|
149
185
|
// get the provider api inst
|
|
150
186
|
providerApi = await loadProviderApi(providerUrl);
|
|
151
187
|
console.log('providerApi', providerApi);
|
|
152
188
|
// get the captcha challenge and begin the challenge
|
|
153
|
-
const captchaApi = await loadCaptchaApi(contract,
|
|
189
|
+
const captchaApi = await loadCaptchaApi(contract, getRandomProviderResponse, providerApi);
|
|
154
190
|
console.log('captchaApi', captchaApi);
|
|
155
191
|
const challenge = await captchaApi.getCaptchaChallenge();
|
|
192
|
+
console.log('challenge', challenge);
|
|
156
193
|
if (challenge.captchas.length <= 0) {
|
|
157
194
|
throw new Error('No captchas returned from provider');
|
|
158
195
|
}
|
|
196
|
+
// setup timeout
|
|
197
|
+
const timeMillis = challenge.captchas
|
|
198
|
+
.map((captcha) => captcha.captcha.timeLimitMs || 30 * 1000)
|
|
199
|
+
.reduce((a, b) => a + b);
|
|
200
|
+
const timeout = setTimeout(() => {
|
|
201
|
+
console.log('challenge expired after ' + timeMillis + 'ms');
|
|
202
|
+
events.onExpired();
|
|
203
|
+
// expired, disallow user's claim to be human
|
|
204
|
+
updateState({ isHuman: false, showModal: false, loading: false });
|
|
205
|
+
}, timeMillis);
|
|
159
206
|
// update state with new challenge
|
|
160
207
|
updateState({
|
|
161
208
|
index: 0,
|
|
162
209
|
solutions: challenge.captchas.map(() => []),
|
|
163
210
|
challenge,
|
|
164
211
|
showModal: true,
|
|
212
|
+
timeout,
|
|
213
|
+
blockNumber,
|
|
165
214
|
});
|
|
166
215
|
}
|
|
167
216
|
catch (err) {
|
|
@@ -173,20 +222,11 @@ const Manager = (configOptional, state, onStateUpdate, callbacks) => {
|
|
|
173
222
|
updateState({ isHuman: false, showModal: false, loading: false });
|
|
174
223
|
}
|
|
175
224
|
};
|
|
176
|
-
const loadRandomProvider = async (contract) => {
|
|
177
|
-
const provider = await contract.getRandomProvider();
|
|
178
|
-
console.log('Got random provider', provider);
|
|
179
|
-
if (!provider || !provider.provider || !provider.provider.serviceOrigin) {
|
|
180
|
-
throw new Error('No provider found: ' + JSON.stringify(provider));
|
|
181
|
-
}
|
|
182
|
-
provider.provider.serviceOrigin = trimProviderUrl(provider.provider.serviceOrigin);
|
|
183
|
-
// record provider in localstorage for subsequent human checks (i.e. if the user has already solved some captchas but they have not been put on chain yet, contact the provider in the local storage to verify)
|
|
184
|
-
storage_1.default.setProviderUrl(provider.provider.serviceOrigin);
|
|
185
|
-
return provider;
|
|
186
|
-
};
|
|
187
225
|
const submit = async () => {
|
|
188
226
|
try {
|
|
189
227
|
console.log('submitting solutions');
|
|
228
|
+
// disable the time limit, user has submitted their solution in time
|
|
229
|
+
clearTimeout();
|
|
190
230
|
if (!state.challenge) {
|
|
191
231
|
throw new Error('cannot submit, no challenge found');
|
|
192
232
|
}
|
|
@@ -205,6 +245,7 @@ const Manager = (configOptional, state, onStateUpdate, callbacks) => {
|
|
|
205
245
|
};
|
|
206
246
|
});
|
|
207
247
|
const account = getAccount();
|
|
248
|
+
const blockNumber = getBlockNumber();
|
|
208
249
|
const signer = account.extension.signer;
|
|
209
250
|
if (!challenge.captchas[0].captcha.datasetId) {
|
|
210
251
|
throw new Error('No datasetId set for challenge');
|
|
@@ -212,18 +253,25 @@ const Manager = (configOptional, state, onStateUpdate, callbacks) => {
|
|
|
212
253
|
const captchaApi = getCaptchaApi();
|
|
213
254
|
// send the commitment to the provider
|
|
214
255
|
const submission = await captchaApi.submitCaptchaSolution(signer, challenge.requestHash, challenge.captchas[0].captcha.datasetId, captchaSolution, salt);
|
|
256
|
+
// mark as is human if solution has been approved
|
|
257
|
+
const isHuman = submission[0].solutionApproved;
|
|
258
|
+
if (!isHuman) {
|
|
259
|
+
// user failed the captcha for some reason according to the provider
|
|
260
|
+
events.onFailed();
|
|
261
|
+
}
|
|
215
262
|
// update the state with the result of the submission
|
|
216
263
|
updateState({
|
|
217
264
|
submission,
|
|
218
|
-
|
|
219
|
-
isHuman: submission[0].solutionApproved,
|
|
265
|
+
isHuman,
|
|
220
266
|
loading: false,
|
|
221
267
|
});
|
|
222
268
|
if (state.isHuman) {
|
|
223
269
|
events.onHuman({
|
|
224
|
-
providerUrl: captchaApi.provider.provider.
|
|
225
|
-
|
|
270
|
+
providerUrl: (0, common_1.trimProviderUrl)(captchaApi.provider.provider.url.toString()),
|
|
271
|
+
user: account.account.address,
|
|
272
|
+
dapp: getDappAccount(),
|
|
226
273
|
commitmentId: submission[1],
|
|
274
|
+
blockNumber,
|
|
227
275
|
});
|
|
228
276
|
}
|
|
229
277
|
}
|
|
@@ -237,6 +285,8 @@ const Manager = (configOptional, state, onStateUpdate, callbacks) => {
|
|
|
237
285
|
};
|
|
238
286
|
const cancel = async () => {
|
|
239
287
|
console.log('cancel');
|
|
288
|
+
// disable the time limit
|
|
289
|
+
clearTimeout();
|
|
240
290
|
// abandon the captcha process
|
|
241
291
|
resetState();
|
|
242
292
|
};
|
|
@@ -282,16 +332,24 @@ const Manager = (configOptional, state, onStateUpdate, callbacks) => {
|
|
|
282
332
|
const loadCaptchaApi = async (contract, provider, providerApi) => {
|
|
283
333
|
const config = getConfig();
|
|
284
334
|
// setup the captcha api to carry out a challenge
|
|
285
|
-
const captchaApi = new ProsopoCaptchaApi_1.default(getAccount().account.address, contract, provider, providerApi, config.web2);
|
|
335
|
+
const captchaApi = new ProsopoCaptchaApi_1.default(getAccount().account.address, contract, provider, providerApi, config.web2, config.account.address);
|
|
286
336
|
updateState({ captchaApi });
|
|
287
337
|
return getCaptchaApi();
|
|
288
338
|
};
|
|
289
339
|
const loadProviderApi = async (providerUrl) => {
|
|
290
340
|
const config = getConfig();
|
|
291
|
-
const
|
|
292
|
-
return
|
|
341
|
+
const network = (0, exports.getNetwork)(config);
|
|
342
|
+
return new api_2.ProviderApi(network, providerUrl, config.account.address);
|
|
343
|
+
};
|
|
344
|
+
const clearTimeout = () => {
|
|
345
|
+
// clear the timeout
|
|
346
|
+
window.clearTimeout(state.timeout);
|
|
347
|
+
// then clear the timeout from the state
|
|
348
|
+
updateState({ timeout: undefined });
|
|
293
349
|
};
|
|
294
350
|
const resetState = () => {
|
|
351
|
+
// clear timeout just in case a timer is still active (shouldn't be)
|
|
352
|
+
clearTimeout();
|
|
295
353
|
updateState((0, exports.defaultState)());
|
|
296
354
|
};
|
|
297
355
|
const getCaptchaApi = () => {
|
|
@@ -323,13 +381,31 @@ const Manager = (configOptional, state, onStateUpdate, callbacks) => {
|
|
|
323
381
|
const account = state.account;
|
|
324
382
|
return account;
|
|
325
383
|
};
|
|
384
|
+
const getDappAccount = () => {
|
|
385
|
+
if (!state.dappAccount) {
|
|
386
|
+
throw new Error('Dapp account not loaded');
|
|
387
|
+
}
|
|
388
|
+
const dappAccount = state.dappAccount;
|
|
389
|
+
return dappAccount;
|
|
390
|
+
};
|
|
391
|
+
const getBlockNumber = () => {
|
|
392
|
+
if (!state.blockNumber) {
|
|
393
|
+
throw new Error('Account not loaded');
|
|
394
|
+
}
|
|
395
|
+
const blockNumber = state.blockNumber;
|
|
396
|
+
return blockNumber;
|
|
397
|
+
};
|
|
326
398
|
/**
|
|
327
399
|
* Load the contract instance using addresses from config.
|
|
328
400
|
*/
|
|
329
401
|
const loadContract = async () => {
|
|
330
402
|
const config = getConfig();
|
|
331
|
-
const
|
|
332
|
-
|
|
403
|
+
const network = (0, exports.getNetwork)(config);
|
|
404
|
+
const api = await api_1.ApiPromise.create({ provider: new rpc_provider_1.WsProvider(network.endpoint) });
|
|
405
|
+
// TODO create a shared keyring that's stored somewhere
|
|
406
|
+
const type = 'sr25519';
|
|
407
|
+
const keyring = new api_1.Keyring({ type, ss58Format: api.registry.chainSS58 });
|
|
408
|
+
return new contract_1.ProsopoCaptchaContract(api, contract_1.abiJson, network.contract.address, keyring.addFromAddress(getAccount().account.address), 'prosopo', 0);
|
|
333
409
|
};
|
|
334
410
|
return {
|
|
335
411
|
start,
|
|
@@ -340,7 +416,4 @@ const Manager = (configOptional, state, onStateUpdate, callbacks) => {
|
|
|
340
416
|
};
|
|
341
417
|
};
|
|
342
418
|
exports.Manager = Manager;
|
|
343
|
-
const trimProviderUrl = (url) => {
|
|
344
|
-
return (0, util_1.hexToString)(url).replace(/\0/g, '');
|
|
345
|
-
};
|
|
346
419
|
//# sourceMappingURL=Manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Manager.js","sourceRoot":"","sources":["../../src/modules/Manager.ts"],"names":[],"mappings":";;;;AAAA,qFAAoD;AACpD,yDAAmD;AACnD,gEAA+B;AAC/B,sCAA6F;AAC7F,yCAA4C;AAC5C,oFAAmD;AAWnD,0CAAsC;AACtC,iFAAgD;AAChD,iFAAgD;AAEhD,uDAAmD;AAE5C,MAAM,YAAY,GAAG,GAA6B,EAAE;IACvD,OAAO;QACH,mIAAmI;QACnI,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,SAAS;QACpB,SAAS,EAAE,EAAE;QACb,KAAK,EAAE,CAAC,CAAC;QACT,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,SAAS;QACrB,OAAO,EAAE,SAAS;KACrB,CAAA;AACL,CAAC,CAAA;AAZY,QAAA,YAAY,gBAYxB;AAED,MAAM,gBAAgB,GAAG,CAAC,KAAsB,EAAE,aAAsC,EAAE,EAAE;IACxF,MAAM,kBAAkB,GAAG,CAAC,SAAmC,EAAE,EAAE;QAC/D,8FAA8F;QAC9F,mNAAmN;QACnN,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;YACzB,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;SAC9B;QACD,gEAAgE;QAChE,aAAa,CAAC,SAAS,CAAC,CAAA;QAExB,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAA;IAC1E,CAAC,CAAA;IAED,OAAO,kBAAkB,CAAA;AAC7B,CAAC,CAAA;AAED;;GAEG;AACI,MAAM,OAAO,GAAG,CACnB,cAAwC,EACxC,KAAsB,EACtB,aAAsC,EACtC,SAA8B,EAChC,EAAE;IACA,qKAAqK;IACrK,MAAM,MAAM,GAAqB,MAAM,CAAC,MAAM,CAC1C;QACI,iBAAiB,EAAE,CAAC,OAAO,EAAE,EAAE;YAC3B,KAAK,CAAC,WAAW,OAAO,YAAY,CAAC,CAAA;QACzC,CAAC;QACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACf,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAA;QACtD,CAAC;QACD,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;YAChB,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAA;QAClD,CAAC;QACD,mBAAmB,EAAE,GAAG,EAAE;YACtB,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAC/B,CAAC;KACJ,EACD,SAAS,CACZ,CAAA;IAED,sDAAsD;IACtD,MAAM,eAAe,GAAG;QACpB,oBAAoB,EAAE,MAAM,CAAC,iBAAiB;QAC9C,sBAAsB,EAAE,MAAM,CAAC,mBAAmB;QAClD,KAAK,EAAE,MAAM,CAAC,OAAO;KACxB,CAAA;IAED,iCAAiC;IACjC,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;IAE1D;;;OAGG;IACH,MAAM,SAAS,GAAG,GAAG,EAAE;QACnB,MAAM,MAAM,GAAqB;YAC7B,IAAI,EAAE,KAAK;YACX,kBAAkB,EAAE,EAAE;YACtB,GAAG,cAAc;SACpB,CAAA;QACD,mKAAmK;QACnK,IAAI,KAAK,CAAC,OAAO,EAAE;YACf,MAAM,CAAC,kBAAkB,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAA;SAC5D;QACD,OAAO,MAAM,CAAA;IACjB,CAAC,CAAA;IAED;;OAEG;IACH,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;QACrB,IAAI;YACA,IAAI,KAAK,CAAC,OAAO,EAAE;gBACf,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;gBACzC,OAAM;aACT;YACD,IAAI,KAAK,CAAC,OAAO,EAAE;gBACf,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;gBAC5B,OAAM;aACT;YAED,UAAU,EAAE,CAAA;YACZ,kIAAkI;YAClI,WAAW,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;YAE9B,qCAAqC;YACrC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;YAC1B,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAAE,MAAM,CAAC,CAAA;YAExD,8CAA8C;YAC9C,MAAM,IAAA,aAAK,EAAC,GAAG,CAAC,CAAA;YAEhB,kCAAkC;YAClC,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAA;YAEnC,sEAAsE;YACtE,gCAAgC;YAChC,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAA;YACrC,8FAA8F;YAC9F,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,uBAAuB,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;YAExF,IAAI,eAAe,EAAE;gBACjB,WAAW,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;gBAC9C,MAAM,CAAC,OAAO,CAAC;oBACX,kBAAkB,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO;iBAC9C,CAAC,CAAA;gBACF,OAAM;aACT;YAED,sFAAsF;YACtF,MAAM,sBAAsB,GAAG,iBAAO,CAAC,cAAc,EAAE,CAAA;YACvD,IAAI,WAAwB,CAAA;YAC5B,IAAI,sBAAsB,EAAE;gBACxB,WAAW,GAAG,MAAM,eAAe,CAAC,sBAAsB,CAAC,CAAA;gBAE3D,iIAAiI;gBACjI,uDAAuD;gBACvD,IAAI;oBACA,MAAM,sBAAsB,GAAG,MAAM,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;oBACxF,IAAI,sBAAsB,CAAC,gBAAgB,EAAE;wBACzC,WAAW,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;wBAC9C,MAAM,CAAC,OAAO,CAAC;4BACX,WAAW,EAAE,sBAAsB;4BACnC,kBAAkB,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO;4BAC3C,YAAY,EAAE,sBAAsB,CAAC,YAAY;yBACpD,CAAC,CAAA;wBACF,OAAM;qBACT;iBACJ;gBAAC,OAAO,GAAG,EAAE;oBACV,8FAA8F;oBAC9F,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,sBAAsB,CAAC,CAAA;oBAC/E,iDAAiD;iBACpD;aACJ;YAED,wBAAwB;YACxB,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAA;YACnD,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;YACjC,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAA;YACnD,4BAA4B;YAC5B,WAAW,GAAG,MAAM,eAAe,CAAC,WAAW,CAAC,CAAA;YAChD,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;YACvC,oDAAoD;YACpD,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;YACxE,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;YACrC,MAAM,SAAS,GAAuB,MAAM,UAAU,CAAC,mBAAmB,EAAE,CAAA;YAE5E,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;gBAChC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;aACxD;YAED,kCAAkC;YAClC,WAAW,CAAC;gBACR,KAAK,EAAE,CAAC;gBACR,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;gBAC3C,SAAS;gBACT,SAAS,EAAE,IAAI;aAClB,CAAC,CAAA;SACL;QAAC,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAClB,gCAAgC;YAChC,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAA;YAChE,KAAK,CAAC,GAAG,CAAC,CAAA;YACV,kDAAkD;YAClD,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;SACpE;IACL,CAAC,CAAA;IAED,MAAM,kBAAkB,GAAG,KAAK,EAAE,QAAyB,EAAE,EAAE;QAC3D,MAAM,QAAQ,GAAkC,MAAM,QAAQ,CAAC,iBAAiB,EAAE,CAAA;QAClF,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAA;QAC5C,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE;YACrE,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAA;SACpE;QACD,QAAQ,CAAC,QAAQ,CAAC,aAAa,GAAG,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;QAClF,+MAA+M;QAC/M,iBAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;QACvD,OAAO,QAAQ,CAAA;IACnB,CAAC,CAAA;IAED,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;QACtB,IAAI;YACA,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;YACnC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;aACvD;YAED,sDAAsD;YACtD,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;YAEjC,MAAM,SAAS,GAAuB,KAAK,CAAC,SAAS,CAAA;YACrD,MAAM,IAAI,GAAG,IAAA,yBAAW,GAAE,CAAA;YAE1B,mDAAmD;YACnD,MAAM,eAAe,GAAsB,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;gBACvF,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;gBACvC,OAAO;oBACH,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS;oBACpC,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,gBAAgB;oBAClD,IAAI;oBACJ,QAAQ;iBACX,CAAA;YACL,CAAC,CAAC,CAAA;YAEF,MAAM,OAAO,GAAG,UAAU,EAAE,CAAA;YAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAA;YACvC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE;gBAC1C,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;aACpD;YACD,MAAM,UAAU,GAAG,aAAa,EAAE,CAAA;YAElC,sCAAsC;YACtC,MAAM,UAAU,GAAyB,MAAM,UAAU,CAAC,qBAAqB,CAC3E,MAAM,EACN,SAAS,CAAC,WAAW,EACrB,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EACvC,eAAe,EACf,IAAI,CACP,CAAA;YAED,qDAAqD;YACrD,WAAW,CAAC;gBACR,UAAU;gBACV,iDAAiD;gBACjD,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,gBAAgB;gBACvC,OAAO,EAAE,KAAK;aACjB,CAAC,CAAA;YACF,IAAI,KAAK,CAAC,OAAO,EAAE;gBACf,MAAM,CAAC,OAAO,CAAC;oBACX,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa;oBACvD,kBAAkB,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO;oBAC3C,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;iBAC9B,CAAC,CAAA;aACL;SACJ;QAAC,OAAO,GAAG,EAAE;YACV,gCAAgC;YAChC,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAA;YAChE,KAAK,CAAC,GAAG,CAAC,CAAA;YACV,kDAAkD;YAClD,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;SACpE;IACL,CAAC,CAAA;IAED,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;QACtB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACrB,8BAA8B;QAC9B,UAAU,EAAE,CAAA;IAChB,CAAC,CAAA;IAED;;;OAGG;IACH,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE;QAC5B,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;SACvD;QACD,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE;YACnE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;SAC7D;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;QACzB,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAA;QACjC,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;QACjC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACzB,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAA;YAChC,oCAAoC;YACpC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;SAC7C;aAAM;YACH,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;YAC9B,+BAA+B;YAC/B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;SACtB;QACD,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;IAC9B,CAAC,CAAA;IAED;;OAEG;IACH,MAAM,SAAS,GAAG,GAAG,EAAE;QACnB,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;SACtE;QACD,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE;YACpD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAA;SACzE;QACD,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;QACvC,WAAW,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAA;IAC3C,CAAC,CAAA;IAED,MAAM,cAAc,GAAG,KAAK,EACxB,QAAyB,EACzB,QAAuC,EACvC,WAAwB,EAC1B,EAAE;QACA,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;QAC1B,iDAAiD;QACjD,MAAM,UAAU,GAAG,IAAI,2BAAiB,CACpC,UAAU,EAAE,CAAC,OAAO,CAAC,OAAO,EAC5B,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,MAAM,CAAC,IAAI,CACd,CAAA;QAED,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,CAAA;QAE3B,OAAO,aAAa,EAAE,CAAA;IAC1B,CAAC,CAAA;IAED,MAAM,eAAe,GAAG,KAAK,EAAE,WAAmB,EAAE,EAAE;QAClD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;QAC1B,MAAM,WAAW,GAAG,IAAI,iBAAW,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;QAChE,OAAO,WAAW,CAAA;IACtB,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,GAAG,EAAE;QACpB,WAAW,CAAC,IAAA,oBAAY,GAAE,CAAC,CAAA;IAC/B,CAAC,CAAA;IAED,MAAM,aAAa,GAAG,GAAG,EAAE;QACvB,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;SACzC;QACD,OAAO,KAAK,CAAC,UAAU,CAAA;IAC3B,CAAC,CAAA;IAED;;OAEG;IACH,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE;QAC3B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;QAC1B,6EAA6E;QAC7E,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE;YAC5C,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;SACpE;QAED,uCAAuC;QACvC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,uBAAa,EAAE,CAAC,CAAC,CAAC,IAAI,uBAAa,EAAE,CAAA;QACnE,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;QAE5C,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAA;QACtC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;QAExB,OAAO,UAAU,EAAE,CAAA;IACvB,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,GAAG,EAAE;QACpB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;SACxC;QACD,MAAM,OAAO,GAAY,KAAK,CAAC,OAAO,CAAA;QACtC,OAAO,OAAO,CAAA;IAClB,CAAC,CAAA;IAED;;OAEG;IACH,MAAM,YAAY,GAAG,KAAK,IAAI,EAAE;QAC5B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;QAC1B,MAAM,QAAQ,GAAoB,MAAM,yBAAe,CAAC,MAAM,CAC1D,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EACtC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EACnC,UAAU,EAAE,CAAC,OAAO,CAAC,OAAO,EAC5B,IAAI,yBAAU,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAC1C,CAAA;QAED,OAAO,QAAQ,CAAA;IACnB,CAAC,CAAA;IAED,OAAO;QACH,KAAK;QACL,MAAM;QACN,MAAM;QACN,MAAM;QACN,SAAS;KACZ,CAAA;AACL,CAAC,CAAA;AAzWY,QAAA,OAAO,WAyWnB;AAED,MAAM,eAAe,GAAG,CAAC,GAAW,EAAE,EAAE;IACpC,OAAO,IAAA,kBAAW,EAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;AAC9C,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"Manager.js","sourceRoot":"","sources":["../../src/modules/Manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,20 @@
|
|
|
1
|
-
import { CaptchaSolution } from '@prosopo/
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { CaptchaSolution } from '@prosopo/types';
|
|
2
|
+
import { GetCaptchaResponse } from '../types/api';
|
|
3
|
+
import { ProsopoCaptchaContract } from '@prosopo/contract';
|
|
4
4
|
import { ProviderApi } from '@prosopo/api';
|
|
5
|
-
import
|
|
5
|
+
import { RandomProvider } from '@prosopo/types';
|
|
6
|
+
import { Signer } from '@polkadot/api/types';
|
|
6
7
|
import { TCaptchaSubmitResult } from '../types/client';
|
|
7
8
|
export declare class ProsopoCaptchaApi {
|
|
8
9
|
userAccount: string;
|
|
9
|
-
contract:
|
|
10
|
-
provider:
|
|
10
|
+
contract: ProsopoCaptchaContract;
|
|
11
|
+
provider: RandomProvider;
|
|
11
12
|
providerApi: ProviderApi;
|
|
13
|
+
dappAccount: string;
|
|
12
14
|
private web2;
|
|
13
|
-
constructor(userAccount: string, contract:
|
|
15
|
+
constructor(userAccount: string, contract: ProsopoCaptchaContract, provider: RandomProvider, providerApi: ProviderApi, web2: boolean, dappAccount: string);
|
|
14
16
|
getCaptchaChallenge(): Promise<GetCaptchaResponse>;
|
|
15
|
-
verifyCaptchaChallengeContent(provider:
|
|
17
|
+
verifyCaptchaChallengeContent(provider: RandomProvider, captchaChallenge: GetCaptchaResponse): void;
|
|
16
18
|
submitCaptchaSolution(signer: Signer, requestHash: string, datasetId: string, solutions: CaptchaSolution[], salt: string): Promise<TCaptchaSubmitResult>;
|
|
17
19
|
}
|
|
18
20
|
export default ProsopoCaptchaApi;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProsopoCaptchaApi.d.ts","sourceRoot":"","sources":["../../src/modules/ProsopoCaptchaApi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProsopoCaptchaApi.d.ts","sourceRoot":"","sources":["../../src/modules/ProsopoCaptchaApi.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,eAAe,EAAoB,MAAM,gBAAgB,CAAA;AAClE,OAAO,EAA2B,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAG1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAGtD,qBAAa,iBAAiB;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,sBAAsB,CAAA;IAChC,QAAQ,EAAE,cAAc,CAAA;IACxB,WAAW,EAAE,WAAW,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,IAAI,CAAS;gBAGjB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,sBAAsB,EAChC,QAAQ,EAAE,cAAc,EACxB,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,OAAO,EACb,WAAW,EAAE,MAAM;IAUV,mBAAmB,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAUxD,6BAA6B,CAAC,QAAQ,EAAE,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,GAAG,IAAI;IAuB7F,qBAAqB,CAC9B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,eAAe,EAAE,EAC5B,IAAI,EAAE,MAAM,GACb,OAAO,CAAC,oBAAoB,CAAC;CA0CnC;AA4BD,eAAe,iBAAiB,CAAA"}
|
|
@@ -18,41 +18,47 @@ exports.ProsopoCaptchaApi = void 0;
|
|
|
18
18
|
// along with procaptcha. If not, see <http://www.gnu.org/licenses/>.
|
|
19
19
|
const datasets_1 = require("@prosopo/datasets");
|
|
20
20
|
const handlers_1 = require("../api/handlers");
|
|
21
|
-
const
|
|
22
|
-
const
|
|
21
|
+
const common_1 = require("@prosopo/common");
|
|
22
|
+
const util_1 = require("@polkadot/util");
|
|
23
23
|
class ProsopoCaptchaApi {
|
|
24
24
|
userAccount;
|
|
25
25
|
contract;
|
|
26
26
|
provider;
|
|
27
27
|
providerApi;
|
|
28
|
+
dappAccount;
|
|
28
29
|
web2;
|
|
29
|
-
constructor(userAccount, contract, provider, providerApi, web2) {
|
|
30
|
+
constructor(userAccount, contract, provider, providerApi, web2, dappAccount) {
|
|
30
31
|
this.userAccount = userAccount;
|
|
31
32
|
this.contract = contract;
|
|
32
33
|
this.provider = provider;
|
|
33
34
|
this.providerApi = providerApi;
|
|
34
35
|
this.web2 = web2;
|
|
36
|
+
this.dappAccount = dappAccount;
|
|
35
37
|
}
|
|
36
38
|
async getCaptchaChallenge() {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
39
|
+
try {
|
|
40
|
+
const captchaChallenge = await this.providerApi.getCaptchaChallenge(this.userAccount, this.provider);
|
|
41
|
+
this.verifyCaptchaChallengeContent(this.provider, captchaChallenge);
|
|
42
|
+
return captchaChallenge;
|
|
43
|
+
}
|
|
44
|
+
catch (e) {
|
|
45
|
+
throw new common_1.ProsopoEnvError(e);
|
|
46
|
+
}
|
|
40
47
|
}
|
|
41
48
|
verifyCaptchaChallengeContent(provider, captchaChallenge) {
|
|
42
49
|
// TODO make sure root is equal to root on the provider
|
|
43
50
|
const proofLength = captchaChallenge.captchas[0].proof.length;
|
|
44
51
|
console.log(provider.provider);
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
throw new datasets_2.ProsopoEnvError('CAPTCHA.INVALID_DATASET_CONTENT_ID');
|
|
52
|
+
if (provider.provider.datasetIdContent.toString() !== captchaChallenge.captchas[0].proof[proofLength - 1][0]) {
|
|
53
|
+
throw new common_1.ProsopoEnvError('CAPTCHA.INVALID_DATASET_CONTENT_ID');
|
|
48
54
|
}
|
|
49
55
|
for (const captchaWithProof of captchaChallenge.captchas) {
|
|
50
56
|
//TODO calculate the captchaId from the captcha content
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
57
|
+
if (!verifyCaptchaData(captchaWithProof)) {
|
|
58
|
+
throw new common_1.ProsopoEnvError('CAPTCHA.INVALID_CAPTCHA_CHALLENGE');
|
|
59
|
+
}
|
|
54
60
|
if (!(0, datasets_1.verifyProof)(captchaWithProof.captcha.captchaContentId, captchaWithProof.proof)) {
|
|
55
|
-
throw new
|
|
61
|
+
throw new common_1.ProsopoEnvError('CAPTCHA.INVALID_CAPTCHA_CHALLENGE');
|
|
56
62
|
}
|
|
57
63
|
}
|
|
58
64
|
console.log('CAPTCHA.CHALLENGE_VERIFIED');
|
|
@@ -60,41 +66,55 @@ class ProsopoCaptchaApi {
|
|
|
60
66
|
}
|
|
61
67
|
async submitCaptchaSolution(signer, requestHash, datasetId, solutions, salt) {
|
|
62
68
|
const tree = new datasets_1.CaptchaMerkleTree();
|
|
63
|
-
const captchasHashed = solutions.map((captcha) => (0,
|
|
69
|
+
const captchasHashed = solutions.map((captcha) => (0, datasets_1.computeCaptchaSolutionHash)(captcha));
|
|
64
70
|
tree.build(captchasHashed);
|
|
65
71
|
const commitmentId = tree.root.hash;
|
|
66
72
|
console.log('solveCaptchaChallenge commitmentId', commitmentId);
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
try {
|
|
73
|
-
tx = await this.contract.dappUserCommit(signer, datasetId, commitmentId, this.provider.providerId);
|
|
74
|
-
}
|
|
75
|
-
catch (err) {
|
|
76
|
-
throw new datasets_2.ProsopoEnvError(err);
|
|
73
|
+
const tx = undefined;
|
|
74
|
+
let signature = undefined;
|
|
75
|
+
if (this.web2) {
|
|
76
|
+
if (!signer || !signer.signRaw) {
|
|
77
|
+
throw new Error('Signer is not defined, cannot sign message to prove account ownership');
|
|
77
78
|
}
|
|
79
|
+
// sign the request hash to prove account ownership
|
|
80
|
+
const signed = await signer.signRaw({
|
|
81
|
+
address: this.userAccount,
|
|
82
|
+
data: (0, util_1.stringToHex)(requestHash),
|
|
83
|
+
type: 'bytes',
|
|
84
|
+
});
|
|
85
|
+
signature = signed.signature;
|
|
78
86
|
}
|
|
79
87
|
let result;
|
|
80
88
|
try {
|
|
81
|
-
result = await this.providerApi.submitCaptchaSolution(solutions, requestHash, this.contract.
|
|
89
|
+
result = await this.providerApi.submitCaptchaSolution(solutions, requestHash, this.contract.pair.address, salt, signature);
|
|
82
90
|
}
|
|
83
91
|
catch (err) {
|
|
84
92
|
throw new handlers_1.ProsopoApiError(err);
|
|
85
93
|
}
|
|
86
|
-
|
|
87
|
-
if (!this.web2) {
|
|
88
|
-
try {
|
|
89
|
-
commitment = await this.contract.getCaptchaSolutionCommitment(commitmentId);
|
|
90
|
-
}
|
|
91
|
-
catch (err) {
|
|
92
|
-
throw new datasets_2.ProsopoEnvError(err);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
return [result, commitmentId, tx, commitment];
|
|
94
|
+
return [result, commitmentId, tx];
|
|
96
95
|
}
|
|
97
96
|
}
|
|
98
97
|
exports.ProsopoCaptchaApi = ProsopoCaptchaApi;
|
|
98
|
+
/**
|
|
99
|
+
* Verify the captcha data by hashing the images and checking the hashes correspond to the hashes passed in the captcha
|
|
100
|
+
* Verify the captcha content id is present in the first layer of the proof
|
|
101
|
+
* @param {CaptchaWithProof} captchaWithProof
|
|
102
|
+
* @returns {boolean}
|
|
103
|
+
*/
|
|
104
|
+
async function verifyCaptchaData(captchaWithProof) {
|
|
105
|
+
const captcha = captchaWithProof.captcha;
|
|
106
|
+
const proof = captchaWithProof.proof;
|
|
107
|
+
// Check that all the item hashes are equal to the provided item hashes in the captcha
|
|
108
|
+
if (!(await Promise.all(captcha.items.map(async (item) => (await (0, datasets_1.computeItemHash)(item)).hash === item.hash))).every((hash) => hash === true)) {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
// Check that the computed captcha content id is equal to the provided captcha content id
|
|
112
|
+
const captchaHash = (0, datasets_1.computeCaptchaHash)(captcha, false, false, false);
|
|
113
|
+
if (captchaHash !== captcha.captchaContentId) {
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
// Check that the captcha content id is present in the first layer of the proof
|
|
117
|
+
return proof[0].indexOf(captchaHash) !== -1;
|
|
118
|
+
}
|
|
99
119
|
exports.default = ProsopoCaptchaApi;
|
|
100
120
|
//# sourceMappingURL=ProsopoCaptchaApi.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProsopoCaptchaApi.js","sourceRoot":"","sources":["../../src/modules/ProsopoCaptchaApi.ts"],"names":[],"mappings":";;;AAAA,4CAA4C;AAC5C,2EAA2E;AAC3E,EAAE;AACF,qEAAqE;AACrE,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,gEAAgE;AAChE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,sEAAsE;AACtE,
|
|
1
|
+
{"version":3,"file":"ProsopoCaptchaApi.js","sourceRoot":"","sources":["../../src/modules/ProsopoCaptchaApi.ts"],"names":[],"mappings":"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"}
|
package/dist/modules/canvas.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.picassoCanvas = void 0;
|
|
4
|
-
const
|
|
4
|
+
const common_1 = require("@prosopo/common");
|
|
5
5
|
function x64Add(m, n) {
|
|
6
6
|
m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff];
|
|
7
7
|
n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff];
|
|
@@ -342,7 +342,7 @@ function picassoCanvas(roundNumber, seed, params) {
|
|
|
342
342
|
}
|
|
343
343
|
catch (e) {
|
|
344
344
|
console.log(e);
|
|
345
|
-
throw new
|
|
345
|
+
throw new common_1.ProsopoEnvError(e);
|
|
346
346
|
}
|
|
347
347
|
}
|
|
348
348
|
exports.picassoCanvas = picassoCanvas;
|