--- title: "Browser libraries" description: "API documenttion for mCaptcha WASM library" lead: "" date: 2021-03-11 lastmod: 2021-03-11 10:27 draft: false images: [] menu: docs: parent: "API" weight: 551 toc: true --- The browser part of mCaptcha is divided into three components. - Glue code - Widget program - Proof-of-Work libraries(WebAssembly and JavaScript polyfill) ## Glue code This is the code that links mCaptcha with your website's frontend code. It creates an `iframe` containing the mCaptcha widget and injects the received verification proof token into a hidden input field. Support is available for various frameworks, see [`mCaptcha/glue`](https://github.com/mCaptcha/glue) for the full list. For frameworks without official support, a low-level library, [`@mcaptcha/core-glue`](https://www.npmjs.com/package/@mcaptcha/core-glue), can be used to implement support. ## Widget Program This part is served by the mCaptcha backend. It fetches PoW config from the backend, generates proof and submits it for verification. If verification is successful, it sends a message containing the verification proof token to the parent window, assuming it's loaded as an `iframe`. - Source code: [`mCaptcha/mCaptcha/templates/widget`](https://github.com/mCaptcha/mCaptcha/tree/master/templates/widget) WebAssembly library which generates Proofs of Work for mCaptcha systems. ## Proof-of-Work(PoW) library WebAssembly bindings([`mCaptcha/pow_wasm`](https://github.com/mCaptcha/pow_wasm)) are available for the main rust library([`mCaptcha/pow_sha256`](https://github.com/mCaptcha/pow_sha256)). For browsers without support WebAssembly, a polyfill([`pow_sha256-polyfill`](https://github.com/mCaptcha/pow_sha256-polyfill)) is available.