-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathtrader.py
More file actions
29 lines (22 loc) · 836 Bytes
/
trader.py
File metadata and controls
29 lines (22 loc) · 836 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import itertools
import pgpy
class Trader(object):
def __init__(self, account_id, private_key_str):
self.account_id = account_id
self._private_key_str = private_key_str
self._private_key = None
def decrypt_private_key(self, passphrase):
if not self._private_key:
self._parse_key()
# this is what happens internally in PGPKey.unlock, but we want to leave the key decrypted not
# only within a context manager as PGPKey.unlock does
for subkey in itertools.chain([self._private_key], self._private_key.subkeys.values()):
subkey._key.unprotect(passphrase)
@property
def private_key(self):
if not self._private_key:
self._parse_key()
return self._private_key
def _parse_key(self):
self._private_key = pgpy.PGPKey()
self._private_key.parse(self._private_key_str)