aboutsummaryrefslogtreecommitdiff
path: root/scripts/rpki/x509.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/rpki/x509.py')
-rw-r--r--scripts/rpki/x509.py36
1 files changed, 33 insertions, 3 deletions
diff --git a/scripts/rpki/x509.py b/scripts/rpki/x509.py
index 7c7c75ec..b823c5a3 100644
--- a/scripts/rpki/x509.py
+++ b/scripts/rpki/x509.py
@@ -46,13 +46,17 @@ class DER_object(object):
formats = ("DER",)
pem_converter = None
+ other_clear = ()
def empty(self):
- return reduce(lambda x,y: x and getattr(self, y, None) is None, self.formats, True)
+ for a in self.formats:
+ if getattr(self, a, None) is not None:
+ return False
+ return True
def clear(self):
- for fmt in self.formats:
- setattr(self, fmt, None)
+ for a in self.formats + self.other_clear:
+ setattr(self, a, None)
def __init__(self, **kw):
self.clear()
@@ -94,6 +98,7 @@ class X509(DER_object):
formats = ("DER", "POW", "POWpkix", "tlslite")
pem_converter = PEM_converter("CERTIFICATE")
+ other_clear = ("POW_extensions",)
def get_DER(self):
assert not self.empty()
@@ -193,3 +198,28 @@ class X509_chain(list):
def load_from_DER(self, files):
self.extend([X509(DER_file=f) for f in files])
+
+class PKCS10_Request(DER_object):
+ """
+ Class to hold a PKCS #10 request.
+ """
+
+ formats = ("DER", "POWpkix")
+ pem_converter = PEM_converter("CERTIFICATE REQUEST")
+
+ def get_DER(self):
+ assert not self.empty()
+ if self.DER:
+ return self.DER
+ if self.POWpkix:
+ self.DER = self.POWpkix.toString()
+ return self.get_DER()
+ raise RuntimeError
+
+ def get_POWpkix(self):
+ assert not self.empty()
+ if not self.POWpkix:
+ req = POW.pkix.CertificationRequest()
+ req.fromString(self.get_DER())
+ self.POWpkix = req
+ return self.POWpkix