[xmlsec] XMLSEC_KEYINFO_FLAGS_KEYNAME_STOP_ON_UNKNOWN flag

Aleksey Sanin aleksey at aleksey.com
Fri Apr 27 20:55:46 PDT 2012


Sorry, I am not sure I understand what you are trying to do with
this patch. The xmlSecKeysMngrGetKey() already stops if the key
is not found.

Aleksey

On 4/27/12 1:45 AM, Frank Gross wrote:
> Hi, I modified the library to support that flag as following. It is
> working for me, but I don't know if it is ok. Could you have a look and
> tell me what you think ,thanks ?
> 
> Modified: gws/branches/gws-ext-libs-2.50/lib-aleksey-xmlsec1/src/src/keys.c
> ===================================================================
> --- gws/branches/gws-ext-libs-2.50/lib-aleksey-xmlsec1/src/src/keys.c   
> 2012-04-26 16:10:31 UTC (rev 114254)
> +++ gws/branches/gws-ext-libs-2.50/lib-aleksey-xmlsec1/src/src/keys.c   
> 2012-04-26 16:15:18 UTC (rev 114255)
> @@ -1326,7 +1326,7 @@
>   */
>  xmlSecKeyPtr
>  xmlSecKeysMngrGetKey(xmlNodePtr keyInfoNode, xmlSecKeyInfoCtxPtr
> keyInfoCtx) {
> -    xmlSecKeyPtr key;
> +    xmlSecKeyPtr key,key2;
>      int ret;
> 
>      xmlSecAssert2(keyInfoCtx != NULL, NULL);
> @@ -1361,23 +1361,30 @@
>              return(key);
>          }
>      }
> -    xmlSecKeyDestroy(key);
> 
> -    /* if we have keys manager, try it */
> -    if(keyInfoCtx->keysMngr != NULL) {
> -        key = xmlSecKeysMngrFindKey(keyInfoCtx->keysMngr, NULL,
> keyInfoCtx);
> -        if(key == NULL) {
> +    if (keyInfoCtx->keysMngr==NULL) {
> +      xmlSecKeyDestroy(key);
> +    } else {
> +      /* if we have keys manager, try it */
> +        if
> (keyInfoCtx->flags&XMLSEC_KEYINFO_FLAGS_KEYNAME_STOP_ON_UNKNOWN) {
> +          key2 = xmlSecKeysMngrFindKey(keyInfoCtx->keysMngr, key->name,
> keyInfoCtx);
> +        } else {
> +          key2 = xmlSecKeysMngrFindKey(keyInfoCtx->keysMngr, NULL,
> keyInfoCtx);
> +        }
> +        xmlSecKeyDestroy(key);
> +        if(key2 == NULL) {
>              xmlSecError(XMLSEC_ERRORS_HERE,
>                          NULL,
>                          "xmlSecKeysMngrFindKey",
>                          XMLSEC_ERRORS_R_XMLSEC_FAILED,
>                          XMLSEC_ERRORS_NO_MESSAGE);
> +
>              return(NULL);
>          }
> -        if(xmlSecKeyGetValue(key) != NULL) {
> -            return(key);
> +        if(xmlSecKeyGetValue(key2) != NULL) {
> +            return(key2);
>          }
> -        xmlSecKeyDestroy(key);
> +        xmlSecKeyDestroy(key2);
>      }
> 
>      xmlSecError(XMLSEC_ERRORS_HERE,
> 
> 
> Frank
> 
> 
> Le 26/04/2012 17:19, Aleksey Sanin a écrit :
>> Probably not.
>>
>> Aleksey
>>
>> On 4/26/12 8:13 AM, Frank Gross wrote:
>>> Hi,
>>>
>>>   I would like to use the flag called
>>> XMLSEC_KEYINFO_FLAGS_KEYNAME_STOP_ON_UNKNOWN, but it doesn't seem to
>>> work. It is defined in keyinfo.h but nowhere else. Is this flag active ?
>>>
>>> Regards,
>>>
>>> Frank
>>>
> 


More information about the xmlsec mailing list