EVP_KEYEXCH *EVP_KEYEXCH_fetch(OPENSSL_CTX *ctx, const char *algorithm,
                               const char *properties)
{
    EVP_KEYEXCH *keyexch = NULL;
    struct keymgmt_data_st keymgmt_data;

    keymgmt_data.ctx = ctx;
    keymgmt_data.properties = properties;
    keyexch = evp_generic_fetch(ctx, OSSL_OP_KEYEXCH, algorithm, properties,
                                evp_keyexch_from_dispatch, &keymgmt_data,
                                (int (*)(void *))EVP_KEYEXCH_up_ref,
                                (void (*)(void *))EVP_KEYEXCH_free);

    return keyexch;
}