summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ipalib/x509.py31
-rw-r--r--ipatests/test_ipaserver/test_otptoken_import.py5
2 files changed, 25 insertions, 11 deletions
diff --git a/ipalib/x509.py b/ipalib/x509.py
index 88ea415bf..a87dbf413 100644
--- a/ipalib/x509.py
+++ b/ipalib/x509.py
@@ -89,19 +89,12 @@ def strip_header(pem):
return pem
-def load_certificate(data, datatype=PEM, dbdir=None):
+def initialize_nss_database(dbdir=None):
"""
- Given a base64-encoded certificate, with or without the
- header/footer, return a request object.
-
- Returns a nss.Certificate type
+ Initializes NSS database, if not initialized yet. Uses a proper database
+ directory (.ipa/alias or HTTPD_ALIAS_DIR), depending on the value of
+ api.env.in_tree.
"""
- if type(data) in (tuple, list):
- data = data[0]
-
- if (datatype == PEM):
- data = strip_header(data)
- data = base64.b64decode(data)
if not nss.nss_is_initialized():
if dbdir is None:
@@ -116,6 +109,22 @@ def load_certificate(data, datatype=PEM, dbdir=None):
else:
nss.nss_init(dbdir)
+def load_certificate(data, datatype=PEM, dbdir=None):
+ """
+ Given a base64-encoded certificate, with or without the
+ header/footer, return a request object.
+
+ Returns a nss.Certificate type
+ """
+ if type(data) in (tuple, list):
+ data = data[0]
+
+ if (datatype == PEM):
+ data = strip_header(data)
+ data = base64.b64decode(data)
+
+ initialize_nss_database(dbdir=dbdir)
+
return nss.Certificate(buffer(data))
def load_certificate_from_file(filename, dbdir=None):
diff --git a/ipatests/test_ipaserver/test_otptoken_import.py b/ipatests/test_ipaserver/test_otptoken_import.py
index 7ee0754da..84df0e2a6 100644
--- a/ipatests/test_ipaserver/test_otptoken_import.py
+++ b/ipatests/test_ipaserver/test_otptoken_import.py
@@ -21,12 +21,17 @@ import os
import sys
import nose
from nss import nss
+from ipalib.x509 import initialize_nss_database
from ipaserver.install.ipa_otptoken_import import PSKCDocument, ValidationError
basename = os.path.join(os.path.dirname(__file__), "data")
class test_otptoken_import(object):
+
+ def teardown(self):
+ initialize_nss_database()
+
def test_figure3(self):
doc = PSKCDocument(os.path.join(basename, "pskc-figure3.xml"))
assert doc.keyname is None