fixed private_keys.rs

This commit is contained in:
jonesmarvin8 2026-04-01 15:49:51 -04:00
parent d4e6626c0c
commit 2b920bfe55

View File

@ -1,5 +1,6 @@
use std::str::FromStr; use std::str::FromStr;
use k256::elliptic_curve::PrimeField as _;
use rand::{Rng as _, rngs::OsRng}; use rand::{Rng as _, rngs::OsRng};
use risc0_zkvm::sha::{Impl, Sha256 as _}; use risc0_zkvm::sha::{Impl, Sha256 as _};
use serde_with::{DeserializeFromStr, SerializeDisplay}; use serde_with::{DeserializeFromStr, SerializeDisplay};
@ -67,20 +68,26 @@ impl PrivateKey {
return Err(NssaError::InvalidPrivateKey); return Err(NssaError::InvalidPrivateKey);
} }
let sk = secp256k1::SecretKey::from_byte_array(*value).expect("Expect a valid secret key"); let hashed: [u8; 32] = Impl::hash_bytes(
let pk = secp256k1::PublicKey::from_secret_key(&secp256k1::Secp256k1::new(), &sk); crate::PublicKey::try_new(*value)
.expect("Expect a valid private key")
let hashed: [u8; 32] = Impl::hash_bytes(&secp256k1::PublicKey::serialize(&pk)) .value(),
.as_bytes() )
.try_into() .as_bytes()
.expect("Sha256 outputs a 32-byte array"); .try_into()
.expect("Sha256 outputs a 32-byte array");
Self::try_new( Self::try_new(
sk.add_tweak( (k256::Scalar::from_repr(
&secp256k1::Scalar::from_be_bytes(hashed).expect("Expect a valid secp256k1 Scalar"), (*value
.first_chunk::<32>()
.expect("hash_value is 64 bytes, must be safe to get first 32"))
.into(),
) )
.expect("Expect a valid Scalar") .expect("Expect a valid k256 scalar"))
.secret_bytes(), .add(&k256::Scalar::from_repr((hashed).into()).expect("Expect a valid k256 scalar"))
.to_bytes()
.into(),
) )
} }
} }