Improve error handling in Sapling decode

This commit is contained in:
Rene Vergara 2023-09-29 14:06:56 -05:00
parent 31579a6bb2
commit 00090dbfcd
Signed by: pitmutt
GPG key ID: 65122AD495A7F5B2

View file

@ -364,16 +364,24 @@ pub extern "C" fn rust_wrapper_sapling_note_decrypt_v2(
match svk { match svk {
Ok(k) => { Ok(k) => {
let domain = SaplingDomain::for_height(MainNetwork, BlockHeight::from_u32(2000000)); let domain = SaplingDomain::for_height(MainNetwork, BlockHeight::from_u32(2000000));
let action2 = OutputDescription::read(&mut note_reader).unwrap(); let action2 = OutputDescription::read(&mut note_reader);
let fvk = k.to_diversifiable_full_viewing_key().to_ivk(SaplingScope::External); match action2 {
let pivk = SaplingPreparedIncomingViewingKey::new(&fvk); Ok(action3) => {
let result = zcash_note_encryption::try_note_decryption(&domain, &pivk, &action2); let fvk = k.to_diversifiable_full_viewing_key().to_ivk(SaplingScope::External);
match result { let pivk = SaplingPreparedIncomingViewingKey::new(&fvk);
Some((n, r, m)) => { let result = zcash_note_encryption::try_note_decryption(&domain, &pivk, &action3);
let hn = Hnote {note: n.value().inner(), recipient: r.to_bytes().to_vec(), memo: m.as_slice().to_vec() }; match result {
marshall_to_haskell_var(&hn, out, out_len, RW); Some((n, r, m)) => {
} let hn = Hnote {note: n.value().inner(), recipient: r.to_bytes().to_vec(), memo: m.as_slice().to_vec() };
None => { marshall_to_haskell_var(&hn, out, out_len, RW);
}
None => {
let hn0 = Hnote { note: 0, recipient: vec![0], memo: vec![0] };
marshall_to_haskell_var(&hn0, out, out_len, RW);
}
}
},
Err(_e1) => {
let hn0 = Hnote { note: 0, recipient: vec![0], memo: vec![0] }; let hn0 = Hnote { note: 0, recipient: vec![0], memo: vec![0] };
marshall_to_haskell_var(&hn0, out, out_len, RW); marshall_to_haskell_var(&hn0, out, out_len, RW);
} }