From 3b629a1ea44a485ada44ac77c97b2ad6487b8c8d Mon Sep 17 00:00:00 2001 From: Martin Milata Date: Tue, 12 Jul 2022 20:31:34 +0200 Subject: [PATCH] refactor(core/rust/ui): layouts for SLIP-39 backups [no changelog] --- core/assets/check_list.png | Bin 0 -> 327 bytes core/assets/current.png | Bin 0 -> 309 bytes core/embed/rust/librust_qstr.h | 8 + core/embed/rust/src/ui/component/border.rs | 55 ++ core/embed/rust/src/ui/component/mod.rs | 2 + .../rust/src/ui/component/text/paragraphs.rs | 102 ++- .../rust/src/ui/model_tt/component/dialog.rs | 26 +- .../rust/src/ui/model_tt/component/mod.rs | 2 + .../src/ui/model_tt/component/number_input.rs | 239 +++++++ core/embed/rust/src/ui/model_tt/layout.rs | 190 +++++- .../embed/rust/src/ui/model_tt/res/check.toif | Bin 0 -> 66 bytes .../rust/src/ui/model_tt/res/current.toif | Bin 0 -> 47 bytes core/embed/rust/src/ui/model_tt/theme.rs | 61 +- core/embed/rust/src/ui/util.rs | 49 ++ core/mocks/generated/trezorui2.pyi | 34 + core/src/trezor/ui/layouts/tt_v2/reset.py | 194 +++++- core/tools/toif_convert.py | 4 + tests/ui_tests/fixtures.json | 594 +++++++++--------- tools/check-bitcoin-only | 2 +- 19 files changed, 1237 insertions(+), 325 deletions(-) create mode 100644 core/assets/check_list.png create mode 100644 core/assets/current.png create mode 100644 core/embed/rust/src/ui/component/border.rs create mode 100644 core/embed/rust/src/ui/model_tt/component/number_input.rs create mode 100644 core/embed/rust/src/ui/model_tt/res/check.toif create mode 100644 core/embed/rust/src/ui/model_tt/res/current.toif diff --git a/core/assets/check_list.png b/core/assets/check_list.png new file mode 100644 index 0000000000000000000000000000000000000000..a53b2a024a924b1da88ca2d15fadff35ae79ec22 GIT binary patch literal 327 zcmeAS@N?(olHy`uVBq!ia0vp^d_c^_0VEg}ZZePtQY`6?zK#qG8~eHcB(eheOiAAE zE)4(M`_JqL^4Lo}eO=j~afpdCD!;z>q#7vX?&;zf!f`$KxT9!;0guZ;eMP>m7B2@U z*#_ZPEf%X=JZ{XZIN7+9cZuB!?yYwuiw^KKc+X!C8<`)MX5lF!N|bKNY}tZ*T^Wu$jHjn+{)BM+rYrez~I{R z*FRA-io literal 0 HcmV?d00001 diff --git a/core/assets/current.png b/core/assets/current.png new file mode 100644 index 0000000000000000000000000000000000000000..41213a46e74332a4e82f0d9e2f591a905fa93ec5 GIT binary patch literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^96-ziA{eT^E_MV`Ea{HEKzd_8_n$;oAfGA8+ueoX ze|!I#{XiajiKnkC`!fzP5iJq*P$n0kkg2DOV+hCf?)FK#IZ0z{p6~ zz(Uu^D8$IX%GlD%#8lhBz{ { + border: Insets, + inner: T, +} + +impl Border +where + T: Component, +{ + pub fn new(border: Insets, inner: T) -> Self { + Self { border, inner } + } + + pub fn inner(&self) -> &T { + &self.inner + } +} + +impl Component for Border +where + T: Component, +{ + type Msg = T::Msg; + + fn place(&mut self, bounds: Rect) -> Rect { + let inside = bounds.inset(self.border); + self.inner.place(inside); + inside + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option { + self.inner.event(ctx, event) + } + + fn paint(&mut self) { + self.inner.paint() + } + + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + self.inner.bounds(sink); + } +} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for Border +where + T: Component + crate::trace::Trace, +{ + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + self.inner.trace(t) + } +} diff --git a/core/embed/rust/src/ui/component/mod.rs b/core/embed/rust/src/ui/component/mod.rs index 53baa298d..3b2b60321 100644 --- a/core/embed/rust/src/ui/component/mod.rs +++ b/core/embed/rust/src/ui/component/mod.rs @@ -1,6 +1,7 @@ #![forbid(unsafe_code)] pub mod base; +pub mod border; pub mod empty; pub mod image; pub mod label; @@ -13,6 +14,7 @@ pub mod placed; pub mod text; pub use base::{Child, Component, ComponentExt, Event, EventCtx, Never, TimerToken}; +pub use border::Border; pub use empty::Empty; pub use image::Image; pub use label::{Label, LabelStyle}; diff --git a/core/embed/rust/src/ui/component/text/paragraphs.rs b/core/embed/rust/src/ui/component/text/paragraphs.rs index 3c851908f..cdedbbdad 100644 --- a/core/embed/rust/src/ui/component/text/paragraphs.rs +++ b/core/embed/rust/src/ui/component/text/paragraphs.rs @@ -2,13 +2,13 @@ use heapless::Vec; use crate::ui::{ component::{Component, Event, EventCtx, Never, Paginate}, - display::Color, - geometry::{Alignment, Dimensions, Insets, LinearPlacement, Rect}, + display::{self, Color}, + geometry::{Alignment, Dimensions, Insets, LinearPlacement, Offset, Point, Rect}, }; use super::layout::{LayoutFit, TextLayout, TextStyle}; -pub const MAX_PARAGRAPHS: usize = 6; +pub const MAX_PARAGRAPHS: usize = 9; /// Maximum space between paragraphs. Actual result may be smaller (even 0) if /// it would make paragraphs overflow the bounding box. pub const DEFAULT_SPACING: i32 = 0; @@ -94,6 +94,13 @@ where self } + pub fn update(&mut self, i: usize, content: T) { + if i < self.list.len() { + self.list[i].content = content; + self.change_offset(PageOffset::default()); + } + } + /// Update bounding boxes of paragraphs on the current page. First determine /// the number of visible paragraphs and their sizes. These are then /// arranged according to the layout. @@ -332,3 +339,92 @@ where None } } + +pub struct Checklist { + area: Rect, + paragraphs: Paragraphs, + current: usize, + icon_current: &'static [u8], + icon_done: &'static [u8], +} + +impl Checklist +where + T: AsRef, +{ + const CHECK_WIDTH: i32 = 16; + const DONE_OFFSET: Offset = Offset::new(-2, 6); + const CURRENT_OFFSET: Offset = Offset::new(2, 3); + + pub fn from_paragraphs( + icon_current: &'static [u8], + icon_done: &'static [u8], + current: usize, + paragraphs: Paragraphs, + ) -> Self { + Self { + area: Rect::zero(), + paragraphs, + current, + icon_current, + icon_done, + } + } + + fn paint_icon(&self, index: usize, icon: &'static [u8], offset: Offset) { + let para = self.paragraphs.list[index].layout; + let top_left = Point::new(self.area.x0, para.bounds.y0); + display::icon_top_left( + top_left + offset, + icon, + para.style.text_color, + para.style.background_color, + ); + } +} + +impl Component for Checklist +where + T: AsRef, +{ + type Msg = Never; + + fn place(&mut self, bounds: Rect) -> Rect { + self.area = bounds; + let para_area = bounds.inset(Insets::left(Self::CHECK_WIDTH)); + self.paragraphs.place(para_area); + self.area + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option { + self.paragraphs.event(ctx, event) + } + + fn paint(&mut self) { + self.paragraphs.paint(); + let first = self.paragraphs.offset.par; + let last = first + self.paragraphs.visible; + for i in first..last.min(self.current) { + self.paint_icon(i, self.icon_done, Self::DONE_OFFSET); + } + self.paint_icon(self.current, self.icon_current, Self::CURRENT_OFFSET) + } + + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + sink(self.area); + self.paragraphs.bounds(sink); + } +} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for Checklist +where + T: AsRef, +{ + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.open("Checklist"); + t.field("current", &self.current); + t.field("items", &self.paragraphs); + 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 ad138f943..580b49f2c 100644 --- a/core/embed/rust/src/ui/model_tt/component/dialog.rs +++ b/core/embed/rust/src/ui/model_tt/component/dialog.rs @@ -1,6 +1,6 @@ use crate::ui::{ component::{text::paragraphs::Paragraphs, Child, Component, Event, EventCtx, Image, Never}, - geometry::{Grid, Insets, LinearPlacement, Rect}, + geometry::{Insets, LinearPlacement, Rect}, }; use super::{theme, Button}; @@ -71,14 +71,11 @@ pub struct DialogLayout { impl DialogLayout { pub fn middle(area: Rect) -> Self { - let grid = Grid::new(area, 5, 1); - Self { - content: Rect::new( - grid.row_col(0, 0).top_left(), - grid.row_col(3, 0).bottom_right(), - ), - controls: grid.row_col(4, 0), - } + let (content, controls) = area.split_bottom(Button::<&str>::HEIGHT); + let content = content + .inset(Insets::bottom(theme::BUTTON_SPACING)) + .inset(Insets::left(theme::CONTENT_BORDER)); + Self { content, controls } } } @@ -113,7 +110,7 @@ where paragraphs: Paragraphs::new() .with_placement( LinearPlacement::vertical() - .align_at_start() + .align_at_center() .with_spacing(Self::VALUE_SPACE), ) .add(theme::TEXT_MEDIUM, title) @@ -132,8 +129,8 @@ where self } - pub const ICON_AREA_HEIGHT: i32 = 64; - pub const DESCRIPTION_SPACE: i32 = 14; + pub const ICON_AREA_PADDING: i32 = 2; + pub const ICON_AREA_HEIGHT: i32 = 60; pub const VALUE_SPACE: i32 = 5; } @@ -145,10 +142,11 @@ where type Msg = DialogMsg; fn place(&mut self, bounds: Rect) -> Rect { - let bounds = bounds.inset(theme::borders()); + let bounds = bounds + .inset(theme::borders()) + .inset(Insets::top(Self::ICON_AREA_PADDING)); let (content, buttons) = bounds.split_bottom(Button::<&str>::HEIGHT); let (image, content) = content.split_top(Self::ICON_AREA_HEIGHT); - let content = content.inset(Insets::top(Self::DESCRIPTION_SPACE)); self.image.place(image); self.paragraphs.place(content); 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 3ebd21bd5..8ce54b82f 100644 --- a/core/embed/rust/src/ui/model_tt/component/mod.rs +++ b/core/embed/rust/src/ui/model_tt/component/mod.rs @@ -4,6 +4,7 @@ mod frame; mod hold_to_confirm; mod keyboard; mod loader; +mod number_input; mod page; mod scroll; mod swipe; @@ -23,6 +24,7 @@ pub use keyboard::{ slip39::Slip39Input, }; pub use loader::{Loader, LoaderMsg, LoaderStyle, LoaderStyleSheet}; +pub use number_input::{NumberInputDialog, NumberInputDialogMsg}; pub use page::{SwipeHoldPage, SwipePage}; pub use scroll::ScrollBar; pub use swipe::{Swipe, SwipeDirection}; diff --git a/core/embed/rust/src/ui/model_tt/component/number_input.rs b/core/embed/rust/src/ui/model_tt/component/number_input.rs new file mode 100644 index 000000000..ca7caf641 --- /dev/null +++ b/core/embed/rust/src/ui/model_tt/component/number_input.rs @@ -0,0 +1,239 @@ +use crate::ui::{ + component::{ + base::ComponentExt, text::paragraphs::Paragraphs, Child, Component, Event, EventCtx, Pad, + }, + display, + geometry::{Grid, Insets, Offset, Rect}, + util, +}; + +use super::{theme, Button, ButtonMsg}; + +pub enum NumberInputDialogMsg { + Selected, + InfoRequested, +} + +pub struct NumberInputDialog +where + F: Fn(u32) -> T, +{ + area: Rect, + description_func: F, + input: Child, + paragraphs: Child>, + paragraphs_pad: Pad, + info_button: Child>, + confirm_button: Child>, +} + +impl NumberInputDialog +where + F: Fn(u32) -> T, + T: AsRef, +{ + pub fn new(min: u32, max: u32, init_value: u32, description_func: F) -> Self { + let text = description_func(init_value); + Self { + area: Rect::zero(), + description_func, + input: NumberInput::new(min, max, init_value).into_child(), + paragraphs: Paragraphs::new().add(theme::TEXT_NORMAL, text).into_child(), + paragraphs_pad: Pad::with_background(theme::BG), + info_button: Button::with_text("INFO").into_child(), + confirm_button: Button::with_text("CONTINUE") + .styled(theme::button_confirm()) + .into_child(), + } + } + + fn update_text(&mut self, ctx: &mut EventCtx, value: u32) { + let text = (self.description_func)(value); + self.paragraphs.mutate(ctx, move |ctx, para| { + para.update(0, text); + ctx.request_paint() + }); + self.paragraphs_pad.clear(); + ctx.request_paint(); + } + + pub fn value(&self) -> u32 { + self.input.inner().value + } +} + +impl Component for NumberInputDialog +where + T: AsRef, + F: Fn(u32) -> T, +{ + type Msg = NumberInputDialogMsg; + + fn place(&mut self, bounds: Rect) -> Rect { + self.area = bounds; + let button_height = Button::<&str>::HEIGHT; + let content_area = self.area.inset(Insets::top(2 * theme::BUTTON_SPACING)); + let (input_area, content_area) = content_area.split_top(button_height); + let (content_area, button_area) = content_area.split_bottom(button_height); + let content_area = content_area.inset(Insets::new( + theme::BUTTON_SPACING, + 0, + theme::BUTTON_SPACING, + theme::CONTENT_BORDER, + )); + + let grid = Grid::new(button_area, 1, 3).with_spacing(theme::KEYBOARD_SPACING); + self.input.place(input_area); + self.paragraphs.place(content_area); + self.paragraphs_pad.place(content_area); + self.info_button.place(grid.row_col(0, 0)); + self.confirm_button + .place(grid.row_col(0, 1).union(grid.row_col(0, 2))); + bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option { + if let Some(NumberInputMsg::Changed(i)) = self.input.event(ctx, event) { + self.update_text(ctx, i); + } + self.paragraphs.event(ctx, event); + if let Some(ButtonMsg::Clicked) = self.info_button.event(ctx, event) { + return Some(Self::Msg::InfoRequested); + } + if let Some(ButtonMsg::Clicked) = self.confirm_button.event(ctx, event) { + return Some(Self::Msg::Selected); + }; + None + } + + fn paint(&mut self) { + self.input.paint(); + self.paragraphs_pad.paint(); + self.paragraphs.paint(); + self.info_button.paint(); + self.confirm_button.paint(); + } + + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + sink(self.area); + self.input.bounds(sink); + self.paragraphs.bounds(sink); + self.info_button.bounds(sink); + self.confirm_button.bounds(sink); + } +} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for NumberInputDialog +where + T: AsRef, + F: Fn(u32) -> T, +{ + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.open("NumberInputDialog"); + t.field("input", &self.input); + t.field("paragraphs", &self.paragraphs); + t.field("info_button", &self.info_button); + t.field("confirm_button", &self.confirm_button); + t.close(); + } +} + +pub enum NumberInputMsg { + Changed(u32), +} + +pub struct NumberInput { + area: Rect, + dec: Child>, + inc: Child>, + min: u32, + max: u32, + value: u32, +} + +impl NumberInput { + pub fn new(min: u32, max: u32, value: u32) -> Self { + let dec = Button::with_text("-") + .styled(theme::button_counter()) + .into_child(); + let inc = Button::with_text("+") + .styled(theme::button_counter()) + .into_child(); + let value = value.clamp(min, max); + Self { + area: Rect::zero(), + dec, + inc, + min, + max, + value, + } + } +} + +impl Component for NumberInput { + type Msg = NumberInputMsg; + + fn place(&mut self, bounds: Rect) -> Rect { + let grid = Grid::new(bounds, 1, 3).with_spacing(theme::KEYBOARD_SPACING); + self.dec.place(grid.row_col(0, 0)); + self.inc.place(grid.row_col(0, 2)); + self.area = grid.row_col(0, 1); + bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option { + let mut changed = false; + if let Some(ButtonMsg::Clicked) = self.dec.event(ctx, event) { + self.value = self.min.max(self.value.saturating_sub(1)); + changed = true; + }; + if let Some(ButtonMsg::Clicked) = self.inc.event(ctx, event) { + self.value = self.max.min(self.value.saturating_add(1)); + changed = true; + }; + if changed { + self.dec + .mutate(ctx, |ctx, btn| btn.enable_if(ctx, self.value > self.min)); + self.inc + .mutate(ctx, |ctx, btn| btn.enable_if(ctx, self.value < self.max)); + ctx.request_paint(); + return Some(NumberInputMsg::Changed(self.value)); + } + None + } + + fn paint(&mut self) { + let mut buf = [0u8; 10]; + if let Some(text) = util::u32_to_str(self.value, &mut buf) { + let digit_font = theme::FONT_MEDIUM; + let y_offset = digit_font.text_height() / 2 + Button::<&str>::BASELINE_OFFSET; + display::rect_fill(self.area, theme::BG); + display::text_center( + self.area.center() + Offset::y(y_offset), + text, + digit_font, + theme::FG, + theme::BG, + ); + } + self.dec.paint(); + self.inc.paint(); + } + + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + self.dec.bounds(sink); + self.inc.bounds(sink); + sink(self.area) + } +} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for NumberInput { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.open("NumberInput"); + t.field("value", &(self.value as usize)); + t.close(); + } +} diff --git a/core/embed/rust/src/ui/model_tt/layout.rs b/core/embed/rust/src/ui/model_tt/layout.rs index 43780f901..35268be38 100644 --- a/core/embed/rust/src/ui/model_tt/layout.rs +++ b/core/embed/rust/src/ui/model_tt/layout.rs @@ -17,8 +17,8 @@ use crate::{ base::ComponentExt, paginated::{PageMsg, Paginate}, painter, - text::paragraphs::Paragraphs, - Component, + text::paragraphs::{Checklist, Paragraphs}, + Border, Component, }, geometry, layout::{ @@ -32,8 +32,9 @@ use super::{ component::{ Bip39Input, Button, ButtonMsg, ButtonStyleSheet, CancelConfirmMsg, CancelInfoConfirmMsg, Dialog, DialogMsg, Frame, HoldToConfirm, HoldToConfirmMsg, IconDialog, MnemonicInput, - MnemonicKeyboard, MnemonicKeyboardMsg, PassphraseKeyboard, PassphraseKeyboardMsg, - PinKeyboard, PinKeyboardMsg, SelectWordMsg, Slip39Input, SwipeHoldPage, SwipePage, + MnemonicKeyboard, MnemonicKeyboardMsg, NumberInputDialog, NumberInputDialogMsg, + PassphraseKeyboard, PassphraseKeyboardMsg, PinKeyboard, PinKeyboardMsg, SelectWordMsg, + Slip39Input, SwipeHoldPage, SwipePage, }, theme, }; @@ -196,6 +197,47 @@ where } } +impl ComponentMsgObj for Paragraphs +where + T: AsRef, +{ + fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result { + unreachable!() + } +} + +impl ComponentMsgObj for Checklist +where + T: AsRef, +{ + fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result { + unreachable!() + } +} + +impl ComponentMsgObj for NumberInputDialog +where + T: AsRef, + F: Fn(u32) -> T, +{ + fn msg_try_into_obj(&self, msg: Self::Msg) -> Result { + let value = self.value().try_into()?; + match msg { + NumberInputDialogMsg::Selected => Ok((CONFIRMED.as_obj(), value).try_into()?), + NumberInputDialogMsg::InfoRequested => Ok((CANCELLED.as_obj(), value).try_into()?), + } + } +} + +impl ComponentMsgObj for Border +where + T: ComponentMsgObj, +{ + fn msg_try_into_obj(&self, msg: Self::Msg) -> Result { + self.inner().msg_try_into_obj(msg) + } +} + 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()?; @@ -532,6 +574,42 @@ 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_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()?; + let description: StrBuffer = + kwargs.get_or(Qstr::MP_QSTR_description, StrBuffer::empty())?; + let button: StrBuffer = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; + + let obj = if let Some(t) = title { + LayoutObj::new(Frame::new( + t, + Dialog::new( + Paragraphs::new().add(theme::TEXT_NORMAL, description), + Button::with_text(button).map(|msg| { + (matches!(msg, ButtonMsg::Clicked)).then(|| CancelConfirmMsg::Confirmed) + }), + ), + ))? + .into() + } else { + LayoutObj::new(Border::new( + theme::borders(), + Dialog::new( + Paragraphs::new().add(theme::TEXT_NORMAL, description), + Button::with_text(button).map(|msg| { + (matches!(msg, ButtonMsg::Clicked)).then(|| CancelConfirmMsg::Confirmed) + }), + ), + ))? + .into() + }; + + Ok(obj) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + extern "C" fn new_confirm_payment_request( n_args: usize, args: *const Obj, @@ -685,6 +763,79 @@ extern "C" fn new_show_share_words(n_args: usize, args: *const Obj, kwargs: *mut unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } +extern "C" fn new_request_number(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 min_count: u32 = kwargs.get(Qstr::MP_QSTR_min_count)?.try_into()?; + let max_count: u32 = kwargs.get(Qstr::MP_QSTR_max_count)?.try_into()?; + let count: u32 = kwargs.get(Qstr::MP_QSTR_count)?.try_into()?; + let description_callback: Obj = kwargs.get(Qstr::MP_QSTR_description)?; + + let callback = move |i: u32| { + StrBuffer::try_from( + description_callback + .call_with_n_args(&[i.try_into().unwrap()]) + .unwrap(), + ) + .unwrap() + }; + + let obj = LayoutObj::new( + Frame::new( + title, + NumberInputDialog::new(min_count, max_count, count, callback), + ) + .with_border(theme::borders()) + .into_child(), + )?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_show_checklist(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 button: StrBuffer = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; + let active: usize = kwargs.get(Qstr::MP_QSTR_active)?.try_into()?; + let items: Obj = kwargs.get(Qstr::MP_QSTR_items)?; + + let mut iter_buf = IterBuf::new(); + let mut paragraphs = Paragraphs::new().with_spacing(theme::CHECKLIST_SPACING); + let iter = Iter::try_from_obj_with_buf(items, &mut iter_buf)?; + for (i, item) in iter.enumerate() { + let color = match i.cmp(&active) { + Ordering::Less => theme::GREEN_DARK, + Ordering::Equal => theme::FG, + Ordering::Greater => theme::GREY_LIGHT, + }; + let text: StrBuffer = item.try_into()?; + paragraphs = paragraphs.add_color(theme::TEXT_NORMAL, color, text); + } + + let obj = LayoutObj::new( + Frame::new( + title, + Dialog::new( + Checklist::from_paragraphs( + theme::ICON_LIST_CURRENT, + theme::ICON_LIST_CHECK, + active, + paragraphs, + ), + Button::with_text(button).map(|msg| { + (matches!(msg, ButtonMsg::Clicked)).then(|| CancelConfirmMsg::Confirmed) + }), + ), + ) + .with_border(theme::borders()) + .into_child(), + )?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + #[no_mangle] pub static mp_module_trezorui2: Module = obj_module! { Qstr::MP_QSTR___name__ => Qstr::MP_QSTR_trezorui2.to_obj(), @@ -828,6 +979,15 @@ pub static mp_module_trezorui2: Module = obj_module! { /// """Info modal.""" Qstr::MP_QSTR_show_info => obj_fn_kw!(0, new_show_info).as_obj(), + /// def show_simple( + /// *, + /// title: str | None, + /// description: str, + /// button: str, + /// ) -> object: + /// """Simple dialog with text and one button.""" + Qstr::MP_QSTR_show_simple => obj_fn_kw!(0, new_show_simple).as_obj(), + /// def confirm_payment_request( /// *, /// description: str, @@ -894,6 +1054,28 @@ pub static mp_module_trezorui2: Module = obj_module! { /// ) -> object: /// """Show mnemonic for backup. Expects the words pre-divided into individual pages.""" Qstr::MP_QSTR_show_share_words => obj_fn_kw!(0, new_show_share_words).as_obj(), + + /// def request_number( + /// *, + /// title: str, + /// count: int, + /// min_count: int, + /// max_count: int, + /// description: Callable[[int], str], + /// ) -> object: + /// """Number input with + and - buttons, description, and info button.""" + Qstr::MP_QSTR_request_number => obj_fn_kw!(0, new_request_number).as_obj(), + + /// def show_checklist( + /// *, + /// title: str, + /// items: Iterable[str], + /// active: int, + /// button: str, + /// ) -> object: + /// """Checklist of backup steps. Active index is highlighted, previous items have check + /// mark nex to them.""" + Qstr::MP_QSTR_show_checklist => obj_fn_kw!(0, new_show_checklist).as_obj(), }; #[cfg(test)] diff --git a/core/embed/rust/src/ui/model_tt/res/check.toif b/core/embed/rust/src/ui/model_tt/res/check.toif new file mode 100644 index 0000000000000000000000000000000000000000..b101ec8bda4f7e3038cb11c92fd995b01eb55ae2 GIT binary patch literal 66 zcmV-I0KNZIPf2GE015y$0001EU;qN<01(Mw_Yp+0ykEd5z`zjygMs%F1MB|=2Cjbw Y^*?|T>t6yn3=CZVe}Gl@CosSP0PHdtZ~y=R literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_tt/res/current.toif b/core/embed/rust/src/ui/model_tt/res/current.toif new file mode 100644 index 0000000000000000000000000000000000000000..ad8538ea5f1ff6fa6a4505a2aecfa58eddf58128 GIT binary patch literal 47 zcmV+~0MP$bPf2G801N;l0001MWME+UtH8kU|2Yu LabelStyle { } } +pub fn label_checklist_default() -> LabelStyle { + LabelStyle { + font: FONT_NORMAL, + text_color: GREY_LIGHT, + background_color: BG, + } +} + +pub fn label_checklist_selected() -> LabelStyle { + LabelStyle { + font: FONT_NORMAL, + text_color: FG, + background_color: BG, + } +} + +pub fn label_checklist_done() -> LabelStyle { + LabelStyle { + font: FONT_NORMAL, + text_color: GREEN_DARK, + background_color: BG, + } +} + pub fn label_keyboard() -> LabelStyle { LabelStyle { font: FONT_MEDIUM, @@ -316,6 +342,38 @@ pub fn button_pin() -> ButtonStyleSheet { } } +pub fn button_counter() -> ButtonStyleSheet { + ButtonStyleSheet { + normal: &ButtonStyle { + font: FONT_MEDIUM, + text_color: FG, + button_color: GREY_DARK, + background_color: BG, + border_color: BG, + border_radius: RADIUS, + border_width: 0, + }, + active: &ButtonStyle { + font: FONT_MEDIUM, + text_color: FG, + button_color: GREY_MEDIUM, + background_color: BG, + border_color: FG, + border_radius: RADIUS, + border_width: 0, + }, + disabled: &ButtonStyle { + font: FONT_MEDIUM, + text_color: GREY_LIGHT, + button_color: GREY_DARK, + background_color: BG, + border_color: BG, + border_radius: RADIUS, + border_width: 0, + }, + } +} + pub fn button_clear() -> ButtonStyleSheet { button_default() } @@ -350,6 +408,7 @@ pub const FORMATTED: FormattedFonts = FormattedFonts { pub const CONTENT_BORDER: i32 = 5; pub const KEYBOARD_SPACING: i32 = 8; pub const BUTTON_SPACING: i32 = 6; +pub const CHECKLIST_SPACING: i32 = 10; /// +----------+ /// | 13 | diff --git a/core/embed/rust/src/ui/util.rs b/core/embed/rust/src/ui/util.rs index f07b22881..caf028716 100644 --- a/core/embed/rust/src/ui/util.rs +++ b/core/embed/rust/src/ui/util.rs @@ -10,3 +10,52 @@ impl ResultExt for Result { } } } + +pub fn u32_to_str(num: u32, buffer: &mut [u8]) -> Option<&str> { + let mut i = 0; + let mut num = num; + + while num > 0 && i < buffer.len() { + buffer[i] = b'0' + ((num % 10) as u8); + num /= 10; + i += 1; + } + match i { + 0 => Some("0"), + _ if num > 0 => None, + _ => { + let result = &mut buffer[..i]; + result.reverse(); + Some(core::str::from_utf8(result).unwrap()) + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + use std::str; + + #[test] + fn u32_to_str_valid() { + let testcases = [0, 1, 9, 10, 11, 999, u32::MAX]; + let mut b = [0; 10]; + + for test in testcases { + let converted = u32_to_str(test, &mut b).unwrap(); + let s = test.to_string(); + assert_eq!(converted, s); + } + } + + #[test] + fn u32_to_str_small_buffer() { + let testcases = [1000, 31337, u32::MAX]; + let mut b = [0; 3]; + + for test in testcases { + let converted = u32_to_str(test, &mut b); + assert_eq!(converted, None) + } + } +} diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index 5a9af2d35..ee493eb44 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -199,6 +199,16 @@ def show_info( """Info modal.""" +# rust/src/ui/model_tt/layout.rs +def show_simple( + *, + title: str | None, + description: str, + button: str, +) -> object: + """Simple dialog with text and one button.""" + + # rust/src/ui/model_tt/layout.rs def confirm_payment_request( *, @@ -272,3 +282,27 @@ def show_share_words( pages: Iterable[str], ) -> object: """Show mnemonic for backup. Expects the words pre-divided into individual pages.""" + + +# rust/src/ui/model_tt/layout.rs +def request_number( + *, + title: str, + count: int, + min_count: int, + max_count: int, + description: Callable[[int], str], +) -> object: + """Number input with + and - buttons, description, and info button.""" + + +# rust/src/ui/model_tt/layout.rs +def show_checklist( + *, + title: str, + items: Iterable[str], + active: int, + button: str, +) -> object: + """Checklist of backup steps. Active index is highlighted, previous items have check + mark nex to them.""" diff --git a/core/src/trezor/ui/layouts/tt_v2/reset.py b/core/src/trezor/ui/layouts/tt_v2/reset.py index 1bfc927b2..17f4ba24f 100644 --- a/core/src/trezor/ui/layouts/tt_v2/reset.py +++ b/core/src/trezor/ui/layouts/tt_v2/reset.py @@ -1,7 +1,7 @@ from typing import TYPE_CHECKING from trezor import wire -from trezor.enums import ButtonRequestType +from trezor.enums import BackupType, ButtonRequestType import trezorui2 @@ -9,8 +9,9 @@ from ..common import interact from . import _RustLayout if TYPE_CHECKING: - from trezor.enums import BackupType - from typing import Sequence, List + from typing import Callable, Sequence, List + + pass def _split_share_into_pages(share_words: Sequence[str], per_page: int = 4) -> List[str]: @@ -112,29 +113,206 @@ async def select_word( async def slip39_show_checklist( ctx: wire.GenericContext, step: int, backup_type: BackupType ) -> None: - raise NotImplementedError + items = [] + if backup_type is BackupType.Slip39_Basic: + items.append("Set number of shares") + items.append("Set threshold") + items.append("Write down and check all recovery shares") + elif backup_type is BackupType.Slip39_Advanced: + items.append("Set number of groups") + items.append("Set group threshold") + items.append("Set size and threshold for each group") + + result = await interact( + ctx, + _RustLayout( + trezorui2.show_checklist( + title="BACKUP CHECKLIST", + button="CONTINUE", + active=step, + items=items, + ) + ), + "slip39_checklist", + ButtonRequestType.ResetDevice, + ) + if result != trezorui2.CONFIRMED: + raise wire.ActionCancelled + + +async def _prompt_number( + ctx: wire.GenericContext, + title: str, + description: Callable[[int], str], + info: Callable[[int], str], + count: int, + min_count: int, + max_count: int, + br_name: str, +) -> int: + num_input = _RustLayout( + trezorui2.request_number( + title=title.upper(), + description=description, + count=count, + min_count=min_count, + max_count=max_count, + ) + ) + + while True: + result = await interact( + ctx, + num_input, + br_name, + ButtonRequestType.ResetDevice, + ) + if __debug__: + if not isinstance(result, tuple): + # DebugLink currently can't send number of shares and it doesn't + # change the counter either so just use the initial value. + result = (result, count) + status, value = result + + if status == trezorui2.CONFIRMED: + assert isinstance(value, int) + return value + + await ctx.wait( + _RustLayout( + trezorui2.show_simple( + title=None, description=info(value), button="OK, I UNDERSTAND" + ) + ) + ) async def slip39_prompt_threshold( ctx: wire.GenericContext, num_of_shares: int, group_id: int | None = None ) -> int: - raise NotImplementedError + count = num_of_shares // 2 + 1 + # min value of share threshold is 2 unless the number of shares is 1 + # number of shares 1 is possible in advanced slip39 + min_count = min(2, num_of_shares) + max_count = num_of_shares + + def description(count: int): + if group_id is None: + if count == 1: + return "For recovery you need 1 share." + elif count == max_count: + return f"For recovery you need all {count} of the shares." + else: + return f"For recovery you need any {count} of the shares." + else: + return f"The required number of shares to form Group {group_id + 1}." + + def info(count: int): + text = "The threshold sets the number of shares " + if group_id is None: + text += "needed to recover your wallet. " + text += f"Set it to {count} and you will need " + if num_of_shares == 1: + text += "1 share." + elif num_of_shares == count: + text += f"all {count} of your {num_of_shares} shares." + else: + text += f"any {count} of your {num_of_shares} shares." + else: + text += "needed to form a group. " + text += f"Set it to {count} and you will " + if num_of_shares == 1: + text += "need 1 share " + elif num_of_shares == count: + text += f"need all {count} of {num_of_shares} shares " + else: + text += f"need any {count} of {num_of_shares} shares " + text += f"to form Group {group_id + 1}." + return text + + return await _prompt_number( + ctx, + title="SET THRESHOLD", + description=description, + info=info, + count=count, + min_count=min_count, + max_count=max_count, + br_name="slip39_threshold", + ) async def slip39_prompt_number_of_shares( ctx: wire.GenericContext, group_id: int | None = None ) -> int: - raise NotImplementedError + count = 5 + min_count = 1 + max_count = 16 + + def description(i: int): + if group_id is None: + if i == 1: + return "Only one share will be created." + else: + return f"{i} people or locations will each hold one share." + else: + return f"Set the total number of shares in Group {group_id + 1}." + + if group_id is None: + info = "Each recovery share is a sequence of 20 words. Next you will choose how many shares you need to recover your wallet." + else: + info = f"Each recovery share is a sequence of 20 words. Next you will choose the threshold number of shares needed to form Group {group_id + 1}." + + return await _prompt_number( + ctx, + title="SET NUMBER OF SHARES", + description=description, + info=lambda i: info, + count=count, + min_count=min_count, + max_count=max_count, + br_name="slip39_shares", + ) async def slip39_advanced_prompt_number_of_groups(ctx: wire.GenericContext) -> int: - raise NotImplementedError + count = 5 + min_count = 2 + max_count = 16 + description = "A group is made up of recovery shares." + info = "Each group has a set number of shares and its own threshold. In the next steps you will set the numbers of shares and the thresholds." + + return await _prompt_number( + ctx, + title="SET NUMBER OF GROUPS", + description=lambda i: description, + info=lambda i: info, + count=count, + min_count=min_count, + max_count=max_count, + br_name="slip39_groups", + ) async def slip39_advanced_prompt_group_threshold( ctx: wire.GenericContext, num_of_groups: int ) -> int: - raise NotImplementedError + count = num_of_groups // 2 + 1 + min_count = 1 + max_count = num_of_groups + description = "The required number of groups for recovery." + info = "The group threshold specifies the number of groups required to recover your wallet." + + return await _prompt_number( + ctx, + title="SET GROUP THRESHOLD", + description=lambda i: description, + info=lambda i: info, + count=count, + min_count=min_count, + max_count=max_count, + br_name="slip39_group_threshold", + ) async def show_warning_backup(ctx: wire.GenericContext, slip39: bool) -> None: diff --git a/core/tools/toif_convert.py b/core/tools/toif_convert.py index 153d34625..36472d414 100755 --- a/core/tools/toif_convert.py +++ b/core/tools/toif_convert.py @@ -16,6 +16,10 @@ def toif_convert(infile, outfile): Examples: toif_convert.py somefile.jpg outfile.toif toif_convert.py infile.toif outfile.png + + # ensure gray-scale output TOIF + mogrify -colorspace gray icon.png + toif_convert.py icon.png icon.toif """ if infile.name.endswith(".toif") or infile.name == "-": toi = toif.from_bytes(infile.read()) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 0a3da1b97..d10e9e688 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -1668,8 +1668,12 @@ "TTui2_binance-test_sign_tx.py::test_binance_sign_message[message1-expected_response1]": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_binance-test_sign_tx.py::test_binance_sign_message[message2-expected_response2]": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "e86435a8bfbe0f3e84dd14fa3fc65378fb781e154fc37cc034225834d730d596", +"TTui2_bitcoin-test_authorize_coinjoin.py::test_get_address": "d3ca64a1ee5a32ebd4aa05b8fbf53d62486e37236c6d1e824463c79cf992ec75", +"TTui2_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "f2e86cbdfb6f366da2c25632b095733e23760c7007104c9aac5e5e0d0705e66a", "TTui2_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "84c35fd5dea8c492de5ff44d5a9464008ff02b6b95e4f19b68bf2dc954afece5", "TTui2_bitcoin-test_authorize_coinjoin.py::test_sign_tx": "71e815272e959eb566b8f47467665dbc7c72a3091a97e7d58e6b014f6222f518", +"TTui2_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "a6ee72e6563098e4bcf26f4645f48eaddda48173e10917133f409b9368b333db", +"TTui2_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "e86435a8bfbe0f3e84dd14fa3fc65378fb781e154fc37cc034225834d730d596", "TTui2_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "e86435a8bfbe0f3e84dd14fa3fc65378fb781e154fc37cc034225834d730d596", "TTui2_bitcoin-test_bcash.py::test_attack_change_input": "82807a26c44e6ca7edc44e87b21e2524dfb70a5bc34b019ee772dc73e0ed5de1", "TTui2_bitcoin-test_bcash.py::test_send_bch_change": "82807a26c44e6ca7edc44e87b21e2524dfb70a5bc34b019ee772dc73e0ed5de1", @@ -1691,7 +1695,7 @@ "TTui2_bitcoin-test_dash.py::test_send_dash_dip2_input": "74f2ee3b77d895f4b19cb0e3c62498bf68fb43b7c5b416623dde1161b3a990cc", "TTui2_bitcoin-test_decred.py::test_decred_multisig_change": "15cc7253c867dbde2e99f8482d6ab83fcba837fc30ea0dbe72abcabefacd5f56", "TTui2_bitcoin-test_decred.py::test_purchase_ticket_decred": "493db455a2a705880cea9800818345de8dc4086ac1d0f92bb8f21c5eed094084", -"TTui2_bitcoin-test_decred.py::test_send_decred": "f40a30099cf74086921adba2a02f446fbdde71c00d0576b88357948fd4e03ef1", +"TTui2_bitcoin-test_decred.py::test_send_decred": "fc60c1d4810eefa11080f0bef05fee753f9c86b4ec1c638955ddbd34c1701cc6", "TTui2_bitcoin-test_decred.py::test_send_decred_change": "3cc3d6de1c886265eaa3fb336268d5fc7540d6ee293d496cc74cec641e0ae046", "TTui2_bitcoin-test_decred.py::test_spend_from_stake_generation_and_revocation_decred": "4c18e54ff963ebce4d9fba57873111e8943a3da193ce093e35dc4d76ba7aa2f9", "TTui2_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-InputScriptType.SPENDADDRESS-pkh([5-7a80e3db": "0ccb7a9dc52037538ed9b4a9f061baa507291cdd402049359c912b4d73ece6cb", @@ -1715,25 +1719,25 @@ "TTui2_bitcoin-test_getaddress.py::test_address_mac": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_bitcoin-test_getaddress.py::test_altcoin_address_mac": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_bitcoin-test_getaddress.py::test_bch": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", -"TTui2_bitcoin-test_getaddress.py::test_bch_multisig": "f66a226d9ac3d4aad7c2a4bcf0a622563300ec02d91668510d8da60711bc6484", +"TTui2_bitcoin-test_getaddress.py::test_bch_multisig": "e259a3e9250aafd2d686c8da5cffa622a56a0b6ed4bcbb98283a58e6e36ae8fe", "TTui2_bitcoin-test_getaddress.py::test_btc": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_bitcoin-test_getaddress.py::test_crw": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_bitcoin-test_getaddress.py::test_elements": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_bitcoin-test_getaddress.py::test_grs": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_bitcoin-test_getaddress.py::test_invalid_path": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_bitcoin-test_getaddress.py::test_ltc": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", -"TTui2_bitcoin-test_getaddress.py::test_multisig": "f3c9e4df672d2acb27fc61238df1e2828294a6f1602f52f07deb908cd1eb2cd8", +"TTui2_bitcoin-test_getaddress.py::test_multisig": "024e7a3025a5c1bdc378ea1f093736c14cee39bc765bf61e63b528a37e93bda7", "TTui2_bitcoin-test_getaddress.py::test_multisig_missing[False]": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", -"TTui2_bitcoin-test_getaddress.py::test_multisig_missing[True]": "d868aec455776eba425411e94901a649d386cadacbeaa11be2f5864c5f00084a", +"TTui2_bitcoin-test_getaddress.py::test_multisig_missing[True]": "8c8a8c9586cdf822c207f58bdc04d0bdb549765275c08d37774db3f8123b3af7", "TTui2_bitcoin-test_getaddress.py::test_public_ckd": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_bitcoin-test_getaddress.py::test_tbtc": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_bitcoin-test_getaddress.py::test_tgrs": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", -"TTui2_bitcoin-test_getaddress.py::test_unknown_path": "5e786a7fcb46f83dade42e4745eea7895642c0176b9989121058372c8a423260", +"TTui2_bitcoin-test_getaddress.py::test_unknown_path": "f6af7cca387eeb354af03ee898a993b8f40a33c73d03c0327c9f8d51d65b3991", "TTui2_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_bitcoin-test_getaddress_segwit.py::test_show_segwit": "bdd4ef1ca2d34f65373b8206b05d6c1ddffe2a5eb9409da19022a30c85953ba3", -"TTui2_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "c3b1311db7d4ebd69b0323272faa2e08686a092d29430b0cc946bddb290d98e9", +"TTui2_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "ddd568ba1924c4287c58f4594b1b72a90066692954dbaeb25f12838c871013d9", "TTui2_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", @@ -1770,9 +1774,9 @@ "TTui2_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "bbddf7db56267bfdbd779c875355282f8bdf97f1fc7602d8d766b50ad0d6a068", -"TTui2_bitcoin-test_getaddress_show.py::test_show[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-1F-1e4f2f74": "b3d4a6b7a5c7694a009a4ff5fda904b1d0916e12a593ed999caba3d8993822e2", -"TTui2_bitcoin-test_getaddress_show.py::test_show[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWITNES-a986211d": "9624aa9c8e2a0cec9257256319b7149231592296891c11294c2ee91b5eb58fd4", -"TTui2_bitcoin-test_getaddress_show.py::test_show[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-bc-a5f08dfb": "0f5b3d392dd2b00bdb6bbe44828f225860f10eec0880252f89849724ad101396", +"TTui2_bitcoin-test_getaddress_show.py::test_show[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-1F-1e4f2f74": "0594005ecf204616fee8178440c954d3cd99dd6b8574f54916865b5eca9f1cf1", +"TTui2_bitcoin-test_getaddress_show.py::test_show[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWITNES-a986211d": "76c542955e2319e3a9afcadca2a6d79b3f719807ac0c40b2d26198e168abf899", +"TTui2_bitcoin-test_getaddress_show.py::test_show[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-bc-a5f08dfb": "81ae91ea20ca248558986d6c18f957b6b2f236d285efca6e1f8538a6a67d954f", "TTui2_bitcoin-test_getaddress_show.py::test_show_multisig_15": "07a7a7bb2976b6a123dd7482467fe5277cb6799a9861910df477e361b45accfb", "TTui2_bitcoin-test_getaddress_show.py::test_show_multisig_3": "cd2df86e724e5971f6e7f9c6fe79286144344917e72fd571db9aed920ef54c4e", "TTui2_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "e702cb33c0c54490029b076655e75d7e5e80134cbe9c057b5aa8ef8ca18f96a9", @@ -1811,6 +1815,7 @@ "TTui2_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", +"TTui2_bitcoin-test_getpublickey.py::test_slip25_path": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", @@ -1829,7 +1834,7 @@ "TTui2_bitcoin-test_komodo.py::test_one_one_rewards_claim": "bac20902771b117a6b5a544b379ecb8143e0ae7590ce7e4d83551ea852016656", "TTui2_bitcoin-test_multisig.py::test_15_of_15": "e3feb81e1f7074f5fb0a4739644db80db17496e28f4598dd692548e8dd271d49", "TTui2_bitcoin-test_multisig.py::test_2_of_3": "d4451fedf6e004cfb42be2e4274cd212d5454b744e590d320a77bd61bcdafc8a", -"TTui2_bitcoin-test_multisig.py::test_attack_change_input": "c29260aec42924b145e153adbfb7c309d23cd543369ada37aaa5ad65c84089c1", +"TTui2_bitcoin-test_multisig.py::test_attack_change_input": "f4f102794e9e999d81d9ce15435abd8fa10c9af084e4b4bc3d445839aef0755d", "TTui2_bitcoin-test_multisig.py::test_missing_pubkey": "493db455a2a705880cea9800818345de8dc4086ac1d0f92bb8f21c5eed094084", "TTui2_bitcoin-test_multisig_change.py::test_external_external": "d4c05f668cacfb6a08dc2dab45729cc89120e4f9b1c422855a8171a271f6dafd", "TTui2_bitcoin-test_multisig_change.py::test_external_internal": "676ca0ba877814630124d3c9d5b911a3123a9ae1d07d5553a93e34a6bffdbf92", @@ -1839,15 +1844,15 @@ "TTui2_bitcoin-test_multisig_change.py::test_multisig_external_external": "62053184643d1f374aeb6c6ebfeba37818e9c8c956be5d27d559d941006c7261", "TTui2_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "1da508a75ac20168bddfdc9f1dd1dd65e3af31b46d6a093792b4497a7d93541b", "TTui2_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "acf3e3093fb9e42be99c4419b0c1e6e564765c644b007046ee685933a818dce7", -"TTui2_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3]": "b6af022581c0cb001f524aed7ca7899c5ec787811fa56b091b7f67e8e12be7aa", -"TTui2_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2]": "771a10f5ac84e2c656e408ca0c384fea714c2f6110090087ac802cc4920a5c4f", +"TTui2_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3]": "5ed68e5c665c55abc47fabc664e19ada990135a78d1a0d396fbec1d782a69eb6", +"TTui2_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2]": "ff06a6edf05bf8c3cb3fb96e17b24039e958eccb54ec4db5d46f15671f92d803", "TTui2_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1]": "0d143b9fa0eee95150b1753f202fe400541d04ce28d84137b355589a0f3d3b84", "TTui2_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0]": "4670eeb58a80783a48380b0683b1918c8d55c898766bbf7b8984712ec6ac8499", "TTui2_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4]": "69fa7690ab5ef602c3dc39c174c58cea3d5d73a48e10950f339e94061fb4597f", "TTui2_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "12ce818365a2cda8e627293f018b197bf201ab561a99a810f3f09b218edeb4a5", "TTui2_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "a9c363c6cfb2647bf4af2883776630b6bcd79e0e919634f449cd383e08cb49d5", -"TTui2_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "347967990f86ea00f1311d627bec53ca8452b381de25250dd74f7e9665649c63", -"TTui2_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "602409a3ea44037dbb8f9579af1befb0059b52b2118239aeefe963df4e9a9202", +"TTui2_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "9c3f5da8071e113277dcebfbf3cdc265425e1db744f0d35b66dcc785bbb48ef3", +"TTui2_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "e6c80d783f2e07aa4bb66f8b8b060a6facfa78744fb87d48707bd8ce225bb73b", "TTui2_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "55b2237f278a25d2649c0c9106876e654b9a04f87b6568d30466723c16c8a0f2", "TTui2_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "18acb23a37a48c9a13c4daf60078a06731b3bb348f6dc20a7a8d3920c6c1afdc", "TTui2_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "7289799134c3ddf1f0ab22a3f9ec37547613e3f261763e05490cfb50c9ef7cf3", @@ -1856,20 +1861,20 @@ "TTui2_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", -"TTui2_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "7f7cd45aee32d8bc5d5830e0f5d7ca60c6331d4c0b5b92fa6be9bffbe21bda2f", -"TTui2_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "c6867a7315202897e0f937fe036aed74d90bbce252b74893cd1bc9e4a10e1781", +"TTui2_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "1cf4b6045a7842757b4fb1e8f5bfaef332545077a45dd9df18b528068abcd29f", +"TTui2_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "1921cf9059ee8e553bfb0eb388c4089fb78da23cd0c735712588d815bd0e151d", "TTui2_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "e91c26185761f6826389c56a7ff18c06d39751878a706d14d8724cae82250072", "TTui2_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "6664cee18011e0d51201117b52e3d197aaffa99691d3c05339ea9dd29652e518", "TTui2_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "4e4fda48067f1924abaa3672f4d3b2a0b169195569ccd3c6ae443f0b24324c52", -"TTui2_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "87ca5089ae3c76afe526716b8034ac0d1085c0e09f3c5ab968c3a6226136db5b", -"TTui2_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "aabed6b75f2e558817be851fc8757580f8548af5ef871f1cbf1f527dcae020f6", +"TTui2_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "2c5b4c9fd5a110ad11090a69c90a8b55a28f7f718ac7910f2db132751496b4a6", +"TTui2_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "8f2bdaae1f4e3553c152df451a6ab1133cebf15728d421ad9a6ec462c0b9e334", "TTui2_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "c6c74a8110e702cedfdcc891a60317de94cb73e87c4e9465eaebf2e3712305c7", "TTui2_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "c6c74a8110e702cedfdcc891a60317de94cb73e87c4e9465eaebf2e3712305c7", "TTui2_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "3f8124c4f363b5b653efc20b006cfb68e7c4f59b0ff2ada57b57c7f71814bc1b", "TTui2_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "7b44d6ed3de9bfc8ede584a60f13140b0d31ac422e94d728fca61d1f31312a0a", "TTui2_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "7b44d6ed3de9bfc8ede584a60f13140b0d31ac422e94d728fca61d1f31312a0a", -"TTui2_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "bd48d263b65e0b14e10f52709fde6e96eb99851b2bfbd47ac86f3480e7c74766", -"TTui2_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "8e31a1b49b251e9c11c13653f4b675c4c0074e732e99de1a91745765067b8ef5", +"TTui2_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "3e5e87f421ce9a2021b5d71b0ab26a424cadea1b3e4b442c26e3aa3b1ac91cfe", +"TTui2_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "01eb36997b393ad30c38b6d049c6e97a6e0fb9eb550d2c4bf54c1d6ea8af6b18", "TTui2_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "7b44d6ed3de9bfc8ede584a60f13140b0d31ac422e94d728fca61d1f31312a0a", "TTui2_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "7b44d6ed3de9bfc8ede584a60f13140b0d31ac422e94d728fca61d1f31312a0a", "TTui2_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "7b44d6ed3de9bfc8ede584a60f13140b0d31ac422e94d728fca61d1f31312a0a", @@ -1907,13 +1912,13 @@ "TTui2_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "f1d75de8106980288b1adca46fd57af0c85a7d6d2fc7a1c16bdb7e4edf68a354", "TTui2_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "ccbb739bc0649ab5c94ada099e75b33dc025c81bac01a29fa5ffa417eb4b67f9", "TTui2_bitcoin-test_signmessage.py::test_signmessage_pagination_trailing_newline": "20e4ab5430739e12479ae7effba0f5f9a42db421a8b91ec91962ac44e769e2e3", -"TTui2_bitcoin-test_signmessage.py::test_signmessage_path_warning": "d57a52909487b1076baf9efdae7a77063263e2c98e093a2d75580c5df73d3bf0", +"TTui2_bitcoin-test_signmessage.py::test_signmessage_path_warning": "abdf7e4470cebadeb511fe0d4b6d40fa37f5d34f479d8170850caf0cc8e3b089", "TTui2_bitcoin-test_signtx.py::test_attack_change_input_address": "286b957738a6df9044e40015e1c52e0aceb41845a26a6f484f6dc576f1d39d07", "TTui2_bitcoin-test_signtx.py::test_attack_change_outputs": "e5aa6ad2a407151aadce85acc7cf9e7fd7e08f6cda8663ee3cbb9fc87d5e16bd", "TTui2_bitcoin-test_signtx.py::test_attack_modify_change_address": "2caf6724b1cc6eed4ac4015e30080b076b9fa8393a577bffc3dfadca51674ead", "TTui2_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "2caf6724b1cc6eed4ac4015e30080b076b9fa8393a577bffc3dfadca51674ead", "TTui2_bitcoin-test_signtx.py::test_fee_high_hardfail": "9f6b3877016801771c50ecd2299501465ca5b3248e84e719601ce6a855edcb6e", -"TTui2_bitcoin-test_signtx.py::test_fee_high_warning": "440556cab757cdcd2354132ab55fe38c4fb838a6a55f3388ea0e3ff36ceea54d", +"TTui2_bitcoin-test_signtx.py::test_fee_high_warning": "75c962fa97000c052c33e72ad7e567df2c153646c5a7f1877278d85b254a5892", "TTui2_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "493db455a2a705880cea9800818345de8dc4086ac1d0f92bb8f21c5eed094084", "TTui2_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "493db455a2a705880cea9800818345de8dc4086ac1d0f92bb8f21c5eed094084", "TTui2_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "493db455a2a705880cea9800818345de8dc4086ac1d0f92bb8f21c5eed094084", @@ -1924,7 +1929,7 @@ "TTui2_bitcoin-test_signtx.py::test_lock_time_blockheight": "74bd9d7889a224004c3a0e28a0259a181e84e2009b894ca0a2a8142b7411d01f", "TTui2_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "74bd9d7889a224004c3a0e28a0259a181e84e2009b894ca0a2a8142b7411d01f", "TTui2_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "74bd9d7889a224004c3a0e28a0259a181e84e2009b894ca0a2a8142b7411d01f", -"TTui2_bitcoin-test_signtx.py::test_lots_of_change": "3a2d5a2ef26c3974e6874895ebc03a296d9a3dc436f8f0393b914bbe3ee02ded", +"TTui2_bitcoin-test_signtx.py::test_lots_of_change": "e1dfcfe4e9eceea3be1c2a5b48c6416f12dda39f88806ba432144470b6cc88ec", "TTui2_bitcoin-test_signtx.py::test_lots_of_inputs": "592bef32fef7f5560abd0d7f2b4727a76add902eb461b7ff44f88863de4486c6", "TTui2_bitcoin-test_signtx.py::test_lots_of_outputs": "487a815c0efb929439b3e00721b3dca2e5bb80bdbe46994b1ac0140fed42d193", "TTui2_bitcoin-test_signtx.py::test_not_enough_funds": "5a007d01aeb7fc1f286303633685c7b2b52e7a60c3944321d4d5a2a5848d1647", @@ -1944,7 +1949,7 @@ "TTui2_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_bitcoin-test_signtx.py::test_spend_coinbase": "01c4dad811314f902e956bdf7a894f23b2a32d0a0beefab3ef7c7cdb8bedf014", "TTui2_bitcoin-test_signtx.py::test_testnet_big_amount": "94b96f176e4d656de07f0ac9708aec8e15ea02e28c1a0ef2a29f1fceb71cd664", -"TTui2_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "0d5301c60768a085c4ef16071075c65ffdfcfd82926aec0e14bb4badfdad7d4a", +"TTui2_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "dceac8593581d3af955d09adf23815978645d5fd46e3bf3a3f52bbd6a8599e7c", "TTui2_bitcoin-test_signtx.py::test_testnet_one_two_fee": "2caf6724b1cc6eed4ac4015e30080b076b9fa8393a577bffc3dfadca51674ead", "TTui2_bitcoin-test_signtx.py::test_two_changes": "3ab1abfc95932a9c83b9d9c2d8a769856fc2458f31fdcb299a4b289ef5287151", "TTui2_bitcoin-test_signtx.py::test_two_two": "e5aa6ad2a407151aadce85acc7cf9e7fd7e08f6cda8663ee3cbb9fc87d5e16bd", @@ -1968,8 +1973,8 @@ "TTui2_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "b35b9a83e3e1fc732f2106217bc9407ee9223a6b9861d80e29398667fddf2433", "TTui2_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "493db455a2a705880cea9800818345de8dc4086ac1d0f92bb8f21c5eed094084", "TTui2_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "493db455a2a705880cea9800818345de8dc4086ac1d0f92bb8f21c5eed094084", -"TTui2_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "f0264b8db95312d4a7649cf36d68d64c458e9a08667eaddc6985cd7d09e8aff4", -"TTui2_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "33b3c96e24c1f8d306be27dfa2376f5b8f84a31d5914dc93b3e5a742da116c2b", +"TTui2_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "9b71056bb84b892f5cc88fca0bfa69818c94d60dcb6b4310c325f7233bb01475", +"TTui2_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "f55ce6b1bb456b76f470bbb3ab84330c93574a56c36ae2f550f0c8bcd48351a1", "TTui2_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "d2bf6e264eb07356434b34fcb48bbb31cf0c261264962f96c12da44662af0529", "TTui2_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "dd676dc6e25290c436664bbbc4c99556ef77fa17ed6a4a0e7f0bd36ca34d349c", "TTui2_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "d2bf6e264eb07356434b34fcb48bbb31cf0c261264962f96c12da44662af0529", @@ -1990,14 +1995,14 @@ "TTui2_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "493db455a2a705880cea9800818345de8dc4086ac1d0f92bb8f21c5eed094084", "TTui2_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "493db455a2a705880cea9800818345de8dc4086ac1d0f92bb8f21c5eed094084", "TTui2_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "493db455a2a705880cea9800818345de8dc4086ac1d0f92bb8f21c5eed094084", -"TTui2_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "54c6a8940716a8cd53c7f20e585bf14b31f293794c69c0bedb88bf8a8d4b15ae", -"TTui2_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "54c6a8940716a8cd53c7f20e585bf14b31f293794c69c0bedb88bf8a8d4b15ae", -"TTui2_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "54c6a8940716a8cd53c7f20e585bf14b31f293794c69c0bedb88bf8a8d4b15ae", -"TTui2_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "54c6a8940716a8cd53c7f20e585bf14b31f293794c69c0bedb88bf8a8d4b15ae", -"TTui2_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "fda1e8c12b1be86aa1a268f16fb16cfba5617d7eb3833b17589964caf2137d9a", -"TTui2_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "fda1e8c12b1be86aa1a268f16fb16cfba5617d7eb3833b17589964caf2137d9a", -"TTui2_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "fda1e8c12b1be86aa1a268f16fb16cfba5617d7eb3833b17589964caf2137d9a", -"TTui2_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "fda1e8c12b1be86aa1a268f16fb16cfba5617d7eb3833b17589964caf2137d9a", +"TTui2_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "07e3a4c2c4238fc66c5e25ae99db2c57913d9f319def103774c2f108961a1e43", +"TTui2_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "07e3a4c2c4238fc66c5e25ae99db2c57913d9f319def103774c2f108961a1e43", +"TTui2_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "07e3a4c2c4238fc66c5e25ae99db2c57913d9f319def103774c2f108961a1e43", +"TTui2_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "07e3a4c2c4238fc66c5e25ae99db2c57913d9f319def103774c2f108961a1e43", +"TTui2_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "a0c216bfc973661eb9a450a68df85bb9b7723c2072c6bc27103eb7403e12e7b9", +"TTui2_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "a0c216bfc973661eb9a450a68df85bb9b7723c2072c6bc27103eb7403e12e7b9", +"TTui2_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "a0c216bfc973661eb9a450a68df85bb9b7723c2072c6bc27103eb7403e12e7b9", +"TTui2_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "a0c216bfc973661eb9a450a68df85bb9b7723c2072c6bc27103eb7403e12e7b9", "TTui2_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "493db455a2a705880cea9800818345de8dc4086ac1d0f92bb8f21c5eed094084", "TTui2_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "493db455a2a705880cea9800818345de8dc4086ac1d0f92bb8f21c5eed094084", "TTui2_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "493db455a2a705880cea9800818345de8dc4086ac1d0f92bb8f21c5eed094084", @@ -2006,7 +2011,7 @@ "TTui2_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "648c476388bd5537898246c2365fa0388bfb5767e7a5536c5c01b44b3c172a1e", "TTui2_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "648c476388bd5537898246c2365fa0388bfb5767e7a5536c5c01b44b3c172a1e", "TTui2_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "489a76a3d2f6bfdf8d3b728f32b0992a22237483a56bfb2f6d8148c9c2a71e00", -"TTui2_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "a1692902a90ff9bf6f17ba548a68a081b5daf72b46ef2fd9e3adef84748853b9", +"TTui2_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "a085d0805c77faec60cef45951a2994f42c13ef49040ca5979f3c1c731e09e60", "TTui2_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "c46cfa45370d6380bff5b7f4276da57914f653a69c11eceaca58ae76367d203a", "TTui2_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "489a76a3d2f6bfdf8d3b728f32b0992a22237483a56bfb2f6d8148c9c2a71e00", "TTui2_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "b043f6dafcfa6f2d023e7bdce54b79391f46906ccf24d5adaa575a998906345b", @@ -2017,7 +2022,7 @@ "TTui2_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "9d99f81fc2623cc26dfe8b44d9161d62560dfa4cb226d945e523c1970d2b82c9", "TTui2_bitcoin-test_signtx_replacement.py::test_tx_meld": "2fe1ef0f26b48435b147b9f34ec6760817d6d3df3fba513f7c9b010d76c67bb0", "TTui2_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "7971479598aa797aeb2735c399abaa0a4ea36ac9e585fc42bde569dacead8508", -"TTui2_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "3e737aef00ff9f034abce64594ba6b9cad35b0b1e1c333497a915d857691441e", +"TTui2_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "2a47a2d6b89aac7fed76d05c50e994ab6182f7fb058581dcbd7fa59378fe386d", "TTui2_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "de818e8db2188dbff208548a22188cac3dc6ea8bd36d8b6b461bac0bab0830a2", "TTui2_bitcoin-test_signtx_segwit.py::test_send_p2sh": "1fd736fe6001a146213ace109f521f325df6e58948dd97aaedb846837d1a02b4", "TTui2_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "82c0f7e8ed54ef93146d6eada20ec5a2a3d097c15ccff6942a1687d682c538ed", @@ -2041,21 +2046,21 @@ "TTui2_bitcoin-test_signtx_taproot.py::test_send_mixed": "b95105e2678b621a06ffe3c126921a5d89e655b11957e8c76c192b3ce645cf39", "TTui2_bitcoin-test_signtx_taproot.py::test_send_p2tr": "fcc17bdfe319aa8f27f01bdb9660b0a8d1dca5a0be74e353bf13a3c2eef39328", "TTui2_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "8c1992cb4bed58e0faad9f1a24269866e2d5e5c12106a57c3b8637edd6554e92", -"TTui2_bitcoin-test_verifymessage.py::test_message_grs": "2064ccc2b13792fad9d0b5fe7f440dde0c4008e9bdb97836d6daa25abdd3b1f8", -"TTui2_bitcoin-test_verifymessage.py::test_message_long": "0446d62f1064b475ea5dc598bfb250c49709a67994907b26a4a66f61ae31c7aa", -"TTui2_bitcoin-test_verifymessage.py::test_message_testnet": "23aee4d0b7fa79b8a56a7e53ae96fe8f9d27e9bcdf84b5f5aae1211115e2c2a4", -"TTui2_bitcoin-test_verifymessage.py::test_message_verify": "310f47fb628516589cd39d97f13bde039cdfdb992b89c62f1c666a17706bff8c", -"TTui2_bitcoin-test_verifymessage.py::test_message_verify_bcash": "f7fb516ce7576e780ae4f5030463b1227a0d10f01a5914271e318c067dabebe8", -"TTui2_bitcoin-test_verifymessage.py::test_verify_bitcoind": "869ae959ead3e36698433dd30d156d2ffe54575c284d77d8560ddf5a4457e6af", -"TTui2_bitcoin-test_verifymessage.py::test_verify_utf": "1a8dd96912552e04bf75b62d88b13de3dbb57d407ee09bdd6985af2d685912d1", -"TTui2_bitcoin-test_verifymessage_segwit.py::test_message_long": "97804ef81ded061de6f76a457527fac2b4c96386367ca825a79fcb01c327d02d", -"TTui2_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "352f3c5bd780c1329b8f2937b49412305a2693ceb883654a2822728d2d592380", -"TTui2_bitcoin-test_verifymessage_segwit.py::test_message_verify": "146464ced13055910c19c300ec58bfdd17c85edbb122c83913bc723fc434e55e", -"TTui2_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "c70865e1f65bb18b4162fe642761ae58cf7288b1e84b936b45202d97765005bb", -"TTui2_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "e66a4c9e8879bf226b247a5e7ecf18b5ca9121aacc6c8a30febb3493b0591f9b", -"TTui2_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "4da0a753f420e21069b1a014e1d91f37ef9804af8c68345ec324b417c5255171", -"TTui2_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "4b865e4f25e98c0acabeeff41941715b208a9abedd2eb6208e2e8932f4025e5d", -"TTui2_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "f865e399a4b598010714a49658846a39a42c16dc321e1672a9d2337ab0d342da", +"TTui2_bitcoin-test_verifymessage.py::test_message_grs": "d9789e293d71b497430538be4f3635c6ec96cd332c30c05676abd390300b2e98", +"TTui2_bitcoin-test_verifymessage.py::test_message_long": "041181a31c9232d8706eca4541fe5faa264acc43c2d8a6873f382bd67b04f1a6", +"TTui2_bitcoin-test_verifymessage.py::test_message_testnet": "cf5fc04107faef7b618732d49ed9a9507889b258bc09990b78e32f3e4af396d5", +"TTui2_bitcoin-test_verifymessage.py::test_message_verify": "b923b1a2b88838808460bf38b15bf805841e280a90723a40a7f47b6306628cd2", +"TTui2_bitcoin-test_verifymessage.py::test_message_verify_bcash": "2ded468d30dde1494fb3f4ad7dab465c17335f94b59bef11713091389fd77e50", +"TTui2_bitcoin-test_verifymessage.py::test_verify_bitcoind": "e924ff7a3008c7dca542e36f0026dd418352fb6910ab48dfadc237c36b46ddd3", +"TTui2_bitcoin-test_verifymessage.py::test_verify_utf": "8cc659614a453c5643e9c211fb070d58e93b472ebe45096c219058170caa3cd2", +"TTui2_bitcoin-test_verifymessage_segwit.py::test_message_long": "46cbf98f28bb01e4d92acc2755c24bed3616cbf9a189bb9ca0d60cd0af710d8a", +"TTui2_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "ee70f4a3410c5cb37a351587b38a625b489a801be0f5040fc3649c9b0fb7544d", +"TTui2_bitcoin-test_verifymessage_segwit.py::test_message_verify": "b934503757f3974319ce43f4f9fad5e9d48291c17892b939bd4548ca122f4f76", +"TTui2_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "5daff0a6e6df88737ca1b479afd87df2e06e6e2233b86d9da123e2af8a1cecc3", +"TTui2_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "00c2b350d781b89b7a6df32b337798d85f54b76dd32c1faadd868cf90bd8249e", +"TTui2_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "dd9c50a6fb92ca728fe254111ef0a2d0392cc81ac21dd1ebc009314f24f07d0e", +"TTui2_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "dfc35dc605f15bb3f391ae5c10870b3358ea49d1aea02ff9f3607798c15ca667", +"TTui2_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "91b659369711ecee12e7976ad56f6f1b8b748871be5f0d864b38c626109b5ce0", "TTui2_bitcoin-test_zcash.py::test_external_presigned": "31a32b4d4a0cabb6a61a31083191c7c165700d0c69842e02f16d3aca6498a986", "TTui2_bitcoin-test_zcash.py::test_one_one_fee_sapling": "5cc295dd9530834f57114bf999912fd53559c900ea90340438d17f4c646f8f00", "TTui2_bitcoin-test_zcash.py::test_spend_old_versions": "dba154053210d0b9a38299e0fc33b09aa5bb0b1a9b2973aaab610feb2cdb6af1", @@ -2139,208 +2144,208 @@ "TTui2_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "95a40f79fa7ffceb10e89b513c203b4937112b8d764cdba3c1df538355dc129c", "TTui2_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "95a40f79fa7ffceb10e89b513c203b4937112b8d764cdba3c1df538355dc129c", "TTui2_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "95a40f79fa7ffceb10e89b513c203b4937112b8d764cdba3c1df538355dc129c", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "f9427d422ec8fc050f50411797f3f465db62cc716357ff9a0d7a0adaf24d258e", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "f9427d422ec8fc050f50411797f3f465db62cc716357ff9a0d7a0adaf24d258e", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "7e2881e5b84c557a8b9d8b7b2efdf8be488db0c550eb5ab51e313ba12f136bbe", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "f9427d422ec8fc050f50411797f3f465db62cc716357ff9a0d7a0adaf24d258e", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "7e2881e5b84c557a8b9d8b7b2efdf8be488db0c550eb5ab51e313ba12f136bbe", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "7e2881e5b84c557a8b9d8b7b2efdf8be488db0c550eb5ab51e313ba12f136bbe", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_catalyst_registration]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "7e2881e5b84c557a8b9d8b7b2efdf8be488db0c550eb5ab51e313ba12f136bbe", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "a2bd55d3756d8be0583e95e9c6c92e6324a3e538eb816d8833fb34c38aa8910d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "5b86dfd5380a6ec553b8ade069f8bddabe96c836e2e9e837249d9ec3158234d5", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "a2bd55d3756d8be0583e95e9c6c92e6324a3e538eb816d8833fb34c38aa8910d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "a2bd55d3756d8be0583e95e9c6c92e6324a3e538eb816d8833fb34c38aa8910d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "5b86dfd5380a6ec553b8ade069f8bddabe96c836e2e9e837249d9ec3158234d5", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "2e0f33cd226d5ba5b791b756cb81addb2f9add683f98fa4df76d21b45e1e469b", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "2e0f33cd226d5ba5b791b756cb81addb2f9add683f98fa4df76d21b45e1e469b", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "8c673886c292f96636e1e830e38e46258d32eadb67033ac990719329b594fa20", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "1046e4587492a3ca32656c7f772db75462abd816d36f60e33022a783a8f155ea", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "1046e4587492a3ca32656c7f772db75462abd816d36f60e33022a783a8f155ea", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "1046e4587492a3ca32656c7f772db75462abd816d36f60e33022a783a8f155ea", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "1046e4587492a3ca32656c7f772db75462abd816d36f60e33022a783a8f155ea", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "1046e4587492a3ca32656c7f772db75462abd816d36f60e33022a783a8f155ea", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "2e0f33cd226d5ba5b791b756cb81addb2f9add683f98fa4df76d21b45e1e469b", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "f71fe6d2af5c42cd6c75af8249deb3f14494ffa33e523469037b49cb13311991", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "405717cb6434ec914f38abe90171ec66ac07199e925ac88e99a41276c5033b65", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "a2bd55d3756d8be0583e95e9c6c92e6324a3e538eb816d8833fb34c38aa8910d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "405717cb6434ec914f38abe90171ec66ac07199e925ac88e99a41276c5033b65", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "f71fe6d2af5c42cd6c75af8249deb3f14494ffa33e523469037b49cb13311991", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "07f9fd1a70fee3a30df134ca83965d4b45a5ddc7a54fa3e4e0f221d12911ca6d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "07f9fd1a70fee3a30df134ca83965d4b45a5ddc7a54fa3e4e0f221d12911ca6d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "07f9fd1a70fee3a30df134ca83965d4b45a5ddc7a54fa3e4e0f221d12911ca6d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "07f9fd1a70fee3a30df134ca83965d4b45a5ddc7a54fa3e4e0f221d12911ca6d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "07f9fd1a70fee3a30df134ca83965d4b45a5ddc7a54fa3e4e0f221d12911ca6d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "07f9fd1a70fee3a30df134ca83965d4b45a5ddc7a54fa3e4e0f221d12911ca6d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "07f9fd1a70fee3a30df134ca83965d4b45a5ddc7a54fa3e4e0f221d12911ca6d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "07f9fd1a70fee3a30df134ca83965d4b45a5ddc7a54fa3e4e0f221d12911ca6d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "07f9fd1a70fee3a30df134ca83965d4b45a5ddc7a54fa3e4e0f221d12911ca6d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "07f9fd1a70fee3a30df134ca83965d4b45a5ddc7a54fa3e4e0f221d12911ca6d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "07f9fd1a70fee3a30df134ca83965d4b45a5ddc7a54fa3e4e0f221d12911ca6d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "07f9fd1a70fee3a30df134ca83965d4b45a5ddc7a54fa3e4e0f221d12911ca6d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "07f9fd1a70fee3a30df134ca83965d4b45a5ddc7a54fa3e4e0f221d12911ca6d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "07f9fd1a70fee3a30df134ca83965d4b45a5ddc7a54fa3e4e0f221d12911ca6d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "07f9fd1a70fee3a30df134ca83965d4b45a5ddc7a54fa3e4e0f221d12911ca6d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "c970297187d1f474ecac74e01ccf3bd878f1746725990dc01e3dbd298013e6e2", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "c970297187d1f474ecac74e01ccf3bd878f1746725990dc01e3dbd298013e6e2", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "c970297187d1f474ecac74e01ccf3bd878f1746725990dc01e3dbd298013e6e2", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "07f9fd1a70fee3a30df134ca83965d4b45a5ddc7a54fa3e4e0f221d12911ca6d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "52934629dcd68007bbb0858710eaabd237230621c2b7de6239a2b371f663fc8b", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "52934629dcd68007bbb0858710eaabd237230621c2b7de6239a2b371f663fc8b", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "6a769e7d8165775a8c90b76a83517268aaf55399b8ce21e67a453f28e3c9e1c9", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "52934629dcd68007bbb0858710eaabd237230621c2b7de6239a2b371f663fc8b", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "07f9fd1a70fee3a30df134ca83965d4b45a5ddc7a54fa3e4e0f221d12911ca6d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "07f9fd1a70fee3a30df134ca83965d4b45a5ddc7a54fa3e4e0f221d12911ca6d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "07f9fd1a70fee3a30df134ca83965d4b45a5ddc7a54fa3e4e0f221d12911ca6d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "f71fe6d2af5c42cd6c75af8249deb3f14494ffa33e523469037b49cb13311991", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "f71fe6d2af5c42cd6c75af8249deb3f14494ffa33e523469037b49cb13311991", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "f71fe6d2af5c42cd6c75af8249deb3f14494ffa33e523469037b49cb13311991", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "f71fe6d2af5c42cd6c75af8249deb3f14494ffa33e523469037b49cb13311991", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "f71fe6d2af5c42cd6c75af8249deb3f14494ffa33e523469037b49cb13311991", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "52934629dcd68007bbb0858710eaabd237230621c2b7de6239a2b371f663fc8b", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "52934629dcd68007bbb0858710eaabd237230621c2b7de6239a2b371f663fc8b", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "8bff4c04ea01e21cb9c332d32478f1bce1053e0ac018685a977634b47514fe13", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "c99bd98c07a059342d4445a925cf1c59e22779a758a7934145e2a46e52d76f98", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "f71fe6d2af5c42cd6c75af8249deb3f14494ffa33e523469037b49cb13311991", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "0898d3ae371236b252fd04e527bf299e556ee3bc7296883b96a1f6e268874f06", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "0898d3ae371236b252fd04e527bf299e556ee3bc7296883b96a1f6e268874f06", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_catalyst_registration]": "f71fe6d2af5c42cd6c75af8249deb3f14494ffa33e523469037b49cb13311991", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "3290b3e7d3ff1dd2ca6f7b2e4a03e631ec7167666da0ce4daccd5aa458d67ca4", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "f71fe6d2af5c42cd6c75af8249deb3f14494ffa33e523469037b49cb13311991", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "f71fe6d2af5c42cd6c75af8249deb3f14494ffa33e523469037b49cb13311991", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "8906296086070678a4726ba8aad5912f44de37adc9ff0871506767f014ba03ce", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "f71fe6d2af5c42cd6c75af8249deb3f14494ffa33e523469037b49cb13311991", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "f71fe6d2af5c42cd6c75af8249deb3f14494ffa33e523469037b49cb13311991", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "f71fe6d2af5c42cd6c75af8249deb3f14494ffa33e523469037b49cb13311991", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "f71fe6d2af5c42cd6c75af8249deb3f14494ffa33e523469037b49cb13311991", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "a2bd55d3756d8be0583e95e9c6c92e6324a3e538eb816d8833fb34c38aa8910d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "a2bd55d3756d8be0583e95e9c6c92e6324a3e538eb816d8833fb34c38aa8910d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "52934629dcd68007bbb0858710eaabd237230621c2b7de6239a2b371f663fc8b", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "a2bd55d3756d8be0583e95e9c6c92e6324a3e538eb816d8833fb34c38aa8910d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "a2bd55d3756d8be0583e95e9c6c92e6324a3e538eb816d8833fb34c38aa8910d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "a2bd55d3756d8be0583e95e9c6c92e6324a3e538eb816d8833fb34c38aa8910d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "a2bd55d3756d8be0583e95e9c6c92e6324a3e538eb816d8833fb34c38aa8910d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "a2bd55d3756d8be0583e95e9c6c92e6324a3e538eb816d8833fb34c38aa8910d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "a2bd55d3756d8be0583e95e9c6c92e6324a3e538eb816d8833fb34c38aa8910d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "a2bd55d3756d8be0583e95e9c6c92e6324a3e538eb816d8833fb34c38aa8910d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "a2bd55d3756d8be0583e95e9c6c92e6324a3e538eb816d8833fb34c38aa8910d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "a2bd55d3756d8be0583e95e9c6c92e6324a3e538eb816d8833fb34c38aa8910d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "f71fe6d2af5c42cd6c75af8249deb3f14494ffa33e523469037b49cb13311991", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "f71fe6d2af5c42cd6c75af8249deb3f14494ffa33e523469037b49cb13311991", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "f71fe6d2af5c42cd6c75af8249deb3f14494ffa33e523469037b49cb13311991", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "f71fe6d2af5c42cd6c75af8249deb3f14494ffa33e523469037b49cb13311991", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "f71fe6d2af5c42cd6c75af8249deb3f14494ffa33e523469037b49cb13311991", "TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "07f9fd1a70fee3a30df134ca83965d4b45a5ddc7a54fa3e4e0f221d12911ca6d", "TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "07f9fd1a70fee3a30df134ca83965d4b45a5ddc7a54fa3e4e0f221d12911ca6d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "07f9fd1a70fee3a30df134ca83965d4b45a5ddc7a54fa3e4e0f221d12911ca6d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "52934629dcd68007bbb0858710eaabd237230621c2b7de6239a2b371f663fc8b", "TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", "TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", "TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "f71fe6d2af5c42cd6c75af8249deb3f14494ffa33e523469037b49cb13311991", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "f71fe6d2af5c42cd6c75af8249deb3f14494ffa33e523469037b49cb13311991", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "f71fe6d2af5c42cd6c75af8249deb3f14494ffa33e523469037b49cb13311991", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "52934629dcd68007bbb0858710eaabd237230621c2b7de6239a2b371f663fc8b", "TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "52934629dcd68007bbb0858710eaabd237230621c2b7de6239a2b371f663fc8b", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "52934629dcd68007bbb0858710eaabd237230621c2b7de6239a2b371f663fc8b", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "1046e4587492a3ca32656c7f772db75462abd816d36f60e33022a783a8f155ea", "TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", "TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "2e0f33cd226d5ba5b791b756cb81addb2f9add683f98fa4df76d21b45e1e469b", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "2e0f33cd226d5ba5b791b756cb81addb2f9add683f98fa4df76d21b45e1e469b", "TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "2e0f33cd226d5ba5b791b756cb81addb2f9add683f98fa4df76d21b45e1e469b", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "1046e4587492a3ca32656c7f772db75462abd816d36f60e33022a783a8f155ea", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "1046e4587492a3ca32656c7f772db75462abd816d36f60e33022a783a8f155ea", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "1046e4587492a3ca32656c7f772db75462abd816d36f60e33022a783a8f155ea", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "1046e4587492a3ca32656c7f772db75462abd816d36f60e33022a783a8f155ea", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "1046e4587492a3ca32656c7f772db75462abd816d36f60e33022a783a8f155ea", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "1046e4587492a3ca32656c7f772db75462abd816d36f60e33022a783a8f155ea", "TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "2e0f33cd226d5ba5b791b756cb81addb2f9add683f98fa4df76d21b45e1e469b", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "2e0f33cd226d5ba5b791b756cb81addb2f9add683f98fa4df76d21b45e1e469b", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "2e0f33cd226d5ba5b791b756cb81addb2f9add683f98fa4df76d21b45e1e469b", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "1046e4587492a3ca32656c7f772db75462abd816d36f60e33022a783a8f155ea", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "3290b3e7d3ff1dd2ca6f7b2e4a03e631ec7167666da0ce4daccd5aa458d67ca4", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "7eaaee4c95d9a61eacd86762d1798339d169f80b558a5c9cefe91b5e55e57cfb", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "07f9fd1a70fee3a30df134ca83965d4b45a5ddc7a54fa3e4e0f221d12911ca6d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "a2bd55d3756d8be0583e95e9c6c92e6324a3e538eb816d8833fb34c38aa8910d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "52934629dcd68007bbb0858710eaabd237230621c2b7de6239a2b371f663fc8b", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "52934629dcd68007bbb0858710eaabd237230621c2b7de6239a2b371f663fc8b", "TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "a2bd55d3756d8be0583e95e9c6c92e6324a3e538eb816d8833fb34c38aa8910d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "a2bd55d3756d8be0583e95e9c6c92e6324a3e538eb816d8833fb34c38aa8910d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "07f9fd1a70fee3a30df134ca83965d4b45a5ddc7a54fa3e4e0f221d12911ca6d", "TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "52934629dcd68007bbb0858710eaabd237230621c2b7de6239a2b371f663fc8b", "TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "52934629dcd68007bbb0858710eaabd237230621c2b7de6239a2b371f663fc8b", "TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", "TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "52934629dcd68007bbb0858710eaabd237230621c2b7de6239a2b371f663fc8b", "TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", "TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "52934629dcd68007bbb0858710eaabd237230621c2b7de6239a2b371f663fc8b", "TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "52934629dcd68007bbb0858710eaabd237230621c2b7de6239a2b371f663fc8b", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "9ef42749cd338e0189d8e99fabe7f82f0c19d7211ec4ed44bb3584e3ac65af09", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "f71fe6d2af5c42cd6c75af8249deb3f14494ffa33e523469037b49cb13311991", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "f71fe6d2af5c42cd6c75af8249deb3f14494ffa33e523469037b49cb13311991", "TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", "TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-64274ac4": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_catalyst_registration-11533421": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", -"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-64274ac4": "f71fe6d2af5c42cd6c75af8249deb3f14494ffa33e523469037b49cb13311991", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_catalyst_registration-11533421": "f71fe6d2af5c42cd6c75af8249deb3f14494ffa33e523469037b49cb13311991", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "52934629dcd68007bbb0858710eaabd237230621c2b7de6239a2b371f663fc8b", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "1046e4587492a3ca32656c7f772db75462abd816d36f60e33022a783a8f155ea", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "f71fe6d2af5c42cd6c75af8249deb3f14494ffa33e523469037b49cb13311991", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "07f9fd1a70fee3a30df134ca83965d4b45a5ddc7a54fa3e4e0f221d12911ca6d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "a2bd55d3756d8be0583e95e9c6c92e6324a3e538eb816d8833fb34c38aa8910d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "a2bd55d3756d8be0583e95e9c6c92e6324a3e538eb816d8833fb34c38aa8910d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "a2bd55d3756d8be0583e95e9c6c92e6324a3e538eb816d8833fb34c38aa8910d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "a2bd55d3756d8be0583e95e9c6c92e6324a3e538eb816d8833fb34c38aa8910d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "a2bd55d3756d8be0583e95e9c6c92e6324a3e538eb816d8833fb34c38aa8910d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "a2bd55d3756d8be0583e95e9c6c92e6324a3e538eb816d8833fb34c38aa8910d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "a2bd55d3756d8be0583e95e9c6c92e6324a3e538eb816d8833fb34c38aa8910d", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "220d08082ca2fdaa6a0d690230df063c8eff2caf09d1774eda271fd63a380475", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "08f9331d5e2d3863fb850475efd85bb70c069d4bec57d5ba3e34d1ca8c3bbbae", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "737076e18dd20e11b6e0fcdc114ac08a35b71f18320d8e2b6e7b55c8aee7ddf9", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "c54ae51ab53104280b1082a3f6b333801434522530bc13971771886a66496dc9", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "47f45b994e7666a56c8ad812c2e2556a2a45ba0eb429c25c15d7ea86ef254486", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "40e8c9595433edc450a33f591532f936de98f9b0a9c7d87618e29d8f37c8201f", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "40e8c9595433edc450a33f591532f936de98f9b0a9c7d87618e29d8f37c8201f", +"TTui2_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "737076e18dd20e11b6e0fcdc114ac08a35b71f18320d8e2b6e7b55c8aee7ddf9", "TTui2_eos-test_get_public_key.py::test_eos_get_public_key": "37c6d89dee7834586e85363d526d3bc3a0255be62b69015aecd0aacaa0f2a161", "TTui2_eos-test_signtx.py::test_eos_signtx_buyram": "2368c134fe964d8ca92fde2d2e665c7822e32f7bf181ef943161f5385799c950", "TTui2_eos-test_signtx.py::test_eos_signtx_buyrambytes": "2368c134fe964d8ca92fde2d2e665c7822e32f7bf181ef943161f5385799c950", @@ -2368,17 +2373,17 @@ "TTui2_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "95a40f79fa7ffceb10e89b513c203b4937112b8d764cdba3c1df538355dc129c", "TTui2_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "95a40f79fa7ffceb10e89b513c203b4937112b8d764cdba3c1df538355dc129c", "TTui2_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "95a40f79fa7ffceb10e89b513c203b4937112b8d764cdba3c1df538355dc129c", -"TTui2_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "95a40f79fa7ffceb10e89b513c203b4937112b8d764cdba3c1df538355dc129c", -"TTui2_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "95a40f79fa7ffceb10e89b513c203b4937112b8d764cdba3c1df538355dc129c", -"TTui2_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "95a40f79fa7ffceb10e89b513c203b4937112b8d764cdba3c1df538355dc129c", -"TTui2_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "95a40f79fa7ffceb10e89b513c203b4937112b8d764cdba3c1df538355dc129c", -"TTui2_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "95a40f79fa7ffceb10e89b513c203b4937112b8d764cdba3c1df538355dc129c", -"TTui2_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "95a40f79fa7ffceb10e89b513c203b4937112b8d764cdba3c1df538355dc129c", -"TTui2_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "95a40f79fa7ffceb10e89b513c203b4937112b8d764cdba3c1df538355dc129c", -"TTui2_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "95a40f79fa7ffceb10e89b513c203b4937112b8d764cdba3c1df538355dc129c", -"TTui2_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "95a40f79fa7ffceb10e89b513c203b4937112b8d764cdba3c1df538355dc129c", -"TTui2_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", -"TTui2_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", +"TTui2_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "d956173e83f18021dfa4f78e474dccb865386e3ec02f2006b6e4886d5163029e", +"TTui2_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "1570f4edca1356df7222638dd3ee8ab12c42108b344a441556f9f1ce886d85a3", +"TTui2_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "724869011909189b15b70ff5a5cc1cd64de94f7cd6dc7b5ecd85fbe060693b2c", +"TTui2_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "30ccf9be3f61a51d98f98466edf73d9abb96d0082f2fd16d5d1ff4f4aef0fc20", +"TTui2_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "1f2abaead7069cb49e1f598cb7d806758f594cdacf09d502f5fdc8b0c45b4f78", +"TTui2_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "1919cc5d3979d8c664d740b06a104409dedb21c171b8d1243c1cd8bcc7bcdca8", +"TTui2_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "724869011909189b15b70ff5a5cc1cd64de94f7cd6dc7b5ecd85fbe060693b2c", +"TTui2_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "724869011909189b15b70ff5a5cc1cd64de94f7cd6dc7b5ecd85fbe060693b2c", +"TTui2_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "724869011909189b15b70ff5a5cc1cd64de94f7cd6dc7b5ecd85fbe060693b2c", +"TTui2_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "cb39f049291853a97887998967150c16c265c4c4d5de4c951732f12ebff82692", +"TTui2_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "4afa86262e681c00db09fa7883008d157b9f0c77477a75dd5144ded262900244", "TTui2_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "22c2edab04af9dc8873ccb7c6bfbe81461de85aa533e404b5a033b212772d0c3", "TTui2_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "fbec6c25222739d8a6c8f409d8ab854487cad7599cd5865a589dec653c0f357f", "TTui2_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "506eae7c9993b6bc2661697556e512ff5ee410004bf1e7317d24a4a4ce11d855", @@ -2387,15 +2392,15 @@ "TTui2_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "ac91923e18c748b4d6df32a85234cb4e9ab40bfbf9dddfee3ac9a23a21a89cc2", "TTui2_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "f6d2267cd8c1272239fc1c838c302761f37e59412616537fc2c3595e7922d837", "TTui2_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "9c527296750ac999679e0b5e6a55be4bd0e21ce0b1dfc7e8f168e34fd4c39bf2", -"TTui2_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "73884c1bb779c0651c3bf50103e06ba2c0ce6a93e9352403102d56f6bc634a10", -"TTui2_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "aa61dae57d0fe02c3649c95c0bacb21d25d307cb5adbf9ffd16ab6ee8c00f22c", -"TTui2_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "969f3358d3ad138a797993cdd39dc041992d5c17731d61585624bf0dc4024ae9", -"TTui2_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "7061ed972c14f5f0e2d953d2a2274cbc8c04af46648d7410f80dc85e954e0217", -"TTui2_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "a470a44658779b42f6740b38e6668f9f35e5aa27184a9a42bf81f326b79ddf5b", -"TTui2_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "44baa17a75bbcd36ecc26ac187b93bda0e85fc262ee8e08aaab1295efa07e215", -"TTui2_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "ccf8a842bb9c8353f92baa1590755fbcc47b72dfa4b17ecfcff2a6ff5545cb09", -"TTui2_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "16827e7b3782806296b972e6c079fa9af500c2b438cb95b218c9df706acf2cbb", -"TTui2_ethereum-test_sign_verify_message.py::test_verify_invalid": "73884c1bb779c0651c3bf50103e06ba2c0ce6a93e9352403102d56f6bc634a10", +"TTui2_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "918e6281f9265348aabf6b7308f02cf880649d442ba5b7b2ec8a721ba9cebdce", +"TTui2_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "84ce569e4fb2732e69f8fe1fcad512331f5210410db535d502309a0ccdafd431", +"TTui2_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "2ca9028817a8fbeb92b773335d682fb9fdc60e97c76cc7b59b58e2bb79b9a7f0", +"TTui2_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "ba8e670b066efe24f23f73e6781d698490ebdbd8d89a2cd2bc4691dedfa8c591", +"TTui2_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "fc34ebc1a523fa3634754cef55ccfa34d1f5e9b1862538acc164fde0b8471c6e", +"TTui2_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "bdcf67d7683efeb794e46b74f4d8bbdf7729b80921a1c3eedb22080c2ca1d104", +"TTui2_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "8964fc3f6bcd2c87917b1072c90236f26759d1001896ba282e6f189f231b7425", +"TTui2_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "50b3a55ef37800c3b0880ba8351a5aec227909d5e024c830d05d9d200c9c1940", +"TTui2_ethereum-test_sign_verify_message.py::test_verify_invalid": "918e6281f9265348aabf6b7308f02cf880649d442ba5b7b2ec8a721ba9cebdce", "TTui2_ethereum-test_signtx.py::test_data_streaming": "b97351ec13f0b5511911e40e0fd9a6958d9b26eb8c0d6eb2750ba5576cd85a56", "TTui2_ethereum-test_signtx.py::test_sanity_checks": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_ethereum-test_signtx.py::test_sanity_checks_eip1559": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", @@ -2458,7 +2463,7 @@ "TTui2_misc-test_msg_signidentity.py::test_sign": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_monero-test_getaddress.py::test_monero_getaddress": "415aa4667be5775d1b5b361688d3d171c95feffb860570421022af1df91223d2", "TTui2_monero-test_getwatchkey.py::test_monero_getwatchkey": "bf70b5c85f9a0b3e76600cee79a51fc737019251ac104cfa0a9a69544fca11e1", -"TTui2_nem-test_getaddress.py::test_nem_getaddress": "5879bc407bfb393a7bb691d55b52cd22d5247358e0c3f49e98636f7d73a75f42", +"TTui2_nem-test_getaddress.py::test_nem_getaddress": "884ee56462d35be935c07c83998ca133d2c93cf2ca197060aadf955ea1ed4de1", "TTui2_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_levy": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_properties": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", @@ -2469,9 +2474,9 @@ "TTui2_nem-test_signtx_others.py::test_nem_signtx_importance_transfer": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_nem-test_signtx_others.py::test_nem_signtx_provision_namespace": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_nem-test_signtx_transfers.py::test_nem_signtx_encrypted_payload": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", -"TTui2_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic": "2491e0b47ce4509b549cc402916f99832024737700b407ccb51e8f6cd5fa63bf", -"TTui2_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic_with_levy": "2491e0b47ce4509b549cc402916f99832024737700b407ccb51e8f6cd5fa63bf", -"TTui2_nem-test_signtx_transfers.py::test_nem_signtx_multiple_mosaics": "709a7db8f7c70bf31db8050f42512e43ad83be5fc3e5bd710b02e1288bc09890", +"TTui2_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic": "3b4c2d06098c29a528e5d886c7084a65977665dcccd0d1b195235c81c72e5e07", +"TTui2_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic_with_levy": "3b4c2d06098c29a528e5d886c7084a65977665dcccd0d1b195235c81c72e5e07", +"TTui2_nem-test_signtx_transfers.py::test_nem_signtx_multiple_mosaics": "d4a891636f2760d87b7e7b8f7c50c3bd5813ea56c93b8fe34c7c4c01ed38ad6e", "TTui2_nem-test_signtx_transfers.py::test_nem_signtx_simple": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_nem-test_signtx_transfers.py::test_nem_signtx_unknown_mosaic": "f32f3ae5971dc6d1407ec49a4225e3128c67cd1f6298ac588d9e2809a58496cb", "TTui2_nem-test_signtx_transfers.py::test_nem_signtx_xem_as_mosaic": "08add8db0fa244b5ac5b0ea459a210d6f897df57407351904c9f23d785818140", @@ -2480,9 +2485,9 @@ "TTui2_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", -"TTui2_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "6163bdd261809e749bcc2eed7882b994eae98b5db28a4a6c27ded2c0ecce4294", -"TTui2_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "6163bdd261809e749bcc2eed7882b994eae98b5db28a4a6c27ded2c0ecce4294", -"TTui2_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "6163bdd261809e749bcc2eed7882b994eae98b5db28a4a6c27ded2c0ecce4294", +"TTui2_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "fb6d1ba5b6f8b0c28d7c114a1cad2170029800a50cea1dce1b222b56c53d4169", +"TTui2_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "fb6d1ba5b6f8b0c28d7c114a1cad2170029800a50cea1dce1b222b56c53d4169", +"TTui2_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "fb6d1ba5b6f8b0c28d7c114a1cad2170029800a50cea1dce1b222b56c53d4169", "TTui2_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "8711e2fa6f7b301add7641e08ffb4bacf29bcd41530b1dd435fdbddb49b4bdf8", "TTui2_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "3919d9404e9f9a4880bd084edbfa02fbb04641008e04b83458633691e69bf239", @@ -2511,24 +2516,24 @@ "TTui2_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "4b94af756dc9288eca587760a32e66abcac622da498d6a9b5bfb5f965f295d2f", "TTui2_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "7a5048ee96f76bb2e2a6d64fd89dfc22eb6fe792eaa769058249d0f552ee59d3", "TTui2_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "7a5048ee96f76bb2e2a6d64fd89dfc22eb6fe792eaa769058249d0f552ee59d3", -"TTui2_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "4f4ba72d808efd3b1c90493dc287fe22d64f1fa28d1b055c05b4b13bb662946e", -"TTui2_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "1d2e196f1f194c41aa4ddc6a5968fea311583f2b1447812fee59410fd19aaca0", -"TTui2_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "b99b45445bb22a6a2954c87c895770580e069d61eebd5bb13f0e7411d69b692e", -"TTui2_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "19654fc05ca617863fd0788e34bb57a0c209d863f780f16e4ecb952446ca6409", -"TTui2_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "536cf8b5905ed9e36b37bbef57567e3bfc0a48e192073d81e2bfce1da3cb8e03", -"TTui2_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "c36cf19489c96fc349d584d9cd3ba4f9ff86f16ad3d202d55dc0570a5b0b5b9e", +"TTui2_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "e858239e4efffb8c185c098c8c7a0b9ca19d4b3c4836ee43b6db926abf7918bc", +"TTui2_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "bd1f14226b2b3b778dc146ab8e4d0b0535657649330ca5dd3efa4c00a70ecb24", +"TTui2_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "9f0568a1782a4d392cf64c2f4478b6fadc6ffcaea8a3c706c04ba798d2fa5195", +"TTui2_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "f8cbc0efdbfbaef7bfdcf84d14a798189a8e5f8d80d5e64c2b0f6fd43abcfe52", +"TTui2_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "00ffcd324fa349282cd08524722e92b0b8469739259f66b8de30182dba6f6607", +"TTui2_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "77797bb5a33f8ffafb778b85a1a5dd2f59ec651c03e71c681656118ea15ed0cc", "TTui2_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "e34eb8420d9e74571c36e39352ba2308d90a021b2f5ef2e78afb167764ea931d", -"TTui2_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "23bf8446c0c9b9f948b9734b0cb4062d004e6b7b02b950e557ad34e47b4b3889", -"TTui2_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "44f01af26a3a1a6abde60a60de781b69bab9d7cf41c50ca16522e423e01da9a5", -"TTui2_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "32ce727d1add7d2150296a10332250f768544a088e35a123091c6a5ff7d8b549", -"TTui2_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "79e75a5a75aaae9c05f598e5ef273734d8de3b9416bd747a9d58326d57090b1f", -"TTui2_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "26df7da23999be182499ccafc8252513afdb0d0e288adbe37b393cf80a7e0662", -"TTui2_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "92a0fd39f25845744194dc1ae04d5eebf268f658161ab7e685b4179d2c092e82", -"TTui2_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "38eacc7bb14cdbd21bcc971cd2916f288b7929bd7b4e9cf2d49c66a81b981126", -"TTui2_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "92a0fd39f25845744194dc1ae04d5eebf268f658161ab7e685b4179d2c092e82", -"TTui2_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "38eacc7bb14cdbd21bcc971cd2916f288b7929bd7b4e9cf2d49c66a81b981126", -"TTui2_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "38eacc7bb14cdbd21bcc971cd2916f288b7929bd7b4e9cf2d49c66a81b981126", +"TTui2_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "c9791eaa949c37a6996ec08677b1aff00dd294097c62cc51b905e115fd32cdb3", +"TTui2_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "a21078e36aa4b49377ef3fc1ad6084f725eb3941608a03e1bc899dca828d07ad", +"TTui2_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "6818c19bba26ef8acecd87cadbe5bf678449a519e49cc365311708d91abe92be", +"TTui2_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "fad48c5d40c5df33cbf4abbb7695f6c22b490ab3f118cfdf3b64b2bc2936920f", +"TTui2_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "1c463175327e8a0286464e8c7165de3a1434b3c48e7f7b6ed47edfaa992bb039", +"TTui2_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "6dc1c0d4106d8a789a7eae973a3b768cb1a5383fdf42866e51516e67fd4a36ca", +"TTui2_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "78cd86e1e473e5cdd541840a657723f663d9294fc4fdc74af97274ea1b3939b8", +"TTui2_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "16fdec338958b038ecb96614cb8b47d5dcdd61bf1422e9dff8bfd8022fef1536", +"TTui2_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "e68ba714482d7d6239a4e4d43d890a3de340230c5618fc820b1c24027c87b72d", +"TTui2_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "146b4d7880fd9bd325da46d675ec4ee4f88e27916eba3198d911c3c4c6a5e29f", "TTui2_ripple-test_get_address.py::test_ripple_get_address": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_ripple-test_get_address.py::test_ripple_get_address_other": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", @@ -2610,34 +2615,34 @@ "TTui2_test_msg_applysettings.py::test_apply_settings_rotation": "5478c39f7e16f84a05456c30f3779b971f490a0305ef6685643ff827eb8965a0", "TTui2_test_msg_applysettings.py::test_experimental_features": "46cfceb61926077ce9a1e8e36102af5343b6ed19d6b4f5f50fca7a36ef579a47", "TTui2_test_msg_applysettings.py::test_label_too_long": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", -"TTui2_test_msg_applysettings.py::test_safety_checks": "72863043d2c43d34fe2bcb5f13dc53f54cb1ba734341e6e8ee48015f55a03530", -"TTui2_test_msg_backup_device.py::test_backup_bip39": "300ec4990b9b3dbc7f5ed8bffbd45294d975868ec43ff5713640f3ee7dd58f5c", -"TTui2_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "d7f617f5b3cc9f8b061e4e809ba96e4e0c398a94ec81d22e523769bc244e1620", -"TTui2_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "d7f617f5b3cc9f8b061e4e809ba96e4e0c398a94ec81d22e523769bc244e1620", -"TTui2_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "d7f617f5b3cc9f8b061e4e809ba96e4e0c398a94ec81d22e523769bc244e1620", -"TTui2_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "d7f617f5b3cc9f8b061e4e809ba96e4e0c398a94ec81d22e523769bc244e1620", +"TTui2_test_msg_applysettings.py::test_safety_checks": "8adb07fc5748b43a07e17cca83d97f49399937f5881c9d96eb2439fd3c95f7b5", +"TTui2_test_msg_backup_device.py::test_backup_bip39": "14daf97298adcf42a2b9d85eef18313ac91d75662ee80f6b177579f2ba55d2ae", +"TTui2_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "25713dd7f6a465462378340eae7653d28439bbabd54cf73ed04649c89f17d350", +"TTui2_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "a7c5dbc2c0369e91e946bb58aca3205121f4f04458f4c97183c0bd0b267bbef8", +"TTui2_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "ba33d497614804396de701895d633aa82b187a398eefeba6dc3a75443b673670", +"TTui2_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "c5500332d0754cf9cda7fa7a6da7fdeae033ca86bec030f82db5204a4e6d5fbc", "TTui2_test_msg_backup_device.py::test_interrupt_backup_fails": "a8b5bc47867681b496da4b7473cde4fa43027c01fb071c2b0dcf97804809643f", "TTui2_test_msg_backup_device.py::test_no_backup_fails": "ffc38ab2b61939fea6883a4805b2a4eb17a0be03afe0fed3b1cca492b50bb25c", "TTui2_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "8711e2fa6f7b301add7641e08ffb4bacf29bcd41530b1dd435fdbddb49b4bdf8", -"TTui2_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "7f9c7e2550d4e515c7c9785a11dfcc2ce583925024ea2f52c859dc96de681afc", -"TTui2_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "b09db51b47e37ec94d4a2d8b063e1ed0ad95cb11215f43acf10453aadf7b7bb2", +"TTui2_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "a6976555523e774fc1eb0ff1c192cdca6f6298cebc962a8d4b87d197a945af87", +"TTui2_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "e7a3858d2db160253ff3dbde450e5632fcc385ff529d586de28c49f0bf4ed059", "TTui2_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "8fd746c535ec5add348b76002a7936cc85c3206edbb59f225ad075912329452d", "TTui2_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "25eac0cb6ea45c0cb9cfcad3b4ac3ec33af9212a7b812370c8132ef9f14c7700", "TTui2_test_msg_changepin_t2.py::test_change_failed": "e207e2c62f6930e9e112d7a1a31b9a66c14580df8aac82ea40e2f243d987e878", -"TTui2_test_msg_changepin_t2.py::test_change_invalid_current": "9dce14051a6872469af20e9e8d03fe033908e32837df6a9dc31feb2db15bf398", -"TTui2_test_msg_changepin_t2.py::test_change_pin": "bef4ccf69a801159487ac24ff1218953e5592a6da618d4f10bcece03e42283cc", -"TTui2_test_msg_changepin_t2.py::test_remove_pin": "7770b9d9ba1c74f2184bf4413816fd20722996c12b9ed67880a45fd674cf8a16", +"TTui2_test_msg_changepin_t2.py::test_change_invalid_current": "5e04bc7ab716549d8aa70087cac37c8e1beafaad9929713a631e11845102d4e9", +"TTui2_test_msg_changepin_t2.py::test_change_pin": "2b891a989548802893f1b6a486e9751704a460ce4f59b65b39315318e11171f2", +"TTui2_test_msg_changepin_t2.py::test_remove_pin": "0483000d2760100596744b4270119860925f767028dfc6453141d4279fadb468", "TTui2_test_msg_changepin_t2.py::test_set_failed": "391b309cadaefcaab9086f7e003faec88b7e38c13f2738b5ad1aa4bfd5d89566", -"TTui2_test_msg_changepin_t2.py::test_set_pin": "8240ad8ff105e7cbc3e01e3cc917b55b177f3a7e67643e76678d49f92e7b0a04", +"TTui2_test_msg_changepin_t2.py::test_set_pin": "9fa58d0b6e5dcaa581f7bbccc4e6a84c4de732200c2bc8465b83a79beceb55d5", "TTui2_test_msg_loaddevice.py::test_load_device_1": "eeb5afb34b4bbf42b8c635fdd34bae5c1e3693facb16e6d64e629746612a2c3f", "TTui2_test_msg_loaddevice.py::test_load_device_2": "a95020926a62b4078cb0034f6e7a772e49fc42121c9197b534437e26c306a994", "TTui2_test_msg_loaddevice.py::test_load_device_slip39_advanced": "eeb5afb34b4bbf42b8c635fdd34bae5c1e3693facb16e6d64e629746612a2c3f", "TTui2_test_msg_loaddevice.py::test_load_device_slip39_basic": "eeb5afb34b4bbf42b8c635fdd34bae5c1e3693facb16e6d64e629746612a2c3f", "TTui2_test_msg_loaddevice.py::test_load_device_utf": "7eddfcc018eb3b5847e2617b1a9495632430ca5494f69063082a5063c5702dcf", "TTui2_test_msg_ping.py::test_ping": "9b44725459426439bc27f2cf72ee926ab7146f3ee1236d197382524cdf9a89a1", -"TTui2_test_msg_sd_protect.py::test_enable_disable": "1e64e5d08faac781f2bbba45b114a588c8a63d5a1865deaa0bc11c67ae891ea9", -"TTui2_test_msg_sd_protect.py::test_refresh": "d295a23bfc9b0fdef75d6732a5dd7fea7059a05fc566c599eddef75dfc05fcbb", -"TTui2_test_msg_sd_protect.py::test_wipe": "d6e2c4224f6d6970c9339bb29c08f8e88308fcfd9ef6bac2cd6f56b7a520747a", +"TTui2_test_msg_sd_protect.py::test_enable_disable": "a3bb336df845857ea89e764b163a9e485c77747ba4651a69d65887a202dc9a98", +"TTui2_test_msg_sd_protect.py::test_refresh": "50ee89a9faeb09e370fb2cecab9a4621f775d3b9646a86a6f20af8e451fd8edf", +"TTui2_test_msg_sd_protect.py::test_wipe": "fabc6ec862992e54b68587631d23d7d38137c26ebae53c096463239cf1f81d4a", "TTui2_test_msg_wipedevice.py::test_autolock_not_retained": "5200f217377bac4a795e1d5bb5963d4bb03a0ec6875a3272faca2572f8c7da2e", "TTui2_test_msg_wipedevice.py::test_wipe_device": "36fd19373828ac579ae2e0eaf34c050ac9ea95596cfe38c447737acba86ec706", "TTui2_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "68e7d02ee3038fa20f0ccc226abdc29c422aa0d3b0c54533869276cd08a7a5b8", @@ -2649,7 +2654,7 @@ "TTui2_test_pin.py::test_incorrect_pin_t2": "cecd9cc23e1fab56f7df9c0a88b309f5fdd9f29ef97e0f5ba0b808cea2d11759", "TTui2_test_pin.py::test_no_protection": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", "TTui2_test_protection_levels.py::test_apply_settings": "294a58f6e0222746f27bdf80014de14cf0b2d298bf806456ee94fd814e301cba", -"TTui2_test_protection_levels.py::test_change_pin_t2": "733e6e94ad06fdb8f270a0bc50ba613de7fd40cff2f764f4828f4ffd7c3c285a", +"TTui2_test_protection_levels.py::test_change_pin_t2": "7ab1870bc3c960843fc68c0c7f2541ba8d93a56bc27a2e941e7b4a1668fa754e", "TTui2_test_protection_levels.py::test_get_address": "ef09d088bf4ca767162d5017748158bb8dda9849ccb0bf9ca5acf32b872e260c", "TTui2_test_protection_levels.py::test_get_entropy": "7eadf62627e7a2c5a69b94c72eb4daca0153afb93ab8a12fd85d0d4ddc0a5a1d", "TTui2_test_protection_levels.py::test_get_public_key": "ef09d088bf4ca767162d5017748158bb8dda9849ccb0bf9ca5acf32b872e260c", @@ -2661,9 +2666,9 @@ "TTui2_test_protection_levels.py::test_sign_message": "08fd8f35609c8a8f18a32e8bfa58adff9e303d6479353d2047b6e2ea44234fa1", "TTui2_test_protection_levels.py::test_signtx": "e6befc1421d1794a362decfcae6bfe6342bd23335b191afea4f1f68cf7f27175", "TTui2_test_protection_levels.py::test_unlocked": "ed7d5e2c6bac6b7e1ea4f23e8a91a1337e9bb6a03e093d69fb16df686f2fe68a", -"TTui2_test_protection_levels.py::test_verify_message_t2": "23efc0636e09bed8a73ac25ec6f760adbee906e777833c140d12355248959927", +"TTui2_test_protection_levels.py::test_verify_message_t2": "bd0711454876fec517714c0203c088c35c339dab6aaaaf19b6cc19b4c4424571", "TTui2_test_protection_levels.py::test_wipe_device": "40fdf3dafe49468bf8f948f36aa510927016f4803c1fb2d1d170fc40dff5c052", -"TTui2_test_sdcard.py::test_sd_format": "53a16049a6ab7df7e5eb63f748e0e449f33b82013373ab8658238f9ac13dd3e3", +"TTui2_test_sdcard.py::test_sd_format": "1702d52626aff6ee829ef2a20fed7df55fe9fdb0489eca10af16d08de8e08d6d", "TTui2_test_sdcard.py::test_sd_no_format": "e48ac8dc3f81340d89746a9a6bc2b89f8ebce54568c4c1805e626178ff1c509c", "TTui2_test_sdcard.py::test_sd_protect_unlock": "3ccb135f2a39a727be85f45ce5472c3c7439792239f990264f78848e851cd56d", "TTui2_test_session.py::test_cannot_resume_ended_session": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1", @@ -2708,5 +2713,6 @@ "TTui2_zcash-test_sign_tx.py::test_spend_multisig": "5b1048fdf7d7c347151898d35b22294081f1a2956a0054c4de5ee21486dee915", "TTui2_zcash-test_sign_tx.py::test_spend_v4_input": "47d0bb16c597d1c8f2e4d702110c1bfa236b59fce6387e6f48224bb2c2fa5ad1", "TTui2_zcash-test_sign_tx.py::test_spend_v5_input": "a11eecc5afe8cf0d4b6595a1e39f0966490d0a6d086f965f3d23ef3f3c9a11f2", +"TTui2_zcash-test_sign_tx.py::test_unified_address": "dfd50fef1f80501aee2b7b54c03d586495c3e017d089e396372174f0888ef51c", "TTui2_zcash-test_sign_tx.py::test_version_group_id_missing": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1" } diff --git a/tools/check-bitcoin-only b/tools/check-bitcoin-only index 41c4234ea..110b58fd0 100755 --- a/tools/check-bitcoin-only +++ b/tools/check-bitcoin-only @@ -1,7 +1,7 @@ #!/bin/sh RETURN=0 -EXCEPTIONS="decred|omni|ripple|dash|TEXT_MARGIN_LEFT|dash_width|dashlane|flo|mnemonic|meter|refuse|fused|enemy|cinema|syntaxerror|mix|palm|UdesRsK|kcc|derive_cardano|ntity|gather|bmc|cloudflare" +EXCEPTIONS="decred|omni|ripple|dash|TEXT_MARGIN_LEFT|dash_width|dashlane|flo|mnemonic|meter|refuse|fused|enemy|cinema|syntaxerror|mix|palm|UdesRsK|kcc|derive_cardano|ntity|gather|bmc|cloudflare|rsk7" # dump all coins except the first 3 (Bitcoin, Testnet, Regtest) ALTCOINS=$(./common/tools/cointool.py dump -l -p -t -d trezor1 -d trezor2 | grep '"name"' | cut -d '"' -f 4 | tail -n +4)