javacommons/security/src/utils/javacertstorehandler.cpp
changeset 21 2a9601315dfc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javacommons/security/src/utils/javacertstorehandler.cpp	Mon May 03 12:27:20 2010 +0300
@@ -0,0 +1,127 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+#include <string.h>
+
+#include "javacertstorehandler.h"
+
+#include "comms.h"
+#include "commsclientendpoint.h"
+#include "commsmessage.h"
+#include "securitycommsmessagedefs.h"
+
+using namespace std;
+using namespace java::security;
+using namespace java::comms;
+
+void JavaCertStoreHandler::retrieveRootProtDomainInfo(const char rootHash[],
+        string& protDomainName,
+        string& protDomainCategory)
+{
+    CommsClientEndpoint cli_conn;
+    if (cli_conn.connect(IPC_ADDRESS_JAVA_CAPTAIN_C) != 0)
+    {
+        return;
+    }
+    CommsMessage s_msg;
+    CommsMessage r_msg;
+    s_msg.setModuleId(PLUGIN_ID_JAVA_CERT_STORE_EXTENSION_C);
+    s_msg.setMessageId(JAVA_CERT_STORE_MSG_ID_REQUEST);
+    s_msg << JAVA_CERT_STORE_OPERATION_QUERY_CERTS;
+    // add filter
+    s_msg << JAVA_CERT_STORE_FILTER_ID_STATE << JAVA_CERT_STORE_STATE_ENABLED;
+    s_msg << JAVA_CERT_STORE_FILTER_ID_HASH << rootHash;
+    // add the query ID
+    s_msg << JAVA_CERT_STORE_QUERY_ID_PROTECTION_DOMAIN;
+    if (cli_conn.sendReceive(s_msg,r_msg,10) != 0)
+    {
+        return;
+    }
+    r_msg >> protDomainName;
+    if (strcmp(protDomainName.c_str(),""))
+    {
+        r_msg >> protDomainCategory;
+    }
+    cli_conn.disconnect();
+}
+
+void JavaCertStoreHandler::retrieveRootsContents(std::vector<std::string>& aRootsContents)
+{
+    CommsClientEndpoint cli_conn;
+    if (cli_conn.connect(IPC_ADDRESS_JAVA_CAPTAIN_C) != 0)
+    {
+        return;
+    }
+    CommsMessage s_msg;
+    CommsMessage r_msg;
+    s_msg.setModuleId(PLUGIN_ID_JAVA_CERT_STORE_EXTENSION_C);
+    // operation
+    s_msg.setMessageId(JAVA_CERT_STORE_MSG_ID_REQUEST);
+    s_msg << JAVA_CERT_STORE_OPERATION_QUERY_CERTS;
+    // add filter
+    s_msg << JAVA_CERT_STORE_FILTER_ID_STATE << JAVA_CERT_STORE_STATE_ENABLED;
+    // add the query ID
+    s_msg << JAVA_CERT_STORE_QUERY_ID_CERT_CONTENT;
+    if (cli_conn.sendReceive(s_msg,r_msg,10) != 0)
+    {
+        return;
+    }
+    long long tmp;
+    r_msg >> tmp;
+    while (tmp != 0)
+    {
+        string rootContent;
+        r_msg >> rootContent;
+        aRootsContents.push_back(rootContent);
+        r_msg >> tmp;
+    }
+    cli_conn.disconnect();
+}
+
+void JavaCertStoreHandler::retrieveRootContent(wstring& rootHash,
+        long long* len,
+        string& rootContent)
+{
+    CommsClientEndpoint cli_conn;
+    if (cli_conn.connect(IPC_ADDRESS_JAVA_CAPTAIN_C) != 0)
+    {
+        return;
+    }
+    CommsMessage s_msg;
+    CommsMessage r_msg;
+    s_msg.setModuleId(PLUGIN_ID_JAVA_CERT_STORE_EXTENSION_C);
+    // operation
+    s_msg.setMessageId(JAVA_CERT_STORE_MSG_ID_REQUEST);
+    s_msg << JAVA_CERT_STORE_OPERATION_QUERY_CERTS;
+    // add filter
+    s_msg << JAVA_CERT_STORE_FILTER_ID_STATE << JAVA_CERT_STORE_STATE_ENABLED;
+    s_msg << JAVA_CERT_STORE_FILTER_ID_HASH << rootHash;
+    // add the query ID
+    s_msg << JAVA_CERT_STORE_QUERY_ID_CERT_CONTENT;
+    if (cli_conn.sendReceive(s_msg,r_msg,10) != 0)
+    {
+        return;
+    }
+    long long tmp;
+    r_msg >> tmp;
+    *len = tmp;
+    if (tmp == 0)
+    {
+        return;
+    }
+    r_msg >> rootContent;
+    cli_conn.disconnect();
+}