/* * mCaptcha is a PoW based DoS protection software. * This is the frontend web component of the mCaptcha system * Copyright © 2021 Aravinth Manivnanan . * * Use of this source code is governed by Apache 2.0 or MIT license. * You shoud have received a copy of MIT and Apache 2.0 along with * this program. If not, see for * MIT or for Apache. */ import {gen_pow} from 'mcaptcha-browser'; import {PoWConfig} from './fetchPoWConfig'; import * as CONST from './const'; export type Work = { result: string; nonce: number; string: string; key: string; }; type WasmWork = { result: string; nonce: number; }; /** * proove work * @param {PoWConfig} config - the proof-of-work configuration using which * work needs to be computed * */ const prove = async (config: PoWConfig) => { try { const proofString = gen_pow( config.salt, config.string, config.difficulty_factor, ); const proof: WasmWork = JSON.parse(proofString); const res: Work = { key: CONST.sitekey(), string: config.string, nonce: proof.nonce, result: proof.result, }; return res; } catch (err) { throw err; } }; export default prove;