diff options
author | Kyungwook Tak <k.tak@samsung.com> | 2015-07-13 10:43:23 +0900 |
---|---|---|
committer | Kyungwook Tak <k.tak@samsung.com> | 2015-07-16 18:08:33 +0900 |
commit | b854e72692792825c7d905df13eac186e73a1d2d (patch) | |
tree | cc22bc9ffed5f6b15c321c150667b2a47f9b1ad5 /tests/vcore/TestCRL.cpp | |
parent | ee8181dce4bc0f6c38db8b43c5f1ea0c021cc8d4 (diff) | |
download | cert-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.cpp | 95 |
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); +} |