0.0.1 • Published 29 days ago

o1js-rsa v0.0.1

Weekly downloads
-
License
Apache-2.0
Repository
-
Last release
29 days ago

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

  1. Install the package
npm install o1js-rsa
  1. Import the Bigint2048 provable type and the rsaVerify65537 function
import { Bigint2048, rsaVerify65537 } from 'o1js-rsa';
  1. Given a message, signature, and modulus 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 the x*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 rows12401
RangeCheck02488
Generic9913

ActionTime (s)
Compile2.103
Prove14.656
Verify1.187

License

Apache-2.0