aboutsummaryrefslogtreecommitdiff
path: root/scripts/rpki/sql.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/rpki/sql.py')
-rw-r--r--scripts/rpki/sql.py28
1 files changed, 15 insertions, 13 deletions
diff --git a/scripts/rpki/sql.py b/scripts/rpki/sql.py
index b40bb672..0e148988 100644
--- a/scripts/rpki/sql.py
+++ b/scripts/rpki/sql.py
@@ -275,6 +275,7 @@ class ca_obj(sql_persistant):
issue_response = rpki.up_down.issue_pdu.query(gctx, parent, self, ca_detail)
ca_detail.activate(
+ gctx = gctx,
ca = self,
cert = issue_response.payload.classes[0].certs[0].cert,
uri = issue_response.payload.classes[0].certs[0].cert_url)
@@ -317,6 +318,10 @@ class ca_obj(sql_persistant):
self.sql_mark_dirty()
return self.last_crl_sn
+ def fetch_active(self, gctx):
+ """Fetch the current active ca_detail for this ca."""
+ return ca_detail_obj.sql_fetch_where1(gctx, "ca_id = %s AND state = 'active'" % self.ca_id)
+
class ca_detail_obj(sql_persistant):
"""Internal CA detail object."""
@@ -344,11 +349,6 @@ class ca_detail_obj(sql_persistant):
assert (self.manifest_public_key is None and self.manifest_private_key_id is None) or \
self.manifest_public_key.get_DER() == self.manifest_private_key_id.get_public_DER()
- @classmethod
- def sql_fetch_active(cls, gctx, ca_id):
- """Fetch the current active ca_detail_obj associated with a given ca_id."""
- return cls.sql_fetch_where1(gctx, "ca_id = %s AND state = 'active'" % ca_id)
-
def crl_uri(self, ca):
"""Return publication URI for this ca_detail's CRL."""
return ca.sia_uri + self.public_key.gSKI() + ".crl"
@@ -357,12 +357,14 @@ class ca_detail_obj(sql_persistant):
"""Return publication URI for this ca_detail's manifest."""
return ca.sia_uri + self.public_key.gSKI() + ".mnf"
- def activate(self, ca, cert, uri, predecessor = None):
+ def activate(self, gctx, ca, cert, uri, predecessor = None):
"""Activate this ca_detail."""
self.latest_ca_cert = cert
self.ca_cert_uri = uri.rsync()
self.generate_manifest_cert(ca)
+ self.generate_crl(gctx)
+ self.generate_manifest(gctx)
self.state = "active"
self.sql_mark_dirty()
@@ -488,7 +490,7 @@ class ca_detail_obj(sql_persistant):
certlist.append((child_cert.cert.getSerial(), child_cert.revoked, ()))
certlist.sort()
- return rpki.x509.CRL.generate(
+ self.latest_crl = rpki.x509.CRL.generate(
keypair = self.private_key_id,
issuer = self.latest_ca_cert,
serial = ca.next_crl_number(),
@@ -505,12 +507,12 @@ class ca_detail_obj(sql_persistant):
certs = child_cert_obj.sql_fetch_where(gctx, "child_cert.ca_detail_id = %s AND child_cert.revoked IS NULL" % self.ca_detail_id)
m = rpki.x509.SignedManifest()
- m.build(serial = ca.next_manifest_number(),
- nextUpdate = rpki.sundial.datetime.utcnow() + rpki.sundial.timedelta(seconds = self_obj.crl_interval),
- names_and_objs = [(c.uri_tail(), c.cert) for c in certs])
- m.sign(keypair = self.manifest_private_key_id,
- certs = rpki.x509.X509_chain(self.latest_manifest_cert))
-
+ m.build(
+ serial = ca.next_manifest_number(),
+ nextUpdate = rpki.sundial.datetime.utcnow() + rpki.sundial.timedelta(seconds = self_obj.crl_interval),
+ names_and_objs = [(c.uri_tail(), c.cert) for c in certs],
+ keypair = self.manifest_private_key_id,
+ certs = rpki.x509.X509_chain(self.latest_manifest_cert))
self.latest_manifest = m
class child_cert_obj(sql_persistant):