diff options
Diffstat (limited to 'sugar_network/toolkit')
-rw-r--r-- | sugar_network/toolkit/http.py | 7 | ||||
-rw-r--r-- | sugar_network/toolkit/sugar.py | 22 |
2 files changed, 21 insertions, 8 deletions
diff --git a/sugar_network/toolkit/http.py b/sugar_network/toolkit/http.py index d130c2a..cb7028a 100644 --- a/sugar_network/toolkit/http.py +++ b/sugar_network/toolkit/http.py @@ -67,9 +67,8 @@ class Client(object): headers = {'Accept-Language': ad.default_lang()} if self._sugar_auth: uid = sugar.uid() - key_path = sugar.profile_path('owner.key') headers['sugar_user'] = uid - headers['sugar_user_signature'] = _sign(key_path, uid) + headers['sugar_user_signature'] = _sign(uid) self._session = Session(headers=headers, verify=verify, prefetch=False) @@ -288,8 +287,8 @@ class Client(object): return response -def _sign(key_path, data): - key = DSA.load_key(key_path) +def _sign(data): + key = DSA.load_key(sugar.privkey_path()) return key.sign_asn1(hashlib.sha1(data).digest()).encode('hex') diff --git a/sugar_network/toolkit/sugar.py b/sugar_network/toolkit/sugar.py index 361cb7a..4f0bac5 100644 --- a/sugar_network/toolkit/sugar.py +++ b/sugar_network/toolkit/sugar.py @@ -20,6 +20,7 @@ import random import hashlib from os.path import join, exists, dirname +from active_toolkit.options import Option from active_toolkit import enforce @@ -31,6 +32,13 @@ _COLOR_GCONF = '/desktop/sugar/user/color' _uid = None +keyfile = Option( + 'path to SSH private key file to authenticate user; public key file ' + 'should have ".pub" suffif; if ommited, use key file generated by ' + 'Sugar Shell', + name='keyfile') + + def logger_level(): """Current Sugar logger level as --debug value.""" _LEVELS = { @@ -66,11 +74,17 @@ def profile_path(*args): return result -def pubkey(): - pubkey_path = profile_path('owner.key.pub') - enforce(exists(pubkey_path), - 'Sugar session was never started, no pubkey') +def privkey_path(): + path = keyfile.value + if not path: + path = profile_path('owner.key') + enforce(exists(path), + 'Sugar session was never started, no privkey') + return path + +def pubkey(): + pubkey_path = privkey_path() + '.pub' with file(pubkey_path) as f: for line in f.readlines(): line = line.strip() |