Fix checkList bug on partial validate 02/90502/4
authorsangwan.kwon <sangwan.kwon@samsung.com>
Fri, 30 Sep 2016 08:59:03 +0000 (17:59 +0900)
committersangwan kwon <sangwan.kwon@samsung.com>
Wed, 5 Oct 2016 00:47:26 +0000 (17:47 -0700)
* This commit is related with xmlsec1 changes

[xmlsec1 commit]
* msg: Add xmlSecProxyCtx and refactor custumized code

Change-Id: I59141b41e324c3d37318e8ba88e4374d6aa7e780
Signed-off-by: sangwan.kwon <sangwan.kwon@samsung.com>
src/vcore/XmlsecAdapter.cpp
src/vcore/XmlsecAdapter.h

index 1694f2e0ff35133473d1d9f48694902dd9d77001..7725e69ef7cb14cdb8134c0b6d1c9b79ece407f4 100644 (file)
@@ -16,7 +16,8 @@
 /*
  * @file        XmlsecAdapter.cpp
  * @author      Bartlomiej Grzelewski (b.grzelewski@samsung.com)
- * @version     2.0
+ * @author      Sangwan Kwon (sangwan.kwon@samsung.com)
+ * @version     2.1
  * @brief
  */
 #include <cstdlib>
@@ -303,23 +304,25 @@ void XmlSec::validateFile(XmlSecContext &context, xmlSecKeysMngrPtr mngrPtr)
        int res;
 
        switch (m_mode) {
-       case ValidateMode::NORMAL:
+       case ValidateMode::NORMAL: {
                res = xmlSecDSigCtxVerify(dsigCtx.get(), node);
                break;
+       }
 
        case ValidateMode::NO_HASH:
-               res = xmlSecDSigCtxVerifyEx(dsigCtx.get(), node, 1, nullptr);
+               dsigCtx.get()->flags |= XMLSEC_DSIG_FLAGS_IGNORE_REFERENCES;
+               res = xmlSecDSigCtxVerify(dsigCtx.get(), node);
                break;
 
        case ValidateMode::PARTIAL_HASH: {
-               size_t n = m_pList->size();
-               const char *pList[n + 1] = {0};
-               size_t i = 0;
-
-               for (auto uri : *m_pList)
-                       pList[i++] = uri.c_str();
-
-               res = xmlSecDSigCtxVerifyEx(dsigCtx.get(), node, 0, pList);
+               dsigCtx.get()->flags |= XMLSEC_DSIG_FLAGS_CHECK_PROXY;
+               for (auto uri : *m_pList) {
+                       if(xmlSecProxyCtxAdd(&(dsigCtx.get()->proxyCtxPtr),
+                                                               reinterpret_cast<const xmlChar *>(uri.c_str())))
+                               ThrowMsg(Exception::InternalError, "PARTIAL_HASH mode failed.");
+               }
+               res = xmlSecDSigCtxVerify(dsigCtx.get(), node);
+               xmlSecProxyCtxDestroy(dsigCtx.get()->proxyCtxPtr);
                break;
        }
 
index 0a0a522df350a473f29cd076702a4281134e3b13..a2170f043b55d96c624307e5b17678ef27331510 100644 (file)
@@ -16,7 +16,8 @@
 /*
  * @file        XmlSecAdapter.h
  * @author      Bartlomiej Grzelewski (b.grzelewski@samsung.com)
- * @version     2.0
+ * @author      Sangwan Kwon (sangwan.kwon@samsung.com)
+ * @version     2.1
  * @brief
  */
 #pragma once