mirror of
https://github.com/Qortal/pirate-librustzcash.git
synced 2025-08-01 12:51:30 +00:00
Pass tx builder RNG to spend_sig()
This commit is contained in:
@@ -1002,8 +1002,11 @@ pub extern "system" fn librustzcash_sapling_spend_sig(
|
|||||||
Err(_) => return false,
|
Err(_) => return false,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Initialize secure RNG
|
||||||
|
let mut rng = OsRng;
|
||||||
|
|
||||||
// Do the signing
|
// Do the signing
|
||||||
let sig = spend_sig(ask, ar, unsafe { &*sighash }, &JUBJUB);
|
let sig = spend_sig(ask, ar, unsafe { &*sighash }, &mut rng, &JUBJUB);
|
||||||
|
|
||||||
// Write out the signature
|
// Write out the signature
|
||||||
sig.write(&mut (unsafe { &mut *result })[..])
|
sig.write(&mut (unsafe { &mut *result })[..])
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
use ff::{BitIterator, PrimeField, PrimeFieldRepr};
|
use ff::{BitIterator, PrimeField, PrimeFieldRepr};
|
||||||
use pairing::bls12_381::{Bls12, Fr, FrRepr};
|
use pairing::bls12_381::{Bls12, Fr, FrRepr};
|
||||||
use rand_os::OsRng;
|
use rand_core::{CryptoRng, RngCore};
|
||||||
use sapling_crypto::{
|
use sapling_crypto::{
|
||||||
jubjub::{fs::Fs, FixedGenerators, JubjubBls12},
|
jubjub::{fs::Fs, FixedGenerators, JubjubBls12},
|
||||||
pedersen_hash::{pedersen_hash, Personalization},
|
pedersen_hash::{pedersen_hash, Personalization},
|
||||||
@@ -106,15 +106,13 @@ lazy_static! {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Create the spendAuthSig for a Sapling SpendDescription.
|
/// Create the spendAuthSig for a Sapling SpendDescription.
|
||||||
pub fn spend_sig(
|
pub fn spend_sig<R: RngCore + CryptoRng>(
|
||||||
ask: PrivateKey<Bls12>,
|
ask: PrivateKey<Bls12>,
|
||||||
ar: Fs,
|
ar: Fs,
|
||||||
sighash: &[u8; 32],
|
sighash: &[u8; 32],
|
||||||
|
rng: &mut R,
|
||||||
params: &JubjubBls12,
|
params: &JubjubBls12,
|
||||||
) -> Signature {
|
) -> Signature {
|
||||||
// Initialize secure RNG
|
|
||||||
let mut rng = OsRng;
|
|
||||||
|
|
||||||
// We compute `rsk`...
|
// We compute `rsk`...
|
||||||
let rsk = ask.randomize(ar);
|
let rsk = ask.randomize(ar);
|
||||||
|
|
||||||
@@ -130,7 +128,7 @@ pub fn spend_sig(
|
|||||||
// Do the signing
|
// Do the signing
|
||||||
rsk.sign(
|
rsk.sign(
|
||||||
&data_to_be_signed,
|
&data_to_be_signed,
|
||||||
&mut rng,
|
rng,
|
||||||
FixedGenerators::SpendingKeyGenerator,
|
FixedGenerators::SpendingKeyGenerator,
|
||||||
params,
|
params,
|
||||||
)
|
)
|
||||||
|
@@ -522,6 +522,7 @@ impl<R: RngCore + CryptoRng> Builder<R> {
|
|||||||
PrivateKey(spend.extsk.expsk.ask),
|
PrivateKey(spend.extsk.expsk.ask),
|
||||||
spend.alpha,
|
spend.alpha,
|
||||||
&sighash,
|
&sighash,
|
||||||
|
&mut self.rng,
|
||||||
&JUBJUB,
|
&JUBJUB,
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user