Add inter-service messages 98/41798/8
authorKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Wed, 17 Jun 2015 11:07:58 +0000 (13:07 +0200)
committerKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Fri, 26 Jun 2015 11:42:00 +0000 (04:42 -0700)
[Feature] Development of inter-service communication
[Solution] Create inter-service communication message class hierarchy including
key request and response messages.

[Verification] Successfull compilation

Change-Id: I41de882a089560201395fbcfe0143c067c1aee1f

src/manager/main/credentials.h [new file with mode: 0644]
src/manager/main/generic-socket-manager.h
src/manager/main/service-messages.h [new file with mode: 0644]

diff --git a/src/manager/main/credentials.h b/src/manager/main/credentials.h
new file mode 100644 (file)
index 0000000..e54f5df
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ *  Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License
+ */
+/*
+ * @file       credentials.h
+ * @author     Krzysztof Jackiewicz (k.jackiewicz@samsung.com)
+ * @version    1.0
+ */
+
+#pragma once
+
+#include <sys/types.h>
+#include <ckm/ckm-type.h>
+
+namespace CKM {
+
+struct Credentials {
+    Credentials() : clientUid(0) {}
+    Credentials(uid_t socketUid, const Label & socketLabel)
+        : clientUid(socketUid), smackLabel(socketLabel) {}
+    uid_t clientUid;
+    Label smackLabel;
+};
+
+} // namespace CKM
index c9d5eda..4108c3b 100644 (file)
@@ -35,6 +35,7 @@
 #include <generic-event.h>
 #include <dpl/raw-buffer.h>
 #include <ckm/ckm-type.h>
+#include <credentials.h>
 
 extern "C" {
 struct msghdr;
@@ -44,14 +45,6 @@ namespace CKM {
 
 typedef int InterfaceID;
 
-struct Credentials {
-    Credentials() : clientUid(0) {}
-    Credentials(uid_t socketUid, const Label & socketLabel)
-        : clientUid(socketUid), smackLabel(socketLabel) {}
-    uid_t clientUid;
-    Label smackLabel;
-};
-
 struct ConnectionID {
     int sock;                                 // This is decriptor used for connection
     int counter;                              // Unique handler per socket
diff --git a/src/manager/main/service-messages.h b/src/manager/main/service-messages.h
new file mode 100644 (file)
index 0000000..f23711f
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ *  Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License
+ */
+/*
+ * @file       service-messages.h
+ * @author     Krzysztof Jackiewicz (k.jackiewicz@samsung.com)
+ * @version    1.0
+ */
+
+#pragma once
+
+#include <memory>
+
+#include <credentials.h>
+#include <ckm/ckm-type.h>
+#include <protocols.h>
+#include <ckm/ckm-error.h>
+#include <communication-manager.h>
+#include <generic-backend/gkey.h>
+
+namespace CKM {
+
+// inter-service communication message base class
+struct MsgBase
+{
+    explicit MsgBase(int id) : id(id) {}
+    virtual ~MsgBase() {}
+
+    int id;
+};
+
+// key request
+struct MsgKeyRequest : public MsgBase
+{
+    MsgKeyRequest(int id,
+                  const Credentials& cred,
+                  const Name& name,
+                  const Label& label,
+                  const Password& password) :
+        MsgBase(id),
+        cred(cred),
+        name(name),
+        label(label),
+        password(password)
+    {}
+    Credentials cred;
+    Name name;
+    Label label;
+    Password password;
+};
+
+// key response
+struct MsgKeyResponse : public MsgBase
+{
+    MsgKeyResponse(int id, const Crypto::GKeyShPtr& key, int errorCode = CKM_API_SUCCESS) :
+        MsgBase(id),
+        key(key),
+        error(errorCode)
+    {}
+    Crypto::GKeyShPtr key;
+    int error;
+};
+
+typedef CommunicationManager<MsgKeyRequest, MsgKeyResponse> CommMgr;
+
+} /* namespace CKM */