summaryrefslogtreecommitdiff
path: root/src/leap/util
diff options
context:
space:
mode:
authorkali <kali@leap.se>2013-03-14 07:08:31 +0900
committerkali <kali@leap.se>2013-03-15 01:02:11 +0900
commitd0dfad6ac2af360de6421ce74a6831b5b81ad019 (patch)
treea0a79d4fb328e09ab85f53d826d65f5d7f874f0c /src/leap/util
parentb76461efe13d24950cb389735432024c26e1e768 (diff)
namespace leap + leap.common split
leap is a namespace package from here on. common folder will be deleted and moved to leap_pycommon repository.
Diffstat (limited to 'src/leap/util')
-rw-r--r--src/leap/util/__init__.py29
-rw-r--r--src/leap/util/certs.py179
-rw-r--r--src/leap/util/check.py61
-rw-r--r--src/leap/util/checkerthread.py2
-rw-r--r--src/leap/util/files.py85
5 files changed, 30 insertions, 326 deletions
diff --git a/src/leap/util/__init__.py b/src/leap/util/__init__.py
index e69de29b..a4e49ae5 100644
--- a/src/leap/util/__init__.py
+++ b/src/leap/util/__init__.py
@@ -0,0 +1,29 @@
+"""
+LEAP Encryption Access Project
+website: U{https://leap.se/}
+"""
+
+__version__ = "unknown"
+try:
+ from leap._version import get_versions
+ __version__ = get_versions()['version']
+ del get_versions
+except ImportError:
+ #running on a tree that has not run
+ #the setup.py setver
+ pass
+
+__appname__ = "unknown"
+try:
+ from leap._appname import __appname__
+except ImportError:
+ #running on a tree that has not run
+ #the setup.py setver
+ pass
+
+__full_version__ = __appname__ + '/' + str(__version__)
+
+# try:
+# from leap._branding import BRANDING as __branding
+# except ImportError:
+# __branding = {}
diff --git a/src/leap/util/certs.py b/src/leap/util/certs.py
deleted file mode 100644
index 63c60c3d..00000000
--- a/src/leap/util/certs.py
+++ /dev/null
@@ -1,179 +0,0 @@
-# -*- coding: utf-8 -*-
-# certs.py
-# Copyright (C) 2013 LEAP
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-"""
-Implements cert checks and helpers
-"""
-
-import os
-import time
-import logging
-
-from OpenSSL import crypto
-from dateutil.parser import parse as dateparse
-
-from leap.util.check import leap_assert
-
-logger = logging.getLogger(__name__)
-
-
-def get_cert_from_string(string):
- """
- Returns the x509 from the contents of this string
-
- @param string: certificate contents as downloaded
- @type string: str
-
- @return: x509 or None
- """
- leap_assert(string, "We need something to load")
-
- x509 = None
- try:
- x509 = crypto.load_certificate(crypto.FILETYPE_PEM, string)
- except Exception as e:
- logger.error("Something went wrong while loading the certificate: %r"
- % (e,))
- return x509
-
-
-def get_privatekey_from_string(string):
- """
- Returns the private key from the contents of this string
-
- @param string: private key contents as downloaded
- @type string: str
-
- @return: private key or None
- """
- leap_assert(string, "We need something to load")
-
- pkey = None
- try:
- pkey = crypto.load_privatekey(crypto.FILETYPE_PEM, string)
- except Exception as e:
- logger.error("Something went wrong while loading the certificate: %r"
- % (e,))
- return pkey
-
-
-def get_digest(cert_data, method):
- """
- Returns the digest for the cert_data using the method specified
-
- @param cert_data: certificate data in string form
- @type cert_data: str
- @param method: method to be used for digest
- @type method: str
-
- @rtype: str
- """
- x509 = get_cert_from_string(cert_data)
- digest = x509.digest(method).replace(":", "").lower()
-
- return digest
-
-
-def can_load_cert_and_pkey(string):
- """
- Loads certificate and private key from a buffer, returns True if
- everything went well, False otherwise
-
- @param string: buffer containing the cert and private key
- @type string: str or any kind of buffer
-
- @rtype: bool
- """
- can_load = True
-
- try:
- cert = get_cert_from_string(string)
- key = get_privatekey_from_string(string)
-
- leap_assert(cert, 'The certificate could not be loaded')
- leap_assert(key, 'The private key could not be loaded')
- except Exception as e:
- can_load = False
- logger.error("Something went wrong while trying to load "
- "the certificate: %r" % (e,))
-
- return can_load
-
-
-def is_valid_pemfile(cert):
- """
- Checks that the passed string is a valid pem certificate
-
- @param cert: String containing pem content
- @type cert: str
-
- @rtype: bool
- """
- leap_assert(cert, "We need a cert to load")
-
- return can_load_cert_and_pkey(cert)
-
-
-def get_cert_time_boundaries(certfile):
- """
- Returns the time boundaries for the certificate saved in certfile
-
- @param certfile: path to certificate
- @type certfile: str
-
- @rtype: tuple (from, to)
- """
- cert = get_cert_from_string(certfile)
- leap_assert(cert, 'There was a problem loading the certificate')
-
- fromts, tots = (cert.get_notBefore(), cert.get_notAfter())
- from_, to_ = map(
- lambda ts: time.gmtime(time.mktime(dateparse(ts).timetuple())),
- (fromts, tots))
- return from_, to_
-
-
-def should_redownload(certfile, now=time.gmtime):
- """
- Returns True if any of the checks don't pass, False otherwise
-
- @param certfile: path to certificate
- @type certfile: str
- @param now: current date function, ONLY USED FOR TESTING
-
- @rtype: bool
- """
- exists = os.path.isfile(certfile)
-
- if not exists:
- return True
-
- certdata = None
- try:
- with open(certfile, "r") as f:
- certdata = f.read()
- if not is_valid_pemfile(certdata):
- return True
- except:
- return True
-
- valid_from, valid_to = get_cert_time_boundaries(certdata)
-
- if not (valid_from < now() < valid_to):
- return True
-
- return False
diff --git a/src/leap/util/check.py b/src/leap/util/check.py
deleted file mode 100644
index 9787341a..00000000
--- a/src/leap/util/check.py
+++ /dev/null
@@ -1,61 +0,0 @@
-# -*- coding: utf-8 -*-
-# check.py
-# Copyright (C) 2013 LEAP
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-"""
-Set of functions to help checking situations
-"""
-import logging
-import inspect
-import traceback
-
-
-logger = logging.getLogger(__name__)
-
-
-def leap_assert(condition, message=""):
- """
- Asserts the condition and displays the message if that's not
- met. It also logs the error and its backtrace.
-
- @param condition: condition to check
- @type condition: bool
- @param message: message to display if the condition isn't met
- @type message: str
- """
- if not condition:
- logger.error("Bug: %s" % (message,))
- try:
- frame = inspect.currentframe()
- stack_trace = traceback.format_stack(frame)
- logger.error(''.join(stack_trace))
- except Exception as e:
- logger.error("Bug in leap_assert: %r" % (e,))
- assert condition, message
-
-
-def leap_assert_type(var, expectedType):
- """
- Helper assert check for a variable's expected type
-
- @param var: variable to check
- @type var: any
- @param expectedType: type to check agains
- @type expectedType: type
- """
- leap_assert(isinstance(var, expectedType),
- "Expected type %r instead of %r" %
- (expectedType, type(var)))
diff --git a/src/leap/util/checkerthread.py b/src/leap/util/checkerthread.py
index 0e69eca3..47a96ec5 100644
--- a/src/leap/util/checkerthread.py
+++ b/src/leap/util/checkerthread.py
@@ -23,7 +23,7 @@ import logging
from PySide import QtCore
-from leap.util.check import leap_assert_type
+from leap.common.check import leap_assert_type
logger = logging.getLogger(__name__)
diff --git a/src/leap/util/files.py b/src/leap/util/files.py
deleted file mode 100644
index 7c878e1d..00000000
--- a/src/leap/util/files.py
+++ /dev/null
@@ -1,85 +0,0 @@
-# -*- coding: utf-8 -*-
-# files.py
-# Copyright (C) 2013 LEAP
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-"""
-Implements file helper methods
-"""
-
-import os
-import stat
-import logging
-import time
-import errno
-
-logger = logging.getLogger(__name__)
-
-
-def check_and_fix_urw_only(cert):
- """
- Test for 600 mode and try to set it if anything different found
-
- Might raise OSError
-
- @param cert: Certificate path
- @type cert: str
- """
- mode = stat.S_IMODE(os.stat(cert).st_mode)
-
- if mode != int('600', 8):
- try:
- logger.warning('Bad permission on %s attempting to set 600' %
- (cert,))
- os.chmod(cert, stat.S_IRUSR | stat.S_IWUSR)
- except OSError:
- logger.error('Error while trying to chmod 600 %s' %
- cert)
- raise
-
-
-def get_mtime(filename):
- """
- Returns the modified time or None if the file doesn't exist
-
- @param filename: path to check
- @type filename: str
-
- @rtype: str
- """
- try:
- mtime = time.ctime(os.path.getmtime(filename)) + " GMT"
- return mtime
- except OSError:
- return None
-
-
-def mkdir_p(path):
- """
- Creates the path and all the intermediate directories that don't
- exist
-
- Might raise OSError
-
- @param path: path to create
- @type path: str
- """
- try:
- os.makedirs(path)
- except OSError as exc:
- if exc.errno == errno.EEXIST and os.path.isdir(path):
- pass
- else:
- raise