summaryrefslogtreecommitdiff
path: root/service/pixelated/config
diff options
context:
space:
mode:
Diffstat (limited to 'service/pixelated/config')
-rw-r--r--service/pixelated/config/leap.py17
1 files changed, 13 insertions, 4 deletions
diff --git a/service/pixelated/config/leap.py b/service/pixelated/config/leap.py
index 42eb495d..22c1e57a 100644
--- a/service/pixelated/config/leap.py
+++ b/service/pixelated/config/leap.py
@@ -1,10 +1,13 @@
from __future__ import absolute_import
import logging
+from collections import namedtuple
from twisted.internet import defer, threads
from leap.common.events import (server as events_server)
from leap.soledad.common.errors import InvalidAuthTokenError
-from leap.auth import SRPAuth
+from leap.auth import SRPSession
+from leap.bonafide.session import Session
+from leap.bonafide.provider import Api
from pixelated.config import credentials
from pixelated.config import leap_config
from pixelated.bitmask_libraries.certs import LeapCertificate
@@ -14,6 +17,9 @@ from pixelated.config.sessions import LeapSessionFactory
log = logging.getLogger(__name__)
+Credentials = namedtuple('Credentials', 'username, password')
+
+
def initialize_leap_provider(provider_hostname, provider_cert, provider_fingerprint, leap_home):
LeapCertificate.set_cert_and_fingerprint(provider_cert,
provider_fingerprint)
@@ -75,10 +81,13 @@ def initialize_leap_single_user(leap_provider_cert,
defer.returnValue(leap_session)
+@defer.inlineCallbacks
def authenticate(provider, user, password):
- srp_auth = SRPAuth(provider.api_uri, provider.local_ca_crt)
- d = threads.deferToThread(srp_auth.authenticate, user, password)
- return d
+ srp_provider = Api(provider.api_uri)
+ credentials = Credentials(user, password)
+ srp_auth = Session(credentials, srp_provider, provider.local_ca_crt)
+ yield srp_auth.authenticate()
+ defer.returnValue(SRPSession(user, srp_auth.token, srp_auth.uuid, 'session_id', {'is_admin': False}))
def init_monkeypatches():