</option>
<option id="gnu.cpp.compiler.option.include.paths.1186289576" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/inc}""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dpl-efl""/>
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/src/Context}""/>
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/src/Installer}""/>
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/src/Manager}""/>
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/src/XmlHandler/Parser}""/>
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/src/Util}""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/pkgmgr""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/cert-svc""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dlog""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/glib-2.0/include""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/glib-2.0""/>
</option>
<option id="gnu.cpp.link.option.libs.850444138" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs">
<listOptionValue builtIn="false" value="pkgmgr_parser"/>
+ <listOptionValue builtIn="false" value="cert-svc"/>
+ <listOptionValue builtIn="false" value="cert-svc-vcore"/>
+ <listOptionValue builtIn="false" value="dpl-efl"/>
<listOptionValue builtIn="false" value="dl"/>
<listOptionValue builtIn="false" value="app2ext"/>
<listOptionValue builtIn="false" value="glib-2.0"/>
result r = E_SUCCESS;
String destDir;
- r = destFile.LastIndexOf(L'/', destFile.GetLength() -1, pos);
- if (IsFailed(r) == true)
+ if (destFile.EndsWith(L"/") == true)
{
- AppLog("destFile is invalid[%ls]", destFile.GetPointer());
+ destDir = destFile;
+ if (File::IsFileExist(destDir) == false)
+ {
+ Directory::Create(destDir, true);
+ }
continue;
}
- destFile.SubString(0, pos, destDir);
+ else
+ {
+ r = destFile.LastIndexOf(L'/', destFile.GetLength() -1, pos);
+ if (IsFailed(r) == true)
+ {
+ AppLog("destFile is invalid[%ls]", destFile.GetPointer());
+ continue;
+ }
+ destFile.SubString(0, pos, destDir);
+ }
if (File::IsFileExist(destDir) == false)
{
#include "SignatureManager.h"
+#include <vcore/SignatureFinder.h>
+#include <vcore/SignatureData.h>
+#include <vcore/SignatureReader.h>
+#include <vcore/SignatureValidator.h>
+#include <vcore/WrtSignatureValidator.h>
+#include <vcore/VCore.h>
+
using namespace Tizen::Base;
using namespace Tizen::Security::Cert;
using namespace Tizen::Base::Collection;
CATCH:
return ret;
}
+
+bool
+SignatureManager::ValidateSignatures()
+{
+ AppLog("ValidateSignatures start >>");
+
+ TryReturn(__pContext, false, "__pContext is null.");
+
+ bool res = false;
+ res = ValidationCore::VCoreInit(
+ std::string("/usr/share/wrt-engine/fingerprint_list.xml"),
+ std::string("/usr/share/wrt-engine/fingerprint_list.xsd"),
+ std::string("/opt/dbspace/.cert_svc_vcore.db"));
+ TryReturn(res, false, "ValidationCore::VCoreInit() is failed.");
+ TryReturn(__pContext->__rootPath.IsEmpty() == false, false, "__pContext->__rootPath is empty.");
+ fprintf(stderr, " ## sValidationCore::VCoreInit() is done\n");
+
+ std::unique_ptr<char[]> pRootPath(_StringConverter::CopyToCharArrayN(__pContext->__rootPath));
+ TryReturn(pRootPath, false, "__pRootPath is null.");
+
+ std::string rootPath = pRootPath.get();
+ rootPath += "/";
+ AppLog("rootPath=[%s]", rootPath.c_str());
+
+ ValidationCore::SignatureFinder::Result findRes = ValidationCore::SignatureFinder::NO_ERROR;
+ ValidationCore::SignatureFinder signatureFinder(rootPath);
+ ValidationCore::SignatureFileInfoSet signatureFiles;
+
+ findRes = signatureFinder.find(signatureFiles);
+ TryReturn(findRes == ValidationCore::SignatureFinder::NO_ERROR , false, "signatureFinder.find() is failed, findRes=[%d]", (int)findRes);
+
+ fprintf(stderr, " ## signatureFinder.find() is done\n");
+ ValidationCore::SignatureFileInfoSet::reverse_iterator iter = signatureFiles.rbegin();
+ for (; iter != signatureFiles.rend(); ++iter)
+ {
+ AppLog("SignatureFiles: name=[%s]", iter->getFileName().c_str());
+ AppLog("SignatureFiles: number=[%d]", iter->getFileNumber());
+ ValidationCore::SignatureData data(rootPath + iter->getFileName(), iter->getFileNumber());
+
+ try {
+ ValidationCore::SignatureReader xml;
+ xml.initialize(data, "/usr/share/wrt-engine/schema.xsd");
+ xml.read(data);
+ AppLog("ValidationCore::SignatureReader() done");
+ fprintf(stderr, " ## ValidationCore::SignatureReader() is done\n");
+
+// ValidationCore::CertificateList certList = data.getCertList();
+// ValidationCore::CertificateList::iterator it = certList.begin();
+// ValidationCore::CertificateList::iterator it_end = certList.end();
+// for (; it != it_end; it++)
+// {
+// std::string value = (*it)->getBase64();
+// AppLog("cert value=[%s]", value.c_str());
+// }
+
+ ValidationCore::SignatureValidator::Result valRes = ValidationCore::SignatureValidator::SIGNATURE_VALID;
+ ValidationCore::SignatureValidator::AppType appType = ValidationCore::SignatureValidator::TIZEN;
+ ValidationCore::SignatureValidator validator(appType, false, false, false);
+
+ AppLog("validator.check() start >>");
+ fprintf(stderr, " ## validator.check() start\n");
+
+ valRes = validator.check(data, rootPath);
+ TryReturn(valRes == ValidationCore::SignatureValidator::SIGNATURE_VERIFIED, false, "validator.check() is failed, valRes=[%d]", (int)valRes);
+ fprintf(stderr, " ## validator.check() done\n");
+ AppLog("validator.check() done <<");
+ fprintf(stderr, " ## Signature validator.check success, name=[%s], number=[%d]\n", iter->getFileName().c_str(), iter->getFileNumber());
+ }
+ catch (ValidationCore::ParserSchemaException::Base)
+ {
+ TryReturn(0, false, "ParserSchemaException::Base exception occurred.");
+ }
+ catch (DPL::Exception)
+ {
+ TryReturn(0, false, "DPL::Exception exception occurred.");
+ }
+ }
+
+ AppLog("ValidateSignatures done successfully <<");
+ return true;
+}