From 4b2fa503ce64374d9f686222c1ea6930d9108515 Mon Sep 17 00:00:00 2001 From: LLFourn Date: Mon, 19 Feb 2024 10:44:57 +1100 Subject: [PATCH 1/6] Prepare secp256kfun_arithmetic_macros for release --- arithmetic_macros/Cargo.toml | 2 +- arithmetic_macros/README.md | 3 +++ arithmetic_macros/src/lib.rs | 8 ++++++++ secp256kfun/Cargo.toml | 2 +- 4 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 arithmetic_macros/README.md diff --git a/arithmetic_macros/Cargo.toml b/arithmetic_macros/Cargo.toml index 2ca5baf7..1578e7dc 100644 --- a/arithmetic_macros/Cargo.toml +++ b/arithmetic_macros/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "secp256kfun_arithmetic_macros" -version = "0.9.0" +version = "0.1.0" edition = "2021" [lib] diff --git a/arithmetic_macros/README.md b/arithmetic_macros/README.md new file mode 100644 index 00000000..12649707 --- /dev/null +++ b/arithmetic_macros/README.md @@ -0,0 +1,3 @@ +# secp256kfun arithmetic macros + +Helper crate to define the `g!` and `s!` arithmetic macros. diff --git a/arithmetic_macros/src/lib.rs b/arithmetic_macros/src/lib.rs index 0114f94a..7abca7ed 100644 --- a/arithmetic_macros/src/lib.rs +++ b/arithmetic_macros/src/lib.rs @@ -1,3 +1,9 @@ +//! +#![cfg_attr(docsrs, feature(doc_cfg))] +#![allow(non_snake_case)] +#![doc = include_str!("../README.md")] +#![warn(missing_docs)] + mod optree; use optree::{Infix, InfixKind, Node, OpTree}; use proc_macro::TokenStream; @@ -7,6 +13,7 @@ use std::iter::Peekable; type Input = Peekable; #[proc_macro] +/// Helper to generate the `s!` macro pub fn gen_s(input: TokenStream) -> TokenStream { let input: proc_macro2::TokenStream = input.into(); let mut iter = input.into_iter().peekable(); @@ -76,6 +83,7 @@ fn compile_s(path: &Ident, node: Node) -> proc_macro2::TokenStream { } #[proc_macro] +/// Helper to generate the `g!` macro pub fn gen_g(input: TokenStream) -> TokenStream { let input: proc_macro2::TokenStream = input.into(); let mut iter = input.into_iter().peekable(); diff --git a/secp256kfun/Cargo.toml b/secp256kfun/Cargo.toml index 6da40e9e..4dfa144d 100644 --- a/secp256kfun/Cargo.toml +++ b/secp256kfun/Cargo.toml @@ -18,7 +18,7 @@ keywords = ["bitcoin", "secp256k1"] digest = { version = "0.10", default-features = false } subtle = { package = "subtle-ng", version = "2", default-features = false } rand_core = { version = "0.6", default-features = false } -secp256kfun_arithmetic_macros = { version = "0.9.0", path = "../arithmetic_macros" } +secp256kfun_arithmetic_macros = { version = "0.1.0", path = "../arithmetic_macros" } # optional serde = { version = "1.0", optional = true, default-features = false, features = ["derive"] } From df839de5f30d6e6d2b4462884fe5f94aac029804 Mon Sep 17 00:00:00 2001 From: LLFourn Date: Mon, 19 Feb 2024 10:45:24 +1100 Subject: [PATCH 2/6] Bump versions to v0.10.0 --- CHANGELOG.md | 2 +- ecdsa_fun/Cargo.toml | 4 ++-- ecdsa_fun/README.md | 2 +- schnorr_fun/Cargo.toml | 6 +++--- schnorr_fun/README.md | 2 +- secp256kfun/Cargo.toml | 2 +- secp256kfun/README.md | 2 +- sigma_fun/Cargo.toml | 4 ++-- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 60009414..0a4027e7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ # CHANGELOG -## Unreleased +## v0.10.0 - Change `Scalar::from_bytes` to work for `Scalar<_, NonZero>` as well. - Updated compatibility to `rust-secp256k1` v0.28.0 diff --git a/ecdsa_fun/Cargo.toml b/ecdsa_fun/Cargo.toml index 97e109ec..975363e0 100644 --- a/ecdsa_fun/Cargo.toml +++ b/ecdsa_fun/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ecdsa_fun" -version = "0.9.0" +version = "0.10.0" authors = ["LLFourn "] edition = "2021" rust-version = "1.63" @@ -14,7 +14,7 @@ categories = ["cryptography", "cryptography::cryptocurrencies"] keywords = ["bitcoin", "ecdsa", "secp256k1"] [dependencies] -secp256kfun = { path = "../secp256kfun", version = "0.9", default-features = false } +secp256kfun = { path = "../secp256kfun", version = "0.10", default-features = false } sigma_fun = { path = "../sigma_fun", version = "0.6", features = ["secp256k1"], default-features = false, optional = true } rand_chacha = { version = "0.3", optional = true } # needed for adaptor signatures atm but would be nice to get rid of bincode = { version = "1.0", optional = true } diff --git a/ecdsa_fun/README.md b/ecdsa_fun/README.md index f1c6af2f..c656f341 100644 --- a/ecdsa_fun/README.md +++ b/ecdsa_fun/README.md @@ -12,7 +12,7 @@ Built on [secp256kfun]. ``` toml [dependencies] -ecdsa_fun = "0.9" +ecdsa_fun = "0.10" sha2 = "0.10" # You need a hash function for nonce derivation ``` diff --git a/schnorr_fun/Cargo.toml b/schnorr_fun/Cargo.toml index 198ab9b6..76699103 100644 --- a/schnorr_fun/Cargo.toml +++ b/schnorr_fun/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "schnorr_fun" -version = "0.9.1" +version = "0.10.0" authors = ["LLFourn "] edition = "2021" rust-version = "1.63" @@ -14,11 +14,11 @@ categories = ["cryptography", "cryptography::cryptocurrencies"] keywords = ["bitcoin", "schnorr"] [dependencies] -secp256kfun = { path = "../secp256kfun", version = "0.9", default-features = false } +secp256kfun = { path = "../secp256kfun", version = "0.10", default-features = false } bech32 = { version = "0.9", optional = true, default-features = false } [dev-dependencies] -secp256kfun = { path = "../secp256kfun", version = "0.9", features = ["proptest"] } +secp256kfun = { path = "../secp256kfun", version = "0.10", features = ["proptest"] } rand = { version = "0.8" } lazy_static = "1.4" bincode = "1.0" diff --git a/schnorr_fun/README.md b/schnorr_fun/README.md index 26ef319f..f702c218 100644 --- a/schnorr_fun/README.md +++ b/schnorr_fun/README.md @@ -15,7 +15,7 @@ This implementation is based on the [BIP-340] specification, but is flexible eno ``` toml [dependencies] -schnorr_fun = "0.9" +schnorr_fun = "0.10" sha2 = "0.10" ``` diff --git a/secp256kfun/Cargo.toml b/secp256kfun/Cargo.toml index 4dfa144d..0cb3de4a 100644 --- a/secp256kfun/Cargo.toml +++ b/secp256kfun/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "secp256kfun" -version = "0.9.1" +version = "0.10.0" authors = ["LLFourn "] license = "0BSD" homepage = "https://github.com/LLFourn/secp256kfun" diff --git a/secp256kfun/README.md b/secp256kfun/README.md index 94b608bc..e5bc9b4d 100644 --- a/secp256kfun/README.md +++ b/secp256kfun/README.md @@ -28,7 +28,7 @@ _Low-level_ libraries like [parity/libsecp256k1][4] make it possible but the res ```toml [dependencies] -secp256kfun = "0.9" +secp256kfun = "0.10" ``` ### Should use? diff --git a/sigma_fun/Cargo.toml b/sigma_fun/Cargo.toml index 1db3a6bc..5083ddfc 100644 --- a/sigma_fun/Cargo.toml +++ b/sigma_fun/Cargo.toml @@ -16,13 +16,13 @@ readme = "README.md" [dependencies] generic-array = "0.14" digest = "0.10" -secp256kfun = { path = "../secp256kfun", version = "0.9", default-features = false, optional = true } +secp256kfun = { path = "../secp256kfun", version = "0.10", default-features = false, optional = true } curve25519-dalek = { package = "curve25519-dalek-ng", version = "4", default-features = false, optional = true, features = ["u64_backend"] } serde = { package = "serde", version = "1.0", optional = true, default-features = false, features = ["derive"] } rand_core = "0.6" [dev-dependencies] -secp256kfun = { path = "../secp256kfun", version = "0.9", default-features = false, features = ["proptest"] } +secp256kfun = { path = "../secp256kfun", version = "0.10", default-features = false, features = ["proptest"] } rand = "0.8" sha2 = "0.10" bincode = "1" From c93d65076154f6b09e4a982e6604894b605c3220 Mon Sep 17 00:00:00 2001 From: LLFourn Date: Mon, 19 Feb 2024 13:10:21 +1100 Subject: [PATCH 3/6] [frost] mention `share_backup` in README --- schnorr_fun/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/schnorr_fun/README.md b/schnorr_fun/README.md index f702c218..1756ae46 100644 --- a/schnorr_fun/README.md +++ b/schnorr_fun/README.md @@ -60,6 +60,7 @@ assert!(schnorr.verify(&verification_key, message, &signature)); - `bincode`: for `bincode` v2 `Encode`/`Decode` implementations - `libsecp_compat`: for `From` implementations between `rust-secp256k1`'s Schnorr signatures. - `proptest` to enable `secp256kfun/proptest`. + - `share_backup` to enable bech32 backups of FROST secret shares [1]: https://d-nb.info/1156214580/34 [BIP-340]: https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki From ed818ce8f7db6db7d21aff7ade914d40b0bb5e60 Mon Sep 17 00:00:00 2001 From: LLFourn Date: Mon, 19 Feb 2024 13:10:42 +1100 Subject: [PATCH 4/6] Flesh out arithmetic_macro's Cargo.toml --- arithmetic_macros/Cargo.toml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/arithmetic_macros/Cargo.toml b/arithmetic_macros/Cargo.toml index 1578e7dc..10f5f70d 100644 --- a/arithmetic_macros/Cargo.toml +++ b/arithmetic_macros/Cargo.toml @@ -1,13 +1,17 @@ [package] name = "secp256kfun_arithmetic_macros" version = "0.1.0" +documentation = "https://docs.rs/secp256kfun_arithmetic_macros" +description = "Helper macros for secp256kfun's aritmetic macros" +license = "0BSD" +homepage = "https://github.com/LLFourn/secp256kfun/tree/master/ecdsa_fun" +repository = "https://github.com/LLFourn/secp256kfun" +readme = "README.md" edition = "2021" [lib] proc-macro = true -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - [dependencies] proc-macro2 = "1" quote = "1" From 725f68e413d5ce7d878b5eeeb1016207084837d5 Mon Sep 17 00:00:00 2001 From: LLFourn Date: Mon, 19 Feb 2024 13:38:32 +1100 Subject: [PATCH 5/6] Fix nightly warnings Also move poly tests to its own test file since it tests the public API --- .cargo/config => config.toml | 0 ecdsa_fun/src/adaptor/mod.rs | 1 - ecdsa_fun/tests/against_c_lib.rs | 11 +- secp256kfun/src/op.rs | 2 +- secp256kfun/src/poly.rs | 140 +----------------- secp256kfun/src/scalar.rs | 2 +- .../src/vendor/k256/scalar/scalar_4x64.rs | 1 - secp256kfun/tests/poly.rs | 107 +++++++++++++ sigma_fun/src/ed25519.rs | 1 - 9 files changed, 116 insertions(+), 149 deletions(-) rename .cargo/config => config.toml (100%) create mode 100644 secp256kfun/tests/poly.rs diff --git a/.cargo/config b/config.toml similarity index 100% rename from .cargo/config rename to config.toml diff --git a/ecdsa_fun/src/adaptor/mod.rs b/ecdsa_fun/src/adaptor/mod.rs index 91c6bd28..c5ecf11c 100644 --- a/ecdsa_fun/src/adaptor/mod.rs +++ b/ecdsa_fun/src/adaptor/mod.rs @@ -306,7 +306,6 @@ mod test { use rand::rngs::ThreadRng; use rand_chacha::ChaCha20Rng; use sha2::Sha256; - use sigma_fun::HashTranscript; #[test] fn end_to_end() { diff --git a/ecdsa_fun/tests/against_c_lib.rs b/ecdsa_fun/tests/against_c_lib.rs index 97119df3..d8421ca7 100644 --- a/ecdsa_fun/tests/against_c_lib.rs +++ b/ecdsa_fun/tests/against_c_lib.rs @@ -1,11 +1,8 @@ #![cfg(feature = "libsecp_compat")] -use ecdsa_fun::{ - self, - fun::{ - hex, - secp256k1::{self, ecdsa, Message, PublicKey, SecretKey}, - Point, Scalar, - }, +use ecdsa_fun::fun::{ + hex, + secp256k1::{self, ecdsa, Message, PublicKey, SecretKey}, + Point, Scalar, }; const TEST_SOUNDNESS: usize = 20; diff --git a/secp256kfun/src/op.rs b/secp256kfun/src/op.rs index 74f05afc..0f83620c 100644 --- a/secp256kfun/src/op.rs +++ b/secp256kfun/src/op.rs @@ -261,7 +261,7 @@ pub fn point_is_y_even(A: &Point) -> bool { #[cfg(test)] mod test { - use crate::{g, marker::*, Point, Scalar, G}; + use crate::{marker::*, Point, Scalar, G}; use core::str::FromStr; #[test] diff --git a/secp256kfun/src/poly.rs b/secp256kfun/src/poly.rs index 5980752c..c9d831cc 100644 --- a/secp256kfun/src/poly.rs +++ b/secp256kfun/src/poly.rs @@ -6,25 +6,15 @@ //! //! [`Scalars`]: crate::Scalar //! [`Points`]: crate::Point +use crate::{g, marker::*, s, Point, Scalar, G}; #[cfg(feature = "alloc")] use alloc::vec::Vec; - -use crate::{ - marker::{Public, Secrecy, ZeroChoice}, - s, Scalar, -}; +use core::iter; +use rand_core::RngCore; /// Functions for dealing with scalar polynomials pub mod scalar { use super::*; - use rand_core::RngCore; - - use crate::{ - g, - marker::{Secrecy, Secret, Zero, ZeroChoice}, - poly::powers, - s, Point, Scalar, G, - }; /// Evaluate a scalar polynomial defined by coefficients, at some scalar index. /// @@ -80,14 +70,6 @@ pub mod scalar { /// Functions for dealing with point polynomials pub mod point { use super::*; - use core::iter; - - use crate::{ - g, - marker::{NonNormal, PointType, Public, Secrecy, Zero, ZeroChoice}, - poly::powers, - s, Point, Scalar, - }; /// Evaluate a point polynomial defined by coefficients, at some index. /// @@ -206,119 +188,3 @@ pub fn eval_basis_poly_at_0<'a>( s!(acc * x_m / denominator).public() }) } - -#[cfg(test)] -mod test { - use crate::{ - g, - marker::{Normal, Zero}, - poly, Point, G, - }; - - use super::*; - - #[test] - fn test_lagrange_lambda() { - let res = s!((1 * 4 * 5) / { s!((1 - 2) * (4 - 2) * (5 - 2)).non_zero().unwrap() }); - assert_eq!( - res, - eval_basis_poly_at_0(s!(2), [s!(1), s!(4), s!(5)].iter()) - ); - } - - #[test] - fn test_add_poly() { - let poly1 = vec![g!(1 * G), g!(2 * G), g!(3 * G)]; - let poly2 = vec![g!(8 * G), g!(5 * G), g!(11 * G)]; - - let addition = poly::point::add(&poly1, &poly2); - assert_eq!(addition, vec![g!(9 * G), g!(7 * G), g!(14 * G)]) - } - - #[test] - fn test_add_poly_unequal_len() { - let poly1 = vec![g!(1 * G)]; - let poly2 = vec![g!(8 * G), g!(5 * G)]; - let addition = poly::point::add(&poly1, &poly2); - assert_eq!(addition, vec![g!(9 * G), g!(5 * G)]); - - let poly1 = vec![g!(3 * G), g!(1 * G)]; - let poly2 = vec![g!(5 * G)]; - let addition = poly::point::add(&poly1, &poly2); - assert_eq!(addition, vec![g!(8 * G), g!(1 * G)]); - } - - #[test] - fn test_recover_public_poly() { - let poly = vec![g!(1 * G), g!(2 * G), g!(3 * G)]; - let indicies = vec![s!(1).public(), s!(3).public(), s!(2).public()]; - let points = indicies - .clone() - .into_iter() - .map(|index| { - ( - index, - poly::point::eval(&poly, index.public()) - .normalize() - .non_zero() - .unwrap(), - ) - }) - .collect::>(); - - let interpolation = poly::point::interpolate(points); - assert_eq!(interpolation, poly) - } - - #[test] - fn test_recover_overdetermined_poly() { - let poly = vec![g!(1 * G), g!(2 * G), g!(3 * G)]; - let indicies = vec![ - s!(1).public(), - s!(2).public(), - s!(3).public(), - s!(4).public(), - s!(5).public(), - ]; - let points = indicies - .clone() - .into_iter() - .map(|index| { - ( - index, - poly::point::eval(&poly, index.public()) - .normalize() - .non_zero() - .unwrap(), - ) - }) - .collect::>(); - - let interpolation = poly::point::interpolate(points); - - let (interpolated_coeffs, zero_coeffs) = interpolation.split_at(poly.len()); - let n_extra_points = indicies.len() - poly.len(); - assert_eq!( - (0..n_extra_points) - .map(|_| Point::::zero().public().normalize()) - .collect::>(), - zero_coeffs.to_vec() - ); - assert_eq!(interpolated_coeffs, poly); - } - - #[test] - fn test_reconstruct_shared_secret() { - let indicies = vec![s!(1).public(), s!(2).public(), s!(3).public()]; - let scalar_poly = vec![s!(42), s!(53), s!(64)]; - - let secret_shares: Vec<_> = indicies - .clone() - .into_iter() - .map(|index| (index, poly::scalar::eval(&scalar_poly, index))) - .collect(); - - let reconstructed_secret = poly::scalar::interpolate_and_eval_poly_at_0(secret_shares); - assert_eq!(scalar_poly[0], reconstructed_secret); - } -} diff --git a/secp256kfun/src/scalar.rs b/secp256kfun/src/scalar.rs index 9a6b3c3e..d027c4d1 100644 --- a/secp256kfun/src/scalar.rs +++ b/secp256kfun/src/scalar.rs @@ -470,7 +470,7 @@ impl Ord for Scalar { #[cfg(test)] mod test { use super::*; - use crate::{hex, op, s}; + use crate::{hex, s}; use proptest::prelude::*; #[cfg(target_arch = "wasm32")] use wasm_bindgen_test::wasm_bindgen_test as test; diff --git a/secp256kfun/src/vendor/k256/scalar/scalar_4x64.rs b/secp256kfun/src/vendor/k256/scalar/scalar_4x64.rs index 4dd29dc2..ab83338b 100644 --- a/secp256kfun/src/vendor/k256/scalar/scalar_4x64.rs +++ b/secp256kfun/src/vendor/k256/scalar/scalar_4x64.rs @@ -5,7 +5,6 @@ use super::super::{ util::{adc64, sbb64}, FieldBytes, }; -use core::convert::TryInto; use subtle::{Choice, ConditionallySelectable, ConstantTimeEq, CtOption}; /// Constant representing the modulus diff --git a/secp256kfun/tests/poly.rs b/secp256kfun/tests/poly.rs new file mode 100644 index 00000000..10964717 --- /dev/null +++ b/secp256kfun/tests/poly.rs @@ -0,0 +1,107 @@ +#![cfg(feature = "alloc")] +use secp256kfun::{g, marker::*, poly, s, Point, G}; + +#[test] +fn test_lagrange_lambda() { + let res = s!((1 * 4 * 5) / { s!((1 - 2) * (4 - 2) * (5 - 2)).non_zero().unwrap() }); + assert_eq!( + res, + poly::eval_basis_poly_at_0(s!(2), [s!(1), s!(4), s!(5)].iter()) + ); +} + +#[test] +fn test_add_poly() { + let poly1 = vec![g!(1 * G), g!(2 * G), g!(3 * G)]; + let poly2 = vec![g!(8 * G), g!(5 * G), g!(11 * G)]; + + let addition = poly::point::add(&poly1, &poly2); + assert_eq!(addition, vec![g!(9 * G), g!(7 * G), g!(14 * G)]) +} + +#[test] +fn test_add_poly_unequal_len() { + let poly1 = vec![g!(1 * G)]; + let poly2 = vec![g!(8 * G), g!(5 * G)]; + let addition = poly::point::add(&poly1, &poly2); + assert_eq!(addition, vec![g!(9 * G), g!(5 * G)]); + + let poly1 = vec![g!(3 * G), g!(1 * G)]; + let poly2 = vec![g!(5 * G)]; + let addition = poly::point::add(&poly1, &poly2); + assert_eq!(addition, vec![g!(8 * G), g!(1 * G)]); +} + +#[test] +fn test_recover_public_poly() { + let poly = vec![g!(1 * G), g!(2 * G), g!(3 * G)]; + let indicies = vec![s!(1).public(), s!(3).public(), s!(2).public()]; + let points = indicies + .clone() + .into_iter() + .map(|index| { + ( + index, + poly::point::eval(&poly, index.public()) + .normalize() + .non_zero() + .unwrap(), + ) + }) + .collect::>(); + + let interpolation = poly::point::interpolate(points); + assert_eq!(interpolation, poly) +} + +#[test] +fn test_recover_overdetermined_poly() { + let poly = vec![g!(1 * G), g!(2 * G), g!(3 * G)]; + let indicies = vec![ + s!(1).public(), + s!(2).public(), + s!(3).public(), + s!(4).public(), + s!(5).public(), + ]; + let points = indicies + .clone() + .into_iter() + .map(|index| { + ( + index, + poly::point::eval(&poly, index.public()) + .normalize() + .non_zero() + .unwrap(), + ) + }) + .collect::>(); + + let interpolation = poly::point::interpolate(points); + + let (interpolated_coeffs, zero_coeffs) = interpolation.split_at(poly.len()); + let n_extra_points = indicies.len() - poly.len(); + assert_eq!( + (0..n_extra_points) + .map(|_| Point::::zero().public().normalize()) + .collect::>(), + zero_coeffs.to_vec() + ); + assert_eq!(interpolated_coeffs, poly); +} + +#[test] +fn test_reconstruct_shared_secret() { + let indicies = vec![s!(1).public(), s!(2).public(), s!(3).public()]; + let scalar_poly = vec![s!(42), s!(53), s!(64)]; + + let secret_shares: Vec<_> = indicies + .clone() + .into_iter() + .map(|index| (index, poly::scalar::eval(&scalar_poly, index))) + .collect(); + + let reconstructed_secret = poly::scalar::interpolate_and_eval_poly_at_0(secret_shares); + assert_eq!(scalar_poly[0], reconstructed_secret); +} diff --git a/sigma_fun/src/ed25519.rs b/sigma_fun/src/ed25519.rs index acba8b31..4bcd2390 100644 --- a/sigma_fun/src/ed25519.rs +++ b/sigma_fun/src/ed25519.rs @@ -206,7 +206,6 @@ pub mod test { use super::*; use crate::FiatShamir; use ::proptest::prelude::*; - use generic_array::typenum::U31; use sha2::Sha256; prop_compose! { From 90105182f9fc39d4d151cdd2b637b3bd26f160eb Mon Sep 17 00:00:00 2001 From: LLFourn Date: Mon, 19 Feb 2024 14:03:40 +1100 Subject: [PATCH 6/6] Bump sigma_fun version So we get new secp256kfun version --- ecdsa_fun/Cargo.toml | 2 +- sigma_fun/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ecdsa_fun/Cargo.toml b/ecdsa_fun/Cargo.toml index 975363e0..9eccd7cf 100644 --- a/ecdsa_fun/Cargo.toml +++ b/ecdsa_fun/Cargo.toml @@ -15,7 +15,7 @@ keywords = ["bitcoin", "ecdsa", "secp256k1"] [dependencies] secp256kfun = { path = "../secp256kfun", version = "0.10", default-features = false } -sigma_fun = { path = "../sigma_fun", version = "0.6", features = ["secp256k1"], default-features = false, optional = true } +sigma_fun = { path = "../sigma_fun", version = "0.7", features = ["secp256k1"], default-features = false, optional = true } rand_chacha = { version = "0.3", optional = true } # needed for adaptor signatures atm but would be nice to get rid of bincode = { version = "1.0", optional = true } diff --git a/sigma_fun/Cargo.toml b/sigma_fun/Cargo.toml index 5083ddfc..5c68c5e2 100644 --- a/sigma_fun/Cargo.toml +++ b/sigma_fun/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sigma_fun" -version = "0.6.0" +version = "0.7.0" authors = ["LLFourn "] edition = "2021" rust-version = "1.63"