From b854e72692792825c7d905df13eac186e73a1d2d Mon Sep 17 00:00:00 2001 From: Kyungwook Tak Date: Mon, 13 Jul 2015 10:43:23 +0900 Subject: 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 --- tests/vcore/TestCRL.cpp | 95 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 tests/vcore/TestCRL.cpp (limited to 'tests/vcore/TestCRL.cpp') 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 +#include +#include +#include +#include +#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(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); +} -- cgit v1.2.3