hekate-rsa
Copyright (c) 2026 Andrei Kochergin and Oumuamua Labs.
RSA-2048 PKCS#1 v1.5 signature verification in zero knowledge for Hekate, the Rust
zero-knowledge proof engine. Pkcs1Statement proves s^65537 mod N == PKCS1-v1_5(H) for a 2048-bit modulus, H
chained over committed block words with FIPS 180-4 §5.1.1 padding left to the caller. N is public, the signature
and the message are witness.
The host table chains SHA-256 one block per row and requests two chiplets over the LogUp bus: modexp from
hekate-gadgets and the compression function from hekate-sha2.
⚠️ Security Warning
This crate has not been independently audited and may contain bugs and security flaws.
Usage
A PKCS#1 v1.5 statement for one RSA-2048 signature over message:
use Config;
use errors;
use ColumnTrace;
use Block128;
use ;
use Pkcs1Statement;
use ;
type F = Block128;
modulus and signature are 64 little-endian 32-bit limbs, and instance publishes the modulus. The prover takes
statement.program(), instance and witness; the verifier takes the program and instance.
rsa_pkcs1.rs runs RSA-2048 with
SHA-256 end to end.
Documentation
- RSA-2048 PKCS#1 v1.5 Verification: what the proof states, how the tables split the work, and proving time, proof size and memory
- SHA-256: the chiplet that hashes the message
- API reference
License
AGPL-3.0-only. See LICENSE and NOTICE. Commercial licenses are available from Oumuamua Labs info@oumuamua.dev.