diff options
author | Rob Austein <sra@hactrn.net> | 2007-09-12 20:30:37 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2007-09-12 20:30:37 +0000 |
commit | 0cd9cd7bec2be621c855f8397d90a120187bcdc9 (patch) | |
tree | 15d985cdfbbb0fb163a47765da3e5bd20f938271 | |
parent | 54dc62c1cc1e5a2a9fe99f8dd51150ef34d8100b (diff) |
Checkpoint
svn path=/scripts/rpki/left_right.py; revision=948
-rw-r--r-- | scripts/rpki/left_right.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/scripts/rpki/left_right.py b/scripts/rpki/left_right.py index 8aaf64a9..fe034c30 100644 --- a/scripts/rpki/left_right.py +++ b/scripts/rpki/left_right.py @@ -96,12 +96,45 @@ class bsc_elt(base_elt, rpki.sql.sql_persistant): attributes = ("action", "type", "self_id", "bsc_id", "key_type", "hash_alg", "key_length") booleans = ("generate_keypair",) + sql_select_cmd = """SELECT bsc_id, self_id, pub_key, priv_key_id FROM bsc WHERE self_id = %(self_id)s""" + sql_insert_cmd = """INSERT bsc (self_id, pub_key, priv_key_id) VALUES (%(self_id)s, %(pub_key)s, %(priv_key_id)s""" + sql_update_cmd = """UPDATE bsc SET self_id = %(self_id)s, pub_key = %(pub_key)s, priv_key_id = %(priv_key_id)s WHERE bsc_id = %(bsc_id)s""" + sql_delete_cmd = """DELETE FROM bsc WHERE bsc_id = %(bsc_id)s""" + pkcs10_cert_request = None public_key = None def __init__(self): self.signing_cert = [] + def sql_decode(self, sql_parent, bsc_id, self_id, pub_key, priv_key_id): + assert isinstance(sql_parent, self_elt) + self.self_obj = sql_parent + self.bsc_id = bsc_id + self.self_id = self_id + self.pub_key = pub_key + self.priv_key_id = priv_key_id + + def sql_encode(self): + return { "self_id" : self.self_obj.self_id, + "bsc_id" : self.bsc_id, + "pub_key" : self.pub_key, + "priv_key_id" : self.priv_key_id } + + def sql_fetch_hook(self, db, cur): + cur.execute("""SELECT cert FROM bsc_cert WHERE bsc_id = %s""", self.bsc_id) + self.signing_cert = [rpki.x509.X509(DER=x) for (x,) in cur.fetchall()] + + def sql_insert_hook(self, db, cur): + cur.executemany("""INSERT bsc_cert (cert, bsc_id) VALUES (%s, %s)""", [(x.get_DER(), self.bsc_id) for x in self.signing_cert]) + + def sql_update_hook(self, db, cur): + self.delete_hook(db, cur) + self.insert_hook(db, cur) + + def sql_delete_hook(self, db, cur): + cur.execute("""DELETE FROM bsc_cert WHERE bsc_id = %s""", self.bsc_id) + def startElement(self, stack, name, attrs): """Handle <bsc/> element.""" if not name in ("signing_cert", "public_key", "pkcs10_cert_request"): |