The unified diff between revisions [2df88abf..] and [818e3621..] is displayed below. It can also be downloaded as a raw diff.

This diff has been restricted to the following files: 'database.cc'

#
#
# patch "database.cc"
#  from [26823fb71c06adf8194ed261513d7fe268d0c77d]
#    to [b9bfc2cef4e1561d13cfbf9b2f3b39eb42478b68]
#
============================================================
--- database.cc	26823fb71c06adf8194ed261513d7fe268d0c77d
+++ database.cc	b9bfc2cef4e1561d13cfbf9b2f3b39eb42478b68
@@ -377,12 +377,12 @@ private:

   void get_certs(id const & ident,
                  cert_name const & name,
-                 base64<cert_value> const & val,
+                 cert_value const & val,
                  vector<cert> & certs,
                  string const & table);

   void get_certs(cert_name const & name,
-                 base64<cert_value> const & val,
+                 cert_value const & val,
                  vector<cert> & certs,
                  string const & table);

@@ -2645,14 +2645,14 @@ database::get_pubkey(id const & hash,
 void
 database::get_pubkey(id const & hash,
                      rsa_keypair_id & id,
-                     base64<rsa_pub_key> & pub_encoded)
+                     rsa_pub_key & pub)
 {
   results res;
   imp->fetch(res, 2, one_row,
              query("SELECT id, keydata FROM public_keys WHERE hash = ?")
              % blob(hash()));
   id = rsa_keypair_id(res[0][0]);
-  encode_base64(rsa_pub_key(res[0][1]), pub_encoded);
+  pub = rsa_pub_key(res[0][1]);
 }

 void
@@ -2666,24 +2666,15 @@ database::get_key(rsa_keypair_id const &
   pub = rsa_pub_key(res[0][0]);
 }

-void
-database::get_key(rsa_keypair_id const & pub_id,
-                  base64<rsa_pub_key> & pub_encoded)
-{
-  rsa_pub_key pub;
-  get_key(pub_id, pub);
-  encode_base64(pub, pub_encoded);
-}
-
 bool
 database::put_key(rsa_keypair_id const & pub_id,
-                  base64<rsa_pub_key> const & pub_encoded)
+                  rsa_pub_key const & pub)
 {
   if (public_key_exists(pub_id))
     {
-      base64<rsa_pub_key> tmp;
+      rsa_pub_key tmp;
       get_key(pub_id, tmp);
-      if (!keys_match(pub_id, tmp, pub_id, pub_encoded))
+      if (!keys_match(pub_id, tmp, pub_id, pub))
         W(F("key '%s' is not equal to key '%s' in database") % pub_id % pub_id);
       L(FL("skipping existing public key %s") % pub_id);
       return false;
@@ -2692,15 +2683,13 @@ database::put_key(rsa_keypair_id const &
   L(FL("putting public key %s") % pub_id);

   id thash;
-  key_hash_code(pub_id, pub_encoded, thash);
+  key_hash_code(pub_id, pub, thash);
   I(!public_key_exists(thash));

-  rsa_pub_key pub_key;
-  decode_base64(pub_encoded, pub_key);
   imp->execute(query("INSERT INTO public_keys VALUES(?, ?, ?)")
                % blob(thash())
                % text(pub_id())
-               % blob(pub_key()));
+               % blob(pub()));

   return true;
 }
@@ -2744,7 +2733,7 @@ database::check_signature(rsa_keypair_id
 cert_status
 database::check_signature(rsa_keypair_id const & id,
                           string const & alleged_text,
-                          base64<rsa_sha1_signature> const & signature)
+                          rsa_sha1_signature const & signature)
 {
   shared_ptr<PK_Verifier> verifier;

@@ -2781,19 +2770,15 @@ database::check_signature(rsa_keypair_id
       imp->verifiers.insert(make_pair(id, make_pair(verifier, pub_key)));
     }

-  // examine signature
-  rsa_sha1_signature sig_decoded;
-  decode_base64(signature, sig_decoded);
-
   // check the text+sig against the key
-  L(FL("checking %d-byte (%d decoded) signature") %
-    signature().size() % sig_decoded().size());
+  L(FL("checking %d-byte signature") %
+    signature().size());

   if (verifier->verify_message(
         reinterpret_cast<Botan::byte const*>(alleged_text.data()),
         alleged_text.size(),
-        reinterpret_cast<Botan::byte const*>(sig_decoded().data()),
-        sig_decoded().size()))
+        reinterpret_cast<Botan::byte const*>(signature().data()),
+        signature().size()))
     return cert_ok;
   else
     return cert_bad;
