mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-12-22 14:28:07 +00:00
core: use cache for Monero live refresh confirmation
This commit is contained in:
parent
7513a65f9a
commit
1f50a13edf
@ -4,7 +4,6 @@ from trezor.messages import MessageType
|
|||||||
from apps.common import HARDENED
|
from apps.common import HARDENED
|
||||||
|
|
||||||
CURVE = "ed25519"
|
CURVE = "ed25519"
|
||||||
_LIVE_REFRESH_TOKEN = None # live-refresh permission token
|
|
||||||
|
|
||||||
|
|
||||||
def boot() -> None:
|
def boot() -> None:
|
||||||
@ -20,11 +19,3 @@ def boot() -> None:
|
|||||||
|
|
||||||
if __debug__ and hasattr(MessageType, "DebugMoneroDiagRequest"):
|
if __debug__ and hasattr(MessageType, "DebugMoneroDiagRequest"):
|
||||||
wire.add(MessageType.DebugMoneroDiagRequest, __name__, "diag")
|
wire.add(MessageType.DebugMoneroDiagRequest, __name__, "diag")
|
||||||
|
|
||||||
|
|
||||||
def live_refresh_token(token: bytes = None) -> None:
|
|
||||||
global _LIVE_REFRESH_TOKEN
|
|
||||||
if token is None:
|
|
||||||
return _LIVE_REFRESH_TOKEN
|
|
||||||
else:
|
|
||||||
_LIVE_REFRESH_TOKEN = token
|
|
||||||
|
@ -10,7 +10,7 @@ from trezor.messages.MoneroLiveRefreshStepAck import MoneroLiveRefreshStepAck
|
|||||||
from trezor.messages.MoneroLiveRefreshStepRequest import MoneroLiveRefreshStepRequest
|
from trezor.messages.MoneroLiveRefreshStepRequest import MoneroLiveRefreshStepRequest
|
||||||
|
|
||||||
from apps.common import paths
|
from apps.common import paths
|
||||||
from apps.monero import CURVE, live_refresh_token, misc
|
from apps.monero import CURVE, misc
|
||||||
from apps.monero.layout import confirms
|
from apps.monero.layout import confirms
|
||||||
from apps.monero.xmr import crypto, key_image, monero
|
from apps.monero.xmr import crypto, key_image, monero
|
||||||
from apps.monero.xmr.crypto import chacha_poly
|
from apps.monero.xmr.crypto import chacha_poly
|
||||||
@ -49,10 +49,9 @@ async def _init_step(
|
|||||||
ctx, misc.validate_full_path, keychain, msg.address_n, CURVE
|
ctx, misc.validate_full_path, keychain, msg.address_n, CURVE
|
||||||
)
|
)
|
||||||
|
|
||||||
fingerprint = storage.cache.get_session_id()[:4]
|
if not storage.cache.get(storage.cache.APP_MONERO_LIVE_REFRESH):
|
||||||
if live_refresh_token() != fingerprint:
|
|
||||||
await confirms.require_confirm_live_refresh(ctx)
|
await confirms.require_confirm_live_refresh(ctx)
|
||||||
live_refresh_token(fingerprint)
|
storage.cache.set(storage.cache.APP_MONERO_LIVE_REFRESH, True)
|
||||||
|
|
||||||
s.creds = misc.get_creds(keychain, msg.address_n, msg.network_type)
|
s.creds = misc.get_creds(keychain, msg.address_n, msg.network_type)
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@ if False:
|
|||||||
APP_COMMON_SEED = 0
|
APP_COMMON_SEED = 0
|
||||||
APP_COMMON_SEED_WITHOUT_PASSPHRASE = 1
|
APP_COMMON_SEED_WITHOUT_PASSPHRASE = 1
|
||||||
APP_CARDANO_ROOT = 2
|
APP_CARDANO_ROOT = 2
|
||||||
|
APP_MONERO_LIVE_REFRESH = 3
|
||||||
|
|
||||||
_cache_session_id = None # type: Optional[bytes]
|
_cache_session_id = None # type: Optional[bytes]
|
||||||
_cache = {}
|
_cache = {}
|
||||||
@ -22,7 +23,6 @@ def get_session_id() -> bytes:
|
|||||||
|
|
||||||
|
|
||||||
def set(key: int, value: Any) -> None:
|
def set(key: int, value: Any) -> None:
|
||||||
global _cache
|
|
||||||
_cache[key] = value
|
_cache[key] = value
|
||||||
|
|
||||||
|
|
||||||
@ -32,6 +32,5 @@ def get(key: int) -> Any:
|
|||||||
|
|
||||||
def clear() -> None:
|
def clear() -> None:
|
||||||
global _cache_session_id
|
global _cache_session_id
|
||||||
global _cache
|
|
||||||
_cache_session_id = None
|
_cache_session_id = None
|
||||||
_cache.clear()
|
_cache.clear()
|
||||||
|
Loading…
Reference in New Issue
Block a user