Added code to retrieve certificate.

This commit is contained in:
Hans Hörberg
2014-02-28 08:30:18 +01:00
parent bc9a7bc0eb
commit 535acbafaa
4 changed files with 10 additions and 1 deletions

2
.gitignore vendored
View File

@@ -147,3 +147,5 @@ example/sp/sp_nocert.xml
example/sp/sp_nocert2.xml example/sp/sp_nocert2.xml
example/sp/test.py example/sp/test.py
example/sp/sp_conf.py

View File

@@ -136,7 +136,7 @@ class AuthnBroker(object):
res = [] res = []
for ref in _refs[1:]: for ref in _refs[1:]:
item = self.db[ref] item = self.db["info"][ref]
res.append((item["method"], ref)) res.append((item["method"], ref))
if func(_level, item["level"]): if func(_level, item["level"]):
_level = item["level"] _level = item["level"]

View File

@@ -83,6 +83,11 @@ class Server(Entity):
self.iv = os.urandom(16) self.iv = os.urandom(16)
self.lock = threading.Lock() self.lock = threading.Lock()
def getvalid_certificate_str(self):
if self.sec.cert_handler is not None:
return self.sec.cert_handler._last_validated_cert
return None
def support_AssertionIDRequest(self): def support_AssertionIDRequest(self):
return True return True

View File

@@ -964,6 +964,7 @@ class CertHandler(object):
""" """
self._verify_cert = False self._verify_cert = False
self._generate_cert = False self._generate_cert = False
self._last_cert_verified = None #This cert do not have to be valid, it is just the last cert to be validated.
if cert_type == "pem" and key_type == "pem": if cert_type == "pem" and key_type == "pem":
self._verify_cert = verify_cert is True self._verify_cert = verify_cert is True
self._security_context = security_context self._security_context = security_context
@@ -993,6 +994,7 @@ class CertHandler(object):
def verify_cert(self, cert_file): def verify_cert(self, cert_file):
if self._verify_cert: if self._verify_cert:
cert_str = self._osw.read_str_from_file(cert_file, "pem") cert_str = self._osw.read_str_from_file(cert_file, "pem")
self._last_validated_cert = cert_str
if self._cert_handler_extra_class is not None and self._cert_handler_extra_class.use_validate_cert_func(): if self._cert_handler_extra_class is not None and self._cert_handler_extra_class.use_validate_cert_func():
self._cert_handler_extra_class.validate_cert(cert_str, self._cert_str, self._key_str) self._cert_handler_extra_class.validate_cert(cert_str, self._cert_str, self._key_str)
else: else: