mfaulk / schnorr-sig

A custom Schnorr signature scheme using Rescue-Prime hash internally for fast verification in zk-STARK statements.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Schnorr-sig

This crate provides an implementation of a modified version of the Schnorr signature protocol, for efficient verification in a STARK AIR program. The underlying curve is a custom curve, Cheetah, based on a sextic extension of the the Prime Field Fp with p = 264 - 232 + 1, and curve equation E(Fp): y2 = x3 + x + B, with B = u + 395 where

  • u^6 - 7 = 0 is the polynomial defining the sextic extension Fp6 over Fp. and implemented here.

  • This implementation may not rely on the Rust standard library by relying on the alloc crate instead.

WARNING: This is an ongoing, prototype implementation subject to changes. In particular, it has not been audited and may contain bugs and security flaws. This implementation is NOT ready for production use.

Features

  • serialize (on by default): Enables Serde serialization
  • std (on by default): Enables the Rust standard library

Description

See :

  • here for an introduction to Schnorr signatures,
  • here for the implementation of the underlying fields and elliptic curve,
  • here for the implementation of the internal Rescue hash function.

License

Licensed under either of

at your option.

About

A custom Schnorr signature scheme using Rescue-Prime hash internally for fast verification in zk-STARK statements.

License:Apache License 2.0


Languages

Language:Rust 100.0%