summaryrefslogtreecommitdiff
path: root/src/client
diff options
context:
space:
mode:
authorsangwan.kwon <sangwan.kwon@samsung.com>2016-05-11 10:25:56 +0900
committersangwan.kwon <sangwan.kwon@samsung.com>2016-05-11 14:35:31 +0900
commit93a4383419a348cb773f638776062648b5dc71d2 (patch)
tree7eb7977324f924d63cf27d052237949f797655de /src/client
parent6b884475b0cedb1bf67d438fd4bb01d1ac2e0680 (diff)
downloadcert-checker-93a4383419a348cb773f638776062648b5dc71d2.tar.gz
cert-checker-93a4383419a348cb773f638776062648b5dc71d2.tar.bz2
cert-checker-93a4383419a348cb773f638776062648b5dc71d2.zip
Implement on-demand style about client-side
[AS-IS] * cert-checker was daemon. [TO-BE] * Change to on-demand style. * Add client library. Change-Id: Ia318bc8a724db1f50a50bd42aa4c8c94b078e287
Diffstat (limited to 'src/client')
-rw-r--r--src/client/CMakeLists.txt60
-rw-r--r--src/client/error.h33
-rw-r--r--src/client/ocsp-client.cpp54
-rw-r--r--src/client/ocsp-client.h49
4 files changed, 196 insertions, 0 deletions
diff --git a/src/client/CMakeLists.txt b/src/client/CMakeLists.txt
new file mode 100644
index 0000000..cd3d78d
--- /dev/null
+++ b/src/client/CMakeLists.txt
@@ -0,0 +1,60 @@
+# Copyright (c) 2016 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 CMakeLists.txt
+# @author Sangwan Kwon (sangwan.kwon@samsung.com)
+# @brief Make client library for ocsp-service.
+#
+PKG_CHECK_MODULES(${TARGET_CERT_CHECKER_CLIENT}_DEP
+ REQUIRED
+ libsystemd-journal
+)
+
+SET(${TARGET_CERT_CHECKER_CLIENT}_SRCS
+ ${CERT_CHECKER_SRC_PATH}/client/ocsp-client.cpp
+)
+
+INCLUDE_DIRECTORIES(SYSTEM
+ ${${TARGET_CERT_CHECKER_CLIENT}_DEP_INCLUDE_DIRS}
+ ${CERT_CHECKER_SRC_PATH}/
+ ${CERT_CHECKER_SRC_PATH}/include/
+ ${DPL_CORE_PATH}/include/
+ ${DPL_DB_PATH}/include/
+)
+
+ADD_LIBRARY(${TARGET_CERT_CHECKER_CLIENT}
+ SHARED ${${TARGET_CERT_CHECKER_CLIENT}_SRCS}
+)
+
+SET_TARGET_PROPERTIES(${TARGET_CERT_CHECKER_CLIENT}
+ PROPERTIES
+ COMPILE_FLAGS "-D_GNU_SOURCE -fvisibility=default"
+ LINKER_LANGUAGE CXX
+ SOVERSION ${API_VERSION}
+ VERSION ${VERSION}
+)
+
+TARGET_LINK_LIBRARIES(${TARGET_CERT_CHECKER_CLIENT}
+ ${${TARGET_CERT_CHECKER_CLIENT}_DEP_LIBRARIES}
+ ${TARGET_CERT_CHECKER_COMMON}
+)
+
+INSTALL(TARGETS ${TARGET_CERT_CHECKER_CLIENT} DESTINATION ${LIB_INSTALL_DIR})
+INSTALL(
+ FILES
+ ocsp-client.h
+ error.h
+ DESTINATION
+ ${INCLUDE_INSTALL_DIR}/cchecker
+)
diff --git a/src/client/error.h b/src/client/error.h
new file mode 100644
index 0000000..7504350
--- /dev/null
+++ b/src/client/error.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2016 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 error.h
+ * @author Sangwan Kwon (sangwan.kwon@samsung.com)
+ * @version 1.0
+ * @brief Error codes of ocsp service.
+ */
+#pragma once
+
+namespace CCHECKER {
+namespace Client {
+
+using CCerr = int;
+
+const CCerr E_CC_NONE = 0;
+const CCerr E_CC_INTERNAL = -1;
+
+} // namespace Client
+} // namespace CCHECKER
diff --git a/src/client/ocsp-client.cpp b/src/client/ocsp-client.cpp
new file mode 100644
index 0000000..77484fc
--- /dev/null
+++ b/src/client/ocsp-client.cpp
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2016 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 ocsp-client.cpp
+ * @author Sangwan Kwon (sangwan.kwon@samsung.com)
+ * @version 1.0
+ * @brief Client request OcspService with dispatcher in it
+ */
+#include "client/ocsp-client.h"
+#include "client/error.h"
+#include "common/command-id.h"
+
+#include <cchecker/log.h>
+
+namespace CCHECKER {
+namespace Client {
+
+OcspClient::OcspClient() :
+ m_address(SERVICE_STREAM)
+{
+ m_dispatcher.reset(new Dispatcher(m_address));
+}
+
+OcspClient::~OcspClient()
+{
+}
+
+CCerr OcspClient::request()
+{
+ LogDebug("Request to oscp service.");
+ auto ret = m_dispatcher->methodCall<CommandId>(CommandId::CC_OCSP_SYN);
+
+ LogDebug("Response ret : " << static_cast<int>(ret));
+ if(ret == CommandId::CC_OCSP_ACK)
+ return E_CC_NONE;
+ else
+ return E_CC_INTERNAL;
+}
+
+} // namespace Client
+} // namespace CCHECKER
diff --git a/src/client/ocsp-client.h b/src/client/ocsp-client.h
new file mode 100644
index 0000000..e1f29bb
--- /dev/null
+++ b/src/client/ocsp-client.h
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2016 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 ocsp-client.h
+ * @author Sangwan Kwon (sangwan.kwon@samsung.com)
+ * @version 1.0
+ * @brief Client request to ocsp service
+ */
+#pragma once
+
+#include <string>
+#include <memory>
+
+#include "common/dispatcher.h"
+#include "client/error.h"
+
+namespace CCHECKER {
+namespace Client {
+
+class OcspClient {
+public:
+ OcspClient();
+ virtual ~OcspClient();
+
+ OcspClient(const OcspClient &) = delete;
+ OcspClient &operator=(const OcspClient &) = delete;
+
+ CCerr request();
+
+private:
+ std::string m_address;
+ std::unique_ptr<Dispatcher> m_dispatcher;
+};
+
+} // namespace Client
+} // namespace CCHECKER