o1js-rsa
v0.0.1
Published
This repository exposes the API from the [o1js RSA example](https://github.com/o1-labs/o1js/tree/main/src/examples/crypto/rsa), making it importable and enabling RSA65537 signature verification on the Mina blockchain across various projects that utilize [
Downloads
3
Maintainers
Readme
O1JS VERIFY RSA65537
This repository exposes the API from the o1js RSA example, making it importable and enabling RSA65537 signature verification on the Mina blockchain across various projects that utilize o1js.
For more details on the source code, please review PR #1229.
How to use the package
- Install the package
npm install o1js-rsa
- Import the
Bigint2048
provable type and thersaVerify65537
function
import { Bigint2048, rsaVerify65537 } from 'o1js-rsa';
- Given a
message
,signature
, andmodulus
you can verify an RSA65537 signature in o1js as follows:
const message = Bigint2048.from(msg);
const signature = Bigint2048.from(sig);
const modulus = Bigint2048.from(pubKey); // domain public key
rsaVerify65537(message, signature, modulus);
Please refer to rsaZkProgram or this test-case for better context on how to use the package API.
Notes
The
Bigint2048.from()
static method takes native bigint type inputs.The provable type
Bigint2048
is a combination of 18 limbs, with each limb being a 116-bit field element. Therefore, it will only throw an overflow error if the input size exceeds 2088 bits.The
Bigint2048
provable type only supports thex*y mod p
operation, but not other operations like addition, division, etc.Please ensure to input the correct RSA parameters in order to receive an intuitive response from the
rsaVerify65537
function.For concise information on RSA theory, visit this link.
How to build
npm run build
How to run tests
npm run test
npm run testw # watch mode
How to run coverage
npm run coverage
How to benchmark
npm run summary
Preview
| Summary | | | ----------- | ----- | | Total rows | 12401 | | RangeCheck0 | 2488 | | Generic | 9913 |
| Action | Time (s) | | ------- | -------- | | Compile | 2.103 | | Prove | 14.656 | | Verify | 1.187 |