Make ethereum-schnorr-contract no-std and no-alloc eligible

This commit is contained in:
Luke Parker
2025-11-13 05:44:52 -05:00
parent 9e13e5ebff
commit 3cdc1536c5
6 changed files with 21 additions and 6 deletions

View File

@@ -16,10 +16,12 @@ rustdoc-args = ["--cfg", "docsrs"]
workspace = true workspace = true
[dependencies] [dependencies]
subtle = { version = "2", default-features = false, features = ["std"] } std-shims = { path = "../../../common/std-shims", version = "0.1", default-features = false }
sha3 = { version = "0.10", default-features = false, features = ["std"] }
group = { version = "0.13", default-features = false, features = ["alloc"] } subtle = { version = "2", default-features = false }
k256 = { version = "^0.13.1", default-features = false, features = ["std", "arithmetic"] } sha3 = { version = "0.10", default-features = false }
group = { version = "0.13", default-features = false }
k256 = { version = "^0.13.1", default-features = false, features = ["arithmetic"] }
[build-dependencies] [build-dependencies]
build-solidity-contracts = { path = "../build-contracts", version = "0.1" } build-solidity-contracts = { path = "../build-contracts", version = "0.1" }
@@ -40,3 +42,8 @@ alloy-provider = { version = "1", default-features = false }
alloy-node-bindings = { version = "1", default-features = false } alloy-node-bindings = { version = "1", default-features = false }
tokio = { version = "1", default-features = false, features = ["macros"] } tokio = { version = "1", default-features = false, features = ["macros"] }
[features]
alloc = ["std-shims/alloc", "group/alloc"]
std = ["alloc", "std-shims/std", "subtle/std", "sha3/std", "k256/std"]
default = ["std"]

View File

@@ -2,6 +2,7 @@
#![doc = include_str!("../README.md")] #![doc = include_str!("../README.md")]
#![deny(missing_docs)] #![deny(missing_docs)]
#![allow(non_snake_case)] #![allow(non_snake_case)]
#![cfg_attr(not(feature = "std"), no_std)]
mod public_key; mod public_key;
pub use public_key::PublicKey; pub use public_key::PublicKey;

View File

@@ -1,4 +1,4 @@
use std::io; use std_shims::io;
use sha3::{Digest, Keccak256}; use sha3::{Digest, Keccak256};
@@ -77,6 +77,7 @@ impl Signature {
} }
/// Write the signature. /// Write the signature.
#[cfg(feature = "alloc")]
pub fn write(&self, writer: &mut impl io::Write) -> io::Result<()> { pub fn write(&self, writer: &mut impl io::Write) -> io::Result<()> {
writer.write_all(&self.to_bytes()) writer.write_all(&self.to_bytes())
} }

View File

@@ -35,7 +35,7 @@ alloy-provider = { version = "1", default-features = false }
revm = { version = "33", default-features = false } revm = { version = "33", default-features = false }
ethereum-schnorr = { package = "ethereum-schnorr-contract", path = "../../../networks/ethereum/schnorr", default-features = false } ethereum-schnorr = { package = "ethereum-schnorr-contract", path = "../../../networks/ethereum/schnorr", default-features = false, features = ["std"] }
ethereum-primitives = { package = "serai-processor-ethereum-primitives", path = "../primitives", default-features = false } ethereum-primitives = { package = "serai-processor-ethereum-primitives", path = "../primitives", default-features = false }
ethereum-deployer = { package = "serai-processor-ethereum-deployer", path = "../deployer", default-features = false } ethereum-deployer = { package = "serai-processor-ethereum-deployer", path = "../deployer", default-features = false }

View File

@@ -46,6 +46,8 @@ frost-schnorrkel = { path = "../../crypto/schnorrkel", default-features = false,
bitcoin-serai = { path = "../../networks/bitcoin", default-features = false, features = ["hazmat"], optional = true } bitcoin-serai = { path = "../../networks/bitcoin", default-features = false, features = ["hazmat"], optional = true }
ethereum-schnorr-contract = { path = "../../networks/ethereum/schnorr", default-features = false }
[features] [features]
alloc = [ alloc = [
"std-shims/alloc", "std-shims/alloc",
@@ -75,4 +77,6 @@ alloc = [
"frost-schnorrkel", "frost-schnorrkel",
"bitcoin-serai", "bitcoin-serai",
"ethereum-schnorr-contract/alloc",
] ]

View File

@@ -16,6 +16,8 @@ pub use embedwards25519;
pub use schnorr_signatures; pub use schnorr_signatures;
pub use ethereum_schnorr_contract;
#[cfg(feature = "alloc")] #[cfg(feature = "alloc")]
pub mod alloc { pub mod alloc {
pub use multiexp; pub use multiexp;