static int bind_helper(ENGINE * e) { if (!ENGINE_set_id(e, TEST_ENGINE_ID) || !ENGINE_set_name(e, TEST_ENGINE_NAME) || !ENGINE_set_ctrl_function(e, test_engine_ctrl) || !ENGINE_set_cmd_defns(e, te_cmd_defns) || !ENGINE_set_digests(e, te_digests) || !ENGINE_set_pkey_meths(e, te_pkey_meths) || !ENGINE_set_pkey_asn1_meths(e, te_pkey_asn1_meths) ) { printf("Engine init failed\n"); return 0; } if (!register_ameth_gost(NID_hmac_sha1, &ameth_HMAC_SHA1, "hmac-sha1", "HMAC-SHA1 MAC") || !register_pmeth_gost(NID_hmac_sha1, &pmeth_HMAC_SHA1, 0)) { printf("Internal init failed\n"); return 0; } if(!ENGINE_register_digests(e) || !ENGINE_register_pkey_meths(e) || !ENGINE_register_pkey_asn1_meths(e) || !EVP_add_digest(&digest_hmac_sha1)) { printf("Digest registration failed\n"); return 0; } return 1; }
int bind_helper(ENGINE * e, const char *id) { if (!ENGINE_set_id(e, engine_Everest_id) || !ENGINE_set_name(e, engine_Everest_name) || !ENGINE_set_init_function(e,Everest_init) || !ENGINE_set_pkey_meths(e, Everest_pkey_meths) ) return 0; return 1; }
/* * This internal function is used by ENGINE_openssl() and possibly by the * "dynamic" ENGINE support too */ static int bind_helper(ENGINE *e) { if (!ENGINE_set_id(e, engine_openssl_id) || !ENGINE_set_name(e, engine_openssl_name) || !ENGINE_set_destroy_function(e, openssl_destroy) #ifndef TEST_ENG_OPENSSL_NO_ALGORITHMS # ifndef OPENSSL_NO_RSA || !ENGINE_set_RSA(e, RSA_get_default_method()) # endif # ifndef OPENSSL_NO_DSA || !ENGINE_set_DSA(e, DSA_get_default_method()) # endif # ifndef OPENSSL_NO_EC || !ENGINE_set_EC(e, EC_KEY_OpenSSL()) # endif # ifndef OPENSSL_NO_DH || !ENGINE_set_DH(e, DH_get_default_method()) # endif || !ENGINE_set_RAND(e, RAND_OpenSSL()) # ifdef TEST_ENG_OPENSSL_RC4 || !ENGINE_set_ciphers(e, openssl_ciphers) # endif # ifdef TEST_ENG_OPENSSL_SHA || !ENGINE_set_digests(e, openssl_digests) # endif #endif #ifdef TEST_ENG_OPENSSL_PKEY || !ENGINE_set_load_privkey_function(e, openssl_load_privkey) #endif #ifdef TEST_ENG_OPENSSL_HMAC || !ossl_register_hmac_meth() || !ENGINE_set_pkey_meths(e, ossl_pkey_meths) #endif ) return 0; /* * If we add errors to this ENGINE, ensure the error handling is setup * here */ /* openssl_load_error_strings(); */ return 1; }
/****************************************************************************** * function: * bind_qat(ENGINE *e, * const char *id) * * @param e [IN] - OpenSSL engine pointer * @param id [IN] - engine id * * description: * Connect Qat engine to OpenSSL engine library ******************************************************************************/ static int bind_qat(ENGINE *e, const char *id) { int ret = 0; WARN("QAT Warnings enabled.\n"); DEBUG("QAT Debug enabled.\n"); DEBUG("[%s] id=%s\n", __func__, id); if (id && (strcmp(id, engine_qat_id) != 0)) { WARN("ENGINE_id defined already!\n"); goto end; } if (!ENGINE_set_id(e, engine_qat_id)) { WARN("ENGINE_set_id failed\n"); goto end; } if (!ENGINE_set_name(e, engine_qat_name)) { WARN("ENGINE_set_name failed\n"); goto end; } /* Ensure the QAT error handling is set up */ ERR_load_QAT_strings(); /* * Create static structures for ciphers now * as this function will be called by a single thread. */ qat_create_ciphers(); #ifndef OPENSSL_ENABLE_QAT_SMALL_PACKET_CIPHER_OFFLOADS CRYPTO_THREAD_run_once(&qat_pkt_threshold_table_once,qat_pkt_threshold_table_make_key); #endif DEBUG("%s: About to set mem functions\n", __func__); if (!ENGINE_set_RSA(e, qat_get_RSA_methods())) { WARN("ENGINE_set_RSA failed\n"); goto end; } if (!ENGINE_set_DSA(e, qat_get_DSA_methods())) { WARN("ENGINE_set_DSA failed\n"); goto end; } if (!ENGINE_set_DH(e, qat_get_DH_methods())) { WARN("ENGINE_set_DH failed\n"); goto end; } if (!ENGINE_set_EC(e, qat_get_EC_methods())) { WARN("ENGINE_set_EC failed\n"); goto end; } if (!ENGINE_set_ciphers(e, qat_ciphers)) { WARN("ENGINE_set_ciphers failed\n"); goto end; } if (!ENGINE_set_pkey_meths(e, qat_PRF_pkey_methods)) { WARN("ENGINE_set_pkey_meths failed\n"); goto end; } pthread_atfork(engine_fork_handler, NULL, NULL); if (!ENGINE_set_destroy_function(e, qat_engine_destroy) || !ENGINE_set_init_function(e, qat_engine_init) || !ENGINE_set_finish_function(e, qat_engine_finish) || !ENGINE_set_ctrl_function(e, qat_engine_ctrl) || !ENGINE_set_cmd_defns(e, qat_cmd_defns)) { WARN("[%s] failed reg destroy, init or finish\n", __func__); goto end; } ret = 1; end: return ret; }
static int bind_gost (ENGINE * e, const char *id) { int ret = 0; if (id && strcmp (id, engine_gost_id)) return 0; if (ameth_GostR3410_94) { printf ("GOST engine already loaded\n"); goto end; } if (!ENGINE_set_id (e, engine_gost_id)) { printf ("ENGINE_set_id failed\n"); goto end; } if (!ENGINE_set_name (e, engine_gost_name)) { printf ("ENGINE_set_name failed\n"); goto end; } if (!ENGINE_set_digests (e, gost_digests)) { printf ("ENGINE_set_digests failed\n"); goto end; } if (!ENGINE_set_ciphers (e, gost_ciphers)) { printf ("ENGINE_set_ciphers failed\n"); goto end; } if (!ENGINE_set_pkey_meths (e, gost_pkey_meths)) { printf ("ENGINE_set_pkey_meths failed\n"); goto end; } if (!ENGINE_set_pkey_asn1_meths (e, gost_pkey_asn1_meths)) { printf ("ENGINE_set_pkey_asn1_meths failed\n"); goto end; } /* Control function and commands */ if (!ENGINE_set_cmd_defns (e, gost_cmds)) { fprintf (stderr, "ENGINE_set_cmd_defns failed\n"); goto end; } if (!ENGINE_set_ctrl_function (e, gost_control_func)) { fprintf (stderr, "ENGINE_set_ctrl_func failed\n"); goto end; } if (!ENGINE_set_destroy_function (e, gost_engine_destroy) || !ENGINE_set_init_function (e, gost_engine_init) || !ENGINE_set_finish_function (e, gost_engine_finish)) { goto end; } if (!register_ameth_gost (NID_id_GostR3410_94, &ameth_GostR3410_94, "GOST94", "GOST R 34.10-94")) goto end; if (!register_ameth_gost (NID_id_GostR3410_2001, &ameth_GostR3410_2001, "GOST2001", "GOST R 34.10-2001")) goto end; if (!register_ameth_gost (NID_id_Gost28147_89_MAC, &ameth_Gost28147_MAC, "GOST-MAC", "GOST 28147-89 MAC")) goto end; if (!register_pmeth_gost (NID_id_GostR3410_94, &pmeth_GostR3410_94, 0)) goto end; if (!register_pmeth_gost (NID_id_GostR3410_2001, &pmeth_GostR3410_2001, 0)) goto end; if (!register_pmeth_gost (NID_id_Gost28147_89_MAC, &pmeth_Gost28147_MAC, 0)) goto end; if (!ENGINE_register_ciphers (e) || !ENGINE_register_digests (e) || !ENGINE_register_pkey_meths (e) /* These two actually should go in LIST_ADD command */ || !EVP_add_cipher (&cipher_gost) || !EVP_add_cipher (&cipher_gost_cpacnt) || !EVP_add_digest (&digest_gost) || !EVP_add_digest (&imit_gost_cpa)) { goto end; } ERR_load_GOST_strings (); ret = 1; end: return ret; }
/****************************************************************************** * function: * bind_qat(ENGINE *e, * const char *id) * * @param e [IN] - OpenSSL engine pointer * @param id [IN] - engine id * * description: * Connect Qat engine to OpenSSL engine library ******************************************************************************/ static int bind_qat(ENGINE *e, const char *id) { int ret = 0; #ifndef OPENSSL_ENABLE_QAT_UPSTREAM_DRIVER int upstream_flags = 0; unsigned int devmasks[] = { 0, 0, 0, 0, 0 }; #endif QAT_DEBUG_LOG_INIT(); WARN("QAT Warnings enabled.\n"); DEBUG("QAT Debug enabled.\n"); DEBUG("id=%s\n", id); if (access(QAT_DEV, F_OK) != 0) { WARN("Qat memory driver not present\n"); QATerr(QAT_F_BIND_QAT, QAT_R_MEM_DRV_NOT_PRESENT); goto end; } #ifndef OPENSSL_ENABLE_QAT_UPSTREAM_DRIVER if (!getDevices(devmasks, &upstream_flags)) { WARN("Qat device not present\n"); QATerr(QAT_F_BIND_QAT, QAT_R_QAT_DEV_NOT_PRESENT); goto end; } #endif if (id && (strcmp(id, engine_qat_id) != 0)) { WARN("ENGINE_id defined already!\n"); QATerr(QAT_F_BIND_QAT, QAT_R_ENGINE_ID_ALREADY_DEFINED); goto end; } if (!ENGINE_set_id(e, engine_qat_id)) { WARN("ENGINE_set_id failed\n"); QATerr(QAT_F_BIND_QAT, QAT_R_ENGINE_SET_ID_FAILURE); goto end; } if (!ENGINE_set_name(e, engine_qat_name)) { WARN("ENGINE_set_name failed\n"); QATerr(QAT_F_BIND_QAT, QAT_R_ENGINE_SET_NAME_FAILURE); goto end; } /* Ensure the QAT error handling is set up */ ERR_load_QAT_strings(); /* * Create static structures for ciphers now * as this function will be called by a single thread. */ qat_create_ciphers(); if (!ENGINE_set_RSA(e, qat_get_RSA_methods())) { WARN("ENGINE_set_RSA failed\n"); QATerr(QAT_F_BIND_QAT, QAT_R_ENGINE_SET_RSA_FAILURE); goto end; } if (!ENGINE_set_DSA(e, qat_get_DSA_methods())) { WARN("ENGINE_set_DSA failed\n"); QATerr(QAT_F_BIND_QAT, QAT_R_ENGINE_SET_DSA_FAILURE); goto end; } if (!ENGINE_set_DH(e, qat_get_DH_methods())) { WARN("ENGINE_set_DH failed\n"); QATerr(QAT_F_BIND_QAT, QAT_R_ENGINE_SET_DH_FAILURE); goto end; } if (!ENGINE_set_EC(e, qat_get_EC_methods())) { WARN("ENGINE_set_EC failed\n"); QATerr(QAT_F_BIND_QAT, QAT_R_ENGINE_SET_EC_FAILURE); goto end; } if (!ENGINE_set_ciphers(e, qat_ciphers)) { WARN("ENGINE_set_ciphers failed\n"); QATerr(QAT_F_BIND_QAT, QAT_R_ENGINE_SET_CIPHER_FAILURE); goto end; } if (!ENGINE_set_pkey_meths(e, qat_PRF_pkey_methods)) { WARN("ENGINE_set_pkey_meths failed\n"); QATerr(QAT_F_BIND_QAT, QAT_R_ENGINE_SET_PKEY_FAILURE); goto end; } pthread_atfork(engine_finish_before_fork_handler, NULL, engine_init_child_at_fork_handler); ret = 1; ret &= ENGINE_set_destroy_function(e, qat_engine_destroy); ret &= ENGINE_set_init_function(e, qat_engine_init); ret &= ENGINE_set_finish_function(e, qat_engine_finish); ret &= ENGINE_set_ctrl_function(e, qat_engine_ctrl); ret &= ENGINE_set_cmd_defns(e, qat_cmd_defns); if (ret == 0) { WARN("Engine failed to register init, finish or destroy functions\n"); QATerr(QAT_F_BIND_QAT, QAT_R_ENGINE_REGISTER_FUNC_FAILURE); } end: return ret; }