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.py46
1 files changed, 31 insertions, 15 deletions
diff --git a/scripts/rpki/sql.py b/scripts/rpki/sql.py
index 713a6e85..f47c6572 100644
--- a/scripts/rpki/sql.py
+++ b/scripts/rpki/sql.py
@@ -20,8 +20,11 @@ class template(object):
self.index = index_column
self.columns = columns
self.select = "SELECT %s FROM %s" % (", ".join(columns), table_name)
- self.insert = "INSERT %s (%s) VALUES (%s)" % (table_name, ", ".join(data_columns), ", ".join("%(" + s + ")s" for s in data_columns))
- self.update = "UPDATE %s SET %s WHERE %s = %%(%s)s" % (table_name, ", ".join(s + " = %(" + s + ")s" for s in data_columns), index_column, index_column)
+ self.insert = "INSERT %s (%s) VALUES (%s)" % (table_name, ", ".join(data_columns),
+ ", ".join("%(" + s + ")s" for s in data_columns))
+ self.update = "UPDATE %s SET %s WHERE %s = %%(%s)s" % \
+ (table_name, ", ".join(s + " = %(" + s + ")s" for s in data_columns),
+ index_column, index_column)
self.delete = "DELETE FROM %s WHERE %s = %%s" % (table_name, index_column)
## @var sql_cache
@@ -70,7 +73,8 @@ class sql_persistant(object):
elif len(results) == 1:
return results[0]
else:
- raise rpki.exceptions.DBConsistancyError, "Database contained multiple matches for %s.%s" % (cls.__name__, id)
+ raise rpki.exceptions.DBConsistancyError, \
+ "Database contained multiple matches for %s.%s" % (cls.__name__, id)
@classmethod
def sql_fetch_all(cls, gctx):
@@ -183,7 +187,8 @@ class sql_persistant(object):
class ca_obj(sql_persistant):
"""Internal CA object."""
- sql_template = template("ca", "ca_id", "last_crl_sn", "next_crl_update", "last_issued_sn", "last_manifest_sn", "next_manifest_update", "sia_uri", "parent_id")
+ sql_template = template("ca", "ca_id", "last_crl_sn", "next_crl_update", "last_issued_sn",
+ "last_manifest_sn", "next_manifest_update", "sia_uri", "parent_id")
def construct_sia_uri(self, gctx, parent, rc):
"""Construct the sia_uri value for this CA given configured
@@ -209,22 +214,30 @@ class ca_obj(sql_persistant):
cert_map = dict((c.get_SKI(), c) for c in rc.certs)
ca_details = ca_detail_obj.sql_fetch_where(gctx, "ca_id = %s AND latest_ca_cert IS NOT NULL", ca.ca_id)
as, v4, v6 = ca_detail_obj.sql_fetch_active(gctx, ca_id).latest_ca_cert.get_3779resources()
- undersized = not rc.resource_set_as.issubset(as) or not rc.resource_set_ipv4.issubset(v4) or not rc.resource_set_ipv6.issubset(v6)
- oversized = not as.issubset(rc.resource_set_as) or not v4.issubset(rc.resource_set_ipv4) or not v6.issubset(rc.resource_set_ipv6)
+ undersized = not rc.resource_set_as.issubset(as) or \
+ not rc.resource_set_ipv4.issubset(v4) or not rc.resource_set_ipv6.issubset(v6)
+ oversized = not as.issubset(rc.resource_set_as) or \
+ not v4.issubset(rc.resource_set_ipv4) or not v6.issubset(rc.resource_set_ipv6)
sia_uri = self.construct_sia_uri()
sia_uri_changed = self.sia_uri != sia_uri
if sia_uri_changed:
self.sia_uri = sia_uri
self.sql_mark_dirty()
for ca_detail in ca_details:
- assert ca_detail.state != "pending" or (as, v4, v6) == ca_detail.get_3779resources(), "Resource mismatch for pending cert"
+ assert ca_detail.state != "pending" or (as, v4, v6) == ca_detail.get_3779resources(), \
+ "Resource mismatch for pending cert"
for ca_detail in ca_details:
ski = ca_detail.latest_ca_cert.get_SKI()
- assert ski in cert_map, "Certificate in our database missing from list_response, SKI %s" % ca_detail.latest_ca_cert.hSKI()
- if ca_detail.state != "deprecated" and (undersized or oversized or sia_uri_changed or ca_detail.latest_ca_cert != cert_map[ski]):
- ca_detail.update(gctx, parent, self, rc, cert_map[ski], undersized, oversized, sia_uri_changed, as, v4, v6)
+ assert ski in cert_map, \
+ "Certificate in our database missing from list_response, SKI %s" % \
+ ca_detail.latest_ca_cert.hSKI()
+ if ca_detail.state != "deprecated" and \
+ (undersized or oversized or sia_uri_changed or ca_detail.latest_ca_cert != cert_map[ski]):
+ ca_detail.update(gctx, parent, self, rc, cert_map[ski], undersized, oversized, sia_uri_changed,
+ as, v4, v6)
del cert_map[ski]
- assert not cert_map, "Certificates in list_response missing from our database, SKIs %s" % ", ".join(c.hSKI() for c in cert_map.values())
+ assert not cert_map, "Certificates in list_response missing from our database, SKIs %s" % \
+ ", ".join(c.hSKI() for c in cert_map.values())
@classmethod
def create(cls, gctx, parent, rc):
@@ -270,8 +283,9 @@ class ca_obj(sql_persistant):
class ca_detail_obj(sql_persistant):
"""Internal CA detail object."""
- sql_template = template("ca", "ca_detail_id", "private_key_id", "public_key", "latest_ca_cert", "manifest_private_key_id",
- "manifest_public_key", "latest_manifest_cert", "latest_manifest", "latest_crl", "state", "ca_cert_uri", "ca_id")
+ sql_template = template("ca", "ca_detail_id", "private_key_id", "public_key", "latest_ca_cert",
+ "manifest_private_key_id", "manifest_public_key", "latest_manifest_cert",
+ "latest_manifest", "latest_crl", "state", "ca_cert_uri", "ca_id")
def sql_decode(self, vals):
"""Decode SQL representation of a ca_detail_obj."""
@@ -290,7 +304,8 @@ class ca_detail_obj(sql_persistant):
def sql_encode(self):
"""Encode SQL representation of a ca_detail_obj."""
d = sql_persistant.sql_encode(self)
- for i in ("private_key_id", "public_key", "latest_ca_cert", "manifest_private_key_id", "manifest_public_key", "latest_manifest_cert", "latest_manifest", "latest_crl"):
+ for i in ("private_key_id", "public_key", "latest_ca_cert", "manifest_private_key_id",
+ "manifest_public_key", "latest_manifest_cert", "latest_manifest", "latest_crl"):
d[i] = getattr(self, i).get_DER()
return d
@@ -327,7 +342,8 @@ class ca_detail_obj(sql_persistant):
if oversized or sia_uri_changed:
for child_cert in child_cert_obj.sql_fetch_where(gctx, "ca_detail_id = %s" % self.ca_detail_id):
child_as, child_v4, child_v6 = child_cert.cert.get_3779resources()
- if sia_uri_changed or not child_as.issubset(as) or not child_v4.issubset(v4) or not child_v6.issubset(v6):
+ if sia_uri_changed or not child_as.issubset(as) or \
+ not child_v4.issubset(v4) or not child_v6.issubset(v6):
child_cert.reissue(gctx, self, as, v4, v6)
@classmethod