Skip to content

Commit e7ed361

Browse files
committed
Add environment variables for Trezor authenticator parameters
1 parent 59b8365 commit e7ed361

2 files changed

Lines changed: 29 additions & 9 deletions

File tree

afp/afp.py

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
from .auth import Authenticator, KeyfileAuthenticator, PrivateKeyAuthenticator
1+
from .auth import (
2+
Authenticator,
3+
KeyfileAuthenticator,
4+
PrivateKeyAuthenticator,
5+
TrezorAuthenticator,
6+
)
27
from .config import Config
38
from .api.admin import Admin
49
from .api.margin_account import MarginAccount
@@ -25,9 +30,10 @@ class AFP:
2530
----------
2631
authenticator : afp.Authenticator, optional
2732
The default authenticator for signing transactions & messages. Can also be set
28-
with environment variables; use `AFP_PRIVATE_KEY` for private key
29-
authentication, `AFP_KEYFILE` and `AFP_KEYFILE_PASSWORD` for keyfile
30-
authentication.
33+
with environment variables: use `AFP_PRIVATE_KEY` for private key
34+
authentication; `AFP_KEYFILE` and `AFP_KEYFILE_PASSWORD` for keyfile
35+
authentication; `AFP_TREZOR_PATH_OR_INDEX` and `AFP_TREZOR_PASSPHRASE` for
36+
Trezor device authentication.
3137
rpc_url : str, optional
3238
The URL of an Autonity RPC provider. Can also be set with the `AFP_RPC_URL`
3339
environment variable.
@@ -217,13 +223,25 @@ def Trading(
217223

218224

219225
def _default_authenticator() -> Authenticator | None:
220-
if defaults.PRIVATE_KEY is not None and defaults.KEYFILE is not None:
226+
auth_variable_count = sum(
227+
[
228+
int(bool(defaults.PRIVATE_KEY)),
229+
int(bool(defaults.KEYFILE)),
230+
int(bool(defaults.TREZOR_PATH_OR_INDEX)),
231+
]
232+
)
233+
if auth_variable_count > 1:
221234
raise ConfigurationError(
222-
"Only one of AFP_PRIVATE_KEY and AFP_KEYFILE environment "
223-
"variables should be specified"
235+
"Only one of AFP_PRIVATE_KEY, AFP_KEYFILE and AFP_TREZOR_PATH_OR_INDEX "
236+
"environment variables should be specified"
224237
)
225-
if defaults.PRIVATE_KEY is not None:
238+
239+
if defaults.PRIVATE_KEY:
226240
return PrivateKeyAuthenticator(defaults.PRIVATE_KEY)
227-
if defaults.KEYFILE is not None:
241+
if defaults.KEYFILE:
228242
return KeyfileAuthenticator(defaults.KEYFILE, defaults.KEYFILE_PASSWORD)
243+
if defaults.TREZOR_PATH_OR_INDEX:
244+
return TrezorAuthenticator(
245+
defaults.TREZOR_PATH_OR_INDEX, defaults.TREZOR_PASSPHRASE
246+
)
229247
return None

afp/constants.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,8 @@ def _int_or_none(value: str | None) -> int | None:
8989
KEYFILE=os.getenv("AFP_KEYFILE", None),
9090
KEYFILE_PASSWORD=os.getenv("AFP_KEYFILE_PASSWORD", ""),
9191
PRIVATE_KEY=os.getenv("AFP_PRIVATE_KEY", None),
92+
TREZOR_PATH_OR_INDEX=os.getenv("AFP_TERZOR_PATH_OR_INDEX", None),
93+
TREZOR_PASSPHRASE=os.getenv("AFP_TREZOR_PASSPHRASE", ""),
9294
# Venue parameters
9395
EXCHANGE_URL=os.getenv("AFP_EXCHANGE_URL", _current_env.EXCHANGE_URL),
9496
# IPFS client parameters

0 commit comments

Comments
 (0)