Skip to content

Commit fb51431

Browse files
[keys] switch to getters
1 parent 3a122d2 commit fb51431

File tree

1 file changed

+18
-7
lines changed

1 file changed

+18
-7
lines changed

crates/delano-keys/src/kdf.rs

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@ use blastkids::kdf;
55

66
use bls12_381_plus::elliptic_curve::hash2curve::ExpandMsgXmd;
77
// re-exports
8+
pub use bls12_381_plus::group::Curve;
89
pub use bls12_381_plus::group::{Group, GroupEncoding};
10+
use bls12_381_plus::G1Affine;
911
pub use bls12_381_plus::G1Projective;
12+
use bls12_381_plus::G2Affine;
1013
pub use bls12_381_plus::G2Projective;
1114
pub use bls12_381_plus::Scalar;
12-
use bls12_381_plus::{group::Curve, G2Affine};
1315
pub use secrecy::zeroize::{Zeroize, ZeroizeOnDrop, Zeroizing};
1416
pub use secrecy::{ExposeSecret, Secret};
1517

@@ -132,6 +134,16 @@ impl Account {
132134
}
133135
}
134136

137+
/// Getter for [G1Affine] public key
138+
pub fn pk_g1(&self) -> G1Affine {
139+
self.pk_g1.to_affine()
140+
}
141+
142+
/// Getter for [G2Affine] public key
143+
pub fn pk_g2(&self) -> G2Affine {
144+
self.pk_g2.to_affine()
145+
}
146+
135147
/// Expand an Account given a length, using the Account's secret key to derive the additional keys.
136148
///
137149
/// Function is deterministic, and always exapands to the same keys at each index.
@@ -158,7 +170,7 @@ impl Account {
158170
/// let message = b"hello world";
159171
/// let signature = account.sign(message);
160172
/// // verify the signature
161-
/// let verified = verify(&account.pk_g1, message, &signature).unwrap();
173+
/// let verified = verify(&account.pk_g1(), message, &signature).unwrap();
162174
/// assert!(verified);
163175
/// ```
164176
pub fn sign(&self, message: &[u8]) -> [u8; G2Affine::COMPRESSED_BYTES] {
@@ -177,17 +189,16 @@ impl Account {
177189
}
178190

179191
/// Verify a signed message ([G2Compressed]) against a [G1] public key.
180-
pub fn verify(pk: &G1Projective, message: &[u8], signature: &[u8]) -> Result<bool, Error> {
192+
pub fn verify(pk: &G1Affine, message: &[u8], signature: &[u8]) -> Result<bool, Error> {
181193
// let err msg say that signature was not a valid G2 point
182194
let sig_g2 = try_decompress_g2(signature.to_vec())?;
183-
let pk_affine = pk.to_affine();
184195

185196
// Hash the msg to G2Affine
186197
let hashed_msg_g2 = G2Projective::hash::<ExpandMsgXmd<sha2::Sha256>>(message, DST).to_affine();
187198
let g1_generator = G1Projective::generator().to_affine();
188199

189200
// Verify the signature by checking the pairing(G1_pubkey, G2_hashed_msg) == pairing(G1_generator, G2_signature)
190-
let result = bls12_381_plus::pairing(&pk_affine, &hashed_msg_g2)
201+
let result = bls12_381_plus::pairing(&pk, &hashed_msg_g2)
191202
== bls12_381_plus::pairing(&g1_generator, &sig_g2);
192203

193204
Ok(result)
@@ -288,7 +299,7 @@ mod basic_test {
288299
let message = b"hello world";
289300
let signature = account.sign(message);
290301

291-
let verified = verify(&account.pk_g1, message, &signature).unwrap();
302+
let verified = verify(&account.pk_g1.to_affine(), message, &signature).unwrap();
292303
assert!(verified);
293304
}
294305
}
@@ -304,7 +315,7 @@ mod basic_test {
304315
let message = b"hello world";
305316
let signature = account.sign(message);
306317

307-
let verified = verify(&account.pk_g1, b"hello world!", &signature).unwrap();
318+
let verified = verify(&account.pk_g1.to_affine(), b"hello world!", &signature).unwrap();
308319
assert!(!verified);
309320
}
310321
}

0 commit comments

Comments
 (0)