summaryrefslogtreecommitdiff
path: root/src/leap/bitmask/backend/utils.py
diff options
context:
space:
mode:
authorIvan Alejandro <ivanalejandro0@gmail.com>2014-12-19 19:16:42 -0300
committerIvan Alejandro <ivanalejandro0@gmail.com>2014-12-29 18:33:21 -0300
commit75e340bc41803d6fa32df673bb8b1f4e045d4261 (patch)
tree98b23ed17c5cfb45d0b636c8905d236381e7fb5c /src/leap/bitmask/backend/utils.py
parentebcf316318c344ab256ec073d841aa04f3d18d46 (diff)
Create the certificates if they don't exist.
Fix typo for signal disconnection. The backend is the one who always creates the certificates. Either if it is run separately or in a process in the same app as the frontend.
Diffstat (limited to 'src/leap/bitmask/backend/utils.py')
-rw-r--r--src/leap/bitmask/backend/utils.py26
1 files changed, 25 insertions, 1 deletions
diff --git a/src/leap/bitmask/backend/utils.py b/src/leap/bitmask/backend/utils.py
index 65bf6753..18e70743 100644
--- a/src/leap/bitmask/backend/utils.py
+++ b/src/leap/bitmask/backend/utils.py
@@ -17,6 +17,7 @@
"""
Backend utilities to handle ZMQ certificates.
"""
+import logging
import os
import shutil
import stat
@@ -26,10 +27,12 @@ import zmq.auth
from leap.bitmask.util import get_path_prefix
from leap.common.files import mkdir_p
+logger = logging.getLogger(__name__)
+
KEYS_DIR = os.path.join(get_path_prefix(), 'leap', 'zmq_certificates')
-def generate_certificates():
+def generate_zmq_certificates():
"""
Generate client and server CURVE certificate files.
"""
@@ -62,3 +65,24 @@ def get_backend_certificates(base_dir='.'):
backend_secret_file = os.path.join(KEYS_DIR, "backend.key_secret")
public, secret = zmq.auth.load_certificate(backend_secret_file)
return public, secret
+
+
+def _certificates_exist():
+ """
+ Return whether there are certificates in place or not.
+
+ :rtype: bool
+ """
+ frontend_secret_file = os.path.join(KEYS_DIR, "frontend.key_secret")
+ backend_secret_file = os.path.join(KEYS_DIR, "backend.key_secret")
+ return os.path.isfile(frontend_secret_file) and \
+ os.path.isfile(backend_secret_file)
+
+
+def generate_zmq_certificates_if_needed():
+ """
+ Generate the needed ZMQ certificates for backend/frontend communication if
+ needed.
+ """
+ if not _certificates_exist():
+ generate_zmq_certificates()