aboutsummaryrefslogtreecommitdiff
path: root/scripts/rpki/sql.py
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2007-09-23 23:32:37 +0000
committerRob Austein <sra@hactrn.net>2007-09-23 23:32:37 +0000
commit81d8e851fe9fed622bc298732b42148ed1716e6c (patch)
treea4ede4c1987baa09dde392ab3ecc473cb7ae5b10 /scripts/rpki/sql.py
parent9faa8e61bedb91f316593c428af77a9378b610e1 (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.py31
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."""