@@ -2806,10 +2791,6 @@ database_impl::cert_exists(cert const &
                            string const & table)
 {
   results res;
-  cert_value value;
-  decode_base64(t.value, value);
-  rsa_sha1_signature sig;
-  decode_base64(t.sig, sig);
   query q = query("SELECT id FROM " + table + " WHERE id = ? "
                   "AND name = ? "
                   "AND value = ? "
@@ -2817,9 +2798,9 @@ database_impl::cert_exists(cert const &
                   "AND signature = ?")
     % blob(t.ident.inner()())
     % text(t.name())
-    % blob(value())
+    % blob(t.value())
     % text(t.key())
-    % blob(sig());
+    % blob(t.sig());

   fetch(res, 1, any_rows, q);

@@ -2833,10 +2814,7 @@ database_impl::put_cert(cert const & t,
 {
   id thash;
   cert_hash_code(t, thash);
-  cert_value value;
-  decode_base64(t.value, value);
   rsa_sha1_signature sig;
-  decode_base64(t.sig, sig);

   string insert = "INSERT INTO " + table + " VALUES(?, ?, ?, ?, ?, ?)";

@@ -2844,9 +2822,9 @@ database_impl::put_cert(cert const & t,
           % blob(thash())
           % blob(t.ident.inner()())
           % text(t.name())
-          % blob(value())
+          % blob(t.value())
           % text(t.key())
-          % blob(sig()));
+          % blob(t.sig()));
 }

 void
@@ -2857,15 +2835,11 @@ database_impl::results_to_certs(results
   for (size_t i = 0; i < res.size(); ++i)
     {
       cert t;
-      base64<cert_value> value;
-      encode_base64(cert_value(res[i][2]), value);
-      base64<rsa_sha1_signature> sig;
-      encode_base64(rsa_sha1_signature(res[i][4]), sig);
       t = cert(revision_id(res[i][0]),
-              cert_name(res[i][1]),
-              value,
-              rsa_keypair_id(res[i][3]),
-              sig);
+               cert_name(res[i][1]),
+               cert_value(res[i][2]),
+               rsa_keypair_id(res[i][3]),
+               rsa_sha1_signature(res[i][4]));
       certs.push_back(t);
     }
 }
@@ -2936,7 +2910,7 @@ database_impl::get_certs(cert_name const

 void
 database_impl::get_certs(cert_name const & name,
-                         base64<cert_value> const & val,
+                         cert_value const & val,
                          vector<cert> & certs,
                          string const & table)
 {
@@ -2944,11 +2918,9 @@ database_impl::get_certs(cert_name const
   query q("SELECT id, name, value, keypair, signature FROM " + table +
           " WHERE name = ? AND value = ?");

-  cert_value binvalue;
-  decode_base64(val, binvalue);
   fetch(res, 5, any_rows,
         q % text(name())
-          % blob(binvalue()));
+          % blob(val()));
   results_to_certs(res, certs);
 }

@@ -2956,7 +2928,7 @@ database_impl::get_certs(id const & iden
 void
 database_impl::get_certs(id const & ident,
                          cert_name const & name,
-                         base64<cert_value> const & value,
+                         cert_value const & value,
                          vector<cert> & certs,
                          string const & table)
 {
@@ -2964,12 +2936,10 @@ database_impl::get_certs(id const & iden
   query q("SELECT id, name, value, keypair, signature FROM " + table +
           " WHERE id = ? AND name = ? AND value = ?");

-  cert_value binvalue;
-  decode_base64(value, binvalue);
   fetch(res, 5, any_rows,
         q % blob(ident())
           % text(name())
-          % blob(binvalue()));
+          % blob(value()));
   results_to_certs(res, certs);
 }

@@ -3063,7 +3033,7 @@ database::get_revision_certs(revision_id
 outdated_indicator
 database::get_revision_certs(revision_id const & id,
                              cert_name const & name,
-                             base64<cert_value> const & val,
+                             cert_value const & val,
                              vector< revision<cert> > & ts)
 {
   vector<cert> certs;
@@ -3075,15 +3045,13 @@ database::get_revisions_with_cert(cert_n

 outdated_indicator
 database::get_revisions_with_cert(cert_name const & name,
-                                  base64<cert_value> const & val,
+                                  cert_value const & val,
                                   set<revision_id> & revisions)
 {
   revisions.clear();
   results res;
   query q("SELECT id FROM revision_certs WHERE name = ? AND value = ?");
-  cert_value binvalue;
-  decode_base64(val, binvalue);
-  imp->fetch(res, one_col, any_rows, q % text(name()) % blob(binvalue()));
+  imp->fetch(res, one_col, any_rows, q % text(name()) % blob(val()));
   for (results::const_iterator i = res.begin(); i != res.end(); ++i)
     revisions.insert(revision_id((*i)[0]));
   return imp->cert_stamper.get_indicator();
@@ -3091,7 +3059,7 @@ database::get_revision_certs(cert_name c

 outdated_indicator
 database::get_revision_certs(cert_name const & name,
-                             base64<cert_value> const & val,
+                             cert_value const & val,
                              vector< revision<cert> > & ts)
 {
   vector<cert> certs;