From: Soyoung Kim Date: Thu, 15 Nov 2012 07:31:04 +0000 (+0900) Subject: Fixed to set certi infomation X-Git-Tag: accepted/tizen_2.1/20130425.023916~20^2~24^2~81 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=90b96f225c64d29f38f6f2060f50153039117198;p=framework%2Fweb%2Fwrt-installer.git Fixed to set certi infomation [Issue#] N/A [Problem] N/A [Cause] N/A [Solution] Fixed to set certi information. [SCMRequest] N/A Change-Id: Iea569540a1e4d62b9d4209a1cd55f1bee97915af --- diff --git a/src/jobs/widget_install/task_certificates.cpp b/src/jobs/widget_install/task_certificates.cpp index a302b64..545b2d3 100755 --- a/src/jobs/widget_install/task_certificates.cpp +++ b/src/jobs/widget_install/task_certificates.cpp @@ -83,49 +83,75 @@ void TaskCertificates::SetCertiInfo(CertificateSource source) FOREACH(it, certificateChainList) { - LogDebug("Insert certinfo to pkgmgr db"); + LogDebug("Insert certinfo to pkgmgr structure"); ValidationCore::CertificateCollection chain; if (false == chain.load(*it)) { LogError("Chain is broken"); + ThrowMsg(Exceptions::SetCertificateInfoFailed, + "Failed to Installer Save Certinfo"); } chain.sort(); - ValidationCore::CertificateList list = chain.getCertificateList(); - FOREACH(certIt, list) { ValidationCore::Crypto::Hash::SHA1 sha1; sha1.Append((*certIt)->getDER()); sha1.Finish(); std::string sha1String = sha1.ToBase64String(); - - if ((*certIt)->isRootCert()) { - if (source == SIGNATURE_DISTRIBUTOR) { - LogDebug("Set SIGNATURE_DISTRIBUTOR "); - if((pkgmgr_installer_set_cert_value( - m_pkgHandle, - PM_SET_DISTRIBUTOR_ROOT_CERT, - const_cast(sha1String.c_str()))) < 0) { - LogError("pkgmgrInstallerSetCertValue fail"); - ThrowMsg(Exceptions::SetCertificateInfoFailed, - "Failed to Set CertValue"); + pkgmgr_instcert_type instCertType; + + if (source == SIGNATURE_DISTRIBUTOR) { + std::string + Name(DPL::ToUTF8String(*(*certIt)->getOrganizationName())); + size_t found = Name.find("Tizen"); + + if (found != std::string::npos) { + LogDebug("Set SIGNATURE_DISTRIBUTOR"); + if ((*certIt)->isRootCert()) { + instCertType = PM_SET_DISTRIBUTOR_ROOT_CERT; + } else { + if ((*certIt)->isCA()) { + instCertType = PM_SET_DISTRIBUTOR_INTERMEDIATE_CERT; + } else { + instCertType = PM_SET_DISTRIBUTOR_SIGNER_CERT; + } + } + } else { + LogDebug("Set SIGNATURE_DISTRIBUTOR2"); + if ((*certIt)->isRootCert()) { + instCertType = PM_SET_DISTRIBUTOR2_ROOT_CERT; + } else { + if ((*certIt)->isCA()) { + instCertType = PM_SET_DISTRIBUTOR2_INTERMEDIATE_CERT; + } else { + instCertType = PM_SET_DISTRIBUTOR2_SIGNER_CERT; + } } } - else { - LogDebug("set SIGNATURE_AUTHOR"); - if((pkgmgr_installer_set_cert_value( - m_pkgHandle, - PM_SET_AUTHOR_ROOT_CERT, - const_cast(sha1String.c_str()))) < 0) { - LogError("pkgmgrInstallerSetCertValue fail"); - ThrowMsg(Exceptions::SetCertificateInfoFailed, - "Failed to Installer Set CertValue"); + } else { + LogDebug("set SIGNATURE_AUTHOR"); + if ((*certIt)->isRootCert()) { + instCertType = PM_SET_AUTHOR_ROOT_CERT; + } else { + if ((*certIt)->isCA()) { + instCertType = PM_SET_AUTHOR_INTERMEDIATE_CERT; + } else { + instCertType = PM_SET_AUTHOR_SIGNER_CERT; } } } + LogDebug("cert type : " << instCertType); + if((pkgmgr_installer_set_cert_value( + m_pkgHandle, + instCertType, + const_cast(sha1String.c_str()))) < 0) { + LogError("pkgmgrInstallerSetCertValue fail"); + ThrowMsg(Exceptions::SetCertificateInfoFailed, + "Failed to Set CertValue"); + } } } }