Improve error handling in Sapling decode
This commit is contained in:
parent
31579a6bb2
commit
00090dbfcd
1 changed files with 18 additions and 10 deletions
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue