zk-token-sdk: fixing a range proof edge case (#23605)
* zk-token-sdk: fixing a range proof edge case * zk-token-sdk: clippy
This commit is contained in:
parent
3cf31fa9b8
commit
4e02ec342c
|
@ -35,8 +35,8 @@ const TRANSFER_AMOUNT_HI_BIT_LENGTH: usize = 32;
|
||||||
|
|
||||||
#[cfg(not(target_arch = "bpf"))]
|
#[cfg(not(target_arch = "bpf"))]
|
||||||
lazy_static::lazy_static! {
|
lazy_static::lazy_static! {
|
||||||
pub static ref COMMITMENT_MAX: PedersenCommitment = Pedersen::encode(1_u64 <<
|
pub static ref COMMITMENT_MAX: PedersenCommitment = Pedersen::encode((1_u64 <<
|
||||||
TRANSFER_AMOUNT_LO_NEGATED_BIT_LENGTH);
|
TRANSFER_AMOUNT_LO_NEGATED_BIT_LENGTH) - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
|
@ -353,7 +353,7 @@ impl TransferProof {
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
let transfer_amount_lo_negated =
|
let transfer_amount_lo_negated =
|
||||||
(1 << TRANSFER_AMOUNT_LO_NEGATED_BIT_LENGTH) - transfer_amount_lo as u64;
|
(1 << TRANSFER_AMOUNT_LO_NEGATED_BIT_LENGTH) - 1 - transfer_amount_lo as u64;
|
||||||
let opening_lo_negated = &PedersenOpening::default() - opening_lo;
|
let opening_lo_negated = &PedersenOpening::default() - opening_lo;
|
||||||
|
|
||||||
RangeProof::new(
|
RangeProof::new(
|
||||||
|
@ -513,6 +513,24 @@ mod test {
|
||||||
let dest_pk = ElGamalKeypair::new_rand().public;
|
let dest_pk = ElGamalKeypair::new_rand().public;
|
||||||
let auditor_pk = ElGamalKeypair::new_rand().public;
|
let auditor_pk = ElGamalKeypair::new_rand().public;
|
||||||
|
|
||||||
|
// create source account spendable ciphertext
|
||||||
|
let spendable_balance: u64 = 0;
|
||||||
|
let spendable_ciphertext = source_keypair.public.encrypt(spendable_balance);
|
||||||
|
|
||||||
|
// transfer amount
|
||||||
|
let transfer_amount: u64 = 0;
|
||||||
|
|
||||||
|
// create transfer data
|
||||||
|
let transfer_data = TransferData::new(
|
||||||
|
transfer_amount,
|
||||||
|
(spendable_balance, &spendable_ciphertext),
|
||||||
|
&source_keypair,
|
||||||
|
(&dest_pk, &auditor_pk),
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
assert!(transfer_data.verify().is_ok());
|
||||||
|
|
||||||
// create source account spendable ciphertext
|
// create source account spendable ciphertext
|
||||||
let spendable_balance: u64 = 77;
|
let spendable_balance: u64 = 77;
|
||||||
let spendable_ciphertext = source_keypair.public.encrypt(spendable_balance);
|
let spendable_ciphertext = source_keypair.public.encrypt(spendable_balance);
|
||||||
|
|
Loading…
Reference in New Issue