Fixed to set certi infomation
authorSoyoung Kim <sy037.kim@samsung.com>
Thu, 15 Nov 2012 07:31:04 +0000 (16:31 +0900)
committerSoyoung Kim <sy037.kim@samsung.com>
Thu, 15 Nov 2012 07:55:22 +0000 (16:55 +0900)
[Issue#] N/A
[Problem] N/A
[Cause] N/A
[Solution] Fixed to set certi information.
[SCMRequest] N/A

Change-Id: Iea569540a1e4d62b9d4209a1cd55f1bee97915af

src/jobs/widget_install/task_certificates.cpp

index a302b64..545b2d3 100755 (executable)
@@ -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<char*>(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<char*>(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<char*>(sha1String.c_str()))) < 0) {
+                LogError("pkgmgrInstallerSetCertValue fail");
+                ThrowMsg(Exceptions::SetCertificateInfoFailed,
+                        "Failed to Set CertValue");
+            }
         }
     }
 }