--- a/javamanager/javacaptain/extensionplugins/javacertstore/src/javacertstore.cpp Fri Sep 17 08:28:21 2010 +0300
+++ b/javamanager/javacaptain/extensionplugins/javacertstore/src/javacertstore.cpp Mon Oct 04 00:10:53 2010 +0300
@@ -120,7 +120,7 @@
}
std::string id;
aMessage >> id;
- int state;
+ int state = STATE_UNDEFINED;
switch (operation)
{
case JAVA_CERT_STORE_OPERATION_DELETE_CERT:
@@ -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)
{