summaryrefslogtreecommitdiff
path: root/tests/vcore/TestCRL.cpp
diff options
context:
space:
mode:
authorKyungwook Tak <k.tak@samsung.com>2015-07-13 10:43:23 +0900
committerKyungwook Tak <k.tak@samsung.com>2015-07-16 18:08:33 +0900
commitb854e72692792825c7d905df13eac186e73a1d2d (patch)
treecc22bc9ffed5f6b15c321c150667b2a47f9b1ad5 /tests/vcore/TestCRL.cpp
parentee8181dce4bc0f6c38db8b43c5f1ea0c021cc8d4 (diff)
downloadcert-svc-b854e72692792825c7d905df13eac186e73a1d2d.tar.gz
cert-svc-b854e72692792825c7d905df13eac186e73a1d2d.tar.bz2
cert-svc-b854e72692792825c7d905df13eac186e73a1d2d.zip
Update Tizen 2.4 latest codes
* remove dpl dependency (to wrt-commons) * cert-server service added, which is moved from secure-storage * add test codes - turn test build flag on in spec file to build test cases Change-Id: Id355e0e52220dd2b281a1a2225383fd366b876fe Signed-off-by: Kyungwook Tak <k.tak@samsung.com>
Diffstat (limited to 'tests/vcore/TestCRL.cpp')
-rw-r--r--tests/vcore/TestCRL.cpp95
1 files changed, 95 insertions, 0 deletions
diff --git a/tests/vcore/TestCRL.cpp b/tests/vcore/TestCRL.cpp
new file mode 100644
index 0000000..6d76978
--- /dev/null
+++ b/tests/vcore/TestCRL.cpp
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) 2011 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.
+ */
+#include <algorithm>
+#include <cstring>
+#include <openssl/x509v3.h>
+#include <file_input_mapping.h>
+#include <dpl/log/log.h>
+#include "TestCRL.h"
+
+using namespace ValidationCore;
+using namespace std;
+
+
+namespace {
+const char *CRL_LOOKUP_DIR = "/opt/etc/ssl/certs/";
+const char *beginCertificate = "-----BEGIN CERTIFICATE-----";
+const char *endCertificate = "-----END CERTIFICATE-----";
+const char *beginTrustedCertificate = "-----BEGIN TRUSTED CERTIFICATE-----";
+const char *endTrustedCertificate = "-----END TRUSTED CERTIFICATE-----";
+
+
+bool whiteCharacter(char a){
+ return a == '\n';
+}
+
+}
+
+TestCRL::TestCRL()
+ : CRLImpl (new CRLCacheDAO)
+{
+ //Add additional lookup dir
+ int rv = X509_LOOKUP_add_dir(m_lookup, CRL_LOOKUP_DIR, X509_FILETYPE_PEM);
+ if (!rv) {
+ LogError("Failed to add lookup dir for PEM files.");
+ ThrowMsg(CRLException::StorageError,
+ "Failed to add lookup dir for PEM files.");
+ }
+ LogInfo("CRL storage initialization complete.");
+}
+
+std::string TestCRL::getFileContent(const std::string &filename)
+{
+ //Only PEM formatted files allowed
+ LogInfo("Read file: " << filename);
+ FileInputMapping file(filename);
+ string content(reinterpret_cast<const char*>(file.GetAddress()),
+ file.GetSize());
+
+ size_t posBegin = content.find(beginCertificate);
+ size_t posEnd = content.find(endCertificate);
+ if (posBegin != string::npos &&
+ posEnd != string::npos) {
+ posBegin += strlen(beginCertificate);
+ } else {
+ posBegin = content.find(beginTrustedCertificate);
+ posEnd = content.find(endTrustedCertificate);
+ if (posBegin != string::npos &&
+ posEnd != string::npos) {
+ posBegin += strlen(beginTrustedCertificate);
+ } else {
+ LogError("Failed to parse PEM file");
+ return string();
+ }
+ }
+ //Remove whitespaces
+ string cert(content, posBegin, posEnd - posBegin);
+ cert.erase(std::remove_if(cert.begin(), cert.end(), whiteCharacter),
+ cert.end());
+
+ return cert;
+}
+
+void TestCRL::addCRLToStore(const string &filename, const string &uri)
+{
+ LogInfo("Read file: " << filename);
+ //Only PEM formatted files allowed
+ FileInputMapping file(filename);
+ char *buffer = new char[file.GetSize()];
+ memcpy(buffer, file.GetAddress(), file.GetSize());
+ CRLDataPtr crl(new CRLData(buffer, file.GetSize(), uri));
+ updateCRL(crl);
+}