Register cert for signature2.xml
authorDuyoung Jang <duyoung.jang@samsung.com>
Mon, 27 May 2013 08:12:09 +0000 (17:12 +0900)
committerDuyoung Jang <duyoung.jang@samsung.com>
Mon, 27 May 2013 08:12:09 +0000 (17:12 +0900)
Change-Id: I80560e2a2582614acde6dc43c12a9868a8fd034d
Signed-off-by: Duyoung Jang <duyoung.jang@samsung.com>
inc/InstallerDefs.h
src/Context/InstallationContext.cpp
src/Context/InstallationContext.h
src/Manager/SignatureManager.cpp
src/Manager/SignatureManager.h
src/Step/SignatureStep.cpp

index 67a5c71..5c5843f 100755 (executable)
@@ -23,7 +23,7 @@
 
 #include "InstallerUtil.h"
 
-#define OSP_INSTALLER_VERSION "version=[20130527.1]"
+#define OSP_INSTALLER_VERSION "version=[20130527.2]"
 
 #define DIR_BIN                                L"/bin"
 #define DIR_INFO                       L"/info"
 
 static const int BLOCK_SIZE = 4096;
 static const int SIGNATURE_FILE_NUMBER_DISTRIBUTOR = 1;
+static const int SIGNATURE_FILE_NUMBER_DISTRIBUTOR2 = 2;
 
 #define OSP_INSTALLER  "osp-installer"
 
@@ -288,6 +289,7 @@ enum SignatureFileType
        SIGNATURE_FILE_TYPE_NONE,
        SIGNATURE_FILE_TYPE_AUTHOR,
        SIGNATURE_FILE_TYPE_DISTRIBUTOR,
+       SIGNATURE_FILE_TYPE_DISTRIBUTOR2,
 
 };
 
index a4d2a15..a756c5c 100755 (executable)
@@ -67,6 +67,7 @@ InstallationContext::InstallationContext(void)
 ,__pDistributorCertPath(null)
 ,__pAuthorCertList(null)
 ,__pDistributorCertList(null)
+,__pDistributorCertList2(null)
 ,__certType(0)
 ,__pPkgmgrInstaller(null)
 {
@@ -119,6 +120,13 @@ InstallationContext::~InstallationContext(void)
                delete __pDistributorCertList;
                __pDistributorCertList = null;
        }
+
+       if (__pDistributorCertList2)
+       {
+               __pDistributorCertList2->RemoveAll();
+               delete __pDistributorCertList2;
+               __pDistributorCertList2 = null;
+       }
 }
 
 InstallerError
@@ -133,6 +141,9 @@ InstallationContext::Construct(void)
        __pDistributorCertList = new (std::nothrow) ArrayListT<String*>;
        TryReturn(__pDistributorCertList, INSTALLER_ERROR_OUT_OF_MEMORY, "__pDistributorCertList is null.");
 
+       __pDistributorCertList2 = new (std::nothrow) ArrayListT<String*>;
+       TryReturn(__pDistributorCertList2, INSTALLER_ERROR_OUT_OF_MEMORY, "__pDistributorCertList2 is null.");
+
        return INSTALLER_ERROR_NONE;
 }
 
index c566c56..2e62846 100755 (executable)
@@ -119,6 +119,7 @@ public:
 
        Tizen::Base::Collection::ArrayListT<Tizen::Base::String *>* __pAuthorCertList;
        Tizen::Base::Collection::ArrayListT<Tizen::Base::String *>* __pDistributorCertList;
+       Tizen::Base::Collection::ArrayListT<Tizen::Base::String *>* __pDistributorCertList2;
 
        Tizen::Base::String __coreXmlPath;
        Tizen::Base::String __inputPath;
index 46c5c2e..cc3cdd1 100755 (executable)
@@ -128,6 +128,11 @@ SignatureManager::ValidateSignatures()
                                                __pContext->__pDistributorCertList->Add(new String(value.c_str()));
                                                AppLog("Default distributor cert value=[%s]", value.c_str());
                                        }
+                                       else if (sigFileNumber == SIGNATURE_FILE_NUMBER_DISTRIBUTOR2)
+                                       {
+                                               __pContext->__pDistributorCertList2->Add(new String(value.c_str()));
+                                               AppLog("Default distributor2 cert value=[%s]", value.c_str());
+                                       }
                                }
                        }
 
@@ -159,6 +164,11 @@ SignatureManager::ValidateSignatures()
                                        AppLog("CertStoreIdType = [%d]", (int)certStoreIdType);
                                        __pContext->__rootCertType = (RootCertificateType)certStoreIdType;
                                }
+                               else if (sigFileNumber == SIGNATURE_FILE_NUMBER_DISTRIBUTOR2)
+                               {
+                                       __pContext->__pDistributorCertList2->Add(new String(value.c_str()));
+                                       AppLog("Default root distributor2 cert value=[%s]", value.c_str());
+                               }
                        }
                }
                catch (ValidationCore::ParserSchemaException::Base)
