From 4af5939a0b4e83b98f2b97c662a13da73c961053 Mon Sep 17 00:00:00 2001 From: Martin Milata Date: Tue, 14 Feb 2023 23:47:20 +0100 Subject: [PATCH] feat(core/ui): redesigned receive flow [no changelog] --- core/assets/cancel.png | Bin 1128 -> 2061 bytes core/assets/info-circle.png | Bin 0 -> 266 bytes core/assets/octa-bang.png | Bin 0 -> 468 bytes core/embed/rust/librust_qstr.h | 5 + core/embed/rust/src/ui/component/image.rs | 6 + core/embed/rust/src/ui/component/mod.rs | 4 +- core/embed/rust/src/ui/component/paginated.rs | 14 +- core/embed/rust/src/ui/component/placed.rs | 134 ++- core/embed/rust/src/ui/model_tr/layout.rs | 2 +- .../ui/model_tt/component/address_details.rs | 158 ++++ .../rust/src/ui/model_tt/component/button.rs | 123 ++- .../rust/src/ui/model_tt/component/dialog.rs | 17 +- .../rust/src/ui/model_tt/component/frame.rs | 21 +- .../ui/model_tt/component/horizontal_page.rs | 144 +++ .../rust/src/ui/model_tt/component/mod.rs | 6 +- .../rust/src/ui/model_tt/component/page.rs | 18 +- core/embed/rust/src/ui/model_tt/layout.rs | 184 +++- .../src/ui/model_tt/res/cancel-larger.toif | Bin 0 -> 94 bytes .../rust/src/ui/model_tt/res/info-circle.toif | Bin 0 -> 179 bytes .../rust/src/ui/model_tt/res/octa-bang.toif | Bin 0 -> 205 bytes core/embed/rust/src/ui/model_tt/theme.rs | 30 +- core/mocks/generated/trezorui2.pyi | 30 + core/src/apps/binance/get_address.py | 3 +- core/src/apps/bitcoin/get_address.py | 18 +- core/src/apps/bitcoin/keychain.py | 12 +- core/src/apps/cardano/layout.py | 16 +- core/src/apps/ethereum/get_address.py | 3 +- core/src/apps/monero/get_address.py | 3 +- core/src/apps/nem/get_address.py | 3 +- core/src/apps/ripple/get_address.py | 3 +- core/src/apps/stellar/get_address.py | 4 +- core/src/apps/tezos/get_address.py | 3 +- core/src/trezor/ui/layouts/tr/__init__.py | 2 - core/src/trezor/ui/layouts/tt_v2/__init__.py | 108 +-- python/src/trezorlib/debuglink.py | 8 +- .../bitcoin/test_getaddress_show.py | 106 ++- .../device_tests/bitcoin/test_signmessage.py | 2 +- tests/ui_tests/fixtures.json | 838 +++++++++--------- 38 files changed, 1452 insertions(+), 576 deletions(-) create mode 100644 core/assets/info-circle.png create mode 100644 core/assets/octa-bang.png create mode 100644 core/embed/rust/src/ui/model_tt/component/address_details.rs create mode 100644 core/embed/rust/src/ui/model_tt/component/horizontal_page.rs create mode 100644 core/embed/rust/src/ui/model_tt/res/cancel-larger.toif create mode 100644 core/embed/rust/src/ui/model_tt/res/info-circle.toif create mode 100644 core/embed/rust/src/ui/model_tt/res/octa-bang.toif diff --git a/core/assets/cancel.png b/core/assets/cancel.png index e57702e5efb5f8dfa04e9e743ee1da3108fe1962..5cff6ab6bf1aec974f0cd04e3ce0ceece7262a08 100644 GIT binary patch delta 1958 zcmV;X2U+;&2#pYsBMk!PX+uL$X=7sm04R}>S08@?3=)%z3mgLid_e5H{Jc~KRKUo< z@a-CiWMH_g3o?s=G{Bk+v=~Sq0Aiz*)Z%0y{RN2A%S#G?;*2pswn$Pom|Xy3XNLqi z1KBMM3`{&FsTCl-49@ull|`B986^samX?+Zjw$&`sS3fB#U-h^#R{Hz$@xVE`9+B( zsVRRzwNN`ifY&9zM8Q2VGf%3dgAhZ2V9LcRz22M)_ZK0 zY}44jv4^wo=1}73;`qXu$a#Uwk!uULCii~=9x0xwyh6N__=NeU@yqZp7SIvcA?PZ2 zMJQG1hj6cmipXBkaM3Sflf;e0uSir#%1IuR%9oawJ|R;kt1f#>u20@Y{*S^|#X==L zrMJp!RSHy1RDY@+RPWLV)l|~_pmjidl1{3wm7bv9EBzw|3k++GVvKD~?Ue2+>OS48 z+Sk~BccRUt*^~cHjh}XShQ`ePS>NX*%soBde8JL1B8yv>d|Q^e{NBotRj1dutlhWX za>KSwCY!fxHQBa(hthCGvKk+c{vDlOS&oW<#ygc|i|E>JH3m=+3nSOrtb;0-Wp8~&5 z{b~K@`2Rlu4FC@`f2hTclUf5W3j$(GM??VshmXv^ks%m=QF>HZbW&k=AaHVTW@&6? zAar?fWgux|V*mg+jjdGKjU_h>{8tnXfw!b^C`tmHe*!Me?Cb$73@>2z>&DYX7K=r- zzpL6`&n8QwXFAE)%*338Kc+f$>DI-%i?L51cvG-Y7t8TZ(NETbL%Vi3a&ofzT8I-D zuhYNVN7NgCJKERa*;d)#k^P~yKiu!Y|B>|P@GAk878c$$zU6zrZHNvt9Qhoxe>=ez z66?o&r?2@I%MEmXI^yxUL8$r*Fuo!anZ|{K*(GN5z>1Kv&i4oyeuyrjxR5Kh>2naf zD;6ine#fQL`v!lkePRA3lOG&ygToiaI_d})h$l*a@}EinQ?ma*N8g3{ll@jlzuWjb zgA5$(#jl9IyLx|~lgHs>^-&a<>}ZR`|H8y6V$>bNMfsgL2k|})y%pe8NG5!2dNn2W zNt#TGL-rbR46>c%a$aua`vB4;R0RbM0=PzfEgB*;M$&*FClE|HOk>Jrv=CtdO>t69 zr_Dlt8`3!lc;M)A(M@ekQcPs1h? zI45NyVJc#;100y+b%Ll3>CGnYpj5M^Wo6wqFrOg1aUErM5aE*Uy3*~@b*8_}1|OfA zo+#t$qj}BgdjZ3F_h$sl4)F*bXv{>C8{JMLh7MGFM$R4JAKCOcig36iP}@rrZv4Qvu9(V7_ zT2m$nyn8yz6Qy&=m~-5jh*JT%)tXm(QhG~aP&7P2N=D4=`{Z=Xtd(V!d!4*G7p+*} zb%FZ@8Zqi?Xs)^LTIOw4VXMcw2jY!?D!H=^U~!LC&rwrXWu2-(GB*p-fw|D!1Ajz0002XNklrYr|hec8(DLIILruori zLsD{4{#q#qa+q@1LF8iQ^=|L>_Rf!b9Nt`?`WzmpT%STj1hlTEp>|`sSB9+*Z)dnu z2Wt?l^wkb$BXzh7^;Df)!2U>0tCe@PI09JD)R$+qXaEs3$EsQ!5X7wAz}(3 z`vLgPpd=efNd^rffTcIJ-&2!+Re;S;^=ol%tPZ!K*;6OSaFDA>n|t+p2cVv-T^2g# zC*@o#v%3t{hs*!{^T%2K01PIUqq~Z(?O2Q+acAWo>gHNp53ra&T{QVRU6=F>L>B0000n9CSrkbZKK_ sI%H*YV{&P5bZKvH07P$eAV*B zfq{X6fgv%uxWF+Wz=wf>fgvwHFO>lmFfuTFyT-uCz`($8S=Z6U$(4aLz?xi8RKmc( zaDahfZg9jx8g8+j9g8_pB zLjXe}Lp{R+hNBE`7{wV~7)u#fFy3PlV+vxLz;uCGm^qSpA@ds+OO_6nTdaD2tgWo~ z*euzmv3+9?XWz}C#L>m^g)@=!0+%D#7H&=M1w2wbQ+b7WC-DjMP2-p0Uo4;_utU&Q z@QP5X&=28W5fzcWqT!-n#3qRwiC>YZkd%`=CY3KOEqy|!Ojcd?mRz5_i~Jvjt%`+8 zdP;AV*Qyk#nyCI%JE-2J5vr+wr1?SXfc7MvR9!1QLA_V{M+_Di)*8ha+nUImGMm0M zyI{W4Vu|Ght2*mkn>gD*J6C&a2V+MaCpBj!7X?>&HwAZP4|PvnFB5MYA9vqizXbpM zfcn6RK}&;ognhg9Nrj-K4POhLkm_H`6(PGAuGPv*u=B z%w^BB&#x%hRQRq~yCkc0RoR;g{mPQ6T{VogUUgIJA2#YW)ij@Nm1`?(KiVnXRn&dD zSGBLP|L#PaNwX*aof<#w@C=Qa{j zz2$~&n@l!u*=n+F`wpvro%?sY?m4?JZ2yCUIfs58X+I`@e8oxYQ|HbkpZ#@y(nak{ zN3SGa{daxNO`BVH@6_K@zJKCj-ea*R`=4dL5P5mg$5<;Xeg_ zo%+-I&+-3%01W^SH2RkDT>t<8AY({UO#lFTB>(_`g8%^e{{R4!DFYdQ%1J~)RCwAn z&r2&r0USW_^Zx)g6U|~GDUy^dM5FO&G~xZ(#qDl? zbruIoH)jwL0nO_fsNCAy&td!9yIJnl{yGG!UA4veNFD4!wWm%l;b5fp%B3$gI|kSo zs_$=VRs$lak5x50B7z8DsJy6tEKtDIv+C<~0h>vl^lL-_%b#kuqb6$rTR-aW()?H* z>_EMvPEMeas>vY_>fbIvHC5XzwoFg+x#rOJ3X~tOiv5eHIsOL#4p4x!Tx&7X00000 LNkvXXu0mjf;7QOZ diff --git a/core/assets/info-circle.png b/core/assets/info-circle.png new file mode 100644 index 0000000000000000000000000000000000000000..3db384f5b9bd0d6ab373cef773abf150ad61175e GIT binary patch literal 266 zcmeAS@N?(olHy`uVBq!ia0vp^A|T8GBp6maa=Hkln3BBRT^Rni_n+AhD&dBWEJHb4KyP5F5|)IFU^A;o8HyL%Ob z4p&0m{LJik=~4&&ewnZ|^KI7DLq;m=FV+4Kdweq2?&*e2-hnkt4_N*7HSE3R+qVtm NNl#Zlmvv4FO#n$)YU%(0 literal 0 HcmV?d00001 diff --git a/core/assets/octa-bang.png b/core/assets/octa-bang.png new file mode 100644 index 0000000000000000000000000000000000000000..f3e7f5179f975090f1e7d4f40968db4df574b2aa GIT binary patch literal 468 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZApALC^FjhY4-@{Xv zlJb#Rd2+pUSN}QJ(-Xdj2T0~$`SekC%BBaMuUjH4!j6i*uK2;dU-ivG6P~?Vv9)hX zQZLuvy%1env%kn-*)?P4J1L&)SFnGma`jK!&R<&5rtmJ4QE!oegLJQUbocc(p9<4y znJwovBHbkT<|np%ELZL2oNtm=b4cLNBE_GqhadPJezLHy*yfkuCzhf&8mAt2va107 zt6Jh3QIe8al4_M)lnSI6j0}v7bq$Pk4UIz#Ev!rot&EJd4GgRd3|OADZbi|Mo1c=I wR*73f=}uctpau=N4JDbmsl_FUxdoVdj7=ey^j^~}0_tJ#boFyt=akR{01o`5-T(jq literal 0 HcmV?d00001 diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index d6cd40356f..297a05e9d8 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -21,6 +21,7 @@ static void _librust_qstrs(void) { MP_QSTR_jpeg_test; MP_QSTR_confirm_action; MP_QSTR_confirm_homescreen; + MP_QSTR_confirm_address; MP_QSTR_confirm_blob; MP_QSTR_confirm_properties; MP_QSTR_confirm_coinjoin; @@ -40,6 +41,7 @@ static void _librust_qstrs(void) { MP_QSTR_show_success; MP_QSTR_show_warning; MP_QSTR_show_info; + MP_QSTR_show_mismatch; MP_QSTR_show_simple; MP_QSTR_request_number; MP_QSTR_request_pin; @@ -56,6 +58,7 @@ static void _librust_qstrs(void) { MP_QSTR_show_remaining_shares; MP_QSTR_show_share_words; MP_QSTR_show_progress; + MP_QSTR_show_address_details; MP_QSTR_attach_timer_fn; MP_QSTR_touch_event; @@ -107,6 +110,7 @@ static void _librust_qstrs(void) { MP_QSTR_time_ms; MP_QSTR_app_name; MP_QSTR_icon_name; + MP_QSTR_account; MP_QSTR_accounts; MP_QSTR_indeterminate; MP_QSTR_notification; @@ -114,4 +118,5 @@ static void _librust_qstrs(void) { MP_QSTR_bootscreen; MP_QSTR_skip_first_paint; MP_QSTR_wrong_pin; + MP_QSTR_xpubs; } diff --git a/core/embed/rust/src/ui/component/image.rs b/core/embed/rust/src/ui/component/image.rs index 4f18b7270b..9c2de5ffd7 100644 --- a/core/embed/rust/src/ui/component/image.rs +++ b/core/embed/rust/src/ui/component/image.rs @@ -87,6 +87,12 @@ impl BlendedImage { } } + // NOTE: currently this function is used too rarely to justify writing special + // case for unblended image. + pub fn single(icon: Icon, color: Color, area_color: Color) -> Self { + Self::new(icon, icon, color, color, area_color) + } + fn paint_image(&self) { display::icon_over_icon( None, diff --git a/core/embed/rust/src/ui/component/mod.rs b/core/embed/rust/src/ui/component/mod.rs index f4d2112686..502dd39465 100644 --- a/core/embed/rust/src/ui/component/mod.rs +++ b/core/embed/rust/src/ui/component/mod.rs @@ -24,9 +24,9 @@ pub use map::Map; pub use marquee::Marquee; pub use maybe::Maybe; pub use pad::Pad; -pub use paginated::{PageMsg, Paginate}; +pub use paginated::{AuxPageMsg, PageMsg, Paginate}; pub use painter::Painter; -pub use placed::{FixedHeightBar, GridPlaced}; +pub use placed::{FixedHeightBar, Floating, GridPlaced, VSplit}; pub use qr_code::Qr; pub use text::{ formatted::FormattedText, diff --git a/core/embed/rust/src/ui/component/paginated.rs b/core/embed/rust/src/ui/component/paginated.rs index 7712ac611f..b5d71db07e 100644 --- a/core/embed/rust/src/ui/component/paginated.rs +++ b/core/embed/rust/src/ui/component/paginated.rs @@ -3,6 +3,15 @@ use crate::ui::component::{ FormattedText, }; +pub enum AuxPageMsg { + /// Page component was instantiated with BACK button on every page and it + /// was pressed. + GoBack, + + /// Page component was configured to react to swipes and user swiped left. + SwipeLeft, +} + /// Common message type for pagination components. pub enum PageMsg { /// Pass-through from paged component. @@ -12,9 +21,8 @@ pub enum PageMsg { /// "OK" and "Cancel" buttons. Controls(U), - /// Page component was instantiated with BACK button on every page and it - /// was pressed. - GoBack, + /// Auxilliary events used by exotic pages on touchscreens. + Aux(AuxPageMsg), } pub trait Paginate { diff --git a/core/embed/rust/src/ui/component/placed.rs b/core/embed/rust/src/ui/component/placed.rs index b6f77cb061..0d67ab4359 100644 --- a/core/embed/rust/src/ui/component/placed.rs +++ b/core/embed/rust/src/ui/component/placed.rs @@ -1,6 +1,6 @@ use crate::ui::{ component::{Component, Event, EventCtx}, - geometry::{Grid, GridCellSpan, Rect}, + geometry::{Alignment, Alignment2D, Grid, GridCellSpan, Insets, Offset, Rect, TOP_RIGHT}, }; pub struct GridPlaced { @@ -121,3 +121,135 @@ where d.close(); } } + +pub struct Floating { + inner: T, + size: Offset, + border: Offset, + align: Alignment2D, +} + +impl Floating { + pub const fn new(size: Offset, border: Offset, align: Alignment2D, inner: T) -> Self { + Self { + inner, + size, + border, + align, + } + } + + pub const fn top_right(side: i16, border: i16, inner: T) -> Self { + let size = Offset::uniform(side); + let border = Offset::uniform(border); + Self::new(size, border, TOP_RIGHT, inner) + } +} + +impl Component for Floating +where + T: Component, +{ + type Msg = T::Msg; + + fn place(&mut self, bounds: Rect) -> Rect { + let mut border = self.border; + let area = match self.align.0 { + Alignment::Start => bounds.split_left(self.size.x).0, + Alignment::Center => panic!("alignment not supported"), + Alignment::End => { + border.x = -border.x; + bounds.split_right(self.size.x).1 + } + }; + let area = match self.align.1 { + Alignment::Start => area.split_top(self.size.y).0, + Alignment::Center => panic!("alignment not supported"), + Alignment::End => { + border.y = -border.y; + area.split_bottom(self.size.y).1 + } + }; + self.inner.place(area.translate(border)) + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option { + self.inner.event(ctx, event) + } + + fn paint(&mut self) { + self.inner.paint() + } +} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for Floating +where + T: Component, + T: crate::trace::Trace, +{ + fn trace(&self, d: &mut dyn crate::trace::Tracer) { + d.open("Floating"); + d.field("inner", &self.inner); + d.close(); + } +} + +pub struct VSplit { + first: T, + second: U, + width: i16, + spacing: i16, +} + +impl VSplit { + pub const fn new(width: i16, spacing: i16, first: T, second: U) -> Self { + Self { + first, + second, + width, + spacing, + } + } +} + +impl Component for VSplit +where + T: Component, + U: Component, +{ + type Msg = M; + + fn place(&mut self, bounds: Rect) -> Rect { + let (left, right) = bounds.split_left(self.width); + let right = right.inset(Insets::left(self.spacing)); + self.first.place(left); + self.second.place(right); + bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option { + self.first + .event(ctx, event) + .or_else(|| self.second.event(ctx, event)) + } + + fn paint(&mut self) { + self.first.paint(); + self.second.paint(); + } +} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for VSplit +where + T: Component + crate::trace::Trace, + U: Component + crate::trace::Trace, +{ + fn trace(&self, d: &mut dyn crate::trace::Tracer) { + d.open("VSplit"); + d.field("first", &self.first); + d.field("second", &self.second); + d.close(); + } +} diff --git a/core/embed/rust/src/ui/model_tr/layout.rs b/core/embed/rust/src/ui/model_tr/layout.rs index 9b8636aedc..1a0d2a25b1 100644 --- a/core/embed/rust/src/ui/model_tr/layout.rs +++ b/core/embed/rust/src/ui/model_tr/layout.rs @@ -32,7 +32,7 @@ where PageMsg::Content(_) => Err(Error::TypeError), PageMsg::Controls(true) => Ok(CONFIRMED.as_obj()), PageMsg::Controls(false) => Ok(CANCELLED.as_obj()), - PageMsg::GoBack => unreachable!(), + PageMsg::Aux(_) => Err(Error::TypeError), } } } diff --git a/core/embed/rust/src/ui/model_tt/component/address_details.rs b/core/embed/rust/src/ui/model_tt/component/address_details.rs new file mode 100644 index 0000000000..aa7c7c8436 --- /dev/null +++ b/core/embed/rust/src/ui/model_tt/component/address_details.rs @@ -0,0 +1,158 @@ +use heapless::Vec; + +use crate::{ + error::Error, + ui::{ + component::{ + text::paragraphs::{ + Paragraph, ParagraphSource, ParagraphStrType, ParagraphVecShort, Paragraphs, VecExt, + }, + Component, Event, EventCtx, Never, Paginate, Qr, + }, + geometry::Rect, + }, +}; + +use super::{theme, Frame}; + +pub struct AddressDetails { + qr_code: Frame, + details: Frame>, T>, + xpub_view: Frame>, T>, + xpubs: Vec<(T, T), 16>, + current_page: usize, +} + +impl AddressDetails +where + T: ParagraphStrType + From<&'static str>, +{ + pub fn new( + qr_address: T, + case_sensitive: bool, + account: Option, + path: Option, + ) -> Result { + let mut para = ParagraphVecShort::new(); + if let Some(a) = account { + para.add(Paragraph::new(&theme::TEXT_NORMAL, "Account:".into())); + para.add(Paragraph::new(&theme::TEXT_MONO, a)); + } + if let Some(p) = path { + para.add(Paragraph::new( + &theme::TEXT_NORMAL, + "Derivation path:".into(), + )); + para.add(Paragraph::new(&theme::TEXT_MONO, p)); + } + let result = Self { + qr_code: Frame::left_aligned( + theme::label_title(), + "RECEIVE ADDRESS".into(), + Qr::new(qr_address, case_sensitive)?.with_border(7), + ) + .with_border(theme::borders_horizontal_scroll()), + details: Frame::left_aligned( + theme::label_title(), + "RECEIVING TO".into(), + para.into_paragraphs(), + ) + .with_border(theme::borders_horizontal_scroll()), + xpub_view: Frame::left_aligned( + theme::label_title(), + " \n ".into(), + Paragraph::new(&theme::TEXT_XPUB, "".into()).into_paragraphs(), + ) + .with_border(theme::borders_horizontal_scroll()), + xpubs: Vec::new(), + current_page: 0, + }; + Ok(result) + } + + pub fn add_xpub(&mut self, title: T, xpub: T) -> Result<(), Error> { + self.xpubs + .push((title, xpub)) + .map_err(|_| Error::OutOfRange) + } +} + +impl Paginate for AddressDetails +where + T: ParagraphStrType + Clone, +{ + fn page_count(&mut self) -> usize { + 2 + self.xpubs.len() + } + + fn change_page(&mut self, to_page: usize) { + self.current_page = to_page; + if to_page > 1 { + let i = to_page - 2; + // Context is needed for updating child so that it can request repaint. In this + // case the parent component that handles paging always requests complete + // repaint after page change so we can use a dummy context here. + let mut dummy_ctx = EventCtx::new(); + self.xpub_view + .update_title(&mut dummy_ctx, self.xpubs[i].0.clone()); + self.xpub_view.update_content(&mut dummy_ctx, |p| { + p.inner_mut().update(self.xpubs[i].1.clone()); + p.change_page(0) + }); + } + } +} + +impl Component for AddressDetails +where + T: ParagraphStrType, +{ + type Msg = Never; + + fn place(&mut self, bounds: Rect) -> Rect { + self.qr_code.place(bounds); + self.details.place(bounds); + self.xpub_view.place(bounds); + bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option { + match self.current_page { + 0 => self.qr_code.event(ctx, event), + 1 => self.details.event(ctx, event), + _ => self.xpub_view.event(ctx, event), + } + } + + fn paint(&mut self) { + match self.current_page { + 0 => self.qr_code.paint(), + 1 => self.details.paint(), + _ => self.xpub_view.paint(), + } + } + + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + match self.current_page { + 0 => self.qr_code.bounds(sink), + 1 => self.details.bounds(sink), + _ => self.xpub_view.bounds(sink), + } + } +} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for AddressDetails +where + T: ParagraphStrType + crate::trace::Trace, +{ + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.open("AddressDetails"); + match self.current_page { + 0 => self.qr_code.trace(t), + 1 => self.details.trace(t), + _ => self.xpub_view.trace(t), + } + t.close(); + } +} diff --git a/core/embed/rust/src/ui/model_tt/component/button.rs b/core/embed/rust/src/ui/model_tt/component/button.rs index ba4ed77433..87ce99d8bf 100644 --- a/core/embed/rust/src/ui/model_tt/component/button.rs +++ b/core/embed/rust/src/ui/model_tt/component/button.rs @@ -2,7 +2,8 @@ use crate::{ time::Duration, ui::{ component::{ - Component, ComponentExt, Event, EventCtx, FixedHeightBar, GridPlaced, Map, TimerToken, + Component, ComponentExt, Event, EventCtx, FixedHeightBar, Floating, GridPlaced, Map, + Paginate, TimerToken, VSplit, }, display::{self, toif::Icon, Color, Font}, event::TouchEvent, @@ -34,7 +35,7 @@ impl Button { /// (positive). pub const BASELINE_OFFSET: i16 = -3; - pub fn new(content: ButtonContent) -> Self { + pub const fn new(content: ButtonContent) -> Self { Self { content, area: Rect::zero(), @@ -46,19 +47,19 @@ impl Button { } } - pub fn with_text(text: T) -> Self { + pub const fn with_text(text: T) -> Self { Self::new(ButtonContent::Text(text)) } - pub fn with_icon(icon: Icon) -> Self { + pub const fn with_icon(icon: Icon) -> Self { Self::new(ButtonContent::Icon(icon)) } - pub fn with_icon_and_text(content: IconText) -> Self { + pub const fn with_icon_and_text(content: IconText) -> Self { Self::new(ButtonContent::IconAndText(content)) } - pub fn with_icon_blend(bg: Icon, fg: Icon, fg_offset: Offset) -> Self { + pub const fn with_icon_blend(bg: Icon, fg: Icon, fg_offset: Offset) -> Self { Self::new(ButtonContent::IconBlend(bg, fg, fg_offset)) } @@ -425,6 +426,29 @@ impl Button { Self::cancel_confirm(left, right, right_size_factor) } + pub fn cancel_confirm_square( + left: Button, + right: Button, + ) -> CancelConfirmSquare< + T, + impl Fn(ButtonMsg) -> Option, + impl Fn(ButtonMsg) -> Option, + > + where + T: AsRef, + { + theme::button_bar(VSplit::new( + theme::BUTTON_HEIGHT, + theme::BUTTON_SPACING, + left.map(|msg| { + (matches!(msg, ButtonMsg::Clicked)).then(|| CancelConfirmMsg::Cancelled) + }), + right.map(|msg| { + (matches!(msg, ButtonMsg::Clicked)).then(|| CancelConfirmMsg::Confirmed) + }), + )) + } + pub fn cancel_info_confirm( confirm: T, info: T, @@ -542,6 +566,9 @@ type CancelInfoConfirm = FixedHeightBar<( Map>, F2>, )>; +type CancelConfirmSquare = + FixedHeightBar, F0>, Map, F1>>>; + pub enum CancelInfoConfirmMsg { Cancelled, Info, @@ -610,3 +637,87 @@ impl IconText { } } } + +pub struct FloatingButton { + inner: T, + button: Floating>, +} + +pub enum FloatingButtonMsg { + ButtonClicked, + Content(T), +} + +impl FloatingButton +where + T: Component, +{ + pub const fn top_right_corner(icon: Icon, inner: T) -> Self { + Self { + inner, + button: Floating::top_right( + theme::CORNER_BUTTON_SIDE, + theme::CORNER_BUTTON_SPACING, + Button::with_icon(icon), + ), + } + } + + pub fn inner(&self) -> &T { + &self.inner + } +} + +impl Component for FloatingButton +where + T: Component, +{ + type Msg = FloatingButtonMsg; + + fn place(&mut self, bounds: Rect) -> Rect { + self.button.place(bounds); + self.inner.place(bounds) + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option { + if let Some(ButtonMsg::Clicked) = self.button.event(ctx, event) { + return Some(FloatingButtonMsg::ButtonClicked); + } + self.inner.event(ctx, event).map(FloatingButtonMsg::Content) + } + + fn paint(&mut self) { + self.inner.paint(); + self.button.paint(); + } + + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + self.inner.bounds(sink); + self.button.bounds(sink); + } +} + +impl Paginate for FloatingButton +where + T: Paginate, +{ + fn page_count(&mut self) -> usize { + self.inner.page_count() + } + + fn change_page(&mut self, to_page: usize) { + self.inner.change_page(to_page) + } +} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for FloatingButton +where + T: Component + crate::trace::Trace, +{ + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.open("FloatingButton"); + t.field("inner", self.inner()); + t.close(); + } +} diff --git a/core/embed/rust/src/ui/model_tt/component/dialog.rs b/core/embed/rust/src/ui/model_tt/component/dialog.rs index 7c64ce92bb..9ce53ddc5f 100644 --- a/core/embed/rust/src/ui/model_tt/component/dialog.rs +++ b/core/embed/rust/src/ui/model_tt/component/dialog.rs @@ -1,8 +1,11 @@ use crate::ui::{ component::{ image::BlendedImage, - text::paragraphs::{ - Paragraph, ParagraphSource, ParagraphStrType, ParagraphVecShort, Paragraphs, VecExt, + text::{ + paragraphs::{ + Paragraph, ParagraphSource, ParagraphStrType, ParagraphVecShort, Paragraphs, VecExt, + }, + TextStyle, }, Child, Component, Event, EventCtx, Never, }, @@ -116,15 +119,19 @@ where } } - pub fn with_description(mut self, description: T) -> Self { - if !description.as_ref().is_empty() { + pub fn with_text(mut self, style: &'static TextStyle, text: T) -> Self { + if !text.as_ref().is_empty() { self.paragraphs .inner_mut() - .add(Paragraph::new(&theme::TEXT_NORMAL_OFF_WHITE, description).centered()); + .add(Paragraph::new(style, text).centered()); } self } + pub fn with_description(self, description: T) -> Self { + self.with_text(&theme::TEXT_NORMAL_OFF_WHITE, description) + } + pub fn new_shares(lines: [T; 4], controls: U) -> Self { let [l0, l1, l2, l3] = lines; Self { diff --git a/core/embed/rust/src/ui/model_tt/component/frame.rs b/core/embed/rust/src/ui/model_tt/component/frame.rs index 522454751e..aafb2e64c2 100644 --- a/core/embed/rust/src/ui/model_tt/component/frame.rs +++ b/core/embed/rust/src/ui/model_tt/component/frame.rs @@ -1,6 +1,8 @@ use super::theme; use crate::ui::{ - component::{label::Label, text::TextStyle, Child, Component, Event, EventCtx}, + component::{ + base::ComponentExt, label::Label, text::TextStyle, Child, Component, Event, EventCtx, + }, display::{self, toif::Icon, Color}, geometry::{Alignment, Insets, Offset, Rect}, util::icon_text_center, @@ -45,6 +47,23 @@ where pub fn inner(&self) -> &T { self.content.inner() } + + pub fn update_title(&mut self, ctx: &mut EventCtx, new_title: U) { + self.title.mutate(ctx, |ctx, t| { + t.set_text(new_title); + t.request_complete_repaint(ctx) + }) + } + + pub fn update_content(&mut self, ctx: &mut EventCtx, update_fn: F) + where + F: Fn(&mut T), + { + self.content.mutate(ctx, |ctx, c| { + update_fn(c); + c.request_complete_repaint(ctx) + }) + } } impl Component for Frame diff --git a/core/embed/rust/src/ui/model_tt/component/horizontal_page.rs b/core/embed/rust/src/ui/model_tt/component/horizontal_page.rs new file mode 100644 index 0000000000..1652335baa --- /dev/null +++ b/core/embed/rust/src/ui/model_tt/component/horizontal_page.rs @@ -0,0 +1,144 @@ +use crate::ui::{ + component::{ + base::ComponentExt, AuxPageMsg, Component, Event, EventCtx, Never, Pad, PageMsg, Paginate, + }, + display::{self, Color}, + geometry::Rect, +}; + +use super::{theme, ScrollBar, Swipe, SwipeDirection}; + +const SCROLLBAR_HEIGHT: i16 = 32; + +pub struct HorizontalPage { + content: T, + pad: Pad, + swipe: Swipe, + scrollbar: ScrollBar, + swipe_right_to_go_back: bool, + fade: Option, +} + +impl HorizontalPage +where + T: Paginate, + T: Component, +{ + pub fn new(content: T, background: Color) -> Self { + Self { + content, + swipe: Swipe::new(), + pad: Pad::with_background(background), + scrollbar: ScrollBar::horizontal(), + swipe_right_to_go_back: false, + fade: None, + } + } + + pub fn with_swipe_right_to_go_back(mut self) -> Self { + self.swipe_right_to_go_back = true; + self + } + + pub fn inner(&self) -> &T { + &self.content + } + + fn setup_swipe(&mut self) { + self.swipe.allow_left = self.scrollbar.has_next_page(); + self.swipe.allow_right = self.scrollbar.has_previous_page() || self.swipe_right_to_go_back; + } + + fn on_page_change(&mut self, ctx: &mut EventCtx) { + // Adjust the swipe parameters according to the scrollbar. + self.setup_swipe(); + + // Change the page in the content, make sure it gets completely repainted and + // clear the background under it. + self.content.change_page(self.scrollbar.active_page); + self.content.request_complete_repaint(ctx); + self.pad.clear(); + + // Swipe has dimmed the screen, so fade back to normal backlight after the next + // paint. + self.fade = Some(theme::BACKLIGHT_NORMAL); + } +} + +impl Component for HorizontalPage +where + T: Paginate, + T: Component, +{ + type Msg = PageMsg; + + fn place(&mut self, bounds: Rect) -> Rect { + self.swipe.place(bounds); + + let (content, scrollbar) = bounds.split_bottom(SCROLLBAR_HEIGHT); + self.pad.place(content); + self.content.place(content); + self.scrollbar.place(scrollbar); + + self.scrollbar + .set_count_and_active_page(self.content.page_count(), 0); + self.setup_swipe(); + + bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option { + ctx.set_page_count(self.scrollbar.page_count); + if let Some(swipe) = self.swipe.event(ctx, event) { + match swipe { + SwipeDirection::Left => { + self.scrollbar.go_to_next_page(); + self.on_page_change(ctx); + return None; + } + SwipeDirection::Right => { + if self.swipe_right_to_go_back && self.scrollbar.active_page == 0 { + return Some(PageMsg::Aux(AuxPageMsg::GoBack)); + } + self.scrollbar.go_to_previous_page(); + self.on_page_change(ctx); + return None; + } + _ => { + // Ignore other directions. + } + } + } + self.content.event(ctx, event).map(PageMsg::Content) + } + + fn paint(&mut self) { + self.pad.paint(); + self.content.paint(); + self.scrollbar.paint(); + if let Some(val) = self.fade.take() { + // Note that this is blocking and takes some time. + display::fade_backlight(val); + } + } + + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + sink(self.pad.area); + self.scrollbar.bounds(sink); + self.content.bounds(sink); + } +} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for HorizontalPage +where + T: crate::trace::Trace, +{ + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.open("HorizontalPage"); + t.field("active_page", &self.scrollbar.active_page); + t.field("page_count", &self.scrollbar.page_count); + t.field("content", &self.content); + t.close(); + } +} diff --git a/core/embed/rust/src/ui/model_tt/component/mod.rs b/core/embed/rust/src/ui/model_tt/component/mod.rs index 4d4a82f768..bcf3f12ece 100644 --- a/core/embed/rust/src/ui/model_tt/component/mod.rs +++ b/core/embed/rust/src/ui/model_tt/component/mod.rs @@ -1,3 +1,4 @@ +mod address_details; mod button; mod dialog; mod fido; @@ -7,6 +8,7 @@ mod frame; mod hold_to_confirm; #[cfg(feature = "dma2d")] mod homescreen; +mod horizontal_page; mod keyboard; mod loader; mod number_input; @@ -17,9 +19,10 @@ mod scroll; mod swipe; mod welcome_screen; +pub use address_details::AddressDetails; pub use button::{ Button, ButtonContent, ButtonMsg, ButtonStyle, ButtonStyleSheet, CancelConfirmMsg, - CancelInfoConfirmMsg, IconText, SelectWordMsg, + CancelInfoConfirmMsg, FloatingButton, FloatingButtonMsg, IconText, SelectWordMsg, }; pub use dialog::{Dialog, DialogMsg, IconDialog}; pub use fido::{FidoConfirm, FidoMsg}; @@ -27,6 +30,7 @@ pub use frame::{Frame, NotificationFrame}; pub use hold_to_confirm::{HoldToConfirm, HoldToConfirmMsg}; #[cfg(feature = "dma2d")] pub use homescreen::{Homescreen, HomescreenMsg, Lockscreen}; +pub use horizontal_page::HorizontalPage; pub use keyboard::{ bip39::Bip39Input, mnemonic::{MnemonicInput, MnemonicKeyboard, MnemonicKeyboardMsg}, diff --git a/core/embed/rust/src/ui/model_tt/component/page.rs b/core/embed/rust/src/ui/model_tt/component/page.rs index 1779b2e96d..b1cf772811 100644 --- a/core/embed/rust/src/ui/model_tt/component/page.rs +++ b/core/embed/rust/src/ui/model_tt/component/page.rs @@ -1,7 +1,8 @@ use crate::ui::{ component::{ - base::ComponentExt, paginated::PageMsg, Component, Event, EventCtx, FixedHeightBar, Label, - Pad, Paginate, + base::ComponentExt, + paginated::{AuxPageMsg, PageMsg}, + Component, Event, EventCtx, FixedHeightBar, Label, Pad, Paginate, }, display::{self, toif::Icon, Color}, geometry::{Insets, Rect}, @@ -21,6 +22,7 @@ pub struct SwipePage { scrollbar: ScrollBar, hint: Label<&'static str>, button_back: Option>, + swipe_left: bool, fade: Option, } @@ -39,6 +41,7 @@ where pad: Pad::with_background(background), hint: Label::centered("SWIPE TO CONTINUE", theme::label_page_hint()), button_back: None, + swipe_left: false, fade: None, } } @@ -48,9 +51,15 @@ where self } + pub fn with_swipe_left(mut self) -> Self { + self.swipe_left = true; + self + } + fn setup_swipe(&mut self) { self.swipe.allow_up = self.scrollbar.has_next_page(); self.swipe.allow_down = self.scrollbar.has_previous_page(); + self.swipe.allow_left = self.swipe_left; } fn on_page_change(&mut self, ctx: &mut EventCtx) { @@ -138,6 +147,9 @@ where self.on_page_change(ctx); return None; } + SwipeDirection::Left if self.swipe_left => { + return Some(PageMsg::Aux(AuxPageMsg::SwipeLeft)); + } _ => { // Ignore other directions. } @@ -152,7 +164,7 @@ where } } else { if let Some(ButtonMsg::Clicked) = self.button_back.event(ctx, event) { - return Some(PageMsg::GoBack); + return Some(PageMsg::Aux(AuxPageMsg::GoBack)); } self.hint.event(ctx, event); } diff --git a/core/embed/rust/src/ui/model_tt/layout.rs b/core/embed/rust/src/ui/model_tt/layout.rs index 7a8773cb04..2c5cf7f71a 100644 --- a/core/embed/rust/src/ui/model_tt/layout.rs +++ b/core/embed/rust/src/ui/model_tt/layout.rs @@ -18,7 +18,7 @@ use crate::{ component::{ base::ComponentExt, image::BlendedImage, - paginated::{PageMsg, Paginate}, + paginated::{AuxPageMsg, PageMsg, Paginate}, painter, placed::GridPlaced, text::{ @@ -45,9 +45,10 @@ use crate::{ use super::{ component::{ - Bip39Input, Button, ButtonMsg, ButtonStyleSheet, CancelConfirmMsg, CancelInfoConfirmMsg, - Dialog, DialogMsg, FidoConfirm, FidoMsg, Frame, HoldToConfirm, HoldToConfirmMsg, - Homescreen, HomescreenMsg, IconDialog, Lockscreen, MnemonicInput, MnemonicKeyboard, + AddressDetails, Bip39Input, Button, ButtonMsg, ButtonStyleSheet, CancelConfirmMsg, + CancelInfoConfirmMsg, Dialog, DialogMsg, FidoConfirm, FidoMsg, FloatingButton, + FloatingButtonMsg, Frame, HoldToConfirm, HoldToConfirmMsg, Homescreen, HomescreenMsg, + HorizontalPage, IconDialog, Lockscreen, MnemonicInput, MnemonicKeyboard, MnemonicKeyboardMsg, NotificationFrame, NumberInputDialog, NumberInputDialogMsg, PassphraseKeyboard, PassphraseKeyboardMsg, PinKeyboard, PinKeyboardMsg, Progress, SelectWordCount, SelectWordCountMsg, SelectWordMsg, Slip39Input, SwipeHoldPage, SwipePage, @@ -223,7 +224,8 @@ where match msg { PageMsg::Content(_) => Err(Error::TypeError), PageMsg::Controls(msg) => msg.try_into(), - PageMsg::GoBack => Ok(CANCELLED.as_obj()), + PageMsg::Aux(AuxPageMsg::GoBack) => Ok(CANCELLED.as_obj()), + PageMsg::Aux(AuxPageMsg::SwipeLeft) => Ok(INFO.as_obj()), } } } @@ -236,7 +238,7 @@ where match msg { PageMsg::Content(_) => Err(Error::TypeError), PageMsg::Controls(msg) => msg.try_into(), - PageMsg::GoBack => unreachable!(), + PageMsg::Aux(_) => Err(Error::TypeError), } } } @@ -338,6 +340,41 @@ impl ComponentMsgObj for Qr { } } +impl ComponentMsgObj for FloatingButton +where + T: ComponentMsgObj, +{ + fn msg_try_into_obj(&self, msg: Self::Msg) -> Result { + match msg { + FloatingButtonMsg::ButtonClicked => Ok(INFO.as_obj()), + FloatingButtonMsg::Content(c) => self.inner().msg_try_into_obj(c), + } + } +} + +impl ComponentMsgObj for HorizontalPage +where + T: ComponentMsgObj + Paginate, +{ + fn msg_try_into_obj(&self, msg: Self::Msg) -> Result { + match msg { + PageMsg::Content(inner_msg) => Ok(self.inner().msg_try_into_obj(inner_msg)?), + PageMsg::Controls(_) => Err(Error::TypeError), + PageMsg::Aux(AuxPageMsg::GoBack) => Ok(CANCELLED.as_obj()), + PageMsg::Aux(_) => Err(Error::TypeError), + } + } +} + +impl ComponentMsgObj for AddressDetails +where + T: ParagraphStrType, +{ + fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result { + unreachable!(); + } +} + extern "C" fn new_confirm_action(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; @@ -434,23 +471,54 @@ extern "C" fn new_confirm_blob(n_args: usize, args: *const Obj, kwargs: *mut Map let description: Option = kwargs.get(Qstr::MP_QSTR_description)?.try_into_option()?; let extra: Option = kwargs.get(Qstr::MP_QSTR_extra)?.try_into_option()?; + let verb: Option = kwargs + .get(Qstr::MP_QSTR_verb) + .unwrap_or_else(|_| Obj::const_none()) + .try_into_option()?; let verb_cancel: Option = kwargs .get(Qstr::MP_QSTR_verb_cancel) .unwrap_or_else(|_| Obj::const_none()) .try_into_option()?; let hold: bool = kwargs.get_or(Qstr::MP_QSTR_hold, false)?; - let verb: StrBuffer = "CONFIRM".into(); + confirm_blob(title, data, description, extra, verb, verb_cancel, hold) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} - confirm_blob( - title, - data, - description, - extra, - Some(verb), - verb_cancel, - hold, - ) +extern "C" fn new_confirm_address(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let description: Option = + kwargs.get(Qstr::MP_QSTR_description)?.try_into_option()?; + let extra: Option = kwargs.get(Qstr::MP_QSTR_extra)?.try_into_option()?; + let data: Obj = kwargs.get(Qstr::MP_QSTR_data)?; + + let paragraphs = ConfirmBlob { + description: description.unwrap_or_else(StrBuffer::empty), + extra: extra.unwrap_or_else(StrBuffer::empty), + data: data.try_into()?, + description_font: &theme::TEXT_NORMAL, + extra_font: &theme::TEXT_BOLD, + data_font: &theme::TEXT_MONO, + } + .into_paragraphs(); + + let buttons = Button::cancel_confirm( + Button::<&'static str>::with_icon(Icon::new(theme::ICON_CANCEL)), + Button::<&'static str>::with_icon(Icon::new(theme::ICON_CONFIRM)) + .styled(theme::button_confirm()), + 1, + ); + let obj = LayoutObj::new(FloatingButton::top_right_corner( + Icon::new(theme::ICON_INFO_CIRCLE), + Frame::left_aligned( + theme::label_title(), + title, + SwipePage::new(paragraphs, buttons, theme::BG).with_swipe_left(), + ), + ))?; + Ok(obj.into()) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } @@ -583,6 +651,36 @@ extern "C" fn new_show_qr(n_args: usize, args: *const Obj, kwargs: *mut Map) -> unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } +extern "C" fn new_show_address_details(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let address: StrBuffer = kwargs.get(Qstr::MP_QSTR_address)?.try_into()?; + let case_sensitive: bool = kwargs.get(Qstr::MP_QSTR_case_sensitive)?.try_into()?; + let account: Option = kwargs.get(Qstr::MP_QSTR_account)?.try_into_option()?; + let path: Option = kwargs.get(Qstr::MP_QSTR_path)?.try_into_option()?; + + let xpubs: Obj = kwargs.get(Qstr::MP_QSTR_xpubs)?; + let mut iter_buf = IterBuf::new(); + let iter = Iter::try_from_obj_with_buf(xpubs, &mut iter_buf)?; + + let mut ad = AddressDetails::new(address, case_sensitive, account, path)?; + + for i in iter { + let [xtitle, text]: [StrBuffer; 2] = iter_into_array(i)?; + ad.add_xpub(xtitle, text)?; + } + + let obj = LayoutObj::new( + HorizontalPage::new( + FloatingButton::top_right_corner(Icon::new(theme::ICON_CANCEL_LARGER), ad), + theme::BG, + ) + .with_swipe_right_to_go_back(), + )?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + extern "C" fn new_confirm_value(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; @@ -847,6 +945,33 @@ extern "C" fn new_show_info(n_args: usize, args: *const Obj, kwargs: *mut Map) - unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } +extern "C" fn new_show_mismatch() -> Obj { + let block = move || { + let title: StrBuffer = "Address mismatch?".into(); + let description: StrBuffer = "Please contact Trezor support at".into(); + let url: StrBuffer = "trezor.io/support".into(); + let button = "QUIT"; + + let icon = BlendedImage::single(Icon::new(theme::ICON_OCTA), theme::WARN_COLOR, theme::BG); + + let obj = LayoutObj::new( + IconDialog::new( + icon, + title, + Button::cancel_confirm_square( + Button::with_icon(Icon::new(theme::ICON_BACK)), + Button::with_text(button).styled(theme::button_reset()), + ), + ) + .with_description(description) + .with_text(&theme::TEXT_DEMIBOLD, url), + )?; + + Ok(obj.into()) + }; + unsafe { util::try_or_raise(block) } +} + extern "C" fn new_show_simple(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: Option = kwargs.get(Qstr::MP_QSTR_title)?.try_into_option()?; @@ -1422,12 +1547,24 @@ pub static mp_module_trezorui2: Module = obj_module! { /// data: str | bytes, /// description: str | None, /// extra: str | None, + /// verb: str | None = None, /// verb_cancel: str | None = None, /// hold: bool = False, /// ) -> object: /// """Confirm byte sequence data.""" Qstr::MP_QSTR_confirm_blob => obj_fn_kw!(0, new_confirm_blob).as_obj(), + /// def confirm_address( + /// *, + /// title: str, + /// data: str | bytes, + /// description: str | None, + /// extra: str | None, + /// ) -> object: + /// """Confirm address. Similar to `confirm_blob` but has corner info button + /// and allows left swipe which does the same thing as the button.""" + Qstr::MP_QSTR_confirm_address => obj_fn_kw!(0, new_confirm_address).as_obj(), + /// def confirm_properties( /// *, /// title: str, @@ -1456,6 +1593,17 @@ pub static mp_module_trezorui2: Module = obj_module! { /// """Show QR code.""" Qstr::MP_QSTR_show_qr => obj_fn_kw!(0, new_show_qr).as_obj(), + /// def show_address_details( + /// *, + /// address: str, + /// case_sensitive: bool, + /// account: str | None, + /// path: str | None, + /// xpubs: list[tuple[str, str]], + /// ) -> object: + /// """Show address details - QR code, account, path, cosigner xpubs.""" + Qstr::MP_QSTR_show_address_details => obj_fn_kw!(0, new_show_address_details).as_obj(), + /// def confirm_value( /// *, /// title: str, @@ -1551,6 +1699,10 @@ pub static mp_module_trezorui2: Module = obj_module! { /// """Info modal. No buttons shown when `button` is empty string.""" Qstr::MP_QSTR_show_info => obj_fn_kw!(0, new_show_info).as_obj(), + /// def show_mismatch() -> object: + /// """Warning modal, receiving address mismatch.""" + Qstr::MP_QSTR_show_mismatch => obj_fn_0!(new_show_mismatch).as_obj(), + /// def show_simple( /// *, /// title: str | None, diff --git a/core/embed/rust/src/ui/model_tt/res/cancel-larger.toif b/core/embed/rust/src/ui/model_tt/res/cancel-larger.toif new file mode 100644 index 0000000000000000000000000000000000000000..a53d508b3dcb563ccbd05817fc0df9fa00ed99d4 GIT binary patch literal 94 zcmV-k0HOa>Pf14*01yCD0002H!NdRr26ex6LGPf14<02BbH0000bjxh?tKomsBEGCKuJ%Qu~Zs{>Rfov@Vtrd(n$St(B z(sGZG*rW{>YH1KjaB*G#u2X#8XJBT4;a+ERSX~V%CfJ&_#|skx&Bhw{6ym|aJ@9Wk zPk>jStWg~T=Pqzal=Q#%IqlYY19EAu6!NtANaTZ+K8yydV z%X_2agCO|&0s`RE4G0gJCrg>jPVcSPd;iBho+oC1^*_x?|Nf2WC7ax1Nz}+aHrU^J zIaEB>L{DA{YI$Crk*TzQC_WFg&Fi{<&y|iV!hkEnh-X5;GvSLT0^^Awcq9N$wBuv7 Hv$1&tjFVi0 literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_tt/theme.rs b/core/embed/rust/src/ui/model_tt/theme.rs index 32e5b4f536..6bfe4452ad 100644 --- a/core/embed/rust/src/ui/model_tt/theme.rs +++ b/core/embed/rust/src/ui/model_tt/theme.rs @@ -55,6 +55,7 @@ pub const ICON_SIZE: i16 = 16; // UI icons (greyscale). pub const ICON_CANCEL: &[u8] = include_res!("model_tt/res/cancel.toif"); +pub const ICON_CANCEL_LARGER: &[u8] = include_res!("model_tt/res/cancel-larger.toif"); pub const ICON_CONFIRM: &[u8] = include_res!("model_tt/res/confirm.toif"); pub const ICON_SPACE: &[u8] = include_res!("model_tt/res/space.toif"); pub const ICON_BACK: &[u8] = include_res!("model_tt/res/back.toif"); @@ -70,6 +71,8 @@ pub const ICON_SUCCESS_SMALL: &[u8] = include_res!("model_tt/res/success_bld.toi pub const ICON_WARN_SMALL: &[u8] = include_res!("model_tt/res/warn_bld.toif"); pub const ICON_PAGE_NEXT: &[u8] = include_res!("model_tt/res/page-next.toif"); pub const ICON_PAGE_PREV: &[u8] = include_res!("model_tt/res/page-prev.toif"); +pub const ICON_OCTA: &[u8] = include_res!("model_tt/res/octa-bang.toif"); +pub const ICON_INFO_CIRCLE: &[u8] = include_res!("model_tt/res/info-circle.toif"); // Large, three-color icons. pub const WARN_COLOR: Color = YELLOW; @@ -139,7 +142,7 @@ pub const fn label_title() -> TextStyle { TextStyle::new(Font::BOLD, GREY_LIGHT, BG, GREY_LIGHT, GREY_LIGHT) } -pub fn button_default() -> ButtonStyleSheet { +pub const fn button_default() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { font: Font::BOLD, @@ -171,7 +174,7 @@ pub fn button_default() -> ButtonStyleSheet { } } -pub fn button_confirm() -> ButtonStyleSheet { +pub const fn button_confirm() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { font: Font::BOLD, @@ -203,7 +206,7 @@ pub fn button_confirm() -> ButtonStyleSheet { } } -pub fn button_cancel() -> ButtonStyleSheet { +pub const fn button_cancel() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { font: Font::BOLD, @@ -235,11 +238,11 @@ pub fn button_cancel() -> ButtonStyleSheet { } } -pub fn button_danger() -> ButtonStyleSheet { +pub const fn button_danger() -> ButtonStyleSheet { button_cancel() } -pub fn button_reset() -> ButtonStyleSheet { +pub const fn button_reset() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { font: Font::BOLD, @@ -271,7 +274,7 @@ pub fn button_reset() -> ButtonStyleSheet { } } -pub fn button_info() -> ButtonStyleSheet { +pub const fn button_info() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { font: Font::BOLD, @@ -303,7 +306,7 @@ pub fn button_info() -> ButtonStyleSheet { } } -pub fn button_pin() -> ButtonStyleSheet { +pub const fn button_pin() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { font: Font::MONO, @@ -335,7 +338,7 @@ pub fn button_pin() -> ButtonStyleSheet { } } -pub fn button_counter() -> ButtonStyleSheet { +pub const fn button_counter() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { font: Font::DEMIBOLD, @@ -367,11 +370,11 @@ pub fn button_counter() -> ButtonStyleSheet { } } -pub fn button_clear() -> ButtonStyleSheet { +pub const fn button_clear() -> ButtonStyleSheet { button_default() } -pub fn loader_default() -> LoaderStyleSheet { +pub const fn loader_default() -> LoaderStyleSheet { LoaderStyleSheet { normal: &LoaderStyle { icon: None, @@ -418,6 +421,7 @@ pub const TEXT_CHECKLIST_SELECTED: TextStyle = TextStyle::new(Font::NORMAL, FG, BG, GREY_LIGHT, GREY_LIGHT); pub const TEXT_CHECKLIST_DONE: TextStyle = TextStyle::new(Font::NORMAL, GREEN_DARK, BG, GREY_LIGHT, GREY_LIGHT); +pub const TEXT_XPUB: TextStyle = TEXT_NORMAL.with_line_breaking(LineBreaking::BreakWordsNoHyphen); pub const FORMATTED: FormattedFonts = FormattedFonts { normal: Font::NORMAL, @@ -432,6 +436,8 @@ pub const BUTTON_HEIGHT: i16 = 38; pub const BUTTON_SPACING: i16 = 6; pub const CHECKLIST_SPACING: i16 = 10; pub const RECOVERY_SPACING: i16 = 18; +pub const CORNER_BUTTON_SIDE: i16 = 32; +pub const CORNER_BUTTON_SPACING: i16 = 8; /// Standard button height in pixels. pub const fn button_rows(count: usize) -> i16 { @@ -462,6 +468,10 @@ pub const fn borders_scroll() -> Insets { Insets::new(13, 5, 14, 10) } +pub const fn borders_horizontal_scroll() -> Insets { + Insets::new(13, 10, 0, 10) +} + pub const fn borders_notification() -> Insets { Insets::new(48, 10, 14, 10) } diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index abd391bd7a..adf9c17b20 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -82,12 +82,25 @@ def confirm_blob( data: str | bytes, description: str | None, extra: str | None, + verb: str | None = None, verb_cancel: str | None = None, hold: bool = False, ) -> object: """Confirm byte sequence data.""" +# rust/src/ui/model_tt/layout.rs +def confirm_address( + *, + title: str, + data: str | bytes, + description: str | None, + extra: str | None, +) -> object: + """Confirm address. Similar to `confirm_blob` but has corner info button + and allows left swipe which does the same thing as the button.""" + + # rust/src/ui/model_tt/layout.rs def confirm_properties( *, @@ -119,6 +132,18 @@ def show_qr( """Show QR code.""" +# rust/src/ui/model_tt/layout.rs +def show_address_details( + *, + address: str, + case_sensitive: bool, + account: str | None, + path: str | None, + xpubs: list[tuple[str, str]], +) -> object: + """Show address details - QR code, account, path, cosigner xpubs.""" + + # rust/src/ui/model_tt/layout.rs def confirm_value( *, @@ -222,6 +247,11 @@ def show_info( """Info modal. No buttons shown when `button` is empty string.""" +# rust/src/ui/model_tt/layout.rs +def show_mismatch() -> object: + """Warning modal, receiving address mismatch.""" + + # rust/src/ui/model_tt/layout.rs def show_simple( *, diff --git a/core/src/apps/binance/get_address.py b/core/src/apps/binance/get_address.py index 1b114e3be9..26e4db54cf 100644 --- a/core/src/apps/binance/get_address.py +++ b/core/src/apps/binance/get_address.py @@ -28,7 +28,6 @@ async def get_address( pubkey = node.public_key() address = address_from_public_key(pubkey, HRP) if msg.show_display: - title = paths.address_n_to_str(address_n) - await show_address(ctx, address, title=title) + await show_address(ctx, address, path=paths.address_n_to_str(address_n)) return BinanceAddress(address=address) diff --git a/core/src/apps/bitcoin/get_address.py b/core/src/apps/bitcoin/get_address.py index 3feeeceac6..af651f922e 100644 --- a/core/src/apps/bitcoin/get_address.py +++ b/core/src/apps/bitcoin/get_address.py @@ -41,7 +41,7 @@ async def get_address( from apps.common.paths import address_n_to_str, validate_path from . import addresses - from .keychain import validate_path_against_script_type + from .keychain import address_n_to_name, validate_path_against_script_type from .multisig import multisig_pubkey_index multisig = msg.multisig # local_cache_attribute @@ -95,6 +95,7 @@ async def get_address( mac = get_address_mac(address, coin.slip44, keychain) if msg.show_display: + path = address_n_to_str(address_n) if multisig: if multisig.nodes: pubnodes = multisig.nodes @@ -102,23 +103,30 @@ async def get_address( pubnodes = [hd.node for hd in multisig.pubkeys] multisig_index = multisig_pubkey_index(multisig, node.public_key()) - title = f"Multisig {multisig.m} of {len(pubnodes)}" await show_address( ctx, address_short, case_sensitive=address_case_sensitive, - title=title, + path=path, multisig_index=multisig_index, xpubs=_get_xpubs(coin, multisig_xpub_magic, pubnodes), + account=f"Multisig {multisig.m} of {len(pubnodes)}", ) else: - title = address_n_to_str(address_n) + account_name = address_n_to_name(coin, address_n, script_type) + if account_name is None: + account = "Unknown path" + elif account_name == "": + account = coin.coin_shortcut + else: + account = f"{coin.coin_shortcut} {account_name}" await show_address( ctx, address_short, address_qr=address, case_sensitive=address_case_sensitive, - title=title, + path=path, + account=account, ) return Address(address=address, mac=mac) diff --git a/core/src/apps/bitcoin/keychain.py b/core/src/apps/bitcoin/keychain.py index b79d2503c3..d0d7b6c619 100644 --- a/core/src/apps/bitcoin/keychain.py +++ b/core/src/apps/bitcoin/keychain.py @@ -384,7 +384,7 @@ def address_n_to_name( ) -> str | None: ACCOUNT_TYPES = ( AccountType( - "Legacy account", + "Legacy", PATTERN_BIP44, InputScriptType.SPENDADDRESS, require_segwit=True, @@ -392,7 +392,7 @@ def address_n_to_name( require_taproot=False, ), AccountType( - "Account", + "", PATTERN_BIP44, InputScriptType.SPENDADDRESS, require_segwit=False, @@ -400,7 +400,7 @@ def address_n_to_name( require_taproot=False, ), AccountType( - "Legacy SegWit account", + "L. SegWit", PATTERN_BIP49, InputScriptType.SPENDP2SHWITNESS, require_segwit=True, @@ -408,7 +408,7 @@ def address_n_to_name( require_taproot=False, ), AccountType( - "SegWit account", + "SegWit", PATTERN_BIP84, InputScriptType.SPENDWITNESS, require_segwit=True, @@ -416,7 +416,7 @@ def address_n_to_name( require_taproot=False, ), AccountType( - "Taproot account", + "Taproot", PATTERN_BIP86, InputScriptType.SPENDTAPROOT, require_segwit=False, @@ -424,7 +424,7 @@ def address_n_to_name( require_taproot=True, ), AccountType( - "Coinjoin account", + "Coinjoin", PATTERN_SLIP25_TAPROOT, InputScriptType.SPENDTAPROOT, require_segwit=False, diff --git a/core/src/apps/cardano/layout.py b/core/src/apps/cardano/layout.py index 7763ac866e..9aa74d4ac4 100644 --- a/core/src/apps/cardano/layout.py +++ b/core/src/apps/cardano/layout.py @@ -975,9 +975,8 @@ async def show_cardano_address( if not protocol_magics.is_mainnet(protocol_magic): network_name = protocol_magics.to_ui_string(protocol_magic) - title = f"{ADDRESS_TYPE_NAMES[address_parameters.address_type]} address" - address_extra = None - title_qr = title + path = None + account = ADDRESS_TYPE_NAMES[address_parameters.address_type] if address_parameters.address_type in ( CAT.BYRON, CAT.BASE, @@ -987,17 +986,14 @@ async def show_cardano_address( CAT.REWARD, ): if address_parameters.address_n: - address_extra = address_n_to_str(address_parameters.address_n) - title_qr = address_n_to_str(address_parameters.address_n) + path = address_n_to_str(address_parameters.address_n) elif address_parameters.address_n_staking: - address_extra = address_n_to_str(address_parameters.address_n_staking) - title_qr = address_n_to_str(address_parameters.address_n_staking) + path = address_n_to_str(address_parameters.address_n_staking) await layouts.show_address( ctx, address, - title=title, + path=path, + account=account, network=network_name, - address_extra=address_extra, - title_qr=title_qr, ) diff --git a/core/src/apps/ethereum/get_address.py b/core/src/apps/ethereum/get_address.py index f33a5390a7..53f61cd41d 100644 --- a/core/src/apps/ethereum/get_address.py +++ b/core/src/apps/ethereum/get_address.py @@ -32,7 +32,6 @@ async def get_address( address = address_from_bytes(node.ethereum_pubkeyhash(), network) if msg.show_display: - title = paths.address_n_to_str(address_n) - await show_address(ctx, address, title=title) + await show_address(ctx, address, path=paths.address_n_to_str(address_n)) return EthereumAddress(address=address) diff --git a/core/src/apps/monero/get_address.py b/core/src/apps/monero/get_address.py index 143d4c5087..773c627300 100644 --- a/core/src/apps/monero/get_address.py +++ b/core/src/apps/monero/get_address.py @@ -68,12 +68,11 @@ async def get_address( ) if msg.show_display: - title = paths.address_n_to_str(msg.address_n) await show_address( ctx, addr, address_qr="monero:" + addr, - title=title, + path=paths.address_n_to_str(msg.address_n), ) return MoneroAddress(address=addr.encode()) diff --git a/core/src/apps/nem/get_address.py b/core/src/apps/nem/get_address.py index 1d7ecfec6b..2fd931b4a7 100644 --- a/core/src/apps/nem/get_address.py +++ b/core/src/apps/nem/get_address.py @@ -30,12 +30,11 @@ async def get_address( address = node.nem_address(network) if msg.show_display: - title = address_n_to_str(address_n) await show_address( ctx, address, case_sensitive=False, - title=title, + path=address_n_to_str(address_n), network=get_network_str(network), ) diff --git a/core/src/apps/ripple/get_address.py b/core/src/apps/ripple/get_address.py index b1f9e1d284..622382c928 100644 --- a/core/src/apps/ripple/get_address.py +++ b/core/src/apps/ripple/get_address.py @@ -25,7 +25,6 @@ async def get_address( address = address_from_public_key(pubkey) if msg.show_display: - title = paths.address_n_to_str(msg.address_n) - await show_address(ctx, address, title=title) + await show_address(ctx, address, path=paths.address_n_to_str(msg.address_n)) return RippleAddress(address=address) diff --git a/core/src/apps/stellar/get_address.py b/core/src/apps/stellar/get_address.py index 2ead7530cd..b0c1bae7d5 100644 --- a/core/src/apps/stellar/get_address.py +++ b/core/src/apps/stellar/get_address.py @@ -24,7 +24,7 @@ async def get_address( address = helpers.address_from_public_key(pubkey) if msg.show_display: - title = paths.address_n_to_str(msg.address_n) - await show_address(ctx, address, case_sensitive=False, title=title) + path = paths.address_n_to_str(msg.address_n) + await show_address(ctx, address, case_sensitive=False, path=path) return StellarAddress(address=address) diff --git a/core/src/apps/tezos/get_address.py b/core/src/apps/tezos/get_address.py index d5d146736d..71b6393e5f 100644 --- a/core/src/apps/tezos/get_address.py +++ b/core/src/apps/tezos/get_address.py @@ -29,7 +29,6 @@ async def get_address( address = helpers.base58_encode_check(pkh, helpers.TEZOS_ED25519_ADDRESS_PREFIX) if msg.show_display: - title = paths.address_n_to_str(msg.address_n) - await show_address(ctx, address, title=title) + await show_address(ctx, address, path=paths.address_n_to_str(msg.address_n)) return TezosAddress(address=address) diff --git a/core/src/trezor/ui/layouts/tr/__init__.py b/core/src/trezor/ui/layouts/tr/__init__.py index 74996539df..718ec16457 100644 --- a/core/src/trezor/ui/layouts/tr/__init__.py +++ b/core/src/trezor/ui/layouts/tr/__init__.py @@ -164,8 +164,6 @@ async def show_address( network: str | None = None, multisig_index: int | None = None, xpubs: Sequence[str] = (), - address_extra: str | None = None, - title_qr: str | None = None, ) -> None: result = await interact( ctx, diff --git a/core/src/trezor/ui/layouts/tt_v2/__init__.py b/core/src/trezor/ui/layouts/tt_v2/__init__.py index a47589c81c..582daab11e 100644 --- a/core/src/trezor/ui/layouts/tt_v2/__init__.py +++ b/core/src/trezor/ui/layouts/tt_v2/__init__.py @@ -353,24 +353,20 @@ async def confirm_homescreen( ) -def _show_xpub(xpub: str, title: str, cancel: str | None) -> ui.Layout: - content = RustLayout( - trezorui2.confirm_blob( - title=title, - data=xpub, - verb_cancel=cancel, - extra=None, - description=None, - ) - ) - return content - - async def show_xpub(ctx: GenericContext, xpub: str, title: str) -> None: await raise_if_not_confirmed( interact( ctx, - _show_xpub(xpub, title, None), + RustLayout( + trezorui2.confirm_blob( + title=title, + data=xpub, + verb="CONFIRM", + verb_cancel=None, + extra=None, + description=None, + ) + ), "show_xpub", ButtonRequestType.PublicKey, ) @@ -383,61 +379,72 @@ async def show_address( *, address_qr: str | None = None, case_sensitive: bool = True, - title: str = "Confirm address", + path: str | None = None, + account: str | None = None, network: str | None = None, multisig_index: int | None = None, xpubs: Sequence[str] = (), - address_extra: str | None = None, - title_qr: str | None = None, ) -> None: - is_multisig = len(xpubs) > 0 while True: + title = ( + "RECEIVE ADDRESS\n(MULTISIG)" + if multisig_index is not None + else "RECEIVE ADDRESS" + ) result = await interact( ctx, RustLayout( - trezorui2.confirm_blob( - title=title.upper(), + trezorui2.confirm_address( + title=title, data=address, description=network or "", - extra=address_extra or "", - verb_cancel="QR", + extra=None, ) ), "show_address", ButtonRequestType.Address, ) + + # User pressed right button. if result is CONFIRMED: break - result = await interact( - ctx, - RustLayout( - trezorui2.show_qr( - address=address if address_qr is None else address_qr, - case_sensitive=case_sensitive, - title=title.upper() if title_qr is None else title_qr.upper(), - verb_cancel="XPUBs" if is_multisig else "ADDRESS", - ) - ), - "show_qr", - ButtonRequestType.Address, - ) - if result is CONFIRMED: - break + # User pressed corner button or swiped left, go to address details. + elif result is INFO: - if is_multisig: - for i, xpub in enumerate(xpubs): - cancel = "NEXT" if i < len(xpubs) - 1 else "ADDRESS" - title_xpub = f"XPUB #{i + 1}" - title_xpub += " (yours)" if i == multisig_index else " (cosigner)" - result = await interact( - ctx, - _show_xpub(xpub, title=title_xpub, cancel=cancel), - "show_xpub", - ButtonRequestType.PublicKey, - ) - if result is CONFIRMED: - return + def xpub_title(i: int): + result = f"MULTISIG XPUB #{i + 1}\n" + result += " (YOURS)" if i == multisig_index else " (COSIGNER)" + return result + + result = await interact( + ctx, + RustLayout( + trezorui2.show_address_details( + address=address if address_qr is None else address_qr, + case_sensitive=case_sensitive, + account=account, + path=path, + xpubs=[(xpub_title(i), xpub) for i, xpub in enumerate(xpubs)], + ) + ), + "show_address_details", + ButtonRequestType.Address, + ) + # Can only go back from the address details but corner button returns INFO. + assert result in (INFO, CANCELLED) + + else: + result = await interact( + ctx, + RustLayout(trezorui2.show_mismatch()), + "warning_address_mismatch", + ButtonRequestType.Warning, + ) + assert result in (CONFIRMED, CANCELLED) + # Right button aborts action, left goes back to showing address. + if result is CONFIRMED: + raise ActionCancelled def show_pubkey( @@ -693,6 +700,7 @@ async def confirm_blob( data=data, extra=None, hold=hold, + verb="CONFIRM", ) ) diff --git a/python/src/trezorlib/debuglink.py b/python/src/trezorlib/debuglink.py index 5ad51775ac..8b5a98c9e5 100644 --- a/python/src/trezorlib/debuglink.py +++ b/python/src/trezorlib/debuglink.py @@ -129,9 +129,11 @@ class LayoutContent: # First line should have content after the tag, last line does not store content tag = f"< {tag_name}" - if tag in self.lines[0]: - first_line = self.lines[0].split(tag)[1] - all_lines = [first_line] + self.lines[1:-1] + for i in range(len(self.lines)): + if tag in self.lines[i]: + first_line = self.lines[i].split(tag)[1] + all_lines = [first_line] + self.lines[i + 1 : -1] + break else: all_lines = self.lines[1:-1] diff --git a/tests/device_tests/bitcoin/test_getaddress_show.py b/tests/device_tests/bitcoin/test_getaddress_show.py index 7cee35a45f..cd138a3eb6 100644 --- a/tests/device_tests/bitcoin/test_getaddress_show.py +++ b/tests/device_tests/bitcoin/test_getaddress_show.py @@ -18,7 +18,7 @@ import pytest from trezorlib import btc, messages, tools from trezorlib.debuglink import TrezorClientDebugLink as Client -from trezorlib.exceptions import TrezorFailure +from trezorlib.exceptions import Cancelled, TrezorFailure VECTORS = ( # path, script_type, address ( @@ -43,9 +43,12 @@ VECTORS = ( # path, script_type, address ), ) +CORNER_BUTTON = (215, 25) + +@pytest.mark.skip_t2 @pytest.mark.parametrize("path, script_type, address", VECTORS) -def test_show( +def test_show_t1( client: Client, path: str, script_type: messages.InputScriptType, address: str ): def input_flow(): @@ -68,6 +71,67 @@ def test_show( ) +@pytest.mark.skip_t1 +@pytest.mark.parametrize("path, script_type, address", VECTORS) +def test_show_tt( + client: Client, path: str, script_type: messages.InputScriptType, address: str +): + def input_flow(): + yield + client.debug.click(CORNER_BUTTON, wait=True) + yield + client.debug.swipe_left(wait=True) + client.debug.swipe_right(wait=True) + client.debug.swipe_left(wait=True) + client.debug.click(CORNER_BUTTON, wait=True) + yield + client.debug.press_no() + yield + client.debug.press_no() + yield + client.debug.press_yes() + + with client: + client.set_input_flow(input_flow) + assert ( + btc.get_address( + client, + "Bitcoin", + tools.parse_path(path), + script_type=script_type, + show_display=True, + ) + == address + ) + + +@pytest.mark.skip_t1 +@pytest.mark.parametrize("path, script_type, address", VECTORS) +def test_show_cancel( + client: Client, path: str, script_type: messages.InputScriptType, address: str +): + def input_flow(): + yield + client.debug.click(CORNER_BUTTON, wait=True) + yield + client.debug.swipe_left(wait=True) + client.debug.click(CORNER_BUTTON, wait=True) + yield + client.debug.press_no() + yield + client.debug.press_yes() + + with client, pytest.raises(Cancelled): + client.set_input_flow(input_flow) + btc.get_address( + client, + "Bitcoin", + tools.parse_path(path), + script_type=script_type, + show_display=True, + ) + + def test_show_unrecognized_path(client: Client): with pytest.raises(TrezorFailure): btc.get_address( @@ -213,32 +277,36 @@ def test_show_multisig_xpubs( def input_flow(): yield # show address layout = client.debug.wait_layout() # TODO: do not need to *wait* now? - assert layout.get_title() == "MULTISIG 2 OF 3" + assert layout.get_title() == "RECEIVE ADDRESS (MULTISIG)" assert layout.get_content().replace(" ", "") == address - client.debug.press_no() + client.debug.click(CORNER_BUTTON) yield # show QR code - assert "Painter" in client.debug.wait_layout().text + assert "Qr" in client.debug.wait_layout().text + + client.debug.swipe_left() + # address details + layout = client.debug.wait_layout() + assert "Multisig 2 of 3" in layout.text # Three xpub pages with the same testing logic for xpub_num in range(3): - expected_title = f"XPUB #{xpub_num + 1} " + ( - "(yours)" if i == xpub_num else "(cosigner)" + expected_title = f"MULTISIG XPUB #{xpub_num + 1} " + ( + "(YOURS)" if i == xpub_num else "(COSIGNER)" ) - client.debug.press_no() - yield # show XPUB#{xpub_num} - layout1 = client.debug.wait_layout() - assert layout1.get_title() == expected_title - client.debug.swipe_up() - - layout2 = client.debug.wait_layout() - assert layout2.get_title() == expected_title - content = (layout1.get_content() + layout2.get_content()).replace( - " ", "" - ) - assert content == xpubs[xpub_num] + client.debug.swipe_left() + layout = client.debug.wait_layout() + assert layout.get_title() == expected_title + content = layout.get_content().replace(" ", "") + assert xpubs[xpub_num] in content + client.debug.click(CORNER_BUTTON) + yield # show address + client.debug.press_no() + yield # address mismatch + client.debug.press_no() + yield # show address client.debug.press_yes() with client: diff --git a/tests/device_tests/bitcoin/test_signmessage.py b/tests/device_tests/bitcoin/test_signmessage.py index 56c82822d7..b072ac1959 100644 --- a/tests/device_tests/bitcoin/test_signmessage.py +++ b/tests/device_tests/bitcoin/test_signmessage.py @@ -340,7 +340,7 @@ def test_signmessage_pagination(client: Client, message: str): expected_message = ( ("Confirm message: " + message).replace("\n", "").replace(" ", "") ) - message_read = message_read.replace(" ", "") + message_read = message_read.replace(" ", "").replace("...", "") assert expected_message == message_read diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 1228794718..395a120839 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -104,12 +104,12 @@ "T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "15c2003dc3816e73bc0673cc917301ca5b91f25cc3e2290c8d2add52e931399f", -"T1_bitcoin-test_getaddress_show.py::test_show[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-1F-1e4f2f74": "9e7c7d751f82daaab09cdc499a41988d8519ffbc1efb6ef23a58e48fc4960787", -"T1_bitcoin-test_getaddress_show.py::test_show[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWITNES-a986211d": "49058bad1db26efc3c7cdafcee64b0b0975ea7eab8de41994217d901c7e4f44c", -"T1_bitcoin-test_getaddress_show.py::test_show[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-bc-a5f08dfb": "e2fa133ac77b590f7686e2af19483a67dd8354a59bcef78159ca6193eb9c6580", -"T1_bitcoin-test_getaddress_show.py::test_show[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-bc-f94d8b44": "9cd4081c30d19a596436ec730c6a79483aa1064244d12aa4ec51f4f608c10f49", "T1_bitcoin-test_getaddress_show.py::test_show_multisig_15": "40f652d0e899d528605f472f47ec6cb727ced8fe90588a8904b46ed39c2088e8", "T1_bitcoin-test_getaddress_show.py::test_show_multisig_3": "05e4e5cd014bf96373788e4563a48f5cdb4c54d358a88e8a29247c2825c5669e", +"T1_bitcoin-test_getaddress_show.py::test_show_t1[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-d9618168": "9e7c7d751f82daaab09cdc499a41988d8519ffbc1efb6ef23a58e48fc4960787", +"T1_bitcoin-test_getaddress_show.py::test_show_t1[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-971f9f3c": "49058bad1db26efc3c7cdafcee64b0b0975ea7eab8de41994217d901c7e4f44c", +"T1_bitcoin-test_getaddress_show.py::test_show_t1[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-3a07ff66": "e2fa133ac77b590f7686e2af19483a67dd8354a59bcef78159ca6193eb9c6580", +"T1_bitcoin-test_getaddress_show.py::test_show_t1[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-1fa0d9c0": "9cd4081c30d19a596436ec730c6a79483aa1064244d12aa4ec51f4f608c10f49", "T1_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "T1_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "T1_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "7e6fcf4df33bf876103f0f8b547c0bd7e5babd34cfe5be43d62c08fbc67f525b", @@ -658,7 +658,7 @@ "TT": { "click_tests": { "TT_test_autolock.py::test_autolock_interrupts_passphrase": "b1df839f58f757b1c62975c4578fec22653b3879f0237cf702c65d10defd942d", -"TT_test_autolock.py::test_autolock_interrupts_signing": "735695018097dd1bc90f1465262d203c38b9c40cf4d4aff6b4356762af55f599", +"TT_test_autolock.py::test_autolock_interrupts_signing": "f090113a24d27b3fb903665077cb5d63f88fc6af752bc9fd490e6176d39ce8fe", "TT_test_autolock.py::test_autolock_passphrase_keyboard": "c8906d56a13c4d96d53874a78d67f1cc124cfcfaac7019eb21ca5ff152319e79", "TT_test_autolock.py::test_dryrun_enter_word_slowly": "da610a4fb695d72e0fe884980ccb65f926f09d14ae22c20e74b2c0507c516e40", "TT_test_autolock.py::test_dryrun_locks_at_number_of_words": "5025cc68feb1b26637661a99db64159c3313d8faa66710590e621f06d8924c86", @@ -671,133 +671,137 @@ "TT_test_reset_slip39_basic.py::test_reset_slip39_basic_1of1": "721fc37938b8156896029f61651a23c8991fdcb6767ce6c696710c4e4ad46540" }, "device_tests": { -"TT_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "a776c8483a3c3756668133cae54a849a0902af4fd9a9a05d27b463b2170ac88d", -"TT_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "5d9c3f47b6eb3fc75c89c656645578a749f541919b4c434e3fc8b8f2677bbf2c", +"TT_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "8c011ff777259fc1b476462c649fd12a25f1ca1c9d5e949e7a3ccaa4a8ae9e81", +"TT_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "e5ed659a3d5a17df238b126a8df13e5345689774cdc16cda6b2e158a1f48c5dd", "TT_binance-test_get_public_key.py::test_binance_get_public_key": "9578b697325b006ab099a101e41c965f8d7f9475bf4b3a8de113910a84c4cadd", "TT_binance-test_sign_tx.py::test_binance_sign_message[message0-expected_response0]": "1b23f90a30a2d7680a3d5b0dd39142724c372ef308466d294eba5ddcca827c1e", "TT_binance-test_sign_tx.py::test_binance_sign_message[message1-expected_response1]": "a6cd67ccecbfcca58b5b079de41bd8674fa8ec02c8dcd019ce92a09cfe48b122", "TT_binance-test_sign_tx.py::test_binance_sign_message[message2-expected_response2]": "6b76f8bc38ba987f8465729b32ac4d40fcf7590b494436a5cd3c1bc2ed84e40e", "TT_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "d5c1de8960e547b7fa74ba30fc604a9dda1548e30f8e73b8e0ee0144fcf53746", -"TT_bitcoin-test_authorize_coinjoin.py::test_get_address": "9bc58edb8bbecfd246f282c4e6f519611123780e583313357b399b3a1ec3422e", +"TT_bitcoin-test_authorize_coinjoin.py::test_get_address": "8bcf30c222718905d6da864342831c4a087a037ca70323cf2fd36105c6f47b62", "TT_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "17b14072b3192a9300da2567d8851faf01b5e10c87e0a1490b75e891fa52d778", "TT_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "1749a34e934c536960ad457e64a20f04327f278e19cd765e9655d3ebe5304451", "TT_bitcoin-test_authorize_coinjoin.py::test_sign_tx": "8a9c1507eabf518945cbd2e08cecffa2bd948dfab345993d4172ddaf828d9eca", "TT_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "624a3d821cee8658d419a3d449b73fcc158d02a2b1a32667273737421ead5b37", -"TT_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "f979130de1f18aa832f0c2f729ce2ee551aebdb87b6237c99a10bd9dc7fd277b", -"TT_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "189f8d0274218a42c7d7dcbd31f62324e8d2efefaf9e489c55c3cf5d77601e15", +"TT_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "682a4936f80362d26adb020b3e5434fa19e9e859c23245340e9592e6780adf11", +"TT_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "9678239cca23fbd9c1ae041df1147bda8d0e2dc4c173ef2b70c35e62d6daf7ee", "TT_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "d5c1de8960e547b7fa74ba30fc604a9dda1548e30f8e73b8e0ee0144fcf53746", "TT_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "d5c1de8960e547b7fa74ba30fc604a9dda1548e30f8e73b8e0ee0144fcf53746", -"TT_bitcoin-test_bcash.py::test_attack_change_input": "ae7c487cf35b9302dc5ee493fc82ddcde73e417a59175c4875808c4e80ece2e6", -"TT_bitcoin-test_bcash.py::test_send_bch_change": "ae7c487cf35b9302dc5ee493fc82ddcde73e417a59175c4875808c4e80ece2e6", +"TT_bitcoin-test_bcash.py::test_attack_change_input": "d72b586133103ba0e93090dce4a14e7f0776e1ff43956e5d2010db22c04c90b9", +"TT_bitcoin-test_bcash.py::test_send_bch_change": "cc9e8d66d0755f8aa04fc008aecb7057430777257d0afac5d74f547599e81a55", "TT_bitcoin-test_bcash.py::test_send_bch_external_presigned": "ac25a17ec0739b5d9c300de0fcdee7fa92ee4d25a731815bd79607b67677ecdf", -"TT_bitcoin-test_bcash.py::test_send_bch_multisig_change": "d67ee065cffe67ad9a1448491ca645a4be000506857a3f3f0f43ade8b6c3a077", -"TT_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "2ed486a03ef5010c1c9680ef27fbfebec64dec3ddb1fdd3827f49cac708d2830", -"TT_bitcoin-test_bcash.py::test_send_bch_nochange": "b592d5efc45b402be053544546947ad370a9ce1d9cff080288f3990f00042b4d", -"TT_bitcoin-test_bcash.py::test_send_bch_oldaddr": "93ed79653374745b83a9d5045cdd9109c84a7a384c7f880f0dcd7146097c953f", -"TT_bitcoin-test_bgold.py::test_attack_change_input": "b761db8dddc44e264dec4d8d5a4e3f628a73a432e348bc334595a3786dcb22df", -"TT_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "b761db8dddc44e264dec4d8d5a4e3f628a73a432e348bc334595a3786dcb22df", -"TT_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "42dd194b64cfcc9e2ebc5d6248df81ea07b50bdd01d5d14b7f25941839d8390e", +"TT_bitcoin-test_bcash.py::test_send_bch_multisig_change": "a4ce22b8d1707b510f461958a5cfb0a41f5d6f39dd3da792cb7980f405968eb1", +"TT_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "511ebe5b9a87b10538e172ba708332a5d231f11d6c9c5679f1f220306c7c1b95", +"TT_bitcoin-test_bcash.py::test_send_bch_nochange": "347c39215e6ec0b6d3fddc5d1ca94e15702fb87303edee726ea0f60515870eb6", +"TT_bitcoin-test_bcash.py::test_send_bch_oldaddr": "b5cc1bdc9255446e539430d01032e1402705344fad1f4d831ea7b5e4b8760e4b", +"TT_bitcoin-test_bgold.py::test_attack_change_input": "eb41f2e69493d5c8e6be889270842258331477f0fa1ddf31c816d9210acf7aea", +"TT_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "eb41f2e69493d5c8e6be889270842258331477f0fa1ddf31c816d9210acf7aea", +"TT_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "8c4ea4aa5cd01786ff108887f102243c41ef3b31d6f7a720d911a1650a94afda", "TT_bitcoin-test_bgold.py::test_send_btg_external_presigned": "36746648ec49ed0e51e0547be22f329c1df35b4bd1a8d0141633cf9b49146447", -"TT_bitcoin-test_bgold.py::test_send_btg_multisig_change": "9122b553b96a0561966431443ff95dd440a07a22b54c90504c3900b323964fe8", -"TT_bitcoin-test_bgold.py::test_send_mixed_inputs": "0dd690a211ba7482cd1ec027424059b34fe56f5183ab88a347668b277965b962", -"TT_bitcoin-test_bgold.py::test_send_multisig_1": "f4cb3a691164afc23d2210a5eef5882f8acc0497185b7ee3cab565f59d732f80", -"TT_bitcoin-test_bgold.py::test_send_p2sh": "c4e6b292d37699194c6cad827b9e6f37ad92b042f7fefcda31c56cb5b29deecb", -"TT_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "e68f56be6665fa6e5d3877d6a342682a464a54534a5aaca6f276e039ed5659b5", -"TT_bitcoin-test_dash.py::test_send_dash": "41040e4815f578f201780aac67ebba9326881a8873da9f2f7cd25f647790575d", -"TT_bitcoin-test_dash.py::test_send_dash_dip2_input": "c75a3354206bc9f45c20d243d20e0b406ca3f3c25f563d57f6c5922206019a61", -"TT_bitcoin-test_decred.py::test_decred_multisig_change": "6403190fd64035518abbd43394854f5381870137bd6d688e09fada5edf561b97", -"TT_bitcoin-test_decred.py::test_purchase_ticket_decred": "066096a73bd95305e7ae87dbc97c7e63dd76c1d02084e462fc1b05d236207995", -"TT_bitcoin-test_decred.py::test_send_decred": "643957fd419121336df473158805f7eaa770cbcb2d82919378fe9c6a4f48c98d", -"TT_bitcoin-test_decred.py::test_send_decred_change": "6d80a453346d54a4e8d3a192d53cfbfaf86c18befc2eed7565116f34b455e474", -"TT_bitcoin-test_decred.py::test_spend_from_stake_generation_and_revocation_decred": "84b8093fb5a68e269e04419c35f54371dfddcd2bd6f7e06d85e1cf708383d974", -"TT_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-InputScriptType.SPENDADDRESS-pkh([5-7a80e3db": "4417073266997ef9fda9f704adcebdd9a97fde1795d7dd862719e8b40ff17867", -"TT_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-InputScriptType.SPENDP2SHWITNESS-sh-03d56ac2": "6ef370374a6373e9e5585d4e5a66504fcee3679deb4083c7a2d39b6ede2ed861", -"TT_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-InputScriptType.SPENDTAPROOT-tr([5c-22751b2f": "f19c1ce1d66972f38a1c32e438cdf42999b0bcda3b192b17156c2a03a3f4f888", -"TT_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-InputScriptType.SPENDWITNESS-wpkh([-edfbc435": "484a565625fcc479b30c4fa8e9575e4dbafb22028594fa9a348f14fd7b9c4212", -"TT_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-InputScriptType.SPENDADDRESS-pkh([5-5ab06094": "5743181c0f6798e0df85338a8f1b259d1ff77bb759063dcdeed93dbff7a7ffce", -"TT_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-InputScriptType.SPENDP2SHWITNESS-sh-5dd6ae4b": "b5d541daa24dcba230c8c9c3ccc79baeb0c3a96b00d24e76f50e5b239b8982d9", -"TT_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-InputScriptType.SPENDTAPROOT-tr([5c-f4f20781": "b5ddb99aed0e0bd5e20816d3b0cf1eb324dc933e4d611b91ad4662ebf5c187f6", -"TT_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-InputScriptType.SPENDWITNESS-wpkh([-98a75f0a": "843637001219452e0d5779754b275d33a2489787f010faa2baf22a5495a563fb", -"TT_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-InputScriptType.SPENDADDRESS-pkh([5-f63bf93f": "34a03befa54be2840c018a92c31ea3071aabcebfe3a3b975814fce44421eb514", -"TT_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-InputScriptType.SPENDP2SHWITNESS-sh-fd42e1d9": "598ccf38fb0ac8ec6cf66d80f7886d0a1fad7eebaf5bd93b52bb66c14d5197c1", -"TT_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-InputScriptType.SPENDTAPROOT-tr([5c-a794e72a": "709f24f8fc1663eeb169fc4b3034f32ed5b29b63b960a5cf5940fb307f1773d7", -"TT_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-InputScriptType.SPENDWITNESS-wpkh([-e70d0168": "e8ec53e0af8b37369f6cdf84e07d1d175ae3e3bb4f719233f348ebabddb1ad85", -"TT_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-InputScriptType.SPENDADDRESS-pkh([5-2d5b32fe": "b623a6f88550a3a44df8c4df62182c6735b73b424ddcd8d32a008c34e62b8b76", -"TT_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-InputScriptType.SPENDP2SHWITNESS-sh-e8c5303c": "4f2705ce87cbfed8b9fe7a4676779f3195069fba7997d38206df281de050bcad", -"TT_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-InputScriptType.SPENDTAPROOT-tr([5c-ddc924d3": "252f974f0cdda94e5121cf02e69851385220f6a533865d956d20a8e3ee92af8c", -"TT_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-InputScriptType.SPENDWITNESS-wpkh([-996ae319": "9295df706dcba5d91067b3e022da183508bd8dc97ad9cc598bc902cc9f796fa0", -"TT_bitcoin-test_firo.py::test_spend_lelantus": "f5f11ad63b0ebb1642d2117c9441225a3732e30f83a5b4b246be37b7348419ff", -"TT_bitcoin-test_fujicoin.py::test_send_p2tr": "2dd0f0bb3427ac0943d63de21476836d509a5a69cabcd55f6bd7545a576a0ca5", +"TT_bitcoin-test_bgold.py::test_send_btg_multisig_change": "6efdde5ab140ec5d9c614ccef54dec4bbee44ef8c928466644c37e09222d4e2b", +"TT_bitcoin-test_bgold.py::test_send_mixed_inputs": "c1d6fb07950a2ad66b757620b2b241ba9f101935c7e5b614098a8a7260039900", +"TT_bitcoin-test_bgold.py::test_send_multisig_1": "6414093fdf69b1c90b6475e07bd6d5cc8903dd6842d21f1dfbd73905ccb74d68", +"TT_bitcoin-test_bgold.py::test_send_p2sh": "3fde9378d300181d2c4bc6cb2570d6a9bdc7401612114de178e85ac036a3ef0f", +"TT_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "b6601a1fd00a575ca9d1ce21aa5b2c1ff0381bfca5b41783e54f4f2c7257d1f8", +"TT_bitcoin-test_dash.py::test_send_dash": "060188aa48c6d580e68fc6ca6c1726c11944121d7b667c56bea29d8c31fea317", +"TT_bitcoin-test_dash.py::test_send_dash_dip2_input": "0dfdd00fbc93ea7a9ab0b7169b458b5aea5072a0f7253ed648f6a1508b3fbf60", +"TT_bitcoin-test_decred.py::test_decred_multisig_change": "f6a4d2b01fc8a28a3909c443080b86fcbc7eb6adbcb7406163656af9dd9b924e", +"TT_bitcoin-test_decred.py::test_purchase_ticket_decred": "2e27c2219bbaf669782700dd5bb865db8b5c66c992395f07c22d9edd773d624f", +"TT_bitcoin-test_decred.py::test_send_decred": "49851c63913f196420c2cad3bb3360b0598db68762200681772148929b771e42", +"TT_bitcoin-test_decred.py::test_send_decred_change": "a1c16d26f3fc0cc4afba32d67600f5b8ae0b742e77267328b0ed08a137d88272", +"TT_bitcoin-test_decred.py::test_spend_from_stake_generation_and_revocation_decred": "89830bfb6f2ea3a166efcb429d13786e51ea766c4a5644d8d90a0e5203a685b8", +"TT_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-InputScriptType.SPENDADDRESS-pkh([5-7a80e3db": "705e20c6f62cdf5924a561327d3553b07c5e2fad3975ae70c68f3033d33010b5", +"TT_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-InputScriptType.SPENDP2SHWITNESS-sh-03d56ac2": "e64c21d4e6b20bc52b54c4000d81a9ab08c0a0a7eff6c448ba5f69ba01c12b51", +"TT_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-InputScriptType.SPENDTAPROOT-tr([5c-22751b2f": "6e4ce6a1bcf12e55470a1119c95da56111b173bcd766fb9c359dba5cb56153e7", +"TT_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-InputScriptType.SPENDWITNESS-wpkh([-edfbc435": "0f2aada8075c87e7613a0bd257f81891955d590f76733e112175f6cc7331c521", +"TT_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-InputScriptType.SPENDADDRESS-pkh([5-5ab06094": "e0e5878b34d01f05748af83ce7519d552a4d76e60b638bf7747bb3b41680515b", +"TT_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-InputScriptType.SPENDP2SHWITNESS-sh-5dd6ae4b": "2d9dfc7648f4b5c299c1283f8de312bbc7a42e09b754024c03570206ff8ba883", +"TT_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-InputScriptType.SPENDTAPROOT-tr([5c-f4f20781": "f4be64073cd96dc0183d183f349f1943336dde0e270fc9dee582db0bfd0edf0b", +"TT_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-InputScriptType.SPENDWITNESS-wpkh([-98a75f0a": "c4f85734bd19c335dbb406abae2aa6be95140c096cdf0d76b830f04daa20501e", +"TT_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-InputScriptType.SPENDADDRESS-pkh([5-f63bf93f": "4c5662c74918dc3ae68488c59ff744126d61c5312561adcc491d7b6f37e0a93c", +"TT_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-InputScriptType.SPENDP2SHWITNESS-sh-fd42e1d9": "1a30077df0478e19ca6952229dfda03035533812b21a22591e6da04ac9c6aa3d", +"TT_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-InputScriptType.SPENDTAPROOT-tr([5c-a794e72a": "553270ff99f853970095e2d34abdb6627649b883f20615f686d98218bea960ec", +"TT_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-InputScriptType.SPENDWITNESS-wpkh([-e70d0168": "939454d88af3917057c0e460894829c97d5ace3f04f58298f750d187c57b9282", +"TT_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-InputScriptType.SPENDADDRESS-pkh([5-2d5b32fe": "fd41e45936ee74a2b855ffe809e6b6ca0ca5bd6ff740a732d25c16176abe0434", +"TT_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-InputScriptType.SPENDP2SHWITNESS-sh-e8c5303c": "e641cf4b494e5cf3e247a51d345ccfccad9da88d491df9c47edc0a17f32724de", +"TT_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-InputScriptType.SPENDTAPROOT-tr([5c-ddc924d3": "ed4f69159e47bb38507e774b67d657ada666935d907dd868070cf48f3b517eb6", +"TT_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-InputScriptType.SPENDWITNESS-wpkh([-996ae319": "5cc44cf6b1406e4b479c92d9ef802f49c869a869c060ae95ec040595d5ee3470", +"TT_bitcoin-test_firo.py::test_spend_lelantus": "ec70980781fa79b6723a3fc6058ca743128cd84dfb3b20d0596ddcd40fea4f69", +"TT_bitcoin-test_fujicoin.py::test_send_p2tr": "2d60e8f0b987008ab0f0d539fbb6f4b99f9506a7c2cb07b0cac4962b48bdbe05", "TT_bitcoin-test_getaddress.py::test_address_mac": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_getaddress.py::test_altcoin_address_mac": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_getaddress.py::test_bch": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", -"TT_bitcoin-test_getaddress.py::test_bch_multisig": "acbf4fde038864cc4ca8d6657a1a1f68f6f57589cc73087541e55374ff5b9d01", +"TT_bitcoin-test_getaddress.py::test_bch_multisig": "a0506856e50392f728c58afb7647f7201f1b042981c811178f80da27f9f7579f", "TT_bitcoin-test_getaddress.py::test_btc": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_getaddress.py::test_crw": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_getaddress.py::test_elements": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_getaddress.py::test_grs": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_getaddress.py::test_invalid_path": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_getaddress.py::test_ltc": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", -"TT_bitcoin-test_getaddress.py::test_multisig": "6ffc8f69e0378fb308bc562a60e2c89265a100815a6c3df7b8009d1ba1739020", +"TT_bitcoin-test_getaddress.py::test_multisig": "5ae8dcee1d4a723ce2eca1a437df309a296c9310aba01e84bbc30fa8dbcf51fe", "TT_bitcoin-test_getaddress.py::test_multisig_missing[False]": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_getaddress.py::test_multisig_missing[True]": "474c028cde85a9d1c40ec6b4113965ef47a3dc7f20c185a26b77db39324d4709", "TT_bitcoin-test_getaddress.py::test_public_ckd": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_getaddress.py::test_tbtc": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_getaddress.py::test_tgrs": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", -"TT_bitcoin-test_getaddress.py::test_unknown_path": "c8f5c19e42d1a4d90f6a788fab3f4d8f9d867277b17eb0c62cffb436c6a3e3bc", +"TT_bitcoin-test_getaddress.py::test_unknown_path": "6ad2dfd04b64060ae62258fa829eceb1792b729fb5b295166d17484fe6ed70b1", "TT_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", -"TT_bitcoin-test_getaddress_segwit.py::test_show_segwit": "ee981f2fbaca6a2de02b24fc0a7c1b6058a5ded360028f6fa2bea656f9c99af8", -"TT_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "c8ce2dd8fb4d0a9e966d149c74900e13bc3d6ced963aa632cb74229c6c5ff9ae", +"TT_bitcoin-test_getaddress_segwit.py::test_show_segwit": "a7503991725e23d9c0f28d707619c4c3d3fe48008b2f4b3eea493a47a51cbd7b", +"TT_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "d35cd5c20810e5f9d426f7929670bb1f3a1573ffb0122133a50bc066104a5c5a", "TT_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "d61f98977d3c13762f0c14fbd2945d392790d5b94ccc125d39c6cbcbd30b402e", +"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "a340b2e3bfa796f51454b828e7188011dbac095182c5e122c9af4281b94c0cad", "TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "6b383f6caba2c855713ef901f952fd368165558df63db50099a872db8430f42a", +"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "e22126083d6011cdca3c496ea4aacefebc98eaf9cc1edb7c42282a6c5ff4987f", "TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "f54a7853907b4381731eead3e95d400b2dae72ab7a73aaa08306ba8ccf0a6fea", +"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "4ab624dad96fcbc45629b12735a72d0bea0b3cad117ecf42e8af0e7325ead845", "TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "9465812b9daba89b7ac4c998b48bfbb403636e3d7e17af08d851812b2aefb567", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "61c620460919920a59e70efbd4e19b28d8dc89ace14c276b7f4b81172f30e734", +"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "db71f50da0057bbdc393045fe727d2256c1565e86b1c684163352f70f36087f4", +"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "e4030ef209aa68672616bc4eeea680150e69af07579f5256a86188c492c15e8e", "TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "96f3e850e00539713aaa9a765f2f4c5ef382e6eaa675cb1baafcfbf6497447a3", +"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "a7eec481db3a3d7dc5b3147cd59a85f9723d238e36b4874e7efd1bcafa9704f3", "TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "444ec74fefd4e1b5f967117243de3ac8433a4523c9017f4a889ed74c338aa87b", +"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "c0c16a70d8e3d18338a738d81847d4fe1277f5a7b96b139fa96be5047e0c92e8", "TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "9e332988fff89792dedf30a575503bb08e89730a2709e490fc94a0ff1653c7d7", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "360d18374e38c0d71d01b88e59e0a1411fd91c14dd8fbbb902ade2e35c0766c1", +"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "740ed4ae2c3afcb0be5fe7a6f1893257a0adbac46483c0510d6db09a9c50c2cd", +"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "e339b4dc6173d3c986ff240ced1e0618983a55da99aa2683ca8e674969553ea8", "TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "d0ccc942488b7219dbc2e687f7baa3cea1c41b70bd0ee607a4caa5c549963e04", +"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "3b51cbc3186ee1a43f680a531b1cb9501f4754c43a3b1ca6a49c9b31b9545ab8", "TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "18f3abddd26a885c434f1a5aa8dfbdf65143a9ac7fdcab9f9e8910076be95c7c", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "440cffd7dbed976524577c5a8f259d0a5ae4fed7a6aa017143bd4b1aa32d983f", +"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "3727594d90a54d46f7887740178edccc4e05d15211faf61456316d187de31929", +"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "5c5be49f07eaf4cc526a5f4c6ab57dc77009cf202b096ff1752c0c971cf55a2e", "TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "8254a22849312ed79d830ebf5dc2bb0155368f2bfeae79cc8ab46145953a1804", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "b6f1a2893c989eb1cb09a2ee06187ba3f4f5ef0e1cba2b8bff134090ca05fdc1", +"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "536d6a0900ab758d1ac69db91799ce3cdf4431c367e448af4624d3f0c16a3074", +"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "139672adced87bf4783d26b3fd76a23468933598703a5b3e608bc996f55d0ac6", "TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "06d813fe3e34477616a8e65f64530d3f1bcfa71fadb38a63f4aac364e25e3a2e", -"TT_bitcoin-test_getaddress_show.py::test_show[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-1F-1e4f2f74": "c57a995b85d2bb73288238f4d965f864698490074768c16f952a0373c3a61bf9", -"TT_bitcoin-test_getaddress_show.py::test_show[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWITNES-a986211d": "08f06615a746bc3908a176d08b61282ae71e29354d137b58fb94270b44b4c563", -"TT_bitcoin-test_getaddress_show.py::test_show[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-bc-a5f08dfb": "9a55dee49792fde59c3b1773df54f06892a95f79eabc92a5566da84e7fc4664e", -"TT_bitcoin-test_getaddress_show.py::test_show[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-bc-f94d8b44": "b7aeff4950a20d373a15b20ab11c0980288815486842581acd2b9c3fdd8aa0a5", -"TT_bitcoin-test_getaddress_show.py::test_show_multisig_15": "53f76136ec86a795eec8652db614c5d18d26d73724fc4c48201470a839d13ae3", -"TT_bitcoin-test_getaddress_show.py::test_show_multisig_3": "1212f9bab8c9b91d67e5208c4a439551f417b2772f06bae08035a6f1a50b76c4", -"TT_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "aca830a975cfcd2ccde82fb8f0a7615c463c1e94d4855f50d8b7c6763f4ddd77", -"TT_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "aca830a975cfcd2ccde82fb8f0a7615c463c1e94d4855f50d8b7c6763f4ddd77", -"TT_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "c37ec663f1df3415299fe5bbdc4905feb03924bf7d7f2d51797d5af8d89b2999", -"TT_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "fc84cac6c0dfbfbb804c500571f35fdad80d560d5f9ff6a4c249a50fedddbb80", -"TT_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "e880bfefe5b551dd6b0aadc702a83d4eee1e754042def137e6bb7c30b71ba60d", -"TT_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "e2813dca18d70aec3f0a1ae95dda6fd13f47b16bdf66402b6ce1aa58185a83f1", +"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "9e9b741bddb409216b45e8f376d596c9a91a6f97d0ca22da3b0bc12e199f7dc7", +"TT_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "b3bb17ffade1408ef40418d1ff5faa96bb39291a1de981dee76d8bfb0458ba2f", +"TT_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "0179abcca7033f4174c1d76afdf6973bafe03c04a683f0e518a447a79d0556a1", +"TT_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "635670912a19e2c58f409e974e43ade17baf6e288329a5f56dc4a0cc7d005917", +"TT_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "fbf07d5a3cb048d8d5a7a151e1a129f89e72e9005a9603d6d6d129b87e47db66", +"TT_bitcoin-test_getaddress_show.py::test_show_multisig_15": "f4d37e4a05f6801f2de4629fb5221dc7559e1c36f3501b0e5010a863aaa25b58", +"TT_bitcoin-test_getaddress_show.py::test_show_multisig_3": "0495660f0cfa073973ce0d7e69249e19d1e3334f941ddb5bb9d1dca01462e334", +"TT_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "25c2e40c582029d642e22f131803c19a73ecf64dca5d5054ca5b653d67045c20", +"TT_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "25c2e40c582029d642e22f131803c19a73ecf64dca5d5054ca5b653d67045c20", +"TT_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "93e59fa46045435a644263d7da254b87182de94fa526a16022a85d170d682a25", +"TT_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "4142f23dffe329576c897aba986cd5f50939ab1a2605b60fa69b6de55af854c9", +"TT_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "7969af0226096adc4120a68149ab08645c8807871194a2f1eff76280f09b2bbc", +"TT_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "a3e415f84eae0f1516a5d48d93b60d6aa0a7043d6fa0eef5a9eeb84603ec8541", +"TT_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-7e3bc134": "d9b45f9392fbdcb48ae0b886dccc18f6b6e0c7cd2ef65829c62f351d2d4b3810", +"TT_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-fffcf75c": "e4a2a1dfc0471c90760d0a611e1239bcf936852ab827a19e32d132d62f885924", +"TT_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-2ad0a0fd": "f372d806891ba823455a102af2cb1f0a7fd21098336d35be0e0661d97e9ba6fc", +"TT_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-299be1ac": "94b26f77ebb27ca201dcc95a522ccdce024cfb767b96f83c1ec2a534ac1eb3d9", "TT_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "03fdc12a43ef174f144a9c0c57267e908e119cf6ce00795841a0670bb4dfc72f", @@ -836,40 +840,40 @@ "TT_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", -"TT_bitcoin-test_grs.py::test_legacy": "336afc2a8163014e78f26b5cdfb8fcb440a6ecadee3137a5ad1879b8751d418f", -"TT_bitcoin-test_grs.py::test_legacy_change": "66adfc22b0d67642ea2aeabe4f9ae5cbeb7d8e3d7381b6764fe3861119089084", -"TT_bitcoin-test_grs.py::test_send_p2tr": "128f9c7c1b835741825d9c29fffc3e8210f4c97b48b27af9fc99eff7a574c988", -"TT_bitcoin-test_grs.py::test_send_segwit_native": "502f96ad71c62d118bb4edcda42fbc43618f97575f6e47edde226607a1aa6c06", -"TT_bitcoin-test_grs.py::test_send_segwit_native_change": "7c37f885f3858cc3585bc8d1795701bbfd0c5cca760e2758a2cd99b64e409f62", -"TT_bitcoin-test_grs.py::test_send_segwit_p2sh": "fc81652a7949272a80061bbfc4706c731b97ce45e786fdd64eca546f36dfd909", -"TT_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "8bc65ff3f504470e59fd803f3e31c54050a848aa48a7147ff1f27902cd6ab6f2", -"TT_bitcoin-test_komodo.py::test_one_one_fee_sapling": "3463b2a3bbad6b53b6c0b303feddf9b29829567d7a215bdc708babce27feb94d", -"TT_bitcoin-test_komodo.py::test_one_one_rewards_claim": "0e415a04274dde3824ef06c8ea2dda181f8edcfc938a969fbe19a5d436382b78", -"TT_bitcoin-test_multisig.py::test_15_of_15": "ec868cf526403109c8f35d28eec39c387355640872994d40e73081bade585ab1", -"TT_bitcoin-test_multisig.py::test_2_of_3": "a89fbbb8f50a553d62fa5d3668686d10adcc8ec9d00b10d6711d13e285f1fed8", -"TT_bitcoin-test_multisig.py::test_attack_change_input": "8b11aa7f5b728ea618a46e8f467c3aa30ef26f9929b8539f18df2fb717afc8d0", +"TT_bitcoin-test_grs.py::test_legacy": "2c0ffa3e4ee559583e9e69b6c7522cb80779aab16af240ae7be02a7ec35d8343", +"TT_bitcoin-test_grs.py::test_legacy_change": "401d86a7213aa306478ccabde6366028fd1a8a9caa5f0e0ce4028f5f87e36ebb", +"TT_bitcoin-test_grs.py::test_send_p2tr": "48bb5b8c9471cd3e5485e5768ba29314526749a328a7488737f98d8ab2e02a50", +"TT_bitcoin-test_grs.py::test_send_segwit_native": "7bde130fe382b1e48d1a582c7dcfb41451c173804142f5cf2dbbd84ea1fba6d3", +"TT_bitcoin-test_grs.py::test_send_segwit_native_change": "5be401d158c5d6f05c71be2c45f8d8b225a7f83750d8e467a84182d0b8c4e1b8", +"TT_bitcoin-test_grs.py::test_send_segwit_p2sh": "42ceddcaec4052aa8e6adc8edda900ea642c6ce9a8b5117964d274f82e21e8fb", +"TT_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "a6f68e5ffb8e2a6dba67a0d00862e789fbacbd19d395a7f5de90d5c0f3cb06f7", +"TT_bitcoin-test_komodo.py::test_one_one_fee_sapling": "cfb4c5677d59c2a365a571d07fc931af5bfa09e33aa3b9dbbe7dee43f6e0404c", +"TT_bitcoin-test_komodo.py::test_one_one_rewards_claim": "ecb0bf766b0bb7a4a00f6b50e5cd0affc2aa6f4b3afcd42be99f1d032931f87f", +"TT_bitcoin-test_multisig.py::test_15_of_15": "fbfe9299d359cf88affbde5a7c381f6b70cf7db16a4d01a2d7c9aa49e7d01c6c", +"TT_bitcoin-test_multisig.py::test_2_of_3": "f96c9a6d6ec99ec96b99f19cd747fa3216c56630d82708708994fe57bd8c63c1", +"TT_bitcoin-test_multisig.py::test_attack_change_input": "0e3c6ef07cc4abd89fbc45768af3a29034b00c49ecefc6dc9d12bb65f4c9e536", "TT_bitcoin-test_multisig.py::test_missing_pubkey": "b4f36d385e5e0eb1e94f3e4d82b3ee50a71d7e094a838d92200eaea836ab7fa4", -"TT_bitcoin-test_multisig_change.py::test_external_external": "87ba056e02a66b32e8c29cc8f9074ecb0cafc5f7c271dc8a6eaa14cf32f53238", -"TT_bitcoin-test_multisig_change.py::test_external_internal": "7e7af212c4769417c500efdd96f042fcb01ce4e431bef6139e41ee8c57b085da", -"TT_bitcoin-test_multisig_change.py::test_internal_external": "f7641c4f357c89b3adfa4b55e2857c65b4cf4bd4d07662e617372e1aa3f3ed39", -"TT_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "242c31128638eb862f7e46d74c52d9c479d090872a1ec2ce9fb84901ac57e264", -"TT_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "90ce01be8fb3218ff55124420e62782b48d2c5ae64b6afb899139e7a620cc577", -"TT_bitcoin-test_multisig_change.py::test_multisig_external_external": "e9d4206446b5babbaf71b433f4f1549aadd1d0b46e1d89f64efa6d5ee0c9ab04", -"TT_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "620777336a9c3d95b3d470c40fe092a2f43eb2eed7f761931391fbc185661032", -"TT_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "81f4389bc7566827b1fac767239100b86cab75ffbc3c53ea5a19d497c099e65f", -"TT_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3]": "8a86c21fec0ac71234d141803ef27d2df0ac07cbcf434d2560b8e43ecb0f7df4", -"TT_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2]": "f4b103d57a94251244d4fc8729217d0349b129d261c82d1f220bd25814403d8d", -"TT_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1]": "41afdcf019d2444fd2f38891822f65a49293ed0b642e3fe173713d07a2bbaa71", -"TT_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0]": "270ee699fc9bda499f345b96dfe44fd14985569700e169de4d319d7dc8068121", -"TT_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4]": "6cdbaabb7b32f6e7d0538df79efde76b9cfda80cbf6a150a39c78377342716c6", -"TT_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "299a79082e3a9bdb25b97166176b2e2e7e62b85ba1e64d2695cd6dc7ba1ece30", -"TT_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "64ff3b9573362ae4f1c44f51fa145cc465d988cc1a2351134b79aa59b1e18e44", -"TT_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "16a971777d9e06aa7bbe652735cafff0a792206fafc2ef53742e74e81e384020", -"TT_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "384c7ace853fdd901469edc9fdb59351a9f46b450adc64e9b21047e2de27d720", -"TT_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "9fb2248ec754a3e1f7d90b502ad15062598c0d3f36aa266c786b3b31ca09d5e9", -"TT_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "04823f22e5236a216f5d6dfa21b6b6be8a529e493ebc5835b45f2a8b436e6323", -"TT_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "3c46f9adda3faddbb50d2d618077cd63e11a4cc731f6a70ff38e798107bcbc95", -"TT_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "42d882066e1c8a104a06064c475fa0087c59c74aa986be773139402360b27bac", +"TT_bitcoin-test_multisig_change.py::test_external_external": "2509c2fe56f90168b1ef5c4483460eb16edd0ba6e1d6a4620871f7f5ab2acbc1", +"TT_bitcoin-test_multisig_change.py::test_external_internal": "ba63f1b6979b5b696c09829927c6f8e2757cde60e583f3c7d277d2398cbc9e8f", +"TT_bitcoin-test_multisig_change.py::test_internal_external": "fce7c204e686c23cfe5e65b6d9d8a6a2f881f7219df3a821d2037a24d07499f8", +"TT_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "b981f0e853c59e7ad29ed2ab1b2dbffbf2840348a1c5789ba35bd7e8e723aac4", +"TT_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "c9fcb13cac00f412365daf8e2f773cfea3072bcc43b74fefa8431ec5a8340616", +"TT_bitcoin-test_multisig_change.py::test_multisig_external_external": "f9df1266c34b6c02847eb87a7331de505e341a7ebade36723dcd225d106571bc", +"TT_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "9d8bd914d2fb41be4ee99394c28cb34aafa3453dd7c988af5dfb164d6ddb9937", +"TT_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "65f696d8abfe069733b3a4f79a5177fdfb93dc744fc5ba57875d8f477f965485", +"TT_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3]": "69f3b1828b8ae4c14332815c2b50cec70a4420ddfac8eec5f1940fc67a2f629d", +"TT_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2]": "d60f1acfb65fd3c9cac07efe1bb1df7cc78fda0e937dadfa206c688694bb824d", +"TT_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1]": "7a5c77c5e45f4722aae12f6e31f6e0989ee79c02c3d95eeb64d6c5e037b9f988", +"TT_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0]": "af175493d3ffc5b1a33d722b3ef7f8038d38a7378388196ea1e22e2f8a8d7f7d", +"TT_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4]": "8558e0b889d8bb6c5580ae23638ac123d3d2f63e45795243f0610ad2ba899802", +"TT_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "f005f911109104ef992ac708c6b510b23db8ca89c582b4feef88a05f97f34d9d", +"TT_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "d9ed01891cf6c4e483e1f94b21c7cae46cdaa0e9794d11b2b207e86cb7975136", +"TT_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "b230e6c1d98840715dacce8b57e904a86c9671deb700b2cfb521d55edec08985", +"TT_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "9d7cbc596ea960023fd2e537f0adcaabc3ff8efcc5f6aca2fb96d190d481f991", +"TT_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "a311516f18e9ac34c5a0a111b6ff7f3ae0e0048bbece2a01465d88156292737c", +"TT_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "867cb917bf31f23cef133f71d7bc815b5b2135dd19ba194ebefe486942a89b96", +"TT_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "0ce2960740aa29ab965656f56112fc160147b941f40cfe957e18fde9ae96299f", +"TT_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "9af2ac848b3b32c2e66cb65ae99d6b6574b19e2b8883853e009f4b41746adc10", "TT_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", @@ -880,25 +884,25 @@ "TT_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "247038c3b43b4eb86a4c69a5d42b0b86b13d6567850dff55b73d6443b99b7b9c", "TT_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "24a03c9fdf95acd7d4cd12d68125dff0280caabf890b8169a829a5411f55dd1f", "TT_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "5432a4df13a5d0f9cdb824fe96f7f99f9eeee3516c46e6de21b3a2918de0a17e", -"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "258d9a2926166d15d00c5e009ab07de80deda93c890fb61cc39e56b2fc84ab7a", -"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "12a69caab047177d244aa58f03075fa6c795ba6d2d7934fb0ce43571e7339b5a", -"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "4aa4b04c107427201a2bad4305ffbd96b43e64d625a50b1474b3ce04d5176934", -"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "4aa4b04c107427201a2bad4305ffbd96b43e64d625a50b1474b3ce04d5176934", -"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "1b6891141cf1a7be13a459e061b6e32680235563f956c275cfdf5dc959633dd0", -"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "221616754bc34c258f35ee8c6b65ec42d8ced5e775073f5e279d7b15c44b4dbe", -"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "221616754bc34c258f35ee8c6b65ec42d8ced5e775073f5e279d7b15c44b4dbe", -"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "4c5d0295c0aadf3148e387a84340a76442e3a2d8763726d6248c0f007fa63d54", -"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "402c8cc11415021bde53f636546a46df93a269a3477a02b7759deba2403c544b", -"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "221616754bc34c258f35ee8c6b65ec42d8ced5e775073f5e279d7b15c44b4dbe", -"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "221616754bc34c258f35ee8c6b65ec42d8ced5e775073f5e279d7b15c44b4dbe", -"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "221616754bc34c258f35ee8c6b65ec42d8ced5e775073f5e279d7b15c44b4dbe", -"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "df0384617bdbe2ce42973d1b263bcde35387bd749a0d5694e6cd5963bf74aa8a", +"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "ad0778f5fa563e14abfaa41ceeeaa8ed591ba5f91a093a2f4124e7d4dd899ff2", +"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "7335d7c9d4fb3eba2d3337edae59b35e523bf2de9b7fd52418171d46e628669f", +"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "bb552bba07b77270d17cd96b99336c7316f3702b24c53e92f51c2476dc713dc7", +"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "9a95705843064bb373edb53f59601b0bb38f99dcdbd97bd583ccdd0c8ac09ebe", +"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "154ba6f5b94c618dbd3eca27f248e4997764e594663b831a7efbf6945d770d40", +"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "99d58cd0abf6bf9219066b3aae2ac27657a5476be9b02e14d7660bcf58e99477", +"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "5ea881f54b85626563269b5c500fc96fd427b64a572b897494d0e14e10e4a52a", +"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "145d73cf1a827f4e254b75d49faf1cc247f48ec42fbb1221fc00112291719406", +"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "dbb045cc5ee8395a6296414a1be393bf0bb2974157c6b371e3eb44222033fc24", +"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "d298f5ca1a5820370d5f201f51ab7a34044bb624b4371f23fd6ee1a008f01af2", +"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "739dbdd0508d97b98d45e87c2d1745a7b1d4a3e3174033a86b8b37b8e073dbad", +"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "769530a4362f39682dbae122359f7d35e32c7e79681fe2fb1ee5dd2df37208dc", +"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "a53c988096625e308d5f988ea570c1bea53c2e7dcc99f132b77d919ddca6e6a8", "TT_bitcoin-test_op_return.py::test_nonzero_opreturn": "b4f36d385e5e0eb1e94f3e4d82b3ee50a71d7e094a838d92200eaea836ab7fa4", -"TT_bitcoin-test_op_return.py::test_opreturn": "9c97b9b2c8907b1d88df64e36a82829222395ac39d56790266b0e3be30cd817a", +"TT_bitcoin-test_op_return.py::test_opreturn": "f2366582657635f06ec38ea2615d716852c57b59126d4324f9de35dd05092c46", "TT_bitcoin-test_op_return.py::test_opreturn_address": "b4f36d385e5e0eb1e94f3e4d82b3ee50a71d7e094a838d92200eaea836ab7fa4", -"TT_bitcoin-test_peercoin.py::test_timestamp_included": "44a2f4f1c89417590afe8ae57cd595206e42e48190e17673509c558431723ad1", +"TT_bitcoin-test_peercoin.py::test_timestamp_included": "5967151c15ba0fe3f7af67a77c5d0f910a67c03e907e6a853a8d2b614f671b07", "TT_bitcoin-test_peercoin.py::test_timestamp_missing": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", -"TT_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "08e12ce9cbf2b391adf761aa34669612498abf137beaa78b801b7b7302a30a41", +"TT_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "8f3dbadcba449ffce4bbde410282facd99697e4c36644cff698ff8cc100eaa19", "TT_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "04973332014ee3afe94f963a03a3350b6892638cb68e6645dca73cc40eea8a0c", "TT_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "04973332014ee3afe94f963a03a3350b6892638cb68e6645dca73cc40eea8a0c", "TT_bitcoin-test_signmessage.py::test_signmessage[bcash]": "34522ddfbd88da23e33e0ba746672714b404cc092a357419ab7e89622547c3ef", @@ -907,123 +911,123 @@ "TT_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "e8ea88047a1a6d4b0073f9d1d5a14718c2459d446b6e7b85db734147854b9705", "TT_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "b2f90b46691de3251ec60d5285021b9cabbfe88623ad295142953a95824854d6", "TT_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "756dedd0d4817c1d912ea72ccd36927ca78f20e82f364c79f18cbb4658c13771", -"TT_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "67cd20e6c78f6affc362668b1bcaffd34710d5485e4fc8ee3132b1f82243d133", +"TT_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "1f91ed6962ee65953116f66b466441e37d0eb49149dfc57d12b31237c9136974", "TT_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "4e9e662179536c74082797d3449b79365503c04605420131f225568f52d1248d", "TT_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "4e9e662179536c74082797d3449b79365503c04605420131f225568f52d1248d", "TT_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "8e7c131e253f1c50c723c8197397387ebf7b8284a85f95a880ad2df4c267e767", -"TT_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "896c3b543ebaf6fb78e44fc262ab56f8e85debdbcbccb4383a1b6c682c1fe449", +"TT_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "4fa1a8837568be95133ab80464b724a88cca5c78642615b1d761ba45afe9cdbd", "TT_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "289aa0633d85dcdc2ed37eb42a5335e2517a977212d0c480ec00133331d2d45b", "TT_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "289aa0633d85dcdc2ed37eb42a5335e2517a977212d0c480ec00133331d2d45b", "TT_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "95530d6e1deabe5b194e9cd38d80d0685406eeddf809c91cf3f6f411a61789c1", -"TT_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "7b9424df2d57bb47ea0564f1067775d6523044b3f537e0398a6db582b0e7e132", +"TT_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "bb7c568038ab78eaa9dab7a3c9c66cfdce92ffbc888a47c9b24ec2e84f13e963", "TT_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "13a0dba7177782808978cb7fe45be4b7038f98263446eeaf341b646aaa9202ef", "TT_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "13a0dba7177782808978cb7fe45be4b7038f98263446eeaf341b646aaa9202ef", "TT_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "1c1711b682fc0852c41d18572d9762f594d3b73781b4ebeb1cd4c9cd3c6cecb4", "TT_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "62d8a5221ef8db3c93f9bd359891b104cc91fd4a6fff9ff2957508151ea60ede", -"TT_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "884272d3338ce4f808bda8dd4121f59925aa5c749b6c89c8d2648dc88d37919a", -"TT_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "8abbab72974283a8e4391d2c0f56a14294c7e285df9b221372dfdac383d5a299", -"TT_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "d2da38924757f154478c14f3177bfc35640d9b92b4024cdf5cd15f33deba864f", -"TT_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "0f588ec9cd0d5c93861e41692bf97c057ebaf9ca6b8f79a42e894a1a7ff418d2", -"TT_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "add375fc02a459d18aaeb595c49407b3ae500528d98e572266e6fb77fc9e0d89", -"TT_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "4e405f56e580fa72dc0ea96fb43dbd8cfab36cf1c7711c1e6a2c6ffff5087ddb", -"TT_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "ec9c8991e9e8a52c1202383b4763f5732450e0992135ed58ead81070ac143851", +"TT_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "9222ef82d6b0b55ef0bb9ec0fb89e9d16e8757bdf47061360426b6aa3ec6586e", +"TT_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "a9f2df3bb31e27069d5659a8fbc3c480c7e2a181ea2fba62f6663ade8d948224", +"TT_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "1ae31e6a9e785a3f3542f7ec065778e983917c8ab421515dc272b39a4755dfea", +"TT_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "6db8ba6cefd74889c35c5ca09e3bd2be9eaea8c9e57b836bb50db71cef867cdf", +"TT_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "eaac97980623e0d843f89d63a29a5c267384c41f484a7f3f10bc293a67d2017a", +"TT_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "52f91a629fe9f146d9d4ad654fe5c8fa46722450b360e0e750e8805e573ade71", +"TT_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "6a018d83a0699d4a25b7dc7ee9415841d3ea58e3f9f3898716a97669eaa8be68", "TT_bitcoin-test_signmessage.py::test_signmessage_pagination_trailing_newline": "8e3502827c0d22e0b3ae86fce23ec947ecc542bc008799bcce49d5a54bb4666f", "TT_bitcoin-test_signmessage.py::test_signmessage_path_warning": "5fe06ed7a4642fddb7f2120a60946fc2a80742cac95565a359c475d07f236674", -"TT_bitcoin-test_signtx.py::test_attack_change_input_address": "ff4495b24ab89124f859b1d3cd158980d94b73680cb7afe6984497095cd2aaee", -"TT_bitcoin-test_signtx.py::test_attack_change_outputs": "962976c11329f27ec5103952c173332478c75eb41e6dc09f33d0b235e2bd2313", -"TT_bitcoin-test_signtx.py::test_attack_modify_change_address": "be7d7221bedfc983ccf9b9308c7da94169410bc53f2beebde26aab7e8434f20c", -"TT_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "be7d7221bedfc983ccf9b9308c7da94169410bc53f2beebde26aab7e8434f20c", -"TT_bitcoin-test_signtx.py::test_fee_high_hardfail": "929129671d9cabfe6ea0524ebfb2ca0a32a07d7b0eb5ad8fb6a84de9cde18ad7", -"TT_bitcoin-test_signtx.py::test_fee_high_warning": "18fc33ac0f1e5d12b85376e1401f2205c56a197d08a16962cc2adcfe7d1e4d9e", +"TT_bitcoin-test_signtx.py::test_attack_change_input_address": "0a8cdfed0edf034c5761cc79cfe689f667f27eb531f8f0530cca877eebc96e1b", +"TT_bitcoin-test_signtx.py::test_attack_change_outputs": "37df9bf370b488384ea05450aebe73c130511344d472d533f11e9d693c0a8cda", +"TT_bitcoin-test_signtx.py::test_attack_modify_change_address": "b92b3237c6ee61a6a4ceb1d6feaff6a81966ea686284fcd313639ad240c06c24", +"TT_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "b92b3237c6ee61a6a4ceb1d6feaff6a81966ea686284fcd313639ad240c06c24", +"TT_bitcoin-test_signtx.py::test_fee_high_hardfail": "17dd3cc4a4ea7963a764a56324b2ef53864d9efbeba2981ef60f16475dfab5b8", +"TT_bitcoin-test_signtx.py::test_fee_high_warning": "409eef0e40029504434aca95d4e125181880035e9b935a7d2173f5fc3a6eba96", "TT_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "b4f36d385e5e0eb1e94f3e4d82b3ee50a71d7e094a838d92200eaea836ab7fa4", "TT_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "b4f36d385e5e0eb1e94f3e4d82b3ee50a71d7e094a838d92200eaea836ab7fa4", "TT_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "b4f36d385e5e0eb1e94f3e4d82b3ee50a71d7e094a838d92200eaea836ab7fa4", "TT_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "b4f36d385e5e0eb1e94f3e4d82b3ee50a71d7e094a838d92200eaea836ab7fa4", -"TT_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "d2599720d1f25e095262fd4e3551631ac53c49bcc7beb7e9f43735701730ea60", -"TT_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "5b1214160fa61083d45a0c5f1897998a9a45633481759ca48fe29fb6a0830869", -"TT_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "a7352574ab015881161c5e1d291e743745323f50e58d2484e9172573ea4f9341", -"TT_bitcoin-test_signtx.py::test_lock_time_blockheight": "5b1214160fa61083d45a0c5f1897998a9a45633481759ca48fe29fb6a0830869", -"TT_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "a7352574ab015881161c5e1d291e743745323f50e58d2484e9172573ea4f9341", -"TT_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "6de435aa39310769d348bf97f17e65e84ff59f5ee93bbd9ba2a3b5b2acc6dc57", -"TT_bitcoin-test_signtx.py::test_lots_of_change": "3e1d4f83829c8cf9b7ba2a67881e662e7c7159069b4b20e13fd9a6f752a9151b", -"TT_bitcoin-test_signtx.py::test_lots_of_inputs": "358f883b012a898b40bccd5679b33e3cf3116be102b2a89b91fa83950060e5a7", -"TT_bitcoin-test_signtx.py::test_lots_of_outputs": "db310a003ec64febfdcc69748f1bf8d643de5ab35a202af2ee1c46f904cf6766", +"TT_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "d7ae0d339dde1105322a5e0f4c28ef4f459316553a31b429cad59ac12d6cbe67", +"TT_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "8dee7c2f857f3ba72d1c6114538d5e949eb637a4eccc32754336cd5fff3ca414", +"TT_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "0f414e317c30bd8b47c5186a6a2ebd203f2b86fec2598eba1b1e9dd392578bd0", +"TT_bitcoin-test_signtx.py::test_lock_time_blockheight": "8dee7c2f857f3ba72d1c6114538d5e949eb637a4eccc32754336cd5fff3ca414", +"TT_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "0f414e317c30bd8b47c5186a6a2ebd203f2b86fec2598eba1b1e9dd392578bd0", +"TT_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "bb81d090be70e497096ece6ca44b8ba583c5dc3f1f05340ecd367922c3b97f4e", +"TT_bitcoin-test_signtx.py::test_lots_of_change": "4fca0f1b88ba246a7bcde9a9c66344ad388cb839c011c52f95e09ceed733a619", +"TT_bitcoin-test_signtx.py::test_lots_of_inputs": "1db1cbe0037ef28a9cba8fe4c13ef74a458369a5b4dd2f4995ac3410c78869c4", +"TT_bitcoin-test_signtx.py::test_lots_of_outputs": "c025af094f9f16698e27f189f41a275548312e9ed8c76a26733988fdd088c691", "TT_bitcoin-test_signtx.py::test_not_enough_funds": "ef3940786bba9c09cbe09dd42e68623b2e1c148918d9a8430bb163802f1ac198", -"TT_bitcoin-test_signtx.py::test_not_enough_vouts": "b77bac72142e8df322cd0b79e7c9e325facf11238997feba576b0d24578fe7fe", -"TT_bitcoin-test_signtx.py::test_one_one_fee": "ed8ec67555fc3b8cdfb31e654f792e7a903163b31dec6847de1a7c9c4c8fd72a", -"TT_bitcoin-test_signtx.py::test_one_three_fee": "ebd15f2317d57847380350ce10a82e8a0fa6cbaaddf4c6103de715358b6f7b83", -"TT_bitcoin-test_signtx.py::test_one_two_fee": "1656a32d1994d01cb0ca57175bdb09ba22dae8f0f4ea7269e46be602faefa31f", -"TT_bitcoin-test_signtx.py::test_p2sh": "a1e990c383397d2b9bf433f19b4265cc507ba925af2c6675e56cea2cfaf2a726", -"TT_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "798c984b65e66fe0cb42ddf19e4ab0ec4ccab2444e7f3369c21f87e9736bc455", -"TT_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "798c984b65e66fe0cb42ddf19e4ab0ec4ccab2444e7f3369c21f87e9736bc455", -"TT_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "798c984b65e66fe0cb42ddf19e4ab0ec4ccab2444e7f3369c21f87e9736bc455", -"TT_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "798c984b65e66fe0cb42ddf19e4ab0ec4ccab2444e7f3369c21f87e9736bc455", -"TT_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "798c984b65e66fe0cb42ddf19e4ab0ec4ccab2444e7f3369c21f87e9736bc455", +"TT_bitcoin-test_signtx.py::test_not_enough_vouts": "64f89de600b7fdba0b66fcd36ad66f8b48d10c2b0de3f1641d1dacc22e0318c5", +"TT_bitcoin-test_signtx.py::test_one_one_fee": "7da95ca6a7d55ac2118b7d1b6b48e528b4a6d065cd318a60f35478be34f9df3b", +"TT_bitcoin-test_signtx.py::test_one_three_fee": "a4abcbc9576e95b66af9123de35ec40a4390bc78f7034b2616856640aa92966f", +"TT_bitcoin-test_signtx.py::test_one_two_fee": "5a5596c8b3b2e2a1dfc949c7d2fc8cd11c56a493ee77cdb8cb0c4187b8cfaebf", +"TT_bitcoin-test_signtx.py::test_p2sh": "55afd006bdadd22ea101b02d3f4a6d53677cc4774ef7ef6cdbb53ab83e462725", +"TT_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "ce4f79221116df366316488980c45426eef9cddbaf5376c97071502f86bc1e37", +"TT_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "ce4f79221116df366316488980c45426eef9cddbaf5376c97071502f86bc1e37", +"TT_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "ce4f79221116df366316488980c45426eef9cddbaf5376c97071502f86bc1e37", +"TT_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "ce4f79221116df366316488980c45426eef9cddbaf5376c97071502f86bc1e37", +"TT_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "ce4f79221116df366316488980c45426eef9cddbaf5376c97071502f86bc1e37", "TT_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", -"TT_bitcoin-test_signtx.py::test_spend_coinbase": "a6f90fb5a091de504adb8f3db5e45e67553d6813e33a38cc607355c1c9c46e6c", -"TT_bitcoin-test_signtx.py::test_testnet_big_amount": "5856d8c980574151ca67a9a1b2328f33cab4a2e5916e00749642889d473d9c81", -"TT_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "73e0ffe7bd0eedb4e8fa98f1fb759a7c4d44ed78a7baa70489897d1f774a9bf8", -"TT_bitcoin-test_signtx.py::test_testnet_one_two_fee": "be7d7221bedfc983ccf9b9308c7da94169410bc53f2beebde26aab7e8434f20c", -"TT_bitcoin-test_signtx.py::test_two_changes": "47c92803d33a9ef9ec0008baf809b5f6acee12ff0e59bf91130aeaae9259cffd", -"TT_bitcoin-test_signtx.py::test_two_two": "35e18998923388b03c2a013090acb7776dff94dea61e6e1ec1a8d067e9d5c37e", -"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "ed8ec67555fc3b8cdfb31e654f792e7a903163b31dec6847de1a7c9c4c8fd72a", -"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "5138018ddc18e9e7f887fa52aa1b01b69558091df2a3fd83d88a88dc89a7399e", -"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "eccc9cd250364f165c1ea78bc583fd4a7bf3c9a4a69bcf2721f6e17311c4a5d5", -"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "bcdcea019b89a14069699449dc377235e7aa6fb18e25fb89395791f543ea244b", -"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "ed8ec67555fc3b8cdfb31e654f792e7a903163b31dec6847de1a7c9c4c8fd72a", -"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "55c9e3b48ff515933c7572e5fec4ceeb8ebb118cbeecfd3c81258f9a93ee2203", -"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "9cf7a61be8c01444ca0b3716ce1931d65462eadd607cc4f07d26aefec9a11f40", -"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "4df5dcf2d2b098ed64d8be3afd3f71915301191053bf0482ecf42880c9537cdb", -"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "c8f576ba2ba2bfbeb9c0a95946d5ab64b262d76d76b6f058826da8d88cd838b2", -"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "55c9e3b48ff515933c7572e5fec4ceeb8ebb118cbeecfd3c81258f9a93ee2203", +"TT_bitcoin-test_signtx.py::test_spend_coinbase": "9481ceeee6da0521228e78c15a4d57a2f53233c27c27134af1a7784500a8bd84", +"TT_bitcoin-test_signtx.py::test_testnet_big_amount": "de6e15403efaf1b24c10ead5d0fa66111bd9b17c3d0984a1584170faa990b6e9", +"TT_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "bc70cefd373657c20e38638c6f086e873ca9d042c7f1bb9d25c0b68e8a11d7ec", +"TT_bitcoin-test_signtx.py::test_testnet_one_two_fee": "b92b3237c6ee61a6a4ceb1d6feaff6a81966ea686284fcd313639ad240c06c24", +"TT_bitcoin-test_signtx.py::test_two_changes": "a3b199bf166a1e5cfff9b758f646f19534f533bb9b0e854587789f3e3f93a69b", +"TT_bitcoin-test_signtx.py::test_two_two": "fa871b72b8230962fc6b09b5fc6a7cfef01e4edbe3d8e9c8972965093acd531a", +"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "7da95ca6a7d55ac2118b7d1b6b48e528b4a6d065cd318a60f35478be34f9df3b", +"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "7c78c91b1c26867a4d70712b78d6ee1d9d8836db01b19d6ac1a0e11e4159c6d9", +"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "63b9c5e022833464926dcbc8bf583ef479a3e469997fd03106efad0e9ccceb5b", +"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "d688cc600f2fb2be6de2f25d7c5894a15a48510a3f95ae51dc633a7dcb4a5cf2", +"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "7da95ca6a7d55ac2118b7d1b6b48e528b4a6d065cd318a60f35478be34f9df3b", +"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "c773b372385015afb3e452800904c002ee7467f4c0545406cc9779da8b0f1bc3", +"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "7cde3fdee3c9ecf3e11a1dee3f3ca7369922276977b75705e2cfcc4b70f5555e", +"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "ddcc7d71ffdb7fe31da740f8016390c174a05baff539db6a0f463ad205cdbbe8", +"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "fae80368476bc6466bcc53cf2fed540a29bef6f0b37469fd5bcf072035f1144b", +"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "c773b372385015afb3e452800904c002ee7467f4c0545406cc9779da8b0f1bc3", "TT_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "ec9bd33ac235c2155586f62d3cfd8b14cfc568efc7b6c7a7a6b7613ddaa556e8", "TT_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "3a284681dfb552dc4cc1e52a19bd634d54abed5f3331c4f8a204e32d71da6f57", -"TT_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "6a74342035b05b2f587b2dc6a0a7feba68713eb63da7bee9fb66c0d825b25378", +"TT_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "c3c76d6d10af45bf69dfa554c39347ad758bb2e8d1c688d74574215ede6c8080", "TT_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "90190d1ecf2c39fad65319732fa5d9fd94b644360eb39fabc8773349642ad8cb", -"TT_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "9b48a455e59f1613a342fcf6a68ac4d577d1f67f714fffddb9e0418b97d146d9", +"TT_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "1c63b4f99480f9046333f2586bf284e5bc73f126918b1dd528b24bf9c1db080d", "TT_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "352bf8faf6c50de152d7c9c6ed47c76f42b9094ae50582f42a78b6d663398d29", "TT_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "ff4211d2c8b543960aa65a821e528c8c1979f7723685362a5efcc856f5e42d58", "TT_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "b4f36d385e5e0eb1e94f3e4d82b3ee50a71d7e094a838d92200eaea836ab7fa4", "TT_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "bf87c199a2396e7d586daf696fae0a01c56530ace7d0e9fe2cd1d4c161730048", "TT_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "9911ce0526f071bf2207e305ce8e4cee6e58adbb60f7247a10f52cbe4d956b78", -"TT_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "4faf5634da5778dc4732420c32fc73212ffd7762131606e6b9398ee5dd3d05a6", +"TT_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "96d85f230dcfa45fca5a78058277da7553598ec72bc31cfc1a39a59adcdd7a98", "TT_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "b4f36d385e5e0eb1e94f3e4d82b3ee50a71d7e094a838d92200eaea836ab7fa4", "TT_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "b4f36d385e5e0eb1e94f3e4d82b3ee50a71d7e094a838d92200eaea836ab7fa4", -"TT_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "393d69b4f813e42e127eb87df9b2336df018ec4ca28703f759f20ab4c90ecbeb", -"TT_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "2c21a737277d6373c4699582caee8536a14acd37e13ee5660b377ab229eccc2f", -"TT_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "8dfa017e532372a2bded7a2375656e85262bb97c5660d8b79a0916c65417769e", -"TT_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "4c218af731bb8f3088ced3233842ba6c7d66394a7a19b2737344f2fd967e7c2f", -"TT_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "8dfa017e532372a2bded7a2375656e85262bb97c5660d8b79a0916c65417769e", -"TT_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "fa54b9752bc97b521aaadf9f1f90be56349313cbf121ecc7e75bd7f456303530", +"TT_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "6b1c8b2d657edc16315e8f4d60530f41b156573be7d2e267f060946ffc28e54f", +"TT_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "0da40f71027f2386147e8b0bbe7a3357c8a90f2165e2f95df4b9789280d634af", +"TT_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "dd874aa199114c94b6db0ba991bf0e70d5c168777cf732c24f11e04aef22e4ee", +"TT_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "2672b86a196602f88edbcfb4402c259ffcacf000834487baa00ab6cf6afabe63", +"TT_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "dd874aa199114c94b6db0ba991bf0e70d5c168777cf732c24f11e04aef22e4ee", +"TT_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "1959b58a5ee6fb79b0d416d43e699cb131bf97332d7e7d62b90af0ce2fdd8043", "TT_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "41be7d52bac04c1eb9f88d0d95ca75ca9174572c34572c8e34fde43a67d04c0c", "TT_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "b4f36d385e5e0eb1e94f3e4d82b3ee50a71d7e094a838d92200eaea836ab7fa4", "TT_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "b4f36d385e5e0eb1e94f3e4d82b3ee50a71d7e094a838d92200eaea836ab7fa4", "TT_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "b047cb9ad65350392944f1d767042f5b57389c419a33c92f4180de35c39b1489", -"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "51a73c73b3ff61e289b639e24cbec280be1ab222d03435bb0b107adf018c3f87", -"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "d80835c5c7ffee423571f3d9b95abf8430a0f58fb68f391d8d4ae4a39190aa96", -"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "e4b8daf83ddbe613294484713bacc98f16089eeb9d830225f855bf53e9d4a25d", -"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "a9ea50e5c8730ac656d20492dff1299c15060917c5de5aa2b43edd747061d13d", -"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "7eef8307bbe9b0fb999e37d7afbb646322430b073dd7f97070915abc8f4df8d5", -"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "58b1f9ba3d4994fb1f46f721ca73bc03f880c4145b985f6a09f070c3dec1dc08", -"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "5086d0e377faac38e8bc7ecbbcfea528fd8d8e0eed513cbccaffcfca15de1a8d", -"TT_bitcoin-test_signtx_payreq.py::test_payment_request_details": "00c4759d8ecbaa7aa5a70dc13ba8ed3422fea3482070ec8441f9d8ec58352d07", +"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "7e39a925ebc505afbe9e974bf78960736159b8de7948a5d1f0c4160c63fd12e3", +"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "c0b14cd6e014560a1a2309bac428391ba49f5df5d6fdcb6a2c17e16de1242a09", +"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "fd2b55e02d5676b95051d5baf4071fa2da3b269db52513018a312fcb002dfe7c", +"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "e1cecd3a1a7aec4bbdec5692ad7acdfe728ff8fb467fb94ed75ef558613fd543", +"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "b2a3139bf73bdcf8ea193c3f9efba8de6ec497ae56e93e0f865617bbb791f7eb", +"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "b37cb574c97ace0c8e8b87028471ee570bdf98873860619d5a5bbe17324641bc", +"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "189eb62a66f6b5a5bfd1df21af9d351149dc4236290b0ca2b8fdb649697d3a2d", +"TT_bitcoin-test_signtx_payreq.py::test_payment_request_details": "746e62c8f2ab5ccb64b3828e5150dbbde8ffd8c6ad597759fd1468f8e22c9713", "TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "b4f36d385e5e0eb1e94f3e4d82b3ee50a71d7e094a838d92200eaea836ab7fa4", "TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "b4f36d385e5e0eb1e94f3e4d82b3ee50a71d7e094a838d92200eaea836ab7fa4", "TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "b4f36d385e5e0eb1e94f3e4d82b3ee50a71d7e094a838d92200eaea836ab7fa4", "TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "b4f36d385e5e0eb1e94f3e4d82b3ee50a71d7e094a838d92200eaea836ab7fa4", -"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "c47c1fde812601e002dd88242b2d00c366f02e004851b59a7167d6ca3a8039aa", -"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "c47c1fde812601e002dd88242b2d00c366f02e004851b59a7167d6ca3a8039aa", -"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "c47c1fde812601e002dd88242b2d00c366f02e004851b59a7167d6ca3a8039aa", -"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "c47c1fde812601e002dd88242b2d00c366f02e004851b59a7167d6ca3a8039aa", -"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "d7bc6c59b4eb38a0850454f13fcd303da37622ebc9b3ee3118080aac431040e4", -"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "d7bc6c59b4eb38a0850454f13fcd303da37622ebc9b3ee3118080aac431040e4", -"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "d7bc6c59b4eb38a0850454f13fcd303da37622ebc9b3ee3118080aac431040e4", -"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "d7bc6c59b4eb38a0850454f13fcd303da37622ebc9b3ee3118080aac431040e4", +"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "60a4a860ca763833d5bad78b9b86504442a45ad6d84ce345d6e540550f8b0b5b", +"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "60a4a860ca763833d5bad78b9b86504442a45ad6d84ce345d6e540550f8b0b5b", +"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "60a4a860ca763833d5bad78b9b86504442a45ad6d84ce345d6e540550f8b0b5b", +"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "60a4a860ca763833d5bad78b9b86504442a45ad6d84ce345d6e540550f8b0b5b", +"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "da2c79f68cd71ca87cb68c3f6a7a55fdfc7c4f63dd8b3c60122df19e8198613c", +"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "da2c79f68cd71ca87cb68c3f6a7a55fdfc7c4f63dd8b3c60122df19e8198613c", +"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "da2c79f68cd71ca87cb68c3f6a7a55fdfc7c4f63dd8b3c60122df19e8198613c", +"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "da2c79f68cd71ca87cb68c3f6a7a55fdfc7c4f63dd8b3c60122df19e8198613c", "TT_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "b4f36d385e5e0eb1e94f3e4d82b3ee50a71d7e094a838d92200eaea836ab7fa4", "TT_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "b4f36d385e5e0eb1e94f3e4d82b3ee50a71d7e094a838d92200eaea836ab7fa4", "TT_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "b4f36d385e5e0eb1e94f3e4d82b3ee50a71d7e094a838d92200eaea836ab7fa4", @@ -1042,91 +1046,91 @@ "TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "f298e3947fd7c63a29f791960a4b6f2d2a2802eb77060974284562d10d956bf0", "TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "cecfec84efd4db8190ee78b69862d41c54d187a7cbef977acc9b14ed6140aee2", "TT_bitcoin-test_signtx_replacement.py::test_tx_meld": "6713eca916e6e1fa036cf6389cd9c27ecc2ba8060416ff56ad6177556439dd63", -"TT_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "4d67a5fb03e56bbebb7b7d576800ed4dbb511e5edf5f2f2bc3478e5a0fd4783d", -"TT_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "b8927aa9dc1360847381e1dcbd8f4059dd2600df91574efc1bdeb7c8ab3228db", -"TT_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "5f0917be0c1f25105ff016ef30abd31fe3da27ee42a1ae89273828fdba462c5a", -"TT_bitcoin-test_signtx_segwit.py::test_send_p2sh": "e9c6a03c84a9dd574ad7750ffb56f3785061c25939dfd28efec07f928c28000f", -"TT_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "35d05e2e0421a426ece243a8618a74eeface3fe72b4a0d98d46eb70d70c19204", -"TT_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "09fb6d85709260f85487395c73a902340294a9382c350845f43e138d5bb02d55", -"TT_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "5ca7f66747aca9df224e22b21785297520fa146f7f417f5fec06c3b0941c3d96", -"TT_bitcoin-test_signtx_segwit_native.py::test_send_both": "ede0db7ff71541c9c62cb90ed9804802fda51eba7163919d41c926309f2cc098", -"TT_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "8beff9c86207414bcdfcf898af7480fc572094e68e22c61d937971e75d9722f7", -"TT_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "2a5f69174f6abd6ba38b8f06b40dfee2ab0f41432c510fcababd2c40db7019e3", -"TT_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "00b73da07dc5e5d1ecfd574ef7e0fcd5c56426a8c6003cf7fd74708004ac1adb", -"TT_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "a5f264f35ee1580ef9708de67d824fdf737b7c894780d776be042106b9164b6c", -"TT_bitcoin-test_signtx_segwit_native.py::test_send_native": "55c9e3b48ff515933c7572e5fec4ceeb8ebb118cbeecfd3c81258f9a93ee2203", -"TT_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "73b8e8266107725f929f376166b82030696f6e6a565ed4e3cde00074c3958c86", -"TT_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "7d951af861762bc88f2f8f213f89b58014be8c6c0f694385c1d04750c162e9e5", -"TT_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "6b889c008864ebefb082eb3ff42e769cbf576be6ce89f32768d67d117626879a", -"TT_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "90fb48e31225122abc673d31f9f2402fc6c78b92b0e7582c9abdf7a5880811fb", -"TT_bitcoin-test_signtx_taproot.py::test_attack_script_type": "cac2f2f7c7c01de6f2cf510d7f816298534db7e88e3c1c9f45ab00d5c1918039", +"TT_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "2bd228b81126e58ec700c06e5da4bea94b3276f90b0c966499524fb27ba6894f", +"TT_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "2aa27b5c3132d8c57f9b000bb21eee63a77fd55040f8033e9f5f03fd31ca5b36", +"TT_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "121f5adcdae8e826a8be1bff5f97876db0c350f0fc35fb6813364292b82c2923", +"TT_bitcoin-test_signtx_segwit.py::test_send_p2sh": "c4d70012b9438b8341a8a4d8be0afdd4a608c4f3d54c1ea50c4dd613accad34c", +"TT_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "cc2ecfb27d5faa38f858ae2c73b3585943a95ce46becf10abc59c527fdbe779d", +"TT_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "0d0001ec47be389a04cc8155213b9591e60a3c78c3ce606c3923a622f65ad7bf", +"TT_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "e442f1375f42927c85dce8db2bf1e6727808f71a69e03b0b552f58da2e993c6c", +"TT_bitcoin-test_signtx_segwit_native.py::test_send_both": "47ec2efbbd3f38a5be05b926231415cf7fa04f2a7f4e3353f0e7d45cdf120767", +"TT_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "1bb16391858bdf317dc348197e116fcac5d4be4ec5b47a7cc9227fee4f48dfda", +"TT_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "3529d3d9183888b31cb0b63aeae0654f6ad085d4a632a736db2da7b1189e31e7", +"TT_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "80a24775d424006386e8d7c504c78f7f6eb9bece5d94c14f8e845068d7c8dc53", +"TT_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "61443300524b6256cd7c3ab9cbbd64c2c23fee238d80cca1b1f501ca74de95a9", +"TT_bitcoin-test_signtx_segwit_native.py::test_send_native": "c773b372385015afb3e452800904c002ee7467f4c0545406cc9779da8b0f1bc3", +"TT_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "dbd028d30e74e927f66797eb3f586a674b3b5d82f377a3dbd7826a0b88a0ea25", +"TT_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "19d46c6a1d226db7aa336b31524d967547f9ad9f2115d5e834abaa9f201ecf90", +"TT_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "550424f8c58ffb22fdee2fcc5b89404c6bb69ad5c9d483fc4c0d0286269d4a31", +"TT_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "8d1e1d5e44b8aa80ef021d7384f76e18c52103e6a58a270ad736739009f1f487", +"TT_bitcoin-test_signtx_taproot.py::test_attack_script_type": "f05a9e8ea51bf2d9b0a7fd0bdcc80212394f9fb83821b511671fc8ed760b21b3", "TT_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "b4f36d385e5e0eb1e94f3e4d82b3ee50a71d7e094a838d92200eaea836ab7fa4", "TT_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "b4f36d385e5e0eb1e94f3e4d82b3ee50a71d7e094a838d92200eaea836ab7fa4", "TT_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "b4f36d385e5e0eb1e94f3e4d82b3ee50a71d7e094a838d92200eaea836ab7fa4", "TT_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "b4f36d385e5e0eb1e94f3e4d82b3ee50a71d7e094a838d92200eaea836ab7fa4", -"TT_bitcoin-test_signtx_taproot.py::test_send_mixed": "0b61ce3a67da2217bf22dd805db0b0c073434ef9fefa1b02b3bc380bbcbc7c54", -"TT_bitcoin-test_signtx_taproot.py::test_send_p2tr": "ac338716d98e71279ad12c77646c02f6a73146e1ad0ce4c5f7a622eb7fa7bdf9", -"TT_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "70d79d3779a25e15027b7a6c0430dfd9c64596fbb0831a5119bb6278de59bf6d", +"TT_bitcoin-test_signtx_taproot.py::test_send_mixed": "10f4a7a41c3687d3d7f838004390f87b5db1a1af780bbb3acf1ff92f436ae04a", +"TT_bitcoin-test_signtx_taproot.py::test_send_p2tr": "2484a5cdb6e22e97175c342093e78f64b89d4ae9aebdb5767286e13de81428fa", +"TT_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "1b4a95d06e501ff077aa11e75c23068add8e37f25a4b6cd308efdbdea52419a8", "TT_bitcoin-test_verifymessage.py::test_message_grs": "74283b5cad03b7a0a22024d72ab733460dbee0fd0d2a429b87666bc9b60adf01", -"TT_bitcoin-test_verifymessage.py::test_message_long": "53113a027391c165b919b59a7640da58111d76807bbd6186bc1ec1107af24c42", +"TT_bitcoin-test_verifymessage.py::test_message_long": "fc65bc80d42a7bc34aa92b96c87f6793bd1dc1befbccaa1c500956746a0ec54a", "TT_bitcoin-test_verifymessage.py::test_message_testnet": "4a2ba37b9c08120959c27aeac2eec4a10a1e80cc58843d30a1ab98406555b9ac", "TT_bitcoin-test_verifymessage.py::test_message_verify": "1670482af98d8377234cc6aa0e6aab22f7f7031c745f48e331c7128f911231cb", "TT_bitcoin-test_verifymessage.py::test_message_verify_bcash": "f0f6b3f8f99a6d030f06be2972c91114cd30f2ba4fe63853207d894f62463cf7", "TT_bitcoin-test_verifymessage.py::test_verify_bitcoind": "592556ef3f5416c1f393b7ea8ca1131a401e759facc3f77201b72f0e0d00ec87", "TT_bitcoin-test_verifymessage.py::test_verify_utf": "9b59cfb3cc684240d515425db9f50aa3cfbb677103cdbe75bf3c8aa277255c6c", -"TT_bitcoin-test_verifymessage_segwit.py::test_message_long": "2f9c6f1991ed6eafc59499b688b4ec0740fb0e69f1596c1029e657bceccdcbd5", +"TT_bitcoin-test_verifymessage_segwit.py::test_message_long": "feebb798b844777e3746e1f270ad0c61c0c8d35cf6c7358565131e4039a8be65", "TT_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "d429f859aa89bccbdb4f4eff3a225b648e4a7f23ac5b263e931500fb83074e3a", "TT_bitcoin-test_verifymessage_segwit.py::test_message_verify": "9d86523e125499cc004bf3c31d5aadfd81f6b5f7f91a735adeb1093e013f08e3", "TT_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "deb285e61d761c64928e319814561e856b0fb6272f4809f6ea341bdd782532c8", -"TT_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "3984351b37b16600d14e10bcc864576d37a839ca401fbf0a5cbf48b41a1cf640", +"TT_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "e8e254f7c21bd9fc71bfc30184d6131eca7c173f643b23fc2fb88ca43c8edcd5", "TT_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "1eb71efdda6ae3f6686c393794aed08a71dedb2550a4d8266b177bd95e81328c", "TT_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "ad242630395c74b02256ccad9672e1d4cca355be9337db0ff3fb1ac28d612518", "TT_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "f3906020314a11435b293245aefc2dc4fcd23437304bd84f97cc30efe7d39c29", "TT_bitcoin-test_zcash.py::test_external_presigned": "e021030f6a66671f42317274cc0f7d656ce113ad4b0e4eff065cb56b5fd1ef4b", -"TT_bitcoin-test_zcash.py::test_one_one_fee_sapling": "04e8331f102c82ee78b91614cf183a2f158f33702701de93850139dada8e7613", -"TT_bitcoin-test_zcash.py::test_spend_old_versions": "ea4b71c1fb72a7cfeb9e94c97b79bb9df005ee3ae9f971f3d238a0d922f98b12", +"TT_bitcoin-test_zcash.py::test_one_one_fee_sapling": "cbae211a84644d75071d7f80bf760f995791d5e5618b115c1c9a870680d5a2d2", +"TT_bitcoin-test_zcash.py::test_spend_old_versions": "dfdc2be7405ea563d2b543572ad94f18cf61cd7a3a38d03285376b9c9d63a767", "TT_bitcoin-test_zcash.py::test_v3_not_supported": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_bitcoin-test_zcash.py::test_version_group_id_missing": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[icarus-derivation]": "4af636791e1d2979d22fbaa0273c0cbfbcba57afe9e640f2e01b8cf604f064d2", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[icarus-trezor-derivation]": "2cf86383a150f1f0c2f40926f42daf86d81dc9f465672ff7b68c0f64847b088d", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[ledger-derivation]": "6e4ecc8e8cc7dd625967b9ed630b4518665d3054cfb5d5f9b298bd29105214a2", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters0-result0]": "1bef30777842b79cce87b45069218ca5acab97ca3b8deaa238949f7d645935d0", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters1-result1]": "a500de4ed78d05ee73b82970ed82a76ad6e14de2be641041946c2b4d09ed422a", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters10-result10]": "b42b021e638e0b9d0f40f2bccd07c7698b582bccc3aafc8faa66aa75aaccc967", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters11-result11]": "4f0a7757d2015a56a9b33caa33344be7c3b2a9172f20366903ac599e32f00df3", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters12-result12]": "584d659820d28c70231697b3af900e4ca5ea6aa2c1aefd9fefc58dcea247ec1e", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters13-result13]": "471931b30cd836e111241a755ac613fddc704a76d0d6324e0acbe06839d3221a", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters14-result14]": "4892056f484dbf0e811a52f9094908823fb8ed5880dd23ca6c9785344a13af4e", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters15-result15]": "e3aed74f15b870ca03bcc88150c048831dc0e1479e4cf5466314667c34d9e29f", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters16-result16]": "6d725b7173e8a75a2fb2f67fe8e1b21d867dc7fe6746e5c0dfc1ea7f9e50b8e9", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters17-result17]": "719859a0f9d692902d769bbe12da622d3ed2467f4109b32e6a4d3e52d531d651", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters18-result18]": "e0c5f3f6f1b5341bfaf4fb48ce4a1aa30702e5688af3c1378aefb9367d43afbf", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters19-result19]": "b07a7cf906a7a293acf875661e377109dec99686d1441cfd09deb574c7e75d2e", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters2-result2]": "115ff602ec3b24a1a0354dd229f1faba44227316bca7e3ecf40fc3f3ffe5b24a", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters20-result20]": "37b7e29be49735fc0e045ad652597d4c3e48e73ee2ebbd6bd5601fbc829b34e0", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters21-result21]": "3a4576057462d7887be4d534ea1f7226fd5f04e28faa35ec386b90d1c0d0a6e1", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters22-result22]": "3958f5fda417d2109d1ceafc267319983bf4a5c791a155d4ae50f39c57dabdc1", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters23-result23]": "9b3f2329d10c2a2ded012086a3e04f5aa29c047bd5817e22bdc13d6036450b4d", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters24-result24]": "b452fed56462201aed42e8d187e06be2e3f1753546c08c76bde1dd6b81e27688", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters25-result25]": "cfd94b49a5e494e9fa893c34ce8302be5eb990cfa121318477c664fa0a0a7430", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters26-result26]": "a8cac35f99f99348731393c8f7fd0620b35f4727f7d7882d26a069629640ba36", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters27-result27]": "5780dcce4047ab0825e51fd7143062d746ee2eb2790a3c3ff193bc1326c87c9a", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters28-result28]": "43f1d103f313ea3311cbab39cb1c94351f547cae848350e51b139bdff1f57330", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters29-result29]": "52803cb57e9e019d8c4c9a6450b536128205062d555e584acbdfb0ba32114ea1", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters3-result3]": "6599e3edefa2d0c9da143ea01a81819ef746c248fca496c7dba8051601e9823e", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters30-result30]": "eef6b521e20d092785a7a179bac624812092ff6d87a3ac42715b298b62fa79c0", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters31-result31]": "291484a08afb16812638f9441ce73966734f8afaabbc974e70c2e918c6d60d93", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters32-result32]": "210384048d117bb2768608c229a1c50bdfa240e7443769ec3b202c1de45604f6", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters33-result33]": "a09929d0c4749c8dcf4c4de1465f2a8a66475fa27ae6f70ffaea97c9d5206134", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters34-result34]": "e493c9e47190ec3c8faae0d445ccf833891071b5d389d06b46c77b89052e43c2", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters35-result35]": "a8e5130f91d947ed14ebdf78aae0e78a1d47e3aca4347b6f1f8c09caee816656", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters36-result36]": "467146f193aa6b2736034736c006cd6dcde57e7440f2e3bd369634fe9c4356b3", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters4-result4]": "e4f92cb88f56d2e0a204077a91f08ce67d7cc0a89b703ad4eb63fbea47ea949c", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters5-result5]": "c5ba671f2ad6a5306533df3586714044fbbedacfab2633067a50f9c381c63cdf", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters6-result6]": "0ade118cc791b23d4ab0d7de3877480867f04d47af5182cbdebfccb6847d6542", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters7-result7]": "a1dd5d1425612427835a0bd659d47d67223e9f86e9c71f0d8cc093c800108f55", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters8-result8]": "887daedff863aec684ca43a97be291125690abfa47f06a1509257b5216e464c5", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters9-result9]": "1ba4a9b2a387ff26f2f652ac35cf45e5f7f20fc9f6720def65c2ae3769d47822", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[icarus-derivation]": "080b9b37a8e6f0e75b862f0a563fd844e373fb15b41a943f267fdd3219767aca", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[icarus-trezor-derivation]": "afe2edaec5324898d562976998a4a158fac7788498df9424471b0bfcfd2340bc", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[ledger-derivation]": "831b6edb7edeeb31fe1a01cbe5555f736975a1a44af96ea85c4d7a659eadcda6", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters0-result0]": "f82cdee871b47e1541036b17e0216ebe16e4516472c500b34a6ceb055b7873fe", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters1-result1]": "c0a72944d1c65ace80ed0a829e64afd79234b4d8dd15366fd8aac2a44e7b018d", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters10-result10]": "344290bcc6ea6ee0dd5193f561ec7f83cb44caaaa6e9183f1278a7a86cb6d884", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters11-result11]": "48875a513a266f08a706d161fd7cd87ee5d3042f8d106544167e0f1e97933f14", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters12-result12]": "c24e3e873fc840b403d3b869150fadd647b2ddf1d7eed6931b6852a24d198821", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters13-result13]": "4055fa4fb4bdafadf86ae85e38b0069bd344b52e7c5fca87a1da9a1432ac7ac1", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters14-result14]": "066a51c5095c89578f9321a39dc385bd3cb3b4936019eeca1830a69bfdc56280", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters15-result15]": "38fd6eb5e127b592ce5a0fc0c6e145fae1178bf6d4cc5a40bf8e989f5d1a80c9", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters16-result16]": "81cecb1e51541a38781edf48f2a13177f95e650a29ec21db15b8636b7def0eff", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters17-result17]": "5736bc464f5f7c5a17ab33c604930e149b1aa327e548d8960d5b42da85181ae3", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters18-result18]": "7508d39583f5b16183ea6a944b624c3d7be9e097777039447c8b98af2afd41e3", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters19-result19]": "77c8d947051926a6a322f881034afad168663abd5653b7fe5b3cddd0bab409d0", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters2-result2]": "8f1ff429ea7caa48a16ecabd198c874a3f9b47cf11ec8ae39668e921f5b960c4", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters20-result20]": "4c765d859721583c6d8a56d3de167d42f67e8ea279d55958d141d85f6d16e8e1", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters21-result21]": "1ced4d1906d6f3a754a906b1cdf34456284baf35b76a185630a20130c279a65f", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters22-result22]": "0bdc7e130cf2d8355ddf1e3e7da5b7b98a804b90d3e5e0730c186098ef11c396", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters23-result23]": "5ae4027efd89e729a93e2d454776ae3dbf6c49d3ce422d792880d7f0f47ba41f", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters24-result24]": "0bece7b83c6ab56d7b0e4c8fa52862bd9d69fb5ec09ad302c11e7dc5e3eb5377", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters25-result25]": "a0b6bf9a3f143b3cc22d7592717a960c505da13e0f2efc786e83154c14c21969", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters26-result26]": "8c208feb7ac296b19ef517bf7158b8ed3f58700c97b6189dd0117dbaa4c0a8e0", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters27-result27]": "dffe79c3b87691d4570e31d4ed731aaa6ecc305a4c0174a3e3213757dd0235b3", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters28-result28]": "cae8ecc13a49a04cedcdbededc46aae7166933253c7f51f1f57b2e4bd7af4b45", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters29-result29]": "624edff4ebd10ec3c489ef154b6e1d2f3f2551e9bd5fc9003518f69d9a204fa5", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters3-result3]": "7221e913ec2bbc795680b560a923de1e0ed4be98f912f617cdcc001de4a33590", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters30-result30]": "522e0821b68df8542ab0a5f82cb108036098e9ce3107bd7bb9c0925b9a2d03a1", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters31-result31]": "d71c84759460f61baad10379dc196278bc774f10a8da9d490abe315f9f087943", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters32-result32]": "ae4388978ab385dbfa820e2292314ac471d76ebc39d49b73660eb78508af9d15", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters33-result33]": "b729332c721076d375642d251ab38a1ba24d9768d192f2284930529ddd99f6da", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters34-result34]": "e314c5f2381a2a751033a6f6690848f547b7d417bcb0c78b8e8646727dfc1983", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters35-result35]": "5a82f4c0b39abfbc48fe0796be28c2bc83cd954f5f58064f5310a51df2fb9ceb", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters36-result36]": "424845b6f7ef5ad8f0bdd21fa76e9e5595822f1e575467e47a61f54be1438a0a", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters4-result4]": "ef94b6be086d0c20c257185e516208142d0dc1325012409c9dc990fa5ac99de9", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters5-result5]": "20e5ed772f0c43ecdb703b2791bafa092363b139dd272eb9f4e19b69fc581659", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters6-result6]": "e1a4900446c152fcf92ff8dc65c0e5768131d5201692b98f21aaa7bdcb6b0805", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters7-result7]": "d66d58e0de08cbcfd1ba29cc6e12c8d0e5e483a172a4ed691b94b24ce84170e5", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters8-result8]": "1841a8d40185c9a11efa815f5f31de215e9496770f63b79b81c56b5fd4f09492", +"TT_cardano-test_address_public_key.py::test_cardano_get_address[parameters9-result9]": "f4a9b828954310a401f81018941ccc5c015313c4b260691fccdd748b34cb10a7", "TT_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "ac993e59233d2d378327a6efc89eb7f475572edb4ead78cfbcf3c483dbac0695", "TT_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "ac993e59233d2d378327a6efc89eb7f475572edb4ead78cfbcf3c483dbac0695", "TT_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "ac993e59233d2d378327a6efc89eb7f475572edb4ead78cfbcf3c483dbac0695", @@ -1165,89 +1169,89 @@ "TT_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "a94dcde0f15341d4b90daa4553202d98bc9aedd8aa735274fa6f721fa5f0089b", "TT_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "5ece29c4b3b97915b55687f4522cf71de81b50777ce230fb208c6401ee21bc97", "TT_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "10a0cbc38894ad8ca6aa05e141c04827262cf76a6c50948a10358e752f96447d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "26a7408b7ea824b354ce17bb37fd2b47d7d0c05b76c654f35be468c9a2c2ccbc", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "57b56ca7b4b5fe37c8ab611c579d23f0fea7532cc45649de648bc94e2bffba77", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "b3fe9ef18071e2d3aed7857a9b61c3991fe417179c7d3a3651f737d76d24085a", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "f62a5ed0cea8984efa001abd2b2116019b5fc02fbad2022f1402c77a714d2f4c", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "0dfa476568f88cb17c03da026e38b75863abab8d66d9620d5b3c4adcb8be6812", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "0dfa476568f88cb17c03da026e38b75863abab8d66d9620d5b3c4adcb8be6812", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "10db06738d17a0d59eb67c62b1e3fa90a69812d277681f0e59ecabb32c2577fe", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "354e9ddbeca65dca6902a87fef97d33f95cf9f77a82973f4c7a2d3b32097170d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "70183fdefbf801cd07ec9304366c65774a807826b26132a4ec93e61c39db0061", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "df1ce546dceac82ba2e0b8159bad98cece694c66be17858ffcbaea81f3fe723e", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "13e1646711f2ddf8a6f6137e82a7973d3024b64d4db0cdcf2efdd9e35f720333", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "ad41672bf75122a08fcbb19d0b671c20e6f495f6562b44eb13be7152e6f98859", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "1a0145ceea10cd96cdc0ce2940059c114feb8403133fa787bafccc81ce798aab", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "58941b1bfbf4ff47c861dc82082bc03defa8e00fe7de35ddc10cdb65cf563d97", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "67d2db28ade631f2eed899a7057a80b133295954a936d8bea95819e6913ed571", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "9c3b31b343000514bf14499a2905211e0d2d2d0ef77823b26e036b65da8c67d0", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "ba4ad2c237de28efc57a65b85030e830cedda088410bcc3966505076471ae731", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "519f4a033ac81e61590badda8c2c8004b9ce12691d1bba5452d2771ef09bb348", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "519f4a033ac81e61590badda8c2c8004b9ce12691d1bba5452d2771ef09bb348", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "0604ef99fb70b10283ff3f525959c4d016e8f6ed0ad35b20b6aee27699783bbf", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "c8092ce98e009e5d36148a089af746b9ec1d3a087a42f9ca458980896f1cace3", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "c4be73fcffbdb2122633a31a30dca1fc4625202b730dc34a64942ea9ab266946", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "d32b161c25f9482d66fde093363ce048217673d18f671880f3a65fa79c47799e", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "7a527f91f2614d4cbc21a5706f00ccbf436b96b91596afca62562028c177387b", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "9cdafb20a8243d4b231554e2006d8c9f82227ca40c748b9668b4920ee88fcb8d", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "9cdafb20a8243d4b231554e2006d8c9f82227ca40c748b9668b4920ee88fcb8d", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "8533df8f69ecef94467c54aa3cc9faa93d2fdc64aba5aa21a54640769854c553", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "10f2dbcc52fd450cb72a25ac3d2de187bb5cf8ba73cb09a45d833603f6fe6e4f", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "7b7c14ec479ca455ba5f694bc9881a4f6c7b70eccc4bbc342e546d8cb83a9a38", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "1baeb03f97502c3eccd99c46b4037d2721d98d71ad2e8f6253baec8a9d97066c", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "e8a950bda5e3399083ba40b942e69f040637616f323f06a77dc3f4da4f58b148", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "a4304edb53ad99f49312ef1411226cf445748fa7eaace271f34013508870572d", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "aa3aa8ba31c6afdce5575f809769727e4ad9da08dae333d2a053a690850cb351", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "9e665550c9c84a29456d7eb205f884e604893459b3c48a003a470748dcfb41eb", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "6f4d59194e8ac3102727b23e2ee9f0fcd4c64a6892a0fe2fa2f5263734ab3533", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "0dfa476568f88cb17c03da026e38b75863abab8d66d9620d5b3c4adcb8be6812", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "a4304edb53ad99f49312ef1411226cf445748fa7eaace271f34013508870572d", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "aa3aa8ba31c6afdce5575f809769727e4ad9da08dae333d2a053a690850cb351", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "d18e5ea8ce9da47f61af53143443c0ae66408be517c1dc73f6c98f3c7ce31111", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "d32b161c25f9482d66fde093363ce048217673d18f671880f3a65fa79c47799e", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "84b2229856f34086c9dbb6cbebd20236cb5b07bd8b81098f180d0cfa1a999ec0", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "d16a0fa35bb25efbaf7b90678f80ede7ce41e347cfc1d155f91f494ff6e79d53", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "a6826320ff172620fde5bc8d91beabbdb28b7bb10e03d56437756d6e28f8b1d6", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "1baeb03f97502c3eccd99c46b4037d2721d98d71ad2e8f6253baec8a9d97066c", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "c430b5b158daf9974791fc92749bd2ec2542dedb4f49dce9b3b9b13a62ef03c1", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "73d930892e5c14d6a12daace9b75d0061bcb62b437f486eb4f0c49cf62cbb27c", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "d1bab49d1b5eb891254fe294eeb6cf90951c9da16782d73e2b48070b03aeac2e", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "0162525a5b2146894654d66558044687b9090ce10bb20798023764f5dcf023fe", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "f21db62a4bb8a0b8276b6537f0deecd666fa875910cf21651590a084ae26e804", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "73b2f9fa160facdc2d8c1b6c630253c74c9fddb35e8e171ef8ffab470eed5563", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "f2dfba898462b89d75222f5f53b443771ce95d556cc8b5a26fc2f48c19d45d2c", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "31557ddba7fa0f61974d578c84ac6bc45ef96c278c6fe633a2c66bd6790658bd", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "18595832d8a9430d6a1bd41caa4fe4454360e28c9fc54322e76c8e7bcdebe8b3", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "cd6936dcb868324edfc12694d22866b8f2dad6668a6b05f3b57cd0729f1c623f", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "a1aeb3f8bf7a6be3d036714eb4929488d5f7a6dc3b3dc3305db11a7d7c795f0e", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "dc5613efb482e54eb5af1ea94ac2867e1fd43f04cd62539c8193ac0ae0375ccc", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "6435944fb1477d16818a5ce8a7f87b185fa0535eb08a2e53062fcded57bf597d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "5453ef71d25b6c0e53432f5d2a0fdaedfa0c76d1a354be97474e13d9412f3757", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "105712cae406327efe063a1a046785f3e08f7ed7ef1b8b5ccd12faf97fc65e00", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "aae83b65f45f4c4e62d06f43d2d5987a9e5e9a904265e687537ecd5474391fdb", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "9445774cf8cc98002d7aed229ea02fedb6ff7d805a127db198d16213bb360dc6", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "f41236c689ca94b2c3a6a1aa915191183ea1ec15b5b9641befb9b89c528841ff", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "41c89f874d58813b3fe0748275635989edf018a09e3f612b89ff4338be02acbf", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "4b9bef2c769af20b51b5e4c61486010fce4c55d47d8fb4d9105488533b9d00e0", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "86273e92dac8d6751c1528d9d95ac26ddda59b11ee81a75a7b618a9cb0779bef", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "ed000728eefa943296c28a139d6c992e18ec3bcd208fb28e9f7028fc106a1501", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "75ff605237289144343107435b097fa97e2969f5eacf920f4c2726ad76ba1554", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "86349c4653b86279b36e6c393550fe7d0d3a8c1a88288e97a0da580092209d9f", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "319cb956b4ad93edf70ca91e895c936cad2c912a559d152cb8e0efd9ea6d5392", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "a581fe34337e1f830755922bb093685b8017a992432215bb1fff3c9b46217624", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "8dbaee9de9e4a101fefc3e6485d18af0edcf2f08ec6d0bca25b5c6218eb2a297", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "23a825669374349a100e18321b569c6b6e75a8ad297808a700f611bee2b59521", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "7f6ab8d7aba0b3dc085918d9623220f4566331b120670662e0bfd22a304085fe", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "12de6b0f6d9939d9764c6e84f25a57c913fcd5bb5edb27d4ad504c5701fd3e72", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "93d855d7d19357242f7894533e6ad7b996808ea56a8a02282b32f83e66c70139", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "b6bf2eda12685f295fc68b3c96046e3249aed7c5201569008fbecc79bac7d869", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "9059ff993cae4a44562803b11c97b7f46a35be4c1f50aa5d2637f401fc156b76", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "68037b1797959c25c230ae28edbc1aa67840821190bbc7361a8a5e536f474819", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "ea7ce11af0244aae5a5618d985471b0f6703aa86a5e900ecbb1a245df64b152c", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "b649b4f3b425f6317085142d40abec8238cd1187e304166ba6eea0da6b31af06", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "7d78def0a4a66eec4a605025f9ec1d1fbeb55d93c383bed45b2b31522107ba75", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "7d78def0a4a66eec4a605025f9ec1d1fbeb55d93c383bed45b2b31522107ba75", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "2360c1aea472d7b132add0fadb91f77b1ae9934744d5cec4887ea45bee757d76", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "91f2db7f70a25d23cc84c2c9956bfb00c1547f09531b341301b3d111c81be61a", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "792bca20208650ad0292bbc6c278f563f68fb2b1dcefb17c60fdcdc1d791080b", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "b5c87deee75294f3e4ad7920d0a6a609d04dc4ac9cb128ee0685ace815de9aa2", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "eb45c70d905b32e505573a21c3a8e8d3d3e5310809ae1028931b6a762e5e301d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "f44f1d988c30385dce693d6a8236a5c30df4df27806264c1e641744a8b2ec565", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "d34818017e8c635ff15dc311e7083d2e3198ffec1572d2d71c28bc96c969868c", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "d32b161c25f9482d66fde093363ce048217673d18f671880f3a65fa79c47799e", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "44a479632d971a34c4ee73da5f83cfde08c165460c2da67b073e1413d0e7931e", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "a471765eed6b8aa44709a0b69514b645028c2085215862a82cc0439d009f6455", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "38ffeec1144050b5925db3a19fd6dc007aecd67429dd650b695f59e36604e0f4", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "51eb424f09b47573f378527e1c9dd872871975e10e30f004e6901ddc780b04c8", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "b9972851dbf02c0b81ac5b44b0bd287bea21630bd9ee6a0005aadc82ab9f567e", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "2f49eb8b6a0ce97c0b6d34400abcd7b3dce92ca31b20dee3106f4f2daf1e3607", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "3263fc299b96c980368cebd8845d94e69a658c15ffa5be08fe61f3db56e52841", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "1484efeada6a6e6f7ee33d3ef2cf648947882dfb4609bf546d10bb6fe631de98", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "1baeb03f97502c3eccd99c46b4037d2721d98d71ad2e8f6253baec8a9d97066c", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "e9f40ad76c7a1db1f05700ffafed93675bd26ed3c801f580d9169da645bd664e", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "de60be7066ad53ac13072e555598ec3d344bb4086da54bd594b859bc778de2b5", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "52cbe86b6c9ae86a545dbfd4a296b115d89c22808a24b98fe56f80a15f2298b7", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "07683055a8cb0840e17f2762ba126d6a476b5a248fe5f92e39c1dd4c3b2dda28", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "03c9d78774a8b00d9ad814309dbb27ed97119b4f8e51fd9ba14208e5cbbaf587", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "7c9e7c1050d21905e031320293d1c076d8dadde065efbb4d391b18479fffe445", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "8913aa013f1fc75e36d68a8c4c729327387a6f9c05606c9990765019c080d469", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "d32b161c25f9482d66fde093363ce048217673d18f671880f3a65fa79c47799e", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "00d855523d758f2613b14c45fba696c5d05a33fd0689b76366d47e69661c6396", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "a3b2e5c82c8adaecee07fd33c57c5524f451db07e7f46a8410c42870ff09203d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "5db5f13bdb192b09aa3b24533ff97ed0d5b665ec23fd13a7197f33ef657c2852", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "7b7336ea703aa74f1371b4713a4d4b02f2158282b574df53f7b87a34db6be163", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "dc445e52079e98c47609ae4de2b8f509c3c5542907f9428d1a9abbcfa3a2b527", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "7a1740410246f35b2874a0c2d6141abb169459ce6225961b8c8751ac3b1e1fd3", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "a8cd8bb2f058415347323c05e516fb4d30e1600dbb619eb3d43633a494d656c5", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "d7e02a583bdddc1072c91c99c7784f61a47f267337ed42b98019f191edd87695", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "8edcb13e5839dc66c74e37a1b91098692741b61a9c7aa68392248a2b4b9189ea", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "f0a9253e52831ad377e072269c67b0879c458d542ed1ec536de50b53d69f1a0c", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "f0a9253e52831ad377e072269c67b0879c458d542ed1ec536de50b53d69f1a0c", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "8b06c08cd3f7029bc9a4247f3aa1ba7c2710d5416279837c75e268b0882d8849", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "58fbf823c975110cf821035c4d4f0d1044736cc2119f21f3096bd9737a15bae9", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "1baeb03f97502c3eccd99c46b4037d2721d98d71ad2e8f6253baec8a9d97066c", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "7afb90ca99fda60697137fea05ef02132a8bfd1cdfa762e8ea4dd36da24892e6", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "ec422672919473df76e5a24eb0a798b110f4931fa33e12a5359a7558da0f90b4", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "fac2b1a320421c1c949bd27d29215ae924b846fd10492c707a7f2bde1215fcc7", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "34bc0e79afc472c391ff23d6e58dd4a92119cb7f5ebfa1f5da6ef19303d807d9", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "c77dd90677aaf5ac1657294dc9c7dacb7353cb1d69e95880c611a9743b998144", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "767714ae9992a8ead781fbff4e55afd72b47871e8b9e82bb1f0c32114e5ec152", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "751edfdd24a7275bb1e63b62cf80f2d4ad52cb215a90ff7ac07380a82ad0f932", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "4946d05d6ca18e5a312626d2b1a0f6e75af972d3c649c87f61a8d9c569e2d0fe", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "cf18ce577c132f8e8ef4abce34b59b2604d85c5aa0be5d052cfb43ef247f5805", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "3824ba0827e5b3cfff83b476be6a23b990d82645671261890ab8e1291e81da5f", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "3824ba0827e5b3cfff83b476be6a23b990d82645671261890ab8e1291e81da5f", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "46703b5a1ded9888b2c23acf5cfff21735a2ebdabbfc9a40a01abbf71413d9a6", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "1c99b084bda549fd72d7fb71dd2b9d9e281f03cf8d3735224f7c631217a8ac41", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "98e4a074c39a9b6b2b371fd120945ec97ce58daade3684d7d6c76871ba48cf11", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "55a6745b65022237cbf2a09a613e09a309c86113ccda68aa8193ce7f174dc623", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "b898d014c69acb80c7c311dd557667f323f1b15570342b8115995042584c6ebf", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "67f534fae3b1babd44912f223d2a14929cb12a4b4a458bae114d236d29bb5375", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "b8065f8d02fdae7410f45e06051cdf631c71dcb3d4e558e805705cfa497d7c88", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "2042696ba977d35d7e61103eb7794bbf028844361422deb08a9c68ad62f7045f", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "a46c773dd175c0c61ae511db5adb72a0e0fba56e9fc8aca1da8e4006d135be1f", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "ad0a9f92d1eac9ae776b9611eb83d02dd2ce9fdc77394080fa469c1b4a660bc2", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "0dfa476568f88cb17c03da026e38b75863abab8d66d9620d5b3c4adcb8be6812", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "0dfa476568f88cb17c03da026e38b75863abab8d66d9620d5b3c4adcb8be6812", @@ -1256,7 +1260,7 @@ "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "97e8c430ddadc3fed8dd4e1f7d54dfad6a818986722feb316dff960d27e4ec94", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "414ce11b4f3e6061afe84fc164e4c7c95ae83e4e5ecd9449f0ab2fc3780b68c7", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "ad0a9f92d1eac9ae776b9611eb83d02dd2ce9fdc77394080fa469c1b4a660bc2", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "26a7408b7ea824b354ce17bb37fd2b47d7d0c05b76c654f35be468c9a2c2ccbc", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "57b56ca7b4b5fe37c8ab611c579d23f0fea7532cc45649de648bc94e2bffba77", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "ad41672bf75122a08fcbb19d0b671c20e6f495f6562b44eb13be7152e6f98859", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "414ce11b4f3e6061afe84fc164e4c7c95ae83e4e5ecd9449f0ab2fc3780b68c7", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "414ce11b4f3e6061afe84fc164e4c7c95ae83e4e5ecd9449f0ab2fc3780b68c7", @@ -1265,51 +1269,51 @@ "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "414ce11b4f3e6061afe84fc164e4c7c95ae83e4e5ecd9449f0ab2fc3780b68c7", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "414ce11b4f3e6061afe84fc164e4c7c95ae83e4e5ecd9449f0ab2fc3780b68c7", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "414ce11b4f3e6061afe84fc164e4c7c95ae83e4e5ecd9449f0ab2fc3780b68c7", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "b1d18a814b079c6d52fb55b8f1505a22950b58d0dd105c0e90f0f6a34649abe7", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "b1d18a814b079c6d52fb55b8f1505a22950b58d0dd105c0e90f0f6a34649abe7", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "b1d18a814b079c6d52fb55b8f1505a22950b58d0dd105c0e90f0f6a34649abe7", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "b1d18a814b079c6d52fb55b8f1505a22950b58d0dd105c0e90f0f6a34649abe7", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "b1d18a814b079c6d52fb55b8f1505a22950b58d0dd105c0e90f0f6a34649abe7", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "a11552717e6af171f2bc92a3429d6c0aa7410d37d5589200cd36d70a52c280e6", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "a11552717e6af171f2bc92a3429d6c0aa7410d37d5589200cd36d70a52c280e6", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "a11552717e6af171f2bc92a3429d6c0aa7410d37d5589200cd36d70a52c280e6", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "a11552717e6af171f2bc92a3429d6c0aa7410d37d5589200cd36d70a52c280e6", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "a11552717e6af171f2bc92a3429d6c0aa7410d37d5589200cd36d70a52c280e6", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "06f1ae49ab120969fcc66a165839f6d0a6d406e5d279b9bd624929fd83d7ad00", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "ec1b779382b055d1378a5b48fbd123e7985041adf2c35275358f4222624c238f", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "06f1ae49ab120969fcc66a165839f6d0a6d406e5d279b9bd624929fd83d7ad00", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "25de4297210cb711f7c443a5faa9e6c8e02b674723231ff5d51cd8a79b15a47e", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "25de4297210cb711f7c443a5faa9e6c8e02b674723231ff5d51cd8a79b15a47e", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "421752164759f46254a4f201f2c307817e55b6d91d05212a40173006d2296392", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "421752164759f46254a4f201f2c307817e55b6d91d05212a40173006d2296392", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "2ff7fdc42836b90f7523fd16b8dabe86af24b42e3c0c9f52950a8eebf491fda1", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "06f1ae49ab120969fcc66a165839f6d0a6d406e5d279b9bd624929fd83d7ad00", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "06f1ae49ab120969fcc66a165839f6d0a6d406e5d279b9bd624929fd83d7ad00", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "06f1ae49ab120969fcc66a165839f6d0a6d406e5d279b9bd624929fd83d7ad00", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "ad0a9f92d1eac9ae776b9611eb83d02dd2ce9fdc77394080fa469c1b4a660bc2", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "5d965b4706826606d1b03ae406b30e25e8b391c27b4d161761906142cd88b4a7", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "41b66fb305ce7c37ee0249323cfd264e19bc644c743076ecf9964ab72cdbbe06", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "d32b161c25f9482d66fde093363ce048217673d18f671880f3a65fa79c47799e", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "a65a8eb7945b9b26366a49fbeaec93492e70002bec8ea6b5fd2bf9871c7eda62", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "e9d258afa2a5ab22979c3c47d512ed97dcf0357f15a94040eedf98cc3658de3c", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "1baeb03f97502c3eccd99c46b4037d2721d98d71ad2e8f6253baec8a9d97066c", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "ad0a9f92d1eac9ae776b9611eb83d02dd2ce9fdc77394080fa469c1b4a660bc2", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "2ff7fdc42836b90f7523fd16b8dabe86af24b42e3c0c9f52950a8eebf491fda1", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "06f1ae49ab120969fcc66a165839f6d0a6d406e5d279b9bd624929fd83d7ad00", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "ad0a9f92d1eac9ae776b9611eb83d02dd2ce9fdc77394080fa469c1b4a660bc2", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "2ff7fdc42836b90f7523fd16b8dabe86af24b42e3c0c9f52950a8eebf491fda1", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "50e8cee742508326d153f0292abce574e676efad28dd6a126deb4af4162f8d41", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "6fbebb9a8ecb99957ae1dd407a30a717ef6ca1510bc55f0d6c3da38fba95fcca", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "b058c29461e13574736678dc8deb2d500b397b0820d00d8760444ed0e9b4e70f", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "06f1ae49ab120969fcc66a165839f6d0a6d406e5d279b9bd624929fd83d7ad00", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "06f1ae49ab120969fcc66a165839f6d0a6d406e5d279b9bd624929fd83d7ad00", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "3dce79f9d2a4dd9c49a76c1925013302e62f0cb0683321599165c90579e717b9", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "66c60db10dd45a83320c2cf1270c097611582fab8976f3b30d60a3f855c450d8", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "58be97da1bf4d01a947fcc53a32bb0dae688e66ca1011c34c33fe106d068e775", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "06f1ae49ab120969fcc66a165839f6d0a6d406e5d279b9bd624929fd83d7ad00", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "5099705a68bffa9fccf8793c0ff03b159bc096d2622f5f60ff2fefa807266786", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "9122cd96309e2837f7a9a1a622d6dfe26b344b4b70ec72549bed136f3d697795", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "9122cd96309e2837f7a9a1a622d6dfe26b344b4b70ec72549bed136f3d697795", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "9122cd96309e2837f7a9a1a622d6dfe26b344b4b70ec72549bed136f3d697795", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "9122cd96309e2837f7a9a1a622d6dfe26b344b4b70ec72549bed136f3d697795", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "9122cd96309e2837f7a9a1a622d6dfe26b344b4b70ec72549bed136f3d697795", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "9122cd96309e2837f7a9a1a622d6dfe26b344b4b70ec72549bed136f3d697795", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "d95f9460bd30028fb00ce00282917581435dfb74e184f23b9d92c54dd51cb73f", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "d95f9460bd30028fb00ce00282917581435dfb74e184f23b9d92c54dd51cb73f", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "d95f9460bd30028fb00ce00282917581435dfb74e184f23b9d92c54dd51cb73f", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "d95f9460bd30028fb00ce00282917581435dfb74e184f23b9d92c54dd51cb73f", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "d95f9460bd30028fb00ce00282917581435dfb74e184f23b9d92c54dd51cb73f", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "d95f9460bd30028fb00ce00282917581435dfb74e184f23b9d92c54dd51cb73f", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "06f1ae49ab120969fcc66a165839f6d0a6d406e5d279b9bd624929fd83d7ad00", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "5099705a68bffa9fccf8793c0ff03b159bc096d2622f5f60ff2fefa807266786", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "5099705a68bffa9fccf8793c0ff03b159bc096d2622f5f60ff2fefa807266786", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "5099705a68bffa9fccf8793c0ff03b159bc096d2622f5f60ff2fefa807266786", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "6fbebb9a8ecb99957ae1dd407a30a717ef6ca1510bc55f0d6c3da38fba95fcca", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "367d6d7074fc5e00f08ab2c8e279097e953b847c2e0b8fe40d7dc29af4839c7e", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "5b3300e7cb3fcb13e6117657476975b1c9c5d60dafcb7b29c4bee223dd088fc2", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "18f815feeb40a47d6b727a7ac8156ac8bbe59c7b9bfd39aeb7141ddf1bab1f1f", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "b058c29461e13574736678dc8deb2d500b397b0820d00d8760444ed0e9b4e70f", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "d8f8def8db8500a9842018c903252dd02dbb75f368a88548844ccbf8ef27b757", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "b1758c55009c9e1cc750d520fdbe016f0381555e3d25e2a860ba155e19d8ebdf", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "65dd594d33b1f6f65de49b7bb1d72ec576437a51ccfb16b409327b58c649e09b", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "ad0a9f92d1eac9ae776b9611eb83d02dd2ce9fdc77394080fa469c1b4a660bc2", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "ad0a9f92d1eac9ae776b9611eb83d02dd2ce9fdc77394080fa469c1b4a660bc2", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "ad0a9f92d1eac9ae776b9611eb83d02dd2ce9fdc77394080fa469c1b4a660bc2", @@ -1329,7 +1333,7 @@ "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "ae22fa2a49c1d51f2db0f1f56864ff4b297c459dff28ad2e1e940600fbddd05b", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "6a9296539845dd04f7acfa48757c513fac39ba29d67fd9671f41dde532fffc1e", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "4a7a141fb03c7e8383fd453b46219b5efe32719567b42410b063c63cbbc058a2", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "25de4297210cb711f7c443a5faa9e6c8e02b674723231ff5d51cd8a79b15a47e", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "421752164759f46254a4f201f2c307817e55b6d91d05212a40173006d2296392", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "06f1ae49ab120969fcc66a165839f6d0a6d406e5d279b9bd624929fd83d7ad00", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "7d78def0a4a66eec4a605025f9ec1d1fbeb55d93c383bed45b2b31522107ba75", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "06f1ae49ab120969fcc66a165839f6d0a6d406e5d279b9bd624929fd83d7ad00", @@ -1342,22 +1346,22 @@ "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "2ff7fdc42836b90f7523fd16b8dabe86af24b42e3c0c9f52950a8eebf491fda1", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "06f1ae49ab120969fcc66a165839f6d0a6d406e5d279b9bd624929fd83d7ad00", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "2ff7fdc42836b90f7523fd16b8dabe86af24b42e3c0c9f52950a8eebf491fda1", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "779851e2a29164c3e399c68d7b30008aea9b593bd021bf949674212a7a6a0b13", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "3bd3e68a9c285421e66de34a113054d1420372536bc71793c6d293bf97cd9d4f", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "ad0a9f92d1eac9ae776b9611eb83d02dd2ce9fdc77394080fa469c1b4a660bc2", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "ad0a9f92d1eac9ae776b9611eb83d02dd2ce9fdc77394080fa469c1b4a660bc2", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "b1d18a814b079c6d52fb55b8f1505a22950b58d0dd105c0e90f0f6a34649abe7", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "80984e6ac0a4b3fb377f6523a7246b646779af2af0c717c68c1405a63b57ac5a", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "a11552717e6af171f2bc92a3429d6c0aa7410d37d5589200cd36d70a52c280e6", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "42e5ab183711f9babfc9564c32aed928329d07504af533d9aaf99bab1388ed0a", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "06f1ae49ab120969fcc66a165839f6d0a6d406e5d279b9bd624929fd83d7ad00", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "ad0a9f92d1eac9ae776b9611eb83d02dd2ce9fdc77394080fa469c1b4a660bc2", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "06f1ae49ab120969fcc66a165839f6d0a6d406e5d279b9bd624929fd83d7ad00", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "b1d18a814b079c6d52fb55b8f1505a22950b58d0dd105c0e90f0f6a34649abe7", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "b1d18a814b079c6d52fb55b8f1505a22950b58d0dd105c0e90f0f6a34649abe7", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "b1d18a814b079c6d52fb55b8f1505a22950b58d0dd105c0e90f0f6a34649abe7", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "a11552717e6af171f2bc92a3429d6c0aa7410d37d5589200cd36d70a52c280e6", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "a11552717e6af171f2bc92a3429d6c0aa7410d37d5589200cd36d70a52c280e6", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "a11552717e6af171f2bc92a3429d6c0aa7410d37d5589200cd36d70a52c280e6", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "e2fead209cf99d40a2b1c2f2a0a315912d5ec4acdc32f4b266f7fdb2f07faf81", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "ad0a9f92d1eac9ae776b9611eb83d02dd2ce9fdc77394080fa469c1b4a660bc2", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "9122cd96309e2837f7a9a1a622d6dfe26b344b4b70ec72549bed136f3d697795", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "b1d18a814b079c6d52fb55b8f1505a22950b58d0dd105c0e90f0f6a34649abe7", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "a9ebb0a1a6048135dc63324076b8e3354959c3d7207c05ea2240d29e513e57a8", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "d95f9460bd30028fb00ce00282917581435dfb74e184f23b9d92c54dd51cb73f", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "a11552717e6af171f2bc92a3429d6c0aa7410d37d5589200cd36d70a52c280e6", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "fb97feb5ffb81e596b0b83260c96a221b8acfc3b44b75afad4e20fd2c139e286", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "414ce11b4f3e6061afe84fc164e4c7c95ae83e4e5ecd9449f0ab2fc3780b68c7", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "414ce11b4f3e6061afe84fc164e4c7c95ae83e4e5ecd9449f0ab2fc3780b68c7", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "414ce11b4f3e6061afe84fc164e4c7c95ae83e4e5ecd9449f0ab2fc3780b68c7", @@ -1367,13 +1371,13 @@ "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "414ce11b4f3e6061afe84fc164e4c7c95ae83e4e5ecd9449f0ab2fc3780b68c7", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "5b56312857e86567a41f319f457630d90c8880b2772359a48b9d527f8fac23f3", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "b07283aa8c31c2f83e8935b74c649c6c558bac090c072ad1e1d4846ca9435518", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "b1586d37ea7644ea27861d4bf5c9253eb2d1ac500769c8b1040c75930ea1db88", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "eb4408e31061bd288b3d4f8c1c84024d3deeaffc4ec035aebd1a204546ddbe71", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "ee59423c88124aae54c222d8bc432da328be029b65be866074ecd352f30e29a6", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "642ebe26e82b71900275f30c881d5495ec49b510fa43ee57a8d4c782a5814c70", "TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "1c857aee5d91ae5f774ebaa82110bb3c607575d494b3ec3e63dd8cedfce5f75b", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "b29bf344c791a5043bcb1890cd73fecf935bbd559677315b00634f9a443c4ae3", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "20ca079a41cf302280c5024384301b02320e24d53b288e90889a814c39c9d963", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "2f45c108f1ce2d6fe7ba7caefef056c23883431c789f6e1922af6c99b724b91c", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "e5ed1e8d7b63d82ad3778e0e1b621fbae3705edd45bedf0b6bf6f78bb11fa148", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "7a60b492b749c8445a17dfa2110d436257264881e5a110f232d5f90a1b7364dd", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "6efbc131043d4de377be07e446466ca8c8e0ccff9cbfd920499133a86b29ff4a", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "e9ac307904417304b64ca977ffcffebf487f06fda82810a41495a73b2216e188", +"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "1f9e84c40db45b4f88f48e06c9191bb285c4e7deca5a20a07967ee60b51c8126", "TT_eos-test_get_public_key.py::test_eos_get_public_key": "3142a62ba2f146e14ba6684349c272aa2f7a5dc578598c7f1e10d15c69907c97", "TT_eos-test_signtx.py::test_eos_signtx_buyram": "eb9350d23c5f3d2eea0e5aefe9b34644e6cb02cb80666b6b8f7db83c219e715e", "TT_eos-test_signtx.py::test_eos_signtx_buyrambytes": "481547b49f30a978144e3d38472a5c8d546ddf86e541cb0f0f03c16b120e7021", @@ -1391,14 +1395,14 @@ "TT_eos-test_signtx.py::test_eos_signtx_updateauth": "e101f246483c5220c0f655272dbf28e6cb1734ea0f65449dc28c13285eede5a7", "TT_eos-test_signtx.py::test_eos_signtx_vote": "1499056992fd5364d3fb37caa2740ddfd8e23532e75a39194fe3a7586cf59dea", "TT_eos-test_signtx.py::test_eos_signtx_vote_proxy": "728b4aaaee1174aa3fdfc04cf649f32893130d0b7de79f25bc1368739d971533", -"TT_ethereum-test_getaddress.py::test_getaddress[ETC]": "11ed8e79e749a737d03dd0837f79ee959f0c934f8f05624bf4066d37d374a59d", -"TT_ethereum-test_getaddress.py::test_getaddress[GoChain]": "ce3756d857a090d3dba21a7a332b0cf266882e96bc009a35867ada200e3d470e", -"TT_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "365aa94cdab82de1f0a28529e7e06ad5f21891375877d2d4073a266155e11bcb", -"TT_ethereum-test_getaddress.py::test_getaddress[Wanchain]": "feb634ca99ea19ee5819e9a9385031c7b5c79f9182a9ae3c8cbbee14a4436fef", -"TT_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "028fd401c2da537e480b2abfc1ecd4e288ae4ae8c76595af9d22cf9889737e93", -"TT_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "490a1f225216cbd5b1f3d5394ab6d159b1e38b36db0dad5609cfee6c46b8caf2", -"TT_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "bae08f15694d3c4e803c5024a5bea4136b839d5f97f8e6e193c29cc1d551f467", -"TT_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "bc7d22c9f132038192cfbf9f56fd3985263db8fb4ceb409f9347107000af1fb1", +"TT_ethereum-test_getaddress.py::test_getaddress[ETC]": "a519d21c101aeac9885991ee08b908433024febf6440760d512ae5ef1a4f3e6a", +"TT_ethereum-test_getaddress.py::test_getaddress[GoChain]": "d8501af0f63140421c546b04c528d7ea2565b382475ae58b9b30117cbac6e365", +"TT_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "02f715c8ac70db78100e7866eff037b1b67dd2581bfdfa20a3a99b2f1bc38c7d", +"TT_ethereum-test_getaddress.py::test_getaddress[Wanchain]": "9a32683e17a83334a32edd7458a9a167ec78dbbc2d55d11a45b7781de036eafc", +"TT_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "eea14284e18b8c8137f00f11e89effb7605f040e89046bbf18582cc140cd9e54", +"TT_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "7fb7f8fdc4ea9a93facbbe6203e020f96ff2d732e2a9724677354e6933d657e1", +"TT_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "2a3524cc19265a90acb67f73dc8467688f33a42997c7d447eb996e6cf08717f1", +"TT_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "8242a2227011b8ed2764c4116ff195dd99e2cb00463d2658b285148b8bf613f9", "TT_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "ac993e59233d2d378327a6efc89eb7f475572edb4ead78cfbcf3c483dbac0695", "TT_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "ac993e59233d2d378327a6efc89eb7f475572edb4ead78cfbcf3c483dbac0695", "TT_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "ac993e59233d2d378327a6efc89eb7f475572edb4ead78cfbcf3c483dbac0695", @@ -1415,24 +1419,24 @@ "TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "10de80ec26ebefd1141bec915ade109ba2fd6afa45849839dda6920f92993856", "TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "ff8ef0bf721d48d94568169c1f56a575944adcdf03cd4e08e57748268006af0d", "TT_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "31656427a2b70d4281bb3813533c3e591055775e40e8af4b186af7b23278c386", -"TT_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "4b794e6c72997ca243b3efdb5cb61d967bb772b93a6c403ea4b0c249ee830b33", +"TT_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "1eba6efafe2e7461f67b0bda59572c131b462c51f1fe204fd9d3f77d95e567de", "TT_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "d20b68750b689dbe1152621c62012d57b963e4b33d3a0ab857a05c9f06a33c7c", "TT_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "6b9a20b39d1899bbaafe539fac42d88cfd78e987b035346751bbecaf8062f880", "TT_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "392d33fbb4565c74159f7e04bb014972d39331dc37313724f7308967a7f2b0c7", -"TT_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "3206fd40a49ee85eea890eeb6f40cacb9901fd3f584097c43ada5b5160605c88", -"TT_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "cfe0d8283aea87a2a16df816b9a9e72e6b606c69a7ba56526bce833346cf46ea", -"TT_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "0b865dceecd36daec276e0daf50e7360de9041801464ad72a154b500f5c0fe74", +"TT_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "bce66b2a5f9c5c2db4cc9521ee3a22a17b9c177bfd9374012fde363e822f1c25", +"TT_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "b5f3add1c285a7b5cace3e13a02293ac3c2795757043a04cfdc0a83e824404f1", +"TT_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "a366f5b9d2f3c2f4017930db67272ad551f80ff9d870e86eda7b027684884411", "TT_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "92121a0a8d7121658df6325e7865cd6b541ee4359f8e144831b826b8542ab2a8", "TT_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "2d679d8f5e2882216f1299d022f70c4cbe27f1585fdeec0576004ada87c834c2", -"TT_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "22638a179f1cac4ce3a95bc91447a0cf425a3fa48a880453cb02d310dad11e80", +"TT_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "048c55051a0fab6ba3243afca659d20bf0e4d56cc7370cccb6636f75a155c0dd", "TT_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "c91b10f5c1cd9528babdf10217c6eacfa645ee29dc7d62804e3591dddc26c952", "TT_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "10b60b2df4d4696600f11e2498c429c9807438dbf22c42b0c0aebf952d67f04e", "TT_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "672ead935ec9f4b159ecae5288d2aeff58285c7fc13d9061306d6095ac60d3b4", -"TT_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "eabdb7da4c62ff6380f8029485692370a1e56d3948b8033a48b36e12889d3ea3", -"TT_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "fbb37377af11c9797b957b79fc93af8527af27b42c6f87f3bf302d02051e97e4", -"TT_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "b4dd1092a3e98cd3b8dfe2ac0af532409136181fd46a6dcf69a58409b4b29803", +"TT_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "1c22ddbef99e200b0d4c353685298cb42f83a40abde880c669551898164976da", +"TT_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "1bf807755c5a9e9d013283b92226f4783fe05885bc5647479d0f2c885ecbfa5a", +"TT_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "8697ea6bacefd93f70b99388df5f6206601672030de263124b781e6a45fb7a1e", "TT_ethereum-test_sign_verify_message.py::test_verify_invalid": "2d679d8f5e2882216f1299d022f70c4cbe27f1585fdeec0576004ada87c834c2", -"TT_ethereum-test_signtx.py::test_data_streaming": "2fd32d0499e62c0f007e9c38bb2b0f07fb70b8dc6771569066ee8e01dd84b2f1", +"TT_ethereum-test_signtx.py::test_data_streaming": "c5877f7927aedc6d5d2182dff13136bf407bcbc3be5b41d4436a1728bc04ff59", "TT_ethereum-test_signtx.py::test_sanity_checks": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_ethereum-test_signtx.py::test_sanity_checks_eip1559": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_ethereum-test_signtx.py::test_signtx[Auxilium]": "c3f00140f528591cce286437a315fb70722d73edba3f9588182b9644014abe64", @@ -1446,23 +1450,23 @@ "TT_ethereum-test_signtx.py::test_signtx[Ropsten]": "8760bdf3f99ce7d3cbcc298d0127c1c7250a6f7bcfbc2c7ce0e7d306930a0f8b", "TT_ethereum-test_signtx.py::test_signtx[Unknown_chain_id_eth_path]": "e808e4a28bf170a4b869c4e3f31ca4fd24dcc08c3c171ba9c2da2125145938e5", "TT_ethereum-test_signtx.py::test_signtx[Unknown_chain_id_testnet_path]": "e808e4a28bf170a4b869c4e3f31ca4fd24dcc08c3c171ba9c2da2125145938e5", -"TT_ethereum-test_signtx.py::test_signtx[data_1]": "48d21fea7fbbf7472bd8b3e46faad8c5bff58c149af3cfc51739dbab0a35b220", -"TT_ethereum-test_signtx.py::test_signtx[data_2_bigdata]": "2a4af442dd7d6bedf671aef4c2231236da3dfbc4043b204268c804c3adc4f450", +"TT_ethereum-test_signtx.py::test_signtx[data_1]": "91d7eb2a4005dd22d01e8783347bb571fc26ae82c9f44a38e083e527aa733abb", +"TT_ethereum-test_signtx.py::test_signtx[data_2_bigdata]": "23a75dec1a4b1c77ada1a9d87f29808d81418b13f66c6d1f0e12680a03f44033", "TT_ethereum-test_signtx.py::test_signtx[known_erc20_token]": "8a87bcd6d17dad3df530dca9d8a80a2b22a1884370b1d126a0ad0f7c36d26f8e", "TT_ethereum-test_signtx.py::test_signtx[max_chain_id]": "e808e4a28bf170a4b869c4e3f31ca4fd24dcc08c3c171ba9c2da2125145938e5", "TT_ethereum-test_signtx.py::test_signtx[max_chain_plus_one]": "e808e4a28bf170a4b869c4e3f31ca4fd24dcc08c3c171ba9c2da2125145938e5", "TT_ethereum-test_signtx.py::test_signtx[max_uint64]": "e808e4a28bf170a4b869c4e3f31ca4fd24dcc08c3c171ba9c2da2125145938e5", -"TT_ethereum-test_signtx.py::test_signtx[newcontract]": "43f4bee28116351eb97499f9a49884f56fdbff51d1aea727ea2c30dcec3f5090", +"TT_ethereum-test_signtx.py::test_signtx[newcontract]": "e7271875610afad69c63571ec4333261dfa80d22389d438da45ce18a816efc97", "TT_ethereum-test_signtx.py::test_signtx[nodata_1]": "79d2381d3418162b50518264504e1b50894444e3e2ec7c5dd7d0b502e4379cac", "TT_ethereum-test_signtx.py::test_signtx[nodata_2_bigvalue]": "b43e9dc09565d65974e6f1eb9d564915bf742910e4de50e876cbe046eadac96f", "TT_ethereum-test_signtx.py::test_signtx[unknown_erc20_token]": "6d0437024a7aa73ee93eb77beb00a940bfb2f985093439d04743e6d2d0f14288", "TT_ethereum-test_signtx.py::test_signtx[wanchain]": "bb387f996270d5688468016d82f76270b428dd3d759b14b1407f04667a44e4c6", -"TT_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_go_back]": "e8bb99d96a2860e8a2f552789c1be979b79916fb5122c39ef2fc01a2a63e60fc", -"TT_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_scroll_down]": "0b9d7c43fbd90834b2a00920b7a9e53214fe997e5c0b0bc1f9cb76b0026024ae", -"TT_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_skip]": "1aebcad334bc35eb853fa03d5149b0bbc06c5f86fbbda961cd252c62a2a6708b", +"TT_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_go_back]": "20ddd9675b01992abf14168fa20545283e3e1692f17eaf55160adf798113825a", +"TT_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_scroll_down]": "e5dc2e96b99e2431d8ddfaa9f7c2e0529d929d453a8cd0e72a0e44f320429a8a", +"TT_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_skip]": "e07eea35d04134ecda8e96536c67737a7531de72b228a3fa8f6f4aae05910f7b", "TT_ethereum-test_signtx.py::test_signtx_eip1559[Ledger Live legacy path]": "1e6bf7fe67ecb766745a56463e35cd5d7da2e3ad363dae4afa14f624bbcc2528", -"TT_ethereum-test_signtx.py::test_signtx_eip1559[data_1]": "5d2843ae19e9e143eed4cb59f6b45bf50c8c515d3fec374cb373f782b19ff2ea", -"TT_ethereum-test_signtx.py::test_signtx_eip1559[data_2_bigdata]": "b47b0994cc81a5280a36d64c2b34365f7f7c3f1ccd43c9a3c03ea8ac160cb7a0", +"TT_ethereum-test_signtx.py::test_signtx_eip1559[data_1]": "26282173fece4b4c5cb0ff867c8100492678eeaf40341b8efa610c632aa9832d", +"TT_ethereum-test_signtx.py::test_signtx_eip1559[data_2_bigdata]": "a334cb951cf46417c536bd2021aaeeb9593f81c3af423d42a83d7c7b4e939d9a", "TT_ethereum-test_signtx.py::test_signtx_eip1559[known_erc20]": "9aa34c02db01da783d404d6f083d4ad91fdefba6f37b7703935667a117ca33e1", "TT_ethereum-test_signtx.py::test_signtx_eip1559[large_chainid]": "6e2dc5b7d99102965724abba041ae4f516760a8df7f0ed76b28edf870ba3ab48", "TT_ethereum-test_signtx.py::test_signtx_eip1559[long_fees]": "a0056c04d741bcd95f219dded938c4bd57c7b45d2a218377dabd45e1b495d8a3", @@ -1516,9 +1520,9 @@ "TT_misc-test_msg_getentropy.py::test_entropy[8]": "3a204080e6a94a959eccee585c43d4e5eed05cf984e9b67c89741b0961d2c441", "TT_misc-test_msg_getentropy.py::test_entropy[9]": "3a204080e6a94a959eccee585c43d4e5eed05cf984e9b67c89741b0961d2c441", "TT_misc-test_msg_signidentity.py::test_sign": "45a410ac57e6ecfa1426fb872f4638547b7d49de36a9f39a26c52194437de606", -"TT_monero-test_getaddress.py::test_monero_getaddress": "b426f5e6a83c370960a087647e49088228d1c414ff0644442a1fc6248b95eded", +"TT_monero-test_getaddress.py::test_monero_getaddress": "cbb1fc21986d8e80b3ef19069229d6153caf20d97621c5ed047058dc6c2269ea", "TT_monero-test_getwatchkey.py::test_monero_getwatchkey": "bfbe048c599e2f82504b6719be5862351a8d6ce49a5495d3911828d4f8d60a4c", -"TT_nem-test_getaddress.py::test_nem_getaddress": "57d12067eeb5757f6f26599f24ad7b23d96d9df8ad50e0c6f0a29bba29f6977c", +"TT_nem-test_getaddress.py::test_nem_getaddress": "ae738ad9ebfe1cead4298a0d4d6b20ec853311679a524363ea638c20ecd053bf", "TT_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation": "7074e433bd45ed9144e338707e116b53265565beff39f6e02c2fb4834a3b23b1", "TT_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_levy": "aabb66d7ce81e3c921366942d8df95c539cb5cbdd1498498bc7fd7b84f1ff782", "TT_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_properties": "1bc0f86e90205fd24520870072372595efa4eafd0dfa41a70460f0a53df2f51a", @@ -1593,16 +1597,16 @@ "TT_ripple-test_get_address.py::test_ripple_get_address_other": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_ripple-test_sign_tx.py::test_ripple_sign_simple_tx": "384a2f44b6a0f0b878441e384c314428665f2fbd3c684a52b002c32ce8d84b7d", -"TT_stellar-test_stellar.py::test_get_address[parameters0-result0]": "be341cacc3d7544368526bb57d07874e6ec05372669abe58b9165fc5e1ccae35", -"TT_stellar-test_stellar.py::test_get_address[parameters1-result1]": "92d4f6fa9658c8f88a82779bda446d3c81725afe72ba7db787ba8c02bca36792", -"TT_stellar-test_stellar.py::test_get_address[parameters2-result2]": "4a222025e005d59fab489543f4b8d05abdc161f4a856d45d1fa38819a7d4e91a", -"TT_stellar-test_stellar.py::test_get_address[parameters3-result3]": "7b913f01a238f5299f8627438651241aff5801a924e273e5a4354bbb60c53c67", -"TT_stellar-test_stellar.py::test_get_address[parameters4-result4]": "e379e63a30589f39f45f4234081c6325e6581424cf492239c6f1c83ee622f46a", -"TT_stellar-test_stellar.py::test_get_address[parameters5-result5]": "6a2a32bedb20ad064c3ee26bf9c94cd2fb26c0381b262b4bbe934d15edd628d7", -"TT_stellar-test_stellar.py::test_get_address[parameters6-result6]": "d99c0f3423b5e6f1927888c599ab5afec49f064066e6423e0cbfbba6dde9127f", -"TT_stellar-test_stellar.py::test_get_address[parameters7-result7]": "c0cad81dd0dafa1b0bbea0d01324e0fe837a3607fb756d83a7f48674b2c0f440", -"TT_stellar-test_stellar.py::test_get_address[parameters8-result8]": "bf3fa435faa680d9b2559869d62084a735762f732891cdd601d088c4b6413f98", -"TT_stellar-test_stellar.py::test_get_address[parameters9-result9]": "5ae476a8d2e41055701b42ee071e891426d964fac72c8ab14d13a54531075837", +"TT_stellar-test_stellar.py::test_get_address[parameters0-result0]": "2509d2ee0bd739c48be9feb8a709d2b89eed16d78700d93f919301c12cbdee33", +"TT_stellar-test_stellar.py::test_get_address[parameters1-result1]": "90ef4e1760ddcfadf1edf725e064824d2197cf0db25152f6e31e14f5be8d7acd", +"TT_stellar-test_stellar.py::test_get_address[parameters2-result2]": "dfa5fb7a6f554ce7ce0cdb5d49ca3d697d71521d2d52c4c3d74c7c03b52e34e2", +"TT_stellar-test_stellar.py::test_get_address[parameters3-result3]": "a93cf3cc0ab7e3062dee9d996857e29d06afa61e3f1bf1808ad214dfe7ce8c5a", +"TT_stellar-test_stellar.py::test_get_address[parameters4-result4]": "098a02bd17e198db0bb322830885a1e66f10383a18c01e29f3bcde5132657ef0", +"TT_stellar-test_stellar.py::test_get_address[parameters5-result5]": "15444c4516b072c5c50b24515030641237ab471b5f0abbd0b3a0a1c8ab563523", +"TT_stellar-test_stellar.py::test_get_address[parameters6-result6]": "f11b1531bc6d88b1c6c20c23f80c5f4b303e698dbd76a8f3a41cf16490fef6b8", +"TT_stellar-test_stellar.py::test_get_address[parameters7-result7]": "880aaa730a4709fe5f66aa5f50d76f2475baa6910bb39cfa15149a3a7d5902f9", +"TT_stellar-test_stellar.py::test_get_address[parameters8-result8]": "29b4243d62ccf05ae738d1382efbc3e99d49a595b2fcfef5b16d6bdc8c7226dc", +"TT_stellar-test_stellar.py::test_get_address[parameters9-result9]": "15723be02f6b06dfae3a6102e4414175e467376234a9ae63a5f30ddb7713b2ef", "TT_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "f44bd9522aa53395330265d50ef65d88be7dea67fc6670754204025f6f6706a0", "TT_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "559cf8fea12d7601c1feb30cfb36525c12a87e069c8357eb9a720e75b60f95a8", "TT_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "87d99638242f0a208d4a8cbcc91a4913d62da4a44c449bca343359e70c8595f4", @@ -1644,14 +1648,14 @@ "TT_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "f9f8bd6f3b31767a0398ff0998e1d7686c542f9033e8c8a6dcfa6e08fed3c415", "TT_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "8f2b3849f3b5b517672f52e3dc9187bd487bcac5970063df983f594499e1e3e6", "TT_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "22045701e9a14f42911e7b3adcebed9badba31d07441e4465e1732dbe4165c1b", -"TT_test_autolock.py::test_autolock_cancels_ui": "775f5ad1bc82ab5966cfd2b0a96d2072b7dd2f3ce05a44d3e659b51198485c21", +"TT_test_autolock.py::test_autolock_cancels_ui": "1c4b5377f7b7ae2a8a768c1a50ba84dfbf2070ff48ce6e626f232e5e37a38148", "TT_test_autolock.py::test_autolock_default_value": "c680c6d30fbfd582658b3d24921eb3ef334ef2548c1a70c064a0cae18bd7ab14", "TT_test_basic.py::test_device_id_different": "839914611923a4feef0de6303553c93034d753f7c8e65acc0b42049428784370", "TT_test_basic.py::test_device_id_same": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_test_basic.py::test_features": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_test_basic.py::test_ping": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_test_busy_state.py::test_busy_expiry": "ad16f7ac0cf7c47ed9ff92e0be9df4d43ab7cd171c3d9ad75a3c8e545e46ddd8", -"TT_test_busy_state.py::test_busy_state": "d4c178413661d01437d2ea02ced5ae3c2d2ab4b3e335d3a5b857f874dc2418d0", +"TT_test_busy_state.py::test_busy_state": "a98b809fa9f3551757805cf75df1fd7d8f982770dca7f310e5392771d13a4b9d", "TT_test_cancel.py::test_cancel_message_via_cancel[message0]": "4357acd2ec6b6867ce23bfe1d754a6c10c05abb915427efb0d2390850e199aed", "TT_test_cancel.py::test_cancel_message_via_cancel[message1]": "4357acd2ec6b6867ce23bfe1d754a6c10c05abb915427efb0d2390850e199aed", "TT_test_cancel.py::test_cancel_message_via_initialize[message0]": "4357acd2ec6b6867ce23bfe1d754a6c10c05abb915427efb0d2390850e199aed", @@ -1670,7 +1674,7 @@ "TT_test_msg_applysettings.py::test_apply_settings_rotation": "3bb57b55e89c4ea86b30315655c65b250ff68bba6873e2244eb205f62de1534f", "TT_test_msg_applysettings.py::test_experimental_features": "84d10e723198b90c25d97a15f0b26fd8af69c02d4bad46452c99049f43e6f8e5", "TT_test_msg_applysettings.py::test_label_too_long": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", -"TT_test_msg_applysettings.py::test_safety_checks": "ec2537aff19b07ecf28b60e259acef9c9f961320581ca399f07f20b99cd85510", +"TT_test_msg_applysettings.py::test_safety_checks": "815249ff20e2972e07ccffeb59325fcb7444311a4cf35b961ee8154769186ebe", "TT_test_msg_backup_device.py::test_backup_bip39": "c7ea677a1659c3fb78105f348985959d83a64df63e25d100fbc7e0098d4835d9", "TT_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "8d3fb22fb97ec7603de21b49d525ca20d262086733e9d8cf366989d14dfa7b60", "TT_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "a2f50797551397edac9401c8e6caebe2c2a7513740b29c653c2446a608998b04", @@ -1719,7 +1723,7 @@ "TT_test_protection_levels.py::test_passphrase_reporting[True]": "36da6e18820ce15ba35849d48d666fd2e9df64f85fd3fa58277f9e6036f70a89", "TT_test_protection_levels.py::test_ping": "8e56132366930037270abbdbc285de182f4457629139308574f5c885d0816765", "TT_test_protection_levels.py::test_sign_message": "f142045a4b78daa9aca16a062537fc88a18f27b78d5f3925adb7b3f754f2b6f8", -"TT_test_protection_levels.py::test_signtx": "6a87def045e748485389796ad68185cb4497efdfdd680418879812672dfc6459", +"TT_test_protection_levels.py::test_signtx": "93718d00aa7513ca28e33a29dca11027267218f6e927752d74147da44b6f3d3a", "TT_test_protection_levels.py::test_unlocked": "f12eec39f23914002d16cafb2b2616fc538b1116c12074484ece3ce7de457f3a", "TT_test_protection_levels.py::test_verify_message_t2": "394cef172d6dbcab4dd90d45aad3d84f577c8db83f7482e44c9b6daadd4e3aab", "TT_test_protection_levels.py::test_wipe_device": "9f49d7494c3b64437dc6bb12e8094b783590568a4ecdc2a3fe534105d971a901", @@ -1745,7 +1749,7 @@ "TT_test_session_id_and_passphrase.py::test_passphrase_on_device": "b9da486ad05e130feba77688ca7acbc0a7ffc0c4deca8573afa542518e6498cc", "TT_test_session_id_and_passphrase.py::test_session_enable_passphrase": "83021c61f25e272b3044b84f9c75d086551ab395752fe6fadeee50b2528b2c00", "TT_test_session_id_and_passphrase.py::test_session_with_passphrase": "45a3d586e65c23581e6ac14c9d9b9335ebe52fdb633660c26590fd3ec26a7c52", -"TT_tezos-test_getaddress.py::test_tezos_get_address": "c9302a98053bab00633589daa40c023a7fcfe005da067c44ae299de10f7b6319", +"TT_tezos-test_getaddress.py::test_tezos_get_address": "0109366ac0311658f66ff7d864bc85624ed138d6b62045a1c4b7bd428fd25d83", "TT_tezos-test_getpublickey.py::test_tezos_get_public_key": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b", "TT_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "ed9925bd201a4cb231c456e31f0fcefb16c398da0678dbdc2a23d0a4d169a5c4", "TT_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "a566ad2f66dcec2ef5cc5044b426ab89e5e828d4fd3061ef4f1a29790a6e131f", @@ -1763,13 +1767,13 @@ "TT_webauthn-test_msg_webauthn.py::test_add_remove": "26a44e99b482ea5427ef6d298a7bd0701bf7832ff60c2f39583691ff719c4dc6", "TT_webauthn-test_u2f_counter.py::test_u2f_counter": "5cee746fb319a273e17241c731cddaca2d59ee6e5ca1fc2259d89f94d540821c", "TT_zcash-test_sign_tx.py::test_external_presigned": "e021030f6a66671f42317274cc0f7d656ce113ad4b0e4eff065cb56b5fd1ef4b", -"TT_zcash-test_sign_tx.py::test_one_two": "913bc2eddb499fcd4873b2550e6b4996d0cc543d6a53546ad24a82d20181701d", +"TT_zcash-test_sign_tx.py::test_one_two": "f55822b44a50e4b65bf6d332798d3e577579c8a2049f070a83050124fe3bcd3b", "TT_zcash-test_sign_tx.py::test_refuse_replacement_tx": "b4f36d385e5e0eb1e94f3e4d82b3ee50a71d7e094a838d92200eaea836ab7fa4", -"TT_zcash-test_sign_tx.py::test_send_to_multisig": "0c51988a11ba8a0691cf819263c1e93dea95e38f3117dcf4b10782628ef813c2", -"TT_zcash-test_sign_tx.py::test_spend_multisig": "957d7539f1af0991b91c4428235d6166135cb3ca0b1cdbe672c88bf3ba4df77d", -"TT_zcash-test_sign_tx.py::test_spend_v4_input": "dbd885b3e1878fb2e2db63a03bd62dc0dd08337b33753ffe68d0e60b7413bf3c", -"TT_zcash-test_sign_tx.py::test_spend_v5_input": "dabd3c5f5fe9f7332a00f14ae33a7cec065b231385430854c3f2c59c12fde492", -"TT_zcash-test_sign_tx.py::test_unified_address": "d22d863a7128188910b8ed7a173de3ba38d3f8f29330c5b1386a30183f4a7f06", +"TT_zcash-test_sign_tx.py::test_send_to_multisig": "e4e31d3bbbceb32f0e94afdff90e7e0589cbe2070d2fc85520b44742458b483d", +"TT_zcash-test_sign_tx.py::test_spend_multisig": "9d7c3e217557bec6e02f62e44cd2dc32b43c935681ada4a4885e67c55ff0f104", +"TT_zcash-test_sign_tx.py::test_spend_v4_input": "ead167954cfe5079f5799b5179a000be8083dbe6101d9b9985f911e0dc7b7af8", +"TT_zcash-test_sign_tx.py::test_spend_v5_input": "e1d335454f9964fe0a16ca789b0e8556a5de3ceef8bdef8f11190e4b6f18e557", +"TT_zcash-test_sign_tx.py::test_unified_address": "e180e6fbed1ddabdaf002450d907f47f222799c46ebdf913baad5a4b32f37b44", "TT_zcash-test_sign_tx.py::test_version_group_id_missing": "9ed7a2e89df204e6d94fa68b19ef01885299143ea040e5b99f1e56e05c44631b" } }