aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2009-07-03 05:42:48 +0000
committerRob Austein <sra@hactrn.net>2009-07-03 05:42:48 +0000
commit47154b52fa004fe88d3be3b2eb04b07bc316998d (patch)
tree735bb7a347f6d14e57d83a66784fa4487aeaba94
parent203fe4fc3104a6476ec2bfd359b87c51429f4c10 (diff)
Checkpoint
svn path=/myrpki/myirbe.py; revision=2564
-rw-r--r--myrpki/myirbe.py21
-rw-r--r--myrpki/myrpki.py12
2 files changed, 26 insertions, 7 deletions
diff --git a/myrpki/myirbe.py b/myrpki/myirbe.py
index 0cca8d16..f9f057a4 100644
--- a/myrpki/myirbe.py
+++ b/myrpki/myirbe.py
@@ -114,19 +114,30 @@ for x in tree.getiterator(tag("child")):
db.commit()
db.close()
+hosted_cacert = tree.findtext(tag("bpki_ca_certificate"))
+if hosted_cacert:
+ p = subprocess.Popen(("openssl", "x509", "-inform", "DER"), stdin = subprocess.PIPE, stdout = subprocess.PIPE)
+ hosted_cacert = p.communicate(base64.b64decode(hosted_cacert))[0]
+ if p.wait() != 0:
+ raise RuntimeError, "Couldn't convert certificate to PEM format"
+
bpki_rpkid = myrpki.CA(cfg_file, cfg.get("rpkid_ca_directory"), cfg.get("rpkid_ca_certificate"))
-bpki_rpkid.setup("/CN=RPKID TEST TA")
+bpki_rpkid.setup("/CN=rpkid TA")
for name in ("rpkid", "irdbd", "irbe_cli"):
bpki_rpkid.ee("/CN=%s EE" % name, name)
+if hosted_cacert:
+ bpki_rpkid.fxcert(my_handle + ".cacert.cer", hosted_cacert, restrict_pathlen = False)
bpki_pubd = myrpki.CA(cfg_file, cfg.get("pubd_ca_directory"), cfg.get("pubd_ca_certificate"))
-bpki_pubd.setup("/CN=PUBD TEST TA")
+bpki_pubd.setup("/CN=pubd TA")
for name in ("pubd", "irbe_cli"):
- bpki_rpkid.ee("/CN=%s EE" % name, name)
+ bpki_pubd.ee("/CN=%s EE" % name, name)
+if hosted_cacert:
+ bpki_pubd.fxcert(my_handle + ".cacert.cer", hosted_cacert)
bpki_rootd = myrpki.CA(cfg_file, cfg.get("rootd_ca_directory"), cfg.get("rootd_ca_certificate"))
-bpki_rootd.setup("/CN=ROOTD TEST TA")
-bpki_rpkid.ee("/CN=rootd EE", "rootd")
+bpki_rootd.setup("/CN=rootd TA")
+bpki_rootd.ee("/CN=rootd EE", "rootd")
rpkid_pdus = [
rpki.left_right.self_elt.make_pdu( action = "get", self_handle = my_handle),
diff --git a/myrpki/myrpki.py b/myrpki/myrpki.py
index ed46b84b..74c2f4b3 100644
--- a/myrpki/myrpki.py
+++ b/myrpki/myrpki.py
@@ -285,7 +285,14 @@ class CA(object):
PEMElement(e, "bpki_bsc_certificate", cer_file)
PEMElement(e, "bpki_bsc_pkcs10", req_file)
- def xcert(self, cert):
+ def fxcert(self, filename, cert, restrict_pathlen = True):
+ fn = os.path.join(self.dir, filename)
+ f = open(fn, "w")
+ f.write(cert)
+ f.close()
+ return self.xcert(fn, restrict_pathlen)
+
+ def xcert(self, cert, restrict_pathlen = True):
if not cert:
return None
@@ -309,7 +316,8 @@ class CA(object):
# OpenSSL command line tool.
if not os.path.exists(xcert):
- self.run_ca("-ss_cert", cert, "-out", xcert, "-extensions", "ca_x509_ext_xcert")
+ self.run_ca("-ss_cert", cert, "-out", xcert, "-extensions",
+ "ca_x509_ext_xcert" if restrict_pathlen else "ca_x509_ext_ca")
return xcert