[xmlsec] PKCS11 - Key not found

Aleksey Sanin aleksey at aleksey.com
Sun Sep 17 13:01:26 PDT 2017


The issue is that checking RSA_FLAG_CACHE_PRIVATE was a hack.
This flag doesn't really say that this is a private key but
rather that caching should be used in private key operations.
It worked in your case and didn't work for someone else.

As I suggested in another reply, I think you should mark the
key as private yourself. This is a better way to do it.

Aleksey

On 9/17/17 10:36 AM, Pablo Gabriel Gallardo wrote:
> 2017-09-17 13:46 GMT-03:00 Pablo Gabriel Gallardo <pggllrd at gmail.com>:
>> I'll investigate to check what else can we do to determine whether an
>> EVP_PKEY is private or not. I'm not an OpenSSL expert but I want to help
>> with that.
>>
>> Regards,
>>
>> Pablo G. Gallardo
> 
> Aleksey,
> 
> I have a question. This is the code:
> 
> ```c
> RSA_get0_key(rsa, &n, &e, &d);
> if(n != NULL && e != NULL) {
>   if(d != NULL) {
>     return(xmlSecKeyDataTypePrivate | xmlSecKeyDataTypePublic);
>   } else if(RSA_test_flags(rsa, (RSA_FLAG_EXT_PKEY |
> RSA_FLAG_CACHE_PRIVATE)) != 0) {
>     /*
>     * !!! HACK !!! Also see DSA key
>     * We assume here that engine *always* has private key.
>     * This might be incorrect but it seems that there is no
>     * way to ask engine if given key is private or not.
>     */
>     return(xmlSecKeyDataTypePrivate | xmlSecKeyDataTypePublic);
>   } else {
>     return(xmlSecKeyDataTypePublic);
>   }
> }
> ```
> 
> First we check whether d is NULL or not `if(d != NULL)`. If we are
> dealing with a public key generally d is, indeed, NULL. In the case of
> smartkeys, even if we are dealing with a private key d is also NULL
> because d is inside the smartkey (never transmitted to the memory or
> CPU).
> 
> So we are failing in the second condition `RSA_test_flags(rsa,
> (RSA_FLAG_EXT_PKEY | RSA_FLAG_CACHE_PRIVATE)) != 0`, the question is:
> Those users that are reporting problems, What type of key they are
> using? If they are using a private key in a file, how can d be NULL?
> And if they are using a private key in another device, how they were
> doing that before the change in the condition so I can do the same?
> 
> Best,
> 
> Pablo G. Gallardo
> 


More information about the xmlsec mailing list