On reference counting keydata returned from keymgmt_load()

Selva Nair selva.nair at gmail.com
Tue Sep 14 02:08:41 UTC 2021


When an EVP_PKEY is created with some custom data, provider's
keymgmt_load() gets called. I want to keep a reference count on the keydata
returned from it. But there is no call to keymgmt_free() or anything
similar when the EVP_PKEY is freed. How does one keep track of references
to keydata? I have something like:

OSSL_STORE_open_ex(my_custom_uri, libctx, props,....)

while (!OSSL_STORE_eof(ctx)) {
        OSSL_STORE_INFO *info = OSSL_STORE_load(ctx);
        switch(OSSL_STORE_INFO_get_type(info)) {
        case OSSL_STORE_INFO_PKEY:
            pkey = OSSL_STORE_INFO_get0_PKEY(info);
                        (tried .._get1_PKEY(info) as well).

The pkey seems to be correctly constructed with a call to my keymgmt_load()
where I construct keydata from the passed in reference.

On duplicating the key I do see calls to keymgmt_dup() and a matching
keymgmt_free() (when the key is freed), so that part is good.

I'm still figuring out the new interface and likely doing something wrong.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mta.openssl.org/pipermail/openssl-users/attachments/20210913/2b3e450b/attachment.html>

More information about the openssl-users mailing list