Skip to content

Commit

Permalink
FEAT: make the passphrase window more user friendly in Trezor key.
Browse files Browse the repository at this point in the history
  • Loading branch information
qtxie committed Oct 24, 2018
1 parent 72d6a23 commit 8204637
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 45 deletions.
93 changes: 48 additions & 45 deletions keys/Trezor/trezor.red
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ trezor: context [
]

init: func [][
if request-pin-state <> 'Init [return request-pin-state]
request-pin-state: 'Init
trezor-driver/init
Initialize #()
Expand All @@ -77,7 +78,7 @@ trezor: context [
]

request-pin: func [return: [word!]] [
;if request-pin-state <> 'Init [return request-pin-state]
if request-pin-state <> 'Init [return request-pin-state]

pin-req: make map! reduce ['address_n reduce [8000002Ch 8000003Ch 80000000h]]
put pin-req 'show_display false
Expand All @@ -90,6 +91,10 @@ trezor: context [
if request-pin-state = 'Requesting [
either trezor-driver/msg-id = trezor-message/get-id 'PinMatrixRequest [
view/flags pin-dlg 'modal
if trezor-driver/msg-id = trezor-message/get-id 'PassphraseRequest [
request-pin-state: 'Requesting
view/flags passphrase-dlg 'modal
]
][
view/flags passphrase-dlg 'modal
]
Expand Down Expand Up @@ -234,14 +239,12 @@ trezor: context [
clear pin-get
pin-req: req
pin-msg: req-msg
no-wait?: false
view/flags pin-dlg 'modal
]

if trezor-driver/msg-id = trezor-message/get-id 'PassphraseRequest [
clear passphrase-in/text
clear confirm-passphrase/text
no-wait?: false
view/flags passphrase-dlg 'modal
]

Expand Down Expand Up @@ -295,7 +298,7 @@ trezor: context [
style label: text 220 middle
style but: button 60x60 "*"
style pin-field: field 205 middle
pad 15x0 header: label "Look at the device for number positions."
pad 15x0 pin-header: label "Look at the device for number positions."
return pad 15x0
but [append pin-show/text "*" append pin-get "7"]
but [append pin-show/text "*" append pin-get "8"]
Expand Down Expand Up @@ -327,7 +330,7 @@ trezor: context [
]
if trezor-driver/msg-id = trezor-message/get-id 'Failure [
clear pin-show/text
header/text: "Input Pin Failure! Enter Pin again."
pin-header: "Input Pin Failure! Enter Pin again."
request-pin-state: try [request-pin-cmd]
if error? request-pin-state [
request-pin-state: 'DeviceError
Expand All @@ -336,9 +339,6 @@ trezor: context [
clear pin-get
exit
]
if trezor-driver/msg-id = trezor-message/get-id 'PassphraseRequest [
view/flags passphrase-dlg 'modal
]
request-pin-state: 'HasRequested
]
clear pin-show/text
Expand All @@ -350,47 +350,50 @@ trezor: context [
]
]

on-passphrase-enter: func [face event][
if request-pin-state = 'Requesting [
if passphrase-in/text <> confirm-passphrase/text [
header/text: "Passphrases do not match!"
clear passphrase-in/text
clear confirm-passphrase/text
exit
]
pin-ret: try [encode-and-write 'PassphraseAck make map! reduce ['passphrase confirm-passphrase/text]]
if error? pin-ret [
request-pin-state: 'DeviceError
unview
exit
]
pin-ret: try [trezor-driver/message-read clear command-buffer]
if any [error? pin-ret trezor-driver/msg-id = trezor-message/get-id 'Failure] [
request-pin-state: 'DeviceError
unview
exit
]
request-pin-state: 'HasRequested
]
clear passphrase-in/text
clear confirm-passphrase/text
unview
]

passphrase-dlg: layout [
title "Please enter your passphrase"
style label: text 220 middle
pad 15x0 header: label "Note: Passphrase is case-sensitive"
return
text "Passphrase"
return
passphrase-in: field ""
return
text "Confirm Passphrase"
return
confirm-passphrase: field ""
return
check "Show passphrase"
return
button "Enter" middle [
if request-pin-state = 'Requesting [
if passphrase-in/text <> confirm-passphrase/text [
header/text: "Input Passphrase Failure! Enter again."
clear passphrase-in/text
clear confirm-passphrase/text
exit
]
pin-ret: try [encode-and-write 'PassphraseAck make map! reduce ['passphrase confirm-passphrase/text]]
if error? pin-ret [
request-pin-state: 'DeviceError
unview
exit
]
pin-ret: try [trezor-driver/message-read clear command-buffer]
if any [error? pin-ret trezor-driver/msg-id = trezor-message/get-id 'Failure] [
request-pin-state: 'DeviceError
unview
exit
]
request-pin-state: 'HasRequested
]
on-close [
clear passphrase-in/text
clear confirm-passphrase/text
unview
on-passphrase-enter none none
]
below center
header: text "Note: Passphrase is case-sensitive"
panel [text 130 "Passphrase:" passphrase-in: field 180 ""]
panel [text 130 "Confirm Passphrase:" confirm-passphrase: field 180 "" ]
check "Show passphrase" [
show-passphrase?: either face/data [none]['password]
passphrase-in/flags: show-passphrase?
confirm-passphrase/flags: show-passphrase?
]
button "Enter" :on-passphrase-enter
with [passphrase-in/flags: 'password confirm-passphrase/flags: 'password]
]

]
1 change: 1 addition & 0 deletions wallet.red
Original file line number Diff line number Diff line change
Expand Up @@ -524,6 +524,7 @@ wallet: context [
actors: object [
on-up: func [face [object!] event [event!]][
if keys/support? face/data/1 face/data/2 [
face/rate: none
keys/connect-key keys/current
if any [keys/new? keys/state = 'Requesting][
dev/data: keys/list
Expand Down

0 comments on commit 8204637

Please sign in to comment.