diff options
Diffstat (limited to 'src/x509.c')
-rw-r--r-- | src/x509.c | 31 |
1 files changed, 12 insertions, 19 deletions
@@ -1,11 +1,19 @@ -/** +/* * XML Security Library (http://www.aleksey.com/xmlsec). * + * * This is free software; see Copyright file in the source * distribution for preciese wording. * * Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved. */ +/** + * SECTION:x509 + * @Short_description: <dsig:X509Certificate/> node parser functions. + * @Stability: Stable + * + */ + #include "globals.h" #ifndef XMLSEC_NO_X509 @@ -30,7 +38,6 @@ /** * xmlSecX509DataGetNodeContent: * @node: the pointer to <dsig:X509Data/> node. - * @deleteChildren: the flag that indicates whether to remove node children after reading. * @keyInfoCtx: the pointer to <dsig:KeyInfo/> node processing context. * * Reads the contents of <dsig:X509Data/> node and returns it as @@ -40,10 +47,8 @@ * or a negative value if an error occurs. */ int -xmlSecX509DataGetNodeContent (xmlNodePtr node, int deleteChildren, - xmlSecKeyInfoCtxPtr keyInfoCtx) { - xmlNodePtr cur, next; - int deleteCurNode; +xmlSecX509DataGetNodeContent (xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) { + xmlNodePtr cur; int content = 0; xmlSecAssert2(node != NULL, 0); @@ -52,42 +57,30 @@ xmlSecX509DataGetNodeContent (xmlNodePtr node, int deleteChildren, /* determine the current node content */ cur = xmlSecGetNextElementNode(node->children); while(cur != NULL) { - deleteCurNode = 0; if(xmlSecCheckNodeName(cur, xmlSecNodeX509Certificate, xmlSecDSigNs)) { if(xmlSecIsEmptyNode(cur) == 1) { content |= XMLSEC_X509DATA_CERTIFICATE_NODE; - deleteCurNode = 1; } } else if(xmlSecCheckNodeName(cur, xmlSecNodeX509SubjectName, xmlSecDSigNs)) { if(xmlSecIsEmptyNode(cur) == 1) { content |= XMLSEC_X509DATA_SUBJECTNAME_NODE; - deleteCurNode = 1; } } else if(xmlSecCheckNodeName(cur, xmlSecNodeX509IssuerSerial, xmlSecDSigNs)) { if(xmlSecIsEmptyNode(cur) == 1) { content |= XMLSEC_X509DATA_ISSUERSERIAL_NODE; - deleteCurNode = 1; } } else if(xmlSecCheckNodeName(cur, xmlSecNodeX509SKI, xmlSecDSigNs)) { if(xmlSecIsEmptyNode(cur) == 1) { content |= XMLSEC_X509DATA_SKI_NODE; - deleteCurNode = 1; } } else if(xmlSecCheckNodeName(cur, xmlSecNodeX509CRL, xmlSecDSigNs)) { if(xmlSecIsEmptyNode(cur) == 1) { content |= XMLSEC_X509DATA_CRL_NODE; - deleteCurNode = 1; } } else { /* todo: fail on unknown child node? */ } - next = xmlSecGetNextElementNode(cur->next); - if((deleteCurNode != 0) && (deleteChildren != 0)) { - /* remove "template" nodes */ - xmlUnlinkNode(cur); - xmlFreeNode(cur); - } - cur = next; + cur = xmlSecGetNextElementNode(cur->next); } return (content); |