diff options
author | Rob Austein <sra@hactrn.net> | 2007-09-23 23:32:37 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2007-09-23 23:32:37 +0000 |
commit | 81d8e851fe9fed622bc298732b42148ed1716e6c (patch) | |
tree | a4ede4c1987baa09dde392ab3ecc473cb7ae5b10 /scripts/rpki/sql.py | |
parent | 9faa8e61bedb91f316593c428af77a9378b610e1 (diff) |
Implement up-down "list" command.
svn path=/scripts/rpki/sql.py; revision=1011
Diffstat (limited to 'scripts/rpki/sql.py')
-rw-r--r-- | scripts/rpki/sql.py | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/scripts/rpki/sql.py b/scripts/rpki/sql.py index 2831a447..c67062f2 100644 --- a/scripts/rpki/sql.py +++ b/scripts/rpki/sql.py @@ -1,6 +1,6 @@ # $Id$ -import MySQLdb +import MySQLdb, rpki.x509 def connect(cfg, section="sql"): """Connect to a MySQL database using connection parameters from an @@ -57,7 +57,7 @@ class sql_persistant(object): @classmethod def sql_fetch(cls, db, cur, id): - results = cls.sql_fetch_where(db, cur, "WHERE %s = %s" % (cls.sql_template.index, id)) + results = cls.sql_fetch_where(db, cur, "%s = %s" % (cls.sql_template.index, id)) assert len(results) <= 1 if len(results) == 0: return None @@ -75,7 +75,7 @@ class sql_persistant(object): if where is None: cur.execute(cls.sql_template.select) else: - cur.execute(cls.sql_template.select + where) + cur.execute(cls.sql_template.select + " WHERE " + where) results = [] for row in cur.fetchall(): key = (cls, row[0]) @@ -167,6 +167,31 @@ class ca_detail_obj(sql_persistant): def __init__(self): self.certs = [] + def sql_decode(self, vals): + sql_persistant.sql_decode(self, vals) + + self.private_key_handle = rpki.x509.RSA_Keypair(DER = self.private_key_handle) + if self.public_key is not None: + assert self.private_key_handle.get_public_DER() == self.public_key + + self.latest_ca_cert_over_public_key = rpki.x509.X509(DER = self.latest_ca_cert_over_public_key) + + self.manifest_ee_private_key_handle = rpki.x509.RSA_Keypair(DER = self.manifest_ee_private_key_handle) + if self.manifest_ee_public_key is not None: + assert self.manifest_ee_private_key_handle.get_public_DER() == self.manifest_ee_public_key + + self.manifest_ee_cert = rpki.x509.X509(DER = self.manifest_ee_cert) + + # todo: manifest, crl + + def sql_encode(self): + d = sql_persistant.sql_encode(self) + d["private_key_handle"] = self.private_key_handle.get_DER() + d["latest_ca_cert_over_public_key"] = self.latest_ca_cert_over_public_key.get_DER() + d["manifest_ee_private_key_handle"] = self.manifest_ee_private_key_handle.get_DER() + d["manifest_ee_cert"] = self.manifest_ee_cert.get_DER() + return d + class ca_obj(sql_persistant): """Internal CA object.""" |