javamanager/javacaptain/extensionplugins/javacertstore/src/javacertstore.cpp
branchRCL_3
changeset 83 26b2b12093af
parent 25 9ac0a0a7da70
--- a/javamanager/javacaptain/extensionplugins/javacertstore/src/javacertstore.cpp	Wed Sep 15 12:05:25 2010 +0300
+++ b/javamanager/javacaptain/extensionplugins/javacertstore/src/javacertstore.cpp	Wed Oct 13 14:23:59 2010 +0300
@@ -196,7 +196,8 @@
                 || (queryDisabled && iCertsMetadata[i]->state == STATE_DISABLED)
                 || (queryDeleted && iCertsMetadata[i]->state == STATE_DELETED))
                 && (hash.compare("") == 0
-                    || iCertsMetadata[i]->hash.compare(hash) == 0))
+                    || iCertsMetadata[i]->hash.compare(hash) == 0 
+                    || iCertsMetadata[i]->pkey.find(hash) == 0))
         {
             // what we return back depends on what was queried
             switch (query)
@@ -211,7 +212,14 @@
                 if (replyWithContent(replyMsg, *iCertsMetadata[i]))
                 {
                     // add also the ID and the state
-                    replyMsg << iCertsMetadata[i]->hash;
+                    if (iCertsMetadata[i]->pkey.size() > 0)
+                    {
+                        replyMsg << iCertsMetadata[i]->pkey;
+                    }
+                    else
+                    {
+                        replyMsg << iCertsMetadata[i]->hash;
+                    }
                     replyMsg << encodeState(iCertsMetadata[i]->disposable,
                                             iCertsMetadata[i]->disablable,
                                             iCertsMetadata[i]->state);
@@ -366,6 +374,7 @@
             const int READ_HASH = 4;
             const int READ_REMOVABLE = 5;
             const int READ_DISABLABLE = 6;
+            const int READ_PKEY = 7;
 
             // domain_name_info
             int domain_name_index = 0;
@@ -383,6 +392,10 @@
             bool removable = false;
             bool disablable = false;
 
+            // pkey info
+            int pkey_index = 0;
+            char pkey[50];
+
             // start&end separators for the metadata's keys
             bool key_ss = true;
             bool key_es = false;
@@ -417,6 +430,10 @@
                         op = READ_DISABLABLE;
                         key_ss = false;
                         break;
+                    case 'p':
+                        op = READ_PKEY;
+                        key_ss = false;
+                        break;
                     }
                 }
                 else
@@ -462,6 +479,11 @@
                                 disablable = true;
                             }
                             break;
+                        case READ_PKEY:
+                            pkey[pkey_index] = (char)retval;
+                            pkey_index++;
+                            pkey[pkey_index] = '\0';
+                            break;
                         }
                     }
                 }
@@ -470,6 +492,11 @@
                     && domain_category_index > 0
                     && hash_index > 0)
             {
+                if (pkey_index > 0)
+                {
+                    metadata->pkey = string(pkey, pkey_index);
+                    transform(metadata->pkey.begin(), metadata->pkey.end(), metadata->pkey.begin(), (int(*)(int)) tolower);
+                }
                 metadata->prot_domain_name = string(domain_name, domain_name_index);
                 metadata->prot_domain_category = string(domain_category, domain_category_index);
                 metadata->hash = string(hash, hash_index);
@@ -552,7 +579,8 @@
     // go through the certidicates and find the right one
     for (int i=0; i<no_certs; i++)
     {
-        if (cert_id.compare(iCertsMetadata[i]->hash) == 0)
+        if (cert_id.compare(iCertsMetadata[i]->hash) == 0 || 
+            iCertsMetadata[i]->pkey.find(cert_id) == 0)
         {
             switch (state)
             {
@@ -784,7 +812,8 @@
     bool found = false;
     for (int i=0; i<no_certs; i++)
     {
-        if (iCertsMetadata[i]->hash.compare(metadata->hash) == 0)
+        if (iCertsMetadata[i]->hash.compare(metadata->hash) == 0 
+            && iCertsMetadata[i]->pkey.find(metadata->pkey) == 0)
         {
             if (overwrite)
             {