Divide alias into name & label in getCertificateChain
authorkyungwook tak <k.tak@samsung.com>
Tue, 4 Nov 2014 10:13:07 +0000 (19:13 +0900)
committerMaciej J. Karpiuk <m.karpiuk2@samsung.com>
Tue, 17 Feb 2015 10:00:04 +0000 (11:00 +0100)
Change-Id: Iacc02c6bd3b082779aa51c4cd296928c3f7f05d3
Signed-off-by: kyungwook tak <k.tak@samsung.com>
src/manager/service/ckm-logic.cpp

index 137f77f..b30e765 100644 (file)
@@ -733,6 +733,7 @@ RawBuffer CKMLogic::getCertificateChain(
     const AliasVector &aliasVector)
 {
     int retCode = CKM_API_SUCCESS;
+    std::size_t separator_pos = 0;
     RawBufferVector chainRawVector;
     try {
         CertificateImpl cert(certificate, DataFormat::FORM_DER);
@@ -746,7 +747,25 @@ RawBuffer CKMLogic::getCertificateChain(
         }
 
         for (auto &i: aliasVector) {
-            retCode = getDataHelper(cred, DBDataType::CERTIFICATE, i, Label(), Password(), row);
+            if ((separator_pos = i.rfind(LABEL_NAME_SEPARATOR)) == Alias::npos) {
+                // No label prefixed in alias. put empty label
+                retCode = getDataHelper(
+                        cred,
+                        DBDataType::CERTIFICATE,
+                        i,
+                        Label(),
+                        Password(),
+                        row);
+            }
+            else {
+                retCode = getDataHelper(
+                        cred,
+                        DBDataType::CERTIFICATE,
+                        i.substr(separator_pos+strlen(LABEL_NAME_SEPARATOR)), // alias
+                        Label(i.substr(0, separator_pos)),                    // label
+                        Password(),
+                        row);
+            }
 
             if (retCode != CKM_API_SUCCESS)
                 goto senderror;