Skip to content

Commit b7a84f1

Browse files
authored
v0.12.0 release (#242)
1 parent 871f7c3 commit b7a84f1

File tree

14 files changed

+111
-19
lines changed

14 files changed

+111
-19
lines changed

CHANGELOG.md

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,20 @@
22

33
## UNRELEASED
44

5+
## v0.12.0
6+
7+
- **SECURITY FIX**: Fix `from_bytes_uncompressed` to validate points are on curve
58
- Add `SharedKey::from_non_zero_poly`
6-
- Change `poly::scalar::to_point_poly` to make it less opinionated
9+
- Add `SharedKey::grind_fingerprint` method
10+
- Add `ShareImage` type
11+
- Add FROST_V0_FINGERPRINT export
12+
- Change `poly::scalar::to_point_poly` to make it less opinionated
713
- Add From/TryFrom conversions for `Scalar` to all unsigned integer types
14+
- Add Shamir secret sharing helpers for scalar polynomials
815
- Upgrade to bincode v2
916
- MSRV 1.63 -> 1.85
10-
- **BREAKING**: Refactor `CompactProof` in `sigma_fun` to use two type parameters `CompactProof<R, L>` instead of `CompactProof<S: Sigma>` to enable serde support
17+
- Refactor `CompactProof` in `sigma_fun` to use two type parameters `CompactProof<R, L>` instead of `CompactProof<S: Sigma>` to enable serde support
18+
- Update `secp256kfun_arithmetic_macros` to use generic `NonZero<T>` type instead of `NonZeroU32`
1119
- Add hash-to-curve methods to `Point`:
1220
- `hash_to_curve` - Simple try-and-increment with uniform distribution (recommended)
1321
- `hash_to_curve_sswu` - RFC 9380 compliant constant-time hashing
@@ -16,6 +24,12 @@
1624
- Deprecate `Message::plain` which uses non-standard 64-byte prefix
1725
- Remove type parameters from `Message` and `Signature` types (always public now)
1826
- Remove unused `Slice` type from secp256kfun
27+
- `SharedKey::check_fingerprint` now returns `Option<usize>` instead of `bool`, indicating number of bits verified
28+
- Rename `PartyIndex` to `ShareIndex`
29+
- Add `vrf_fun` crate
30+
- `Point<_, _, Zero>` implements `Hash`
31+
- Add VRF-based certification for certpedpop
32+
- Make certpedpop signature scheme configurable
1933

2034
## v0.11.0
2135

Cargo.toml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ bincode = { version = "2", default-features = false, features = ["derive"] }
1616
rand_chacha = { version = "0.3", default-features = false }
1717

1818
# Local crates
19-
secp256kfun = { path = "./secp256kfun", version = "0.11", default-features = false }
20-
schnorr_fun = { path = "./schnorr_fun", version = "0.11", default-features = false }
21-
ecdsa_fun = { path = "./ecdsa_fun", version = "0.11", default-features = false }
22-
sigma_fun = { path = "./sigma_fun", version = "0.8", default-features = false }
23-
vrf_fun = { path = "./vrf_fun", version = "0.11", default-features = false }
19+
secp256kfun = { path = "./secp256kfun", version = "0.12", default-features = false }
20+
schnorr_fun = { path = "./schnorr_fun", version = "0.12", default-features = false }
21+
ecdsa_fun = { path = "./ecdsa_fun", version = "0.12", default-features = false }
22+
sigma_fun = { path = "./sigma_fun", version = "0.9", default-features = false }
23+
vrf_fun = { path = "./vrf_fun", version = "0.12", default-features = false }

arithmetic_macros/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "secp256kfun_arithmetic_macros"
3-
version = "0.1.0"
3+
version = "0.2.0"
44
documentation = "https://docs.rs/secp256kfun_arithmetic_macros"
55
description = "Helper macros for secp256kfun's aritmetic macros"
66
license = "0BSD"

ecdsa_fun/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "ecdsa_fun"
3-
version = "0.11.0"
3+
version = "0.12.0"
44
authors = ["LLFourn <lloyd.fourn@gmail.com>"]
55
edition = "2024"
66
rust-version = "1.85.0"

ecdsa_fun/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Built on [secp256kfun].
1212

1313
``` toml
1414
[dependencies]
15-
ecdsa_fun = "0.11"
15+
ecdsa_fun = "0.12"
1616
sha2 = "0.10" # You need a hash function for nonce derivation
1717
```
1818

publish.sh

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
#!/bin/bash
2+
set -e
3+
4+
# Publish crates in dependency order
5+
# Each publish waits for the previous to be indexed on crates.io
6+
7+
# Format: "directory:crate_name"
8+
CRATES=(
9+
"arithmetic_macros:secp256kfun_arithmetic_macros"
10+
"secp256kfun:secp256kfun"
11+
"sigma_fun:sigma_fun"
12+
"vrf_fun:vrf_fun"
13+
"ecdsa_fun:ecdsa_fun"
14+
"schnorr_fun:schnorr_fun"
15+
)
16+
17+
# Time to wait between publishes (in seconds)
18+
WAIT_TIME=30
19+
20+
# Check if a version exists on crates.io
21+
check_version_exists() {
22+
local crate_name=$1
23+
local version=$2
24+
25+
echo "🔍 Checking if $crate_name $version exists on crates.io..."
26+
if cargo search "$crate_name" --limit 1 | grep -q "\"$version\""; then
27+
return 0 # exists
28+
else
29+
return 1 # doesn't exist
30+
fi
31+
}
32+
33+
# Get version from Cargo.toml
34+
get_version() {
35+
local dir=$1
36+
grep '^version = ' "$dir/Cargo.toml" | head -1 | sed 's/version = "\(.*\)"/\1/'
37+
}
38+
39+
echo "Publishing secp256kfun v0.12.0 crates..."
40+
echo ""
41+
42+
for entry in "${CRATES[@]}"; do
43+
IFS=':' read -r dir crate_name <<< "$entry"
44+
version=$(get_version "$dir")
45+
46+
if check_version_exists "$crate_name" "$version"; then
47+
echo "⏭️ Skipping $crate_name $version (already published)"
48+
echo ""
49+
continue
50+
fi
51+
52+
echo "📦 Publishing $crate_name $version..."
53+
cd "$dir"
54+
cargo publish
55+
cd ..
56+
57+
echo "⏳ Waiting ${WAIT_TIME}s for crates.io to index $crate_name..."
58+
sleep $WAIT_TIME
59+
echo ""
60+
done
61+
62+
echo ""
63+
echo "✅ All crates published successfully!"

schnorr_fun/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
[package]
33
name = "schnorr_fun"
4-
version = "0.11.0"
4+
version = "0.12.0"
55
authors = ["LLFourn <lloyd.fourn@gmail.com>"]
66
edition = "2024"
77
rust-version = "1.85.0"

schnorr_fun/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ This implementation is based on the [BIP-340] specification, but is flexible eno
1515

1616
``` toml
1717
[dependencies]
18-
schnorr_fun = "0.11"
18+
schnorr_fun = "0.12"
1919
sha2 = "0.10"
2020
```
2121

secp256kfun/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "secp256kfun"
3-
version = "0.11.0"
3+
version = "0.12.0"
44
authors = ["LLFourn <lloyd.fourn@gmail.com>"]
55
license = "0BSD"
66
homepage = "https://github.com/LLFourn/secp256kfun"
@@ -18,7 +18,7 @@ keywords = ["bitcoin", "secp256k1"]
1818
digest = { version = "0.10", default-features = false }
1919
subtle = { package = "subtle-ng", version = "2", default-features = false }
2020
rand_core = { version = "0.6", default-features = false }
21-
secp256kfun_arithmetic_macros = { version = "0.1.0", path = "../arithmetic_macros" }
21+
secp256kfun_arithmetic_macros = { version = "0.2.0", path = "../arithmetic_macros" }
2222

2323
# optional
2424
serde = { version = "1.0", optional = true, default-features = false, features = ["derive"] }

secp256kfun/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ _Low-level_ libraries like [parity/libsecp256k1][4] make it possible but the res
2828

2929
```toml
3030
[dependencies]
31-
secp256kfun = "0.11"
31+
secp256kfun = "0.12"
3232
```
3333

3434
### Should use?

0 commit comments

Comments
 (0)