website/content/docs/API/browser.md
2022-08-01 20:24:18 +05:30

54 lines
1.7 KiB
Markdown

---
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.