44 lines
1.8 KiB
Python
44 lines
1.8 KiB
Python
|
|
from pinecrypt.server import const
|
|
|
|
class SignatureProfile(object):
|
|
def __init__(self, slug, title, ou, ca, lifetime, key_usage, extended_key_usage, common_name, revoked_url, responder_url):
|
|
self.slug = slug
|
|
self.title = title
|
|
self.ou = ou or None
|
|
self.ca = ca
|
|
self.lifetime = lifetime
|
|
self.key_usage = set(key_usage.split(" ")) if key_usage else set()
|
|
self.extended_key_usage = set(extended_key_usage.split(" ")) if extended_key_usage else set()
|
|
self.responder_url = responder_url
|
|
self.revoked_url = revoked_url
|
|
|
|
if common_name.startswith("^"):
|
|
self.common_name = common_name
|
|
elif common_name == "RE_HOSTNAME":
|
|
self.common_name = const.RE_HOSTNAME
|
|
elif common_name == "RE_FQDN":
|
|
self.common_name = const.RE_FQDN
|
|
elif common_name == "RE_COMMON_NAME":
|
|
self.common_name = const.RE_COMMON_NAME
|
|
else:
|
|
raise ValueError("Invalid common name constraint %s" % common_name)
|
|
|
|
def serialize(self):
|
|
return dict([(key, getattr(self,key)) for key in (
|
|
"slug", "title", "ou", "ca", "lifetime", "key_usage", "extended_key_usage", "common_name", "responder_url", "revoked_url")])
|
|
|
|
def __repr__(self):
|
|
bits = []
|
|
if self.lifetime >= 365:
|
|
bits.append("%d years" % (self.lifetime / 365))
|
|
if self.lifetime % 365:
|
|
bits.append("%d days" % (self.lifetime % 365))
|
|
return "%s (title=%s, ca=%s, ou=%s, lifetime=%s, key_usage=%s, extended_key_usage=%s, common_name=%s, responder_url=%s, revoked_url=%s)" % (
|
|
self.slug, self.title, self.ca, self.ou, " ".join(bits),
|
|
self.key_usage, self.extended_key_usage,
|
|
repr(self.common_name),
|
|
repr(self.responder_url),
|
|
repr(self.revoked_url))
|
|
|