@@ -250,8 +260,15 @@ SignatureManager::RegisterCertInfo() const
        if (__pContext->__pDistributorCertList)
        {
                AppLog("[DistributorCert]");
-               res = SetDistributorCertValue(handle, __pContext->__pDistributorCertList);
-               TryCatch(res == true, , "RegisterCertHashValue() is failed.");
+               res = SetDistributorCertValue(handle, __pContext->__pDistributorCertList, 1);
+               TryCatch(res == true, , "SetDistributorCertValue() is failed.");
+       }
+
+       if (__pContext->__pDistributorCertList2)
+       {
+               AppLog("[DistributorCert2]");
+               res = SetDistributorCertValue(handle, __pContext->__pDistributorCertList2, 2);
+               TryCatch(res == true, , "SetDistributorCertValue() is failed.");
        }
 
        error = pkgmgr_installer_save_certinfo(pPackageId.get(), handle);
@@ -513,10 +530,11 @@ SignatureManager::SetAuthorCertValue(void* pHandle, IListT<String *>* pCertList)
 }
 
 bool
-SignatureManager::SetDistributorCertValue(void* pHandle, IListT<String *>* pCertList) const
+SignatureManager::SetDistributorCertValue(void* pHandle, IListT<String *>* pCertList, int sigFileNumber) const
 {
        TryReturn(pHandle, false, "pHandle is null.");
        TryReturn(pCertList, false, "pCertPath is null.");
+       TryReturn((sigFileNumber == 1) || (sigFileNumber == 2), false, "sigFileNumber[%d] is invalid.", sigFileNumber);
 
        int res = 0;
        result r = E_SUCCESS;
@@ -531,22 +549,45 @@ SignatureManager::SetDistributorCertValue(void* pHandle, IListT<String *>* pCert
 
                std::unique_ptr<char[]> pCertValue(_StringConverter::CopyToCharArrayN(*pCert));
 
-               if (i == 0)
+               if (sigFileNumber == 1)
                {
-                       certType = PM_SET_DISTRIBUTOR_SIGNER_CERT;
-               }
-               else if (i == 1)
-               {
-                       certType = PM_SET_DISTRIBUTOR_INTERMEDIATE_CERT;
-               }
-               else if (i == 2)
-               {
-                       certType = PM_SET_DISTRIBUTOR_ROOT_CERT;
+                       if (i == 0)
+                       {
+                               certType = PM_SET_DISTRIBUTOR_SIGNER_CERT;
+                       }
+                       else if (i == 1)
+                       {
+                               certType = PM_SET_DISTRIBUTOR_INTERMEDIATE_CERT;
+                       }
+                       else if (i == 2)
+                       {
+                               certType = PM_SET_DISTRIBUTOR_ROOT_CERT;
+                       }
+                       else
+                       {
+                               AppLog("Invalid certificate type[%d]", i);
+                               break;
+                       }
                }
-               else
+               else if (sigFileNumber == 2)
                {
-                       AppLog("Invalid certificate type[%d]", i);
-                       break;
+                       if (i == 0)
+                       {
+                               certType = PM_SET_DISTRIBUTOR2_SIGNER_CERT;
+                       }
+                       else if (i == 1)
+                       {
+                               certType = PM_SET_DISTRIBUTOR2_INTERMEDIATE_CERT;
+                       }
+                       else if (i == 2)
+                       {
+                               certType = PM_SET_DISTRIBUTOR2_ROOT_CERT;
+                       }
+                       else
+                       {
+                               AppLog("Invalid certificate type[%d]", i);
+                               break;
+                       }
                }
 
                AppLog("------------------------------------------");
@@ -576,6 +617,10 @@ SignatureManager::SetCertificatePath(SignatureFileType type, X509CertificatePath
        {
                pList = __pContext->__pDistributorCertList;
        }
+       else if (type == SIGNATURE_FILE_TYPE_DISTRIBUTOR2)
+       {
+               pList = __pContext->__pDistributorCertList2;
+       }
        else
        {
                TryReturn(0, false, "SignatureFileType is unknown, type = [%d]", (int)type);
index c06d977..2ba8298 100755 (executable)
@@ -60,7 +60,7 @@ private:
        SignatureManager& operator =(const SignatureManager& source);
 
        bool SetAuthorCertValue(void* pHandle, Tizen::Base::Collection::IListT<Tizen::Base::String *>* pCertList) const;
-       bool SetDistributorCertValue(void* pHandle, Tizen::Base::Collection::IListT<Tizen::Base::String *>* pCertList) const;
+       bool SetDistributorCertValue(void* pHandle, Tizen::Base::Collection::IListT<Tizen::Base::String *>* pCertList, int sigFileNumber) const;
 
        bool SetCertificatePath(SignatureFileType type, Tizen::Security::Cert::X509CertificatePath* pCertPath);
        bool GetCertValue(Tizen::Security::Cert::ICertificate* pCert, Tizen::Base::String& value) const;
index e58fd8a..ea12d6b 100755 (executable)
@@ -144,6 +144,7 @@ SignatureStep::OnStateSignerInit(void)
                __pContext->__rootCertType = ROOT_CERTIFICATE_NONE;
                __pContext->__pAuthorCertList->RemoveAll();
                __pContext->__pDistributorCertList->RemoveAll();
+               __pContext->__pDistributorCertList2->RemoveAll();
        }
 
        if (res == true)