From b67f0c5fb4cf8d9358ba36b1bfbfa31dcb3cde4f Mon Sep 17 00:00:00 2001
From: Rob Austein <sra@hactrn.net>
Date: Wed, 26 Sep 2007 00:13:47 +0000
Subject: Finish changes from previous edit

svn path=/scripts/rpki/sql.py; revision=1036
---
 scripts/rpki/sql.py | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

(limited to 'scripts/rpki/sql.py')

diff --git a/scripts/rpki/sql.py b/scripts/rpki/sql.py
index 645766d0..f42b4b41 100644
--- a/scripts/rpki/sql.py
+++ b/scripts/rpki/sql.py
@@ -169,23 +169,18 @@ 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", "ca_id")
-
-  def __init__(self):
-    self.certs = []
+                          "manifest_public_key", "latest_manifest_cert", "latest_manifest", "latest_crl", "status", "ca_id")
 
   def sql_decode(self, vals):
     sql_persistant.sql_decode(self, vals)
 
     self.private_key_id = rpki.x509.RSA_Keypair(DER = self.private_key_id)
-    if self.public_key is not None:
-      assert self.private_key_id.get_public_DER() == self.public_key
+    assert self.public_key is None or self.private_key_id.get_public_DER() == self.public_key
 
     self.latest_ca_cert = rpki.x509.X509(DER = self.latest_ca_cert)
 
     self.manifest_private_key_id = rpki.x509.RSA_Keypair(DER = self.manifest_private_key_id)
-    if self.manifest_public_key is not None:
-      assert self.manifest_private_key_id.get_public_DER() == self.manifest_public_key
+    assert self.manifest_public_key is None or self.manifest_private_key_id.get_public_DER() == self.manifest_public_key
 
     self.manifest_cert = rpki.x509.X509(DER = self.manifest_cert)
 
@@ -199,6 +194,15 @@ class ca_detail_obj(sql_persistant):
     d["manifest_cert"] = self.manifest_cert.get_DER()
     return d
 
+  @classmethod
+  def sql_fetch_active(cls, db, cur, ca_id):
+    hits = cls.sql_fetch_where(db, cur, "ca_id = %s AND status = 'active'" % ca_id)
+    assert len(hits) < 2, "Found more than one 'active' ca_detail record, this should not happen!"
+    if hits:
+      return hits[0]
+    else:
+      return None
+
 class child_cert_obj(sql_persistant):
   """Certificate that has been issued to a child."""
 
-- 
cgit v1.2.3