diff options
Diffstat (limited to 'src/lib/libcrypto/engine')
| -rw-r--r-- | src/lib/libcrypto/engine/eng_cnf.c | 2 | ||||
| -rw-r--r-- | src/lib/libcrypto/engine/eng_err.c | 158 | ||||
| -rw-r--r-- | src/lib/libcrypto/engine/hw_aep.c | 1 | ||||
| -rw-r--r-- | src/lib/libcrypto/engine/hw_atalla.c | 1 | ||||
| -rw-r--r-- | src/lib/libcrypto/engine/hw_cswift.c | 204 | ||||
| -rw-r--r-- | src/lib/libcrypto/engine/hw_ubsec.c | 1 | ||||
| -rw-r--r-- | src/lib/libcrypto/engine/tb_dsa.c | 2 |
7 files changed, 244 insertions, 125 deletions
diff --git a/src/lib/libcrypto/engine/eng_cnf.c b/src/lib/libcrypto/engine/eng_cnf.c index cdf670901a..4225760af1 100644 --- a/src/lib/libcrypto/engine/eng_cnf.c +++ b/src/lib/libcrypto/engine/eng_cnf.c | |||
| @@ -158,7 +158,7 @@ static int int_engine_configure(char *name, char *value, const CONF *cnf) | |||
| 158 | */ | 158 | */ |
| 159 | if (!strcmp(ctrlvalue, "EMPTY")) | 159 | if (!strcmp(ctrlvalue, "EMPTY")) |
| 160 | ctrlvalue = NULL; | 160 | ctrlvalue = NULL; |
| 161 | else if (!strcmp(ctrlname, "init")) | 161 | if (!strcmp(ctrlname, "init")) |
| 162 | { | 162 | { |
| 163 | if (!NCONF_get_number_e(cnf, value, "init", &do_init)) | 163 | if (!NCONF_get_number_e(cnf, value, "init", &do_init)) |
| 164 | goto err; | 164 | goto err; |
diff --git a/src/lib/libcrypto/engine/eng_err.c b/src/lib/libcrypto/engine/eng_err.c index 814d95ee32..fdc0e7be0f 100644 --- a/src/lib/libcrypto/engine/eng_err.c +++ b/src/lib/libcrypto/engine/eng_err.c | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | /* crypto/engine/eng_err.c */ | 1 | /* crypto/engine/eng_err.c */ |
| 2 | /* ==================================================================== | 2 | /* ==================================================================== |
| 3 | * Copyright (c) 1999-2002 The OpenSSL Project. All rights reserved. | 3 | * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved. |
| 4 | * | 4 | * |
| 5 | * Redistribution and use in source and binary forms, with or without | 5 | * Redistribution and use in source and binary forms, with or without |
| 6 | * modification, are permitted provided that the following conditions | 6 | * modification, are permitted provided that the following conditions |
| @@ -64,87 +64,91 @@ | |||
| 64 | 64 | ||
| 65 | /* BEGIN ERROR CODES */ | 65 | /* BEGIN ERROR CODES */ |
| 66 | #ifndef OPENSSL_NO_ERR | 66 | #ifndef OPENSSL_NO_ERR |
| 67 | |||
| 68 | #define ERR_FUNC(func) ERR_PACK(ERR_LIB_ENGINE,func,0) | ||
| 69 | #define ERR_REASON(reason) ERR_PACK(ERR_LIB_ENGINE,0,reason) | ||
| 70 | |||
| 67 | static ERR_STRING_DATA ENGINE_str_functs[]= | 71 | static ERR_STRING_DATA ENGINE_str_functs[]= |
| 68 | { | 72 | { |
| 69 | {ERR_PACK(0,ENGINE_F_DYNAMIC_CTRL,0), "DYNAMIC_CTRL"}, | 73 | {ERR_FUNC(ENGINE_F_DYNAMIC_CTRL), "DYNAMIC_CTRL"}, |
| 70 | {ERR_PACK(0,ENGINE_F_DYNAMIC_GET_DATA_CTX,0), "DYNAMIC_GET_DATA_CTX"}, | 74 | {ERR_FUNC(ENGINE_F_DYNAMIC_GET_DATA_CTX), "DYNAMIC_GET_DATA_CTX"}, |
| 71 | {ERR_PACK(0,ENGINE_F_DYNAMIC_LOAD,0), "DYNAMIC_LOAD"}, | 75 | {ERR_FUNC(ENGINE_F_DYNAMIC_LOAD), "DYNAMIC_LOAD"}, |
| 72 | {ERR_PACK(0,ENGINE_F_ENGINE_ADD,0), "ENGINE_add"}, | 76 | {ERR_FUNC(ENGINE_F_ENGINE_ADD), "ENGINE_add"}, |
| 73 | {ERR_PACK(0,ENGINE_F_ENGINE_BY_ID,0), "ENGINE_by_id"}, | 77 | {ERR_FUNC(ENGINE_F_ENGINE_BY_ID), "ENGINE_by_id"}, |
| 74 | {ERR_PACK(0,ENGINE_F_ENGINE_CMD_IS_EXECUTABLE,0), "ENGINE_cmd_is_executable"}, | 78 | {ERR_FUNC(ENGINE_F_ENGINE_CMD_IS_EXECUTABLE), "ENGINE_cmd_is_executable"}, |
| 75 | {ERR_PACK(0,ENGINE_F_ENGINE_CTRL,0), "ENGINE_ctrl"}, | 79 | {ERR_FUNC(ENGINE_F_ENGINE_CTRL), "ENGINE_ctrl"}, |
| 76 | {ERR_PACK(0,ENGINE_F_ENGINE_CTRL_CMD,0), "ENGINE_ctrl_cmd"}, | 80 | {ERR_FUNC(ENGINE_F_ENGINE_CTRL_CMD), "ENGINE_ctrl_cmd"}, |
| 77 | {ERR_PACK(0,ENGINE_F_ENGINE_CTRL_CMD_STRING,0), "ENGINE_ctrl_cmd_string"}, | 81 | {ERR_FUNC(ENGINE_F_ENGINE_CTRL_CMD_STRING), "ENGINE_ctrl_cmd_string"}, |
| 78 | {ERR_PACK(0,ENGINE_F_ENGINE_FINISH,0), "ENGINE_finish"}, | 82 | {ERR_FUNC(ENGINE_F_ENGINE_FINISH), "ENGINE_finish"}, |
| 79 | {ERR_PACK(0,ENGINE_F_ENGINE_FREE,0), "ENGINE_free"}, | 83 | {ERR_FUNC(ENGINE_F_ENGINE_FREE), "ENGINE_free"}, |
| 80 | {ERR_PACK(0,ENGINE_F_ENGINE_GET_CIPHER,0), "ENGINE_get_cipher"}, | 84 | {ERR_FUNC(ENGINE_F_ENGINE_GET_CIPHER), "ENGINE_get_cipher"}, |
| 81 | {ERR_PACK(0,ENGINE_F_ENGINE_GET_DEFAULT_TYPE,0), "ENGINE_GET_DEFAULT_TYPE"}, | 85 | {ERR_FUNC(ENGINE_F_ENGINE_GET_DEFAULT_TYPE), "ENGINE_GET_DEFAULT_TYPE"}, |
| 82 | {ERR_PACK(0,ENGINE_F_ENGINE_GET_DIGEST,0), "ENGINE_get_digest"}, | 86 | {ERR_FUNC(ENGINE_F_ENGINE_GET_DIGEST), "ENGINE_get_digest"}, |
| 83 | {ERR_PACK(0,ENGINE_F_ENGINE_GET_NEXT,0), "ENGINE_get_next"}, | 87 | {ERR_FUNC(ENGINE_F_ENGINE_GET_NEXT), "ENGINE_get_next"}, |
| 84 | {ERR_PACK(0,ENGINE_F_ENGINE_GET_PREV,0), "ENGINE_get_prev"}, | 88 | {ERR_FUNC(ENGINE_F_ENGINE_GET_PREV), "ENGINE_get_prev"}, |
| 85 | {ERR_PACK(0,ENGINE_F_ENGINE_INIT,0), "ENGINE_init"}, | 89 | {ERR_FUNC(ENGINE_F_ENGINE_INIT), "ENGINE_init"}, |
| 86 | {ERR_PACK(0,ENGINE_F_ENGINE_LIST_ADD,0), "ENGINE_LIST_ADD"}, | 90 | {ERR_FUNC(ENGINE_F_ENGINE_LIST_ADD), "ENGINE_LIST_ADD"}, |
| 87 | {ERR_PACK(0,ENGINE_F_ENGINE_LIST_REMOVE,0), "ENGINE_LIST_REMOVE"}, | 91 | {ERR_FUNC(ENGINE_F_ENGINE_LIST_REMOVE), "ENGINE_LIST_REMOVE"}, |
| 88 | {ERR_PACK(0,ENGINE_F_ENGINE_LOAD_PRIVATE_KEY,0), "ENGINE_load_private_key"}, | 92 | {ERR_FUNC(ENGINE_F_ENGINE_LOAD_PRIVATE_KEY), "ENGINE_load_private_key"}, |
| 89 | {ERR_PACK(0,ENGINE_F_ENGINE_LOAD_PUBLIC_KEY,0), "ENGINE_load_public_key"}, | 93 | {ERR_FUNC(ENGINE_F_ENGINE_LOAD_PUBLIC_KEY), "ENGINE_load_public_key"}, |
| 90 | {ERR_PACK(0,ENGINE_F_ENGINE_MODULE_INIT,0), "ENGINE_MODULE_INIT"}, | 94 | {ERR_FUNC(ENGINE_F_ENGINE_MODULE_INIT), "ENGINE_MODULE_INIT"}, |
| 91 | {ERR_PACK(0,ENGINE_F_ENGINE_NEW,0), "ENGINE_new"}, | 95 | {ERR_FUNC(ENGINE_F_ENGINE_NEW), "ENGINE_new"}, |
| 92 | {ERR_PACK(0,ENGINE_F_ENGINE_REMOVE,0), "ENGINE_remove"}, | 96 | {ERR_FUNC(ENGINE_F_ENGINE_REMOVE), "ENGINE_remove"}, |
| 93 | {ERR_PACK(0,ENGINE_F_ENGINE_SET_DEFAULT_STRING,0), "ENGINE_set_default_string"}, | 97 | {ERR_FUNC(ENGINE_F_ENGINE_SET_DEFAULT_STRING), "ENGINE_set_default_string"}, |
| 94 | {ERR_PACK(0,ENGINE_F_ENGINE_SET_DEFAULT_TYPE,0), "ENGINE_SET_DEFAULT_TYPE"}, | 98 | {ERR_FUNC(ENGINE_F_ENGINE_SET_DEFAULT_TYPE), "ENGINE_SET_DEFAULT_TYPE"}, |
| 95 | {ERR_PACK(0,ENGINE_F_ENGINE_SET_ID,0), "ENGINE_set_id"}, | 99 | {ERR_FUNC(ENGINE_F_ENGINE_SET_ID), "ENGINE_set_id"}, |
| 96 | {ERR_PACK(0,ENGINE_F_ENGINE_SET_NAME,0), "ENGINE_set_name"}, | 100 | {ERR_FUNC(ENGINE_F_ENGINE_SET_NAME), "ENGINE_set_name"}, |
| 97 | {ERR_PACK(0,ENGINE_F_ENGINE_TABLE_REGISTER,0), "ENGINE_TABLE_REGISTER"}, | 101 | {ERR_FUNC(ENGINE_F_ENGINE_TABLE_REGISTER), "ENGINE_TABLE_REGISTER"}, |
| 98 | {ERR_PACK(0,ENGINE_F_ENGINE_UNLOAD_KEY,0), "ENGINE_UNLOAD_KEY"}, | 102 | {ERR_FUNC(ENGINE_F_ENGINE_UNLOAD_KEY), "ENGINE_UNLOAD_KEY"}, |
| 99 | {ERR_PACK(0,ENGINE_F_ENGINE_UP_REF,0), "ENGINE_up_ref"}, | 103 | {ERR_FUNC(ENGINE_F_ENGINE_UP_REF), "ENGINE_up_ref"}, |
| 100 | {ERR_PACK(0,ENGINE_F_INT_CTRL_HELPER,0), "INT_CTRL_HELPER"}, | 104 | {ERR_FUNC(ENGINE_F_INT_CTRL_HELPER), "INT_CTRL_HELPER"}, |
| 101 | {ERR_PACK(0,ENGINE_F_INT_ENGINE_CONFIGURE,0), "INT_ENGINE_CONFIGURE"}, | 105 | {ERR_FUNC(ENGINE_F_INT_ENGINE_CONFIGURE), "INT_ENGINE_CONFIGURE"}, |
| 102 | {ERR_PACK(0,ENGINE_F_LOG_MESSAGE,0), "LOG_MESSAGE"}, | 106 | {ERR_FUNC(ENGINE_F_LOG_MESSAGE), "LOG_MESSAGE"}, |
| 103 | {ERR_PACK(0,ENGINE_F_SET_DATA_CTX,0), "SET_DATA_CTX"}, | 107 | {ERR_FUNC(ENGINE_F_SET_DATA_CTX), "SET_DATA_CTX"}, |
| 104 | {0,NULL} | 108 | {0,NULL} |
| 105 | }; | 109 | }; |
| 106 | 110 | ||
| 107 | static ERR_STRING_DATA ENGINE_str_reasons[]= | 111 | static ERR_STRING_DATA ENGINE_str_reasons[]= |
| 108 | { | 112 | { |
| 109 | {ENGINE_R_ALREADY_LOADED ,"already loaded"}, | 113 | {ERR_REASON(ENGINE_R_ALREADY_LOADED) ,"already loaded"}, |
| 110 | {ENGINE_R_ARGUMENT_IS_NOT_A_NUMBER ,"argument is not a number"}, | 114 | {ERR_REASON(ENGINE_R_ARGUMENT_IS_NOT_A_NUMBER),"argument is not a number"}, |
| 111 | {ENGINE_R_CMD_NOT_EXECUTABLE ,"cmd not executable"}, | 115 | {ERR_REASON(ENGINE_R_CMD_NOT_EXECUTABLE) ,"cmd not executable"}, |
| 112 | {ENGINE_R_COMMAND_TAKES_INPUT ,"command takes input"}, | 116 | {ERR_REASON(ENGINE_R_COMMAND_TAKES_INPUT),"command takes input"}, |
| 113 | {ENGINE_R_COMMAND_TAKES_NO_INPUT ,"command takes no input"}, | 117 | {ERR_REASON(ENGINE_R_COMMAND_TAKES_NO_INPUT),"command takes no input"}, |
| 114 | {ENGINE_R_CONFLICTING_ENGINE_ID ,"conflicting engine id"}, | 118 | {ERR_REASON(ENGINE_R_CONFLICTING_ENGINE_ID),"conflicting engine id"}, |
| 115 | {ENGINE_R_CTRL_COMMAND_NOT_IMPLEMENTED ,"ctrl command not implemented"}, | 119 | {ERR_REASON(ENGINE_R_CTRL_COMMAND_NOT_IMPLEMENTED),"ctrl command not implemented"}, |
| 116 | {ENGINE_R_DH_NOT_IMPLEMENTED ,"dh not implemented"}, | 120 | {ERR_REASON(ENGINE_R_DH_NOT_IMPLEMENTED) ,"dh not implemented"}, |
| 117 | {ENGINE_R_DSA_NOT_IMPLEMENTED ,"dsa not implemented"}, | 121 | {ERR_REASON(ENGINE_R_DSA_NOT_IMPLEMENTED),"dsa not implemented"}, |
| 118 | {ENGINE_R_DSO_FAILURE ,"DSO failure"}, | 122 | {ERR_REASON(ENGINE_R_DSO_FAILURE) ,"DSO failure"}, |
| 119 | {ENGINE_R_DSO_NOT_FOUND ,"dso not found"}, | 123 | {ERR_REASON(ENGINE_R_DSO_NOT_FOUND) ,"dso not found"}, |
| 120 | {ENGINE_R_ENGINES_SECTION_ERROR ,"engines section error"}, | 124 | {ERR_REASON(ENGINE_R_ENGINES_SECTION_ERROR),"engines section error"}, |
| 121 | {ENGINE_R_ENGINE_IS_NOT_IN_LIST ,"engine is not in the list"}, | 125 | {ERR_REASON(ENGINE_R_ENGINE_IS_NOT_IN_LIST),"engine is not in the list"}, |
| 122 | {ENGINE_R_ENGINE_SECTION_ERROR ,"engine section error"}, | 126 | {ERR_REASON(ENGINE_R_ENGINE_SECTION_ERROR),"engine section error"}, |
| 123 | {ENGINE_R_FAILED_LOADING_PRIVATE_KEY ,"failed loading private key"}, | 127 | {ERR_REASON(ENGINE_R_FAILED_LOADING_PRIVATE_KEY),"failed loading private key"}, |
| 124 | {ENGINE_R_FAILED_LOADING_PUBLIC_KEY ,"failed loading public key"}, | 128 | {ERR_REASON(ENGINE_R_FAILED_LOADING_PUBLIC_KEY),"failed loading public key"}, |
| 125 | {ENGINE_R_FINISH_FAILED ,"finish failed"}, | 129 | {ERR_REASON(ENGINE_R_FINISH_FAILED) ,"finish failed"}, |
| 126 | {ENGINE_R_GET_HANDLE_FAILED ,"could not obtain hardware handle"}, | 130 | {ERR_REASON(ENGINE_R_GET_HANDLE_FAILED) ,"could not obtain hardware handle"}, |
| 127 | {ENGINE_R_ID_OR_NAME_MISSING ,"'id' or 'name' missing"}, | 131 | {ERR_REASON(ENGINE_R_ID_OR_NAME_MISSING) ,"'id' or 'name' missing"}, |
| 128 | {ENGINE_R_INIT_FAILED ,"init failed"}, | 132 | {ERR_REASON(ENGINE_R_INIT_FAILED) ,"init failed"}, |
| 129 | {ENGINE_R_INTERNAL_LIST_ERROR ,"internal list error"}, | 133 | {ERR_REASON(ENGINE_R_INTERNAL_LIST_ERROR),"internal list error"}, |
| 130 | {ENGINE_R_INVALID_ARGUMENT ,"invalid argument"}, | 134 | {ERR_REASON(ENGINE_R_INVALID_ARGUMENT) ,"invalid argument"}, |
| 131 | {ENGINE_R_INVALID_CMD_NAME ,"invalid cmd name"}, | 135 | {ERR_REASON(ENGINE_R_INVALID_CMD_NAME) ,"invalid cmd name"}, |
| 132 | {ENGINE_R_INVALID_CMD_NUMBER ,"invalid cmd number"}, | 136 | {ERR_REASON(ENGINE_R_INVALID_CMD_NUMBER) ,"invalid cmd number"}, |
| 133 | {ENGINE_R_INVALID_INIT_VALUE ,"invalid init value"}, | 137 | {ERR_REASON(ENGINE_R_INVALID_INIT_VALUE) ,"invalid init value"}, |
| 134 | {ENGINE_R_INVALID_STRING ,"invalid string"}, | 138 | {ERR_REASON(ENGINE_R_INVALID_STRING) ,"invalid string"}, |
| 135 | {ENGINE_R_NOT_INITIALISED ,"not initialised"}, | 139 | {ERR_REASON(ENGINE_R_NOT_INITIALISED) ,"not initialised"}, |
| 136 | {ENGINE_R_NOT_LOADED ,"not loaded"}, | 140 | {ERR_REASON(ENGINE_R_NOT_LOADED) ,"not loaded"}, |
| 137 | {ENGINE_R_NO_CONTROL_FUNCTION ,"no control function"}, | 141 | {ERR_REASON(ENGINE_R_NO_CONTROL_FUNCTION),"no control function"}, |
| 138 | {ENGINE_R_NO_INDEX ,"no index"}, | 142 | {ERR_REASON(ENGINE_R_NO_INDEX) ,"no index"}, |
| 139 | {ENGINE_R_NO_LOAD_FUNCTION ,"no load function"}, | 143 | {ERR_REASON(ENGINE_R_NO_LOAD_FUNCTION) ,"no load function"}, |
| 140 | {ENGINE_R_NO_REFERENCE ,"no reference"}, | 144 | {ERR_REASON(ENGINE_R_NO_REFERENCE) ,"no reference"}, |
| 141 | {ENGINE_R_NO_SUCH_ENGINE ,"no such engine"}, | 145 | {ERR_REASON(ENGINE_R_NO_SUCH_ENGINE) ,"no such engine"}, |
| 142 | {ENGINE_R_NO_UNLOAD_FUNCTION ,"no unload function"}, | 146 | {ERR_REASON(ENGINE_R_NO_UNLOAD_FUNCTION) ,"no unload function"}, |
| 143 | {ENGINE_R_PROVIDE_PARAMETERS ,"provide parameters"}, | 147 | {ERR_REASON(ENGINE_R_PROVIDE_PARAMETERS) ,"provide parameters"}, |
| 144 | {ENGINE_R_RSA_NOT_IMPLEMENTED ,"rsa not implemented"}, | 148 | {ERR_REASON(ENGINE_R_RSA_NOT_IMPLEMENTED),"rsa not implemented"}, |
| 145 | {ENGINE_R_UNIMPLEMENTED_CIPHER ,"unimplemented cipher"}, | 149 | {ERR_REASON(ENGINE_R_UNIMPLEMENTED_CIPHER),"unimplemented cipher"}, |
| 146 | {ENGINE_R_UNIMPLEMENTED_DIGEST ,"unimplemented digest"}, | 150 | {ERR_REASON(ENGINE_R_UNIMPLEMENTED_DIGEST),"unimplemented digest"}, |
| 147 | {ENGINE_R_VERSION_INCOMPATIBILITY ,"version incompatibility"}, | 151 | {ERR_REASON(ENGINE_R_VERSION_INCOMPATIBILITY),"version incompatibility"}, |
| 148 | {0,NULL} | 152 | {0,NULL} |
| 149 | }; | 153 | }; |
| 150 | 154 | ||
| @@ -158,8 +162,8 @@ void ERR_load_ENGINE_strings(void) | |||
| 158 | { | 162 | { |
| 159 | init=0; | 163 | init=0; |
| 160 | #ifndef OPENSSL_NO_ERR | 164 | #ifndef OPENSSL_NO_ERR |
| 161 | ERR_load_strings(ERR_LIB_ENGINE,ENGINE_str_functs); | 165 | ERR_load_strings(0,ENGINE_str_functs); |
| 162 | ERR_load_strings(ERR_LIB_ENGINE,ENGINE_str_reasons); | 166 | ERR_load_strings(0,ENGINE_str_reasons); |
| 163 | #endif | 167 | #endif |
| 164 | 168 | ||
| 165 | } | 169 | } |
diff --git a/src/lib/libcrypto/engine/hw_aep.c b/src/lib/libcrypto/engine/hw_aep.c index 8b8380a582..5f1772ea99 100644 --- a/src/lib/libcrypto/engine/hw_aep.c +++ b/src/lib/libcrypto/engine/hw_aep.c | |||
| @@ -474,6 +474,7 @@ static int aep_init(ENGINE *e) | |||
| 474 | 474 | ||
| 475 | if(aep_dso) | 475 | if(aep_dso) |
| 476 | DSO_free(aep_dso); | 476 | DSO_free(aep_dso); |
| 477 | aep_dso = NULL; | ||
| 477 | 478 | ||
| 478 | p_AEP_OpenConnection = NULL; | 479 | p_AEP_OpenConnection = NULL; |
| 479 | p_AEP_ModExp = NULL; | 480 | p_AEP_ModExp = NULL; |
diff --git a/src/lib/libcrypto/engine/hw_atalla.c b/src/lib/libcrypto/engine/hw_atalla.c index e9eff9fad1..2b8342bbdd 100644 --- a/src/lib/libcrypto/engine/hw_atalla.c +++ b/src/lib/libcrypto/engine/hw_atalla.c | |||
| @@ -375,6 +375,7 @@ static int atalla_init(ENGINE *e) | |||
| 375 | err: | 375 | err: |
| 376 | if(atalla_dso) | 376 | if(atalla_dso) |
| 377 | DSO_free(atalla_dso); | 377 | DSO_free(atalla_dso); |
| 378 | atalla_dso = NULL; | ||
| 378 | p_Atalla_GetHardwareConfig = NULL; | 379 | p_Atalla_GetHardwareConfig = NULL; |
| 379 | p_Atalla_RSAPrivateKeyOpFn = NULL; | 380 | p_Atalla_RSAPrivateKeyOpFn = NULL; |
| 380 | p_Atalla_GetPerformanceStatistics = NULL; | 381 | p_Atalla_GetPerformanceStatistics = NULL; |
diff --git a/src/lib/libcrypto/engine/hw_cswift.c b/src/lib/libcrypto/engine/hw_cswift.c index f128ee5a68..1411fd8333 100644 --- a/src/lib/libcrypto/engine/hw_cswift.c +++ b/src/lib/libcrypto/engine/hw_cswift.c | |||
| @@ -90,6 +90,7 @@ static int cswift_destroy(ENGINE *e); | |||
| 90 | static int cswift_init(ENGINE *e); | 90 | static int cswift_init(ENGINE *e); |
| 91 | static int cswift_finish(ENGINE *e); | 91 | static int cswift_finish(ENGINE *e); |
| 92 | static int cswift_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)()); | 92 | static int cswift_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)()); |
| 93 | static int cswift_bn_32copy(SW_LARGENUMBER * out, const BIGNUM * in); | ||
| 93 | 94 | ||
| 94 | /* BIGNUM stuff */ | 95 | /* BIGNUM stuff */ |
| 95 | static int cswift_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, | 96 | static int cswift_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, |
| @@ -403,7 +404,10 @@ static int cswift_init(ENGINE *e) | |||
| 403 | return 1; | 404 | return 1; |
| 404 | err: | 405 | err: |
| 405 | if(cswift_dso) | 406 | if(cswift_dso) |
| 407 | { | ||
| 406 | DSO_free(cswift_dso); | 408 | DSO_free(cswift_dso); |
| 409 | cswift_dso = NULL; | ||
| 410 | } | ||
| 407 | p_CSwift_AcquireAccContext = NULL; | 411 | p_CSwift_AcquireAccContext = NULL; |
| 408 | p_CSwift_AttachKeyParam = NULL; | 412 | p_CSwift_AttachKeyParam = NULL; |
| 409 | p_CSwift_SimpleRequest = NULL; | 413 | p_CSwift_SimpleRequest = NULL; |
| @@ -553,6 +557,29 @@ err: | |||
| 553 | return to_return; | 557 | return to_return; |
| 554 | } | 558 | } |
| 555 | 559 | ||
| 560 | |||
| 561 | int cswift_bn_32copy(SW_LARGENUMBER * out, const BIGNUM * in) | ||
| 562 | { | ||
| 563 | int mod; | ||
| 564 | int numbytes = BN_num_bytes(in); | ||
| 565 | |||
| 566 | mod = 0; | ||
| 567 | while( ((out->nbytes = (numbytes+mod)) % 32) ) | ||
| 568 | { | ||
| 569 | mod++; | ||
| 570 | } | ||
| 571 | out->value = (unsigned char*)OPENSSL_malloc(out->nbytes); | ||
| 572 | if(!out->value) | ||
| 573 | { | ||
| 574 | return 0; | ||
| 575 | } | ||
| 576 | BN_bn2bin(in, &out->value[mod]); | ||
| 577 | if(mod) | ||
| 578 | memset(out->value, 0, mod); | ||
| 579 | |||
| 580 | return 1; | ||
| 581 | } | ||
| 582 | |||
| 556 | /* Un petit mod_exp chinois */ | 583 | /* Un petit mod_exp chinois */ |
| 557 | static int cswift_mod_exp_crt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, | 584 | static int cswift_mod_exp_crt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, |
| 558 | const BIGNUM *q, const BIGNUM *dmp1, | 585 | const BIGNUM *q, const BIGNUM *dmp1, |
| @@ -562,15 +589,16 @@ static int cswift_mod_exp_crt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, | |||
| 562 | SW_LARGENUMBER arg, res; | 589 | SW_LARGENUMBER arg, res; |
| 563 | SW_PARAM sw_param; | 590 | SW_PARAM sw_param; |
| 564 | SW_CONTEXT_HANDLE hac; | 591 | SW_CONTEXT_HANDLE hac; |
| 565 | BIGNUM *rsa_p = NULL; | ||
| 566 | BIGNUM *rsa_q = NULL; | ||
| 567 | BIGNUM *rsa_dmp1 = NULL; | ||
| 568 | BIGNUM *rsa_dmq1 = NULL; | ||
| 569 | BIGNUM *rsa_iqmp = NULL; | ||
| 570 | BIGNUM *argument = NULL; | ||
| 571 | BIGNUM *result = NULL; | 592 | BIGNUM *result = NULL; |
| 593 | BIGNUM *argument = NULL; | ||
| 572 | int to_return = 0; /* expect failure */ | 594 | int to_return = 0; /* expect failure */ |
| 573 | int acquired = 0; | 595 | int acquired = 0; |
| 596 | |||
| 597 | sw_param.up.crt.p.value = NULL; | ||
| 598 | sw_param.up.crt.q.value = NULL; | ||
| 599 | sw_param.up.crt.dmp1.value = NULL; | ||
| 600 | sw_param.up.crt.dmq1.value = NULL; | ||
| 601 | sw_param.up.crt.iqmp.value = NULL; | ||
| 574 | 602 | ||
| 575 | if(!get_context(&hac)) | 603 | if(!get_context(&hac)) |
| 576 | { | 604 | { |
| @@ -578,44 +606,55 @@ static int cswift_mod_exp_crt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, | |||
| 578 | goto err; | 606 | goto err; |
| 579 | } | 607 | } |
| 580 | acquired = 1; | 608 | acquired = 1; |
| 609 | |||
| 581 | /* Prepare the params */ | 610 | /* Prepare the params */ |
| 582 | BN_CTX_start(ctx); | 611 | argument = BN_new(); |
| 583 | rsa_p = BN_CTX_get(ctx); | 612 | result = BN_new(); |
| 584 | rsa_q = BN_CTX_get(ctx); | 613 | if(!result || !argument) |
| 585 | rsa_dmp1 = BN_CTX_get(ctx); | ||
| 586 | rsa_dmq1 = BN_CTX_get(ctx); | ||
| 587 | rsa_iqmp = BN_CTX_get(ctx); | ||
| 588 | argument = BN_CTX_get(ctx); | ||
| 589 | result = BN_CTX_get(ctx); | ||
| 590 | if(!result) | ||
| 591 | { | 614 | { |
| 592 | CSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_BN_CTX_FULL); | 615 | CSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_BN_CTX_FULL); |
| 593 | goto err; | 616 | goto err; |
| 594 | } | 617 | } |
| 595 | if(!bn_wexpand(rsa_p, p->top) || !bn_wexpand(rsa_q, q->top) || | 618 | |
| 596 | !bn_wexpand(rsa_dmp1, dmp1->top) || | 619 | |
| 597 | !bn_wexpand(rsa_dmq1, dmq1->top) || | 620 | sw_param.type = SW_ALG_CRT; |
| 598 | !bn_wexpand(rsa_iqmp, iqmp->top) || | 621 | /************************************************************************/ |
| 599 | !bn_wexpand(argument, a->top) || | 622 | /* 04/02/2003 */ |
| 623 | /* Modified by Frederic Giudicelli (deny-all.com) to overcome the */ | ||
| 624 | /* limitation of cswift with values not a multiple of 32 */ | ||
| 625 | /************************************************************************/ | ||
| 626 | if(!cswift_bn_32copy(&sw_param.up.crt.p, p)) | ||
| 627 | { | ||
| 628 | CSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_BN_EXPAND_FAIL); | ||
| 629 | goto err; | ||
| 630 | } | ||
| 631 | if(!cswift_bn_32copy(&sw_param.up.crt.q, q)) | ||
| 632 | { | ||
| 633 | CSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_BN_EXPAND_FAIL); | ||
| 634 | goto err; | ||
| 635 | } | ||
| 636 | if(!cswift_bn_32copy(&sw_param.up.crt.dmp1, dmp1)) | ||
| 637 | { | ||
| 638 | CSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_BN_EXPAND_FAIL); | ||
| 639 | goto err; | ||
| 640 | } | ||
| 641 | if(!cswift_bn_32copy(&sw_param.up.crt.dmq1, dmq1)) | ||
| 642 | { | ||
| 643 | CSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_BN_EXPAND_FAIL); | ||
| 644 | goto err; | ||
| 645 | } | ||
| 646 | if(!cswift_bn_32copy(&sw_param.up.crt.iqmp, iqmp)) | ||
| 647 | { | ||
| 648 | CSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_BN_EXPAND_FAIL); | ||
| 649 | goto err; | ||
| 650 | } | ||
| 651 | if( !bn_wexpand(argument, a->top) || | ||
| 600 | !bn_wexpand(result, p->top + q->top)) | 652 | !bn_wexpand(result, p->top + q->top)) |
| 601 | { | 653 | { |
| 602 | CSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_BN_EXPAND_FAIL); | 654 | CSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_BN_EXPAND_FAIL); |
| 603 | goto err; | 655 | goto err; |
| 604 | } | 656 | } |
| 605 | sw_param.type = SW_ALG_CRT; | 657 | |
| 606 | sw_param.up.crt.p.nbytes = BN_bn2bin(p, (unsigned char *)rsa_p->d); | ||
| 607 | sw_param.up.crt.p.value = (unsigned char *)rsa_p->d; | ||
| 608 | sw_param.up.crt.q.nbytes = BN_bn2bin(q, (unsigned char *)rsa_q->d); | ||
| 609 | sw_param.up.crt.q.value = (unsigned char *)rsa_q->d; | ||
| 610 | sw_param.up.crt.dmp1.nbytes = BN_bn2bin(dmp1, | ||
| 611 | (unsigned char *)rsa_dmp1->d); | ||
| 612 | sw_param.up.crt.dmp1.value = (unsigned char *)rsa_dmp1->d; | ||
| 613 | sw_param.up.crt.dmq1.nbytes = BN_bn2bin(dmq1, | ||
| 614 | (unsigned char *)rsa_dmq1->d); | ||
| 615 | sw_param.up.crt.dmq1.value = (unsigned char *)rsa_dmq1->d; | ||
| 616 | sw_param.up.crt.iqmp.nbytes = BN_bn2bin(iqmp, | ||
| 617 | (unsigned char *)rsa_iqmp->d); | ||
| 618 | sw_param.up.crt.iqmp.value = (unsigned char *)rsa_iqmp->d; | ||
| 619 | /* Attach the key params */ | 658 | /* Attach the key params */ |
| 620 | sw_status = p_CSwift_AttachKeyParam(hac, &sw_param); | 659 | sw_status = p_CSwift_AttachKeyParam(hac, &sw_param); |
| 621 | switch(sw_status) | 660 | switch(sw_status) |
| @@ -654,9 +693,22 @@ static int cswift_mod_exp_crt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, | |||
| 654 | BN_bin2bn((unsigned char *)result->d, res.nbytes, r); | 693 | BN_bin2bn((unsigned char *)result->d, res.nbytes, r); |
| 655 | to_return = 1; | 694 | to_return = 1; |
| 656 | err: | 695 | err: |
| 696 | if(sw_param.up.crt.p.value) | ||
| 697 | OPENSSL_free(sw_param.up.crt.p.value); | ||
| 698 | if(sw_param.up.crt.q.value) | ||
| 699 | OPENSSL_free(sw_param.up.crt.q.value); | ||
| 700 | if(sw_param.up.crt.dmp1.value) | ||
| 701 | OPENSSL_free(sw_param.up.crt.dmp1.value); | ||
| 702 | if(sw_param.up.crt.dmq1.value) | ||
| 703 | OPENSSL_free(sw_param.up.crt.dmq1.value); | ||
| 704 | if(sw_param.up.crt.iqmp.value) | ||
| 705 | OPENSSL_free(sw_param.up.crt.iqmp.value); | ||
| 706 | if(result) | ||
| 707 | BN_free(result); | ||
| 708 | if(argument) | ||
| 709 | BN_free(argument); | ||
| 657 | if(acquired) | 710 | if(acquired) |
| 658 | release_context(hac); | 711 | release_context(hac); |
| 659 | BN_CTX_end(ctx); | ||
| 660 | return to_return; | 712 | return to_return; |
| 661 | } | 713 | } |
| 662 | 714 | ||
| @@ -665,6 +717,27 @@ static int cswift_rsa_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa) | |||
| 665 | { | 717 | { |
| 666 | BN_CTX *ctx; | 718 | BN_CTX *ctx; |
| 667 | int to_return = 0; | 719 | int to_return = 0; |
| 720 | const RSA_METHOD * def_rsa_method; | ||
| 721 | |||
| 722 | /* Try the limits of RSA (2048 bits) */ | ||
| 723 | if(BN_num_bytes(rsa->p) > 128 || | ||
| 724 | BN_num_bytes(rsa->q) > 128 || | ||
| 725 | BN_num_bytes(rsa->dmp1) > 128 || | ||
| 726 | BN_num_bytes(rsa->dmq1) > 128 || | ||
| 727 | BN_num_bytes(rsa->iqmp) > 128) | ||
| 728 | { | ||
| 729 | #ifdef RSA_NULL | ||
| 730 | def_rsa_method=RSA_null_method(); | ||
| 731 | #else | ||
| 732 | #if 0 | ||
| 733 | def_rsa_method=RSA_PKCS1_RSAref(); | ||
| 734 | #else | ||
| 735 | def_rsa_method=RSA_PKCS1_SSLeay(); | ||
| 736 | #endif | ||
| 737 | #endif | ||
| 738 | if(def_rsa_method) | ||
| 739 | return def_rsa_method->rsa_mod_exp(r0, I, rsa); | ||
| 740 | } | ||
| 668 | 741 | ||
| 669 | if((ctx = BN_CTX_new()) == NULL) | 742 | if((ctx = BN_CTX_new()) == NULL) |
| 670 | goto err; | 743 | goto err; |
| @@ -686,6 +759,26 @@ err: | |||
| 686 | static int cswift_mod_exp_mont(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, | 759 | static int cswift_mod_exp_mont(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, |
| 687 | const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx) | 760 | const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx) |
| 688 | { | 761 | { |
| 762 | const RSA_METHOD * def_rsa_method; | ||
| 763 | |||
| 764 | /* Try the limits of RSA (2048 bits) */ | ||
| 765 | if(BN_num_bytes(r) > 256 || | ||
| 766 | BN_num_bytes(a) > 256 || | ||
| 767 | BN_num_bytes(m) > 256) | ||
| 768 | { | ||
| 769 | #ifdef RSA_NULL | ||
| 770 | def_rsa_method=RSA_null_method(); | ||
| 771 | #else | ||
| 772 | #if 0 | ||
| 773 | def_rsa_method=RSA_PKCS1_RSAref(); | ||
| 774 | #else | ||
| 775 | def_rsa_method=RSA_PKCS1_SSLeay(); | ||
| 776 | #endif | ||
| 777 | #endif | ||
| 778 | if(def_rsa_method) | ||
| 779 | return def_rsa_method->bn_mod_exp(r, a, p, m, ctx, m_ctx); | ||
| 780 | } | ||
| 781 | |||
| 689 | return cswift_mod_exp(r, a, p, m, ctx); | 782 | return cswift_mod_exp(r, a, p, m, ctx); |
| 690 | } | 783 | } |
| 691 | 784 | ||
| @@ -930,9 +1023,10 @@ static int cswift_rand_bytes(unsigned char *buf, int num) | |||
| 930 | SW_CONTEXT_HANDLE hac; | 1023 | SW_CONTEXT_HANDLE hac; |
| 931 | SW_STATUS swrc; | 1024 | SW_STATUS swrc; |
| 932 | SW_LARGENUMBER largenum; | 1025 | SW_LARGENUMBER largenum; |
| 933 | size_t nbytes = 0; | ||
| 934 | int acquired = 0; | 1026 | int acquired = 0; |
| 935 | int to_return = 0; /* assume failure */ | 1027 | int to_return = 0; /* assume failure */ |
| 1028 | unsigned char buf32[1024]; | ||
| 1029 | |||
| 936 | 1030 | ||
| 937 | if (!get_context(&hac)) | 1031 | if (!get_context(&hac)) |
| 938 | { | 1032 | { |
| @@ -941,17 +1035,19 @@ static int cswift_rand_bytes(unsigned char *buf, int num) | |||
| 941 | } | 1035 | } |
| 942 | acquired = 1; | 1036 | acquired = 1; |
| 943 | 1037 | ||
| 944 | while (nbytes < (size_t)num) | 1038 | /************************************************************************/ |
| 1039 | /* 04/02/2003 */ | ||
| 1040 | /* Modified by Frederic Giudicelli (deny-all.com) to overcome the */ | ||
| 1041 | /* limitation of cswift with values not a multiple of 32 */ | ||
| 1042 | /************************************************************************/ | ||
| 1043 | |||
| 1044 | while(num >= sizeof(buf32)) | ||
| 945 | { | 1045 | { |
| 1046 | largenum.value = buf; | ||
| 1047 | largenum.nbytes = sizeof(buf32); | ||
| 946 | /* tell CryptoSwift how many bytes we want and where we want it. | 1048 | /* tell CryptoSwift how many bytes we want and where we want it. |
| 947 | * Note: - CryptoSwift cannot do more than 4096 bytes at a time. | 1049 | * Note: - CryptoSwift cannot do more than 4096 bytes at a time. |
| 948 | * - CryptoSwift can only do multiple of 32-bits. */ | 1050 | * - CryptoSwift can only do multiple of 32-bits. */ |
| 949 | largenum.value = (SW_BYTE *) buf + nbytes; | ||
| 950 | if (4096 > num - nbytes) | ||
| 951 | largenum.nbytes = num - nbytes; | ||
| 952 | else | ||
| 953 | largenum.nbytes = 4096; | ||
| 954 | |||
| 955 | swrc = p_CSwift_SimpleRequest(hac, SW_CMD_RAND, NULL, 0, &largenum, 1); | 1051 | swrc = p_CSwift_SimpleRequest(hac, SW_CMD_RAND, NULL, 0, &largenum, 1); |
| 956 | if (swrc != SW_OK) | 1052 | if (swrc != SW_OK) |
| 957 | { | 1053 | { |
| @@ -961,14 +1057,30 @@ static int cswift_rand_bytes(unsigned char *buf, int num) | |||
| 961 | ERR_add_error_data(2, "CryptoSwift error number is ", tmpbuf); | 1057 | ERR_add_error_data(2, "CryptoSwift error number is ", tmpbuf); |
| 962 | goto err; | 1058 | goto err; |
| 963 | } | 1059 | } |
| 964 | 1060 | buf += sizeof(buf32); | |
| 965 | nbytes += largenum.nbytes; | 1061 | num -= sizeof(buf32); |
| 1062 | } | ||
| 1063 | if(num) | ||
| 1064 | { | ||
| 1065 | largenum.nbytes = sizeof(buf32); | ||
| 1066 | largenum.value = buf32; | ||
| 1067 | swrc = p_CSwift_SimpleRequest(hac, SW_CMD_RAND, NULL, 0, &largenum, 1); | ||
| 1068 | if (swrc != SW_OK) | ||
| 1069 | { | ||
| 1070 | char tmpbuf[20]; | ||
| 1071 | CSWIFTerr(CSWIFT_F_CSWIFT_CTRL, CSWIFT_R_REQUEST_FAILED); | ||
| 1072 | sprintf(tmpbuf, "%ld", swrc); | ||
| 1073 | ERR_add_error_data(2, "CryptoSwift error number is ", tmpbuf); | ||
| 1074 | goto err; | ||
| 1075 | } | ||
| 1076 | memcpy(buf, largenum.value, num); | ||
| 966 | } | 1077 | } |
| 967 | to_return = 1; /* success */ | ||
| 968 | 1078 | ||
| 1079 | to_return = 1; /* success */ | ||
| 969 | err: | 1080 | err: |
| 970 | if (acquired) | 1081 | if (acquired) |
| 971 | release_context(hac); | 1082 | release_context(hac); |
| 1083 | |||
| 972 | return to_return; | 1084 | return to_return; |
| 973 | } | 1085 | } |
| 974 | 1086 | ||
diff --git a/src/lib/libcrypto/engine/hw_ubsec.c b/src/lib/libcrypto/engine/hw_ubsec.c index 5234a08a07..8fb834af31 100644 --- a/src/lib/libcrypto/engine/hw_ubsec.c +++ b/src/lib/libcrypto/engine/hw_ubsec.c | |||
| @@ -454,6 +454,7 @@ static int ubsec_init(ENGINE *e) | |||
| 454 | err: | 454 | err: |
| 455 | if(ubsec_dso) | 455 | if(ubsec_dso) |
| 456 | DSO_free(ubsec_dso); | 456 | DSO_free(ubsec_dso); |
| 457 | ubsec_dso = NULL; | ||
| 457 | p_UBSEC_ubsec_bytes_to_bits = NULL; | 458 | p_UBSEC_ubsec_bytes_to_bits = NULL; |
| 458 | p_UBSEC_ubsec_bits_to_bytes = NULL; | 459 | p_UBSEC_ubsec_bits_to_bytes = NULL; |
| 459 | p_UBSEC_ubsec_open = NULL; | 460 | p_UBSEC_ubsec_open = NULL; |
diff --git a/src/lib/libcrypto/engine/tb_dsa.c b/src/lib/libcrypto/engine/tb_dsa.c index 80170591f2..7efe181927 100644 --- a/src/lib/libcrypto/engine/tb_dsa.c +++ b/src/lib/libcrypto/engine/tb_dsa.c | |||
| @@ -94,7 +94,7 @@ int ENGINE_set_default_DSA(ENGINE *e) | |||
| 94 | { | 94 | { |
| 95 | if(e->dsa_meth) | 95 | if(e->dsa_meth) |
| 96 | return engine_table_register(&dsa_table, | 96 | return engine_table_register(&dsa_table, |
| 97 | engine_unregister_all_DSA, e, &dummy_nid, 1, 0); | 97 | engine_unregister_all_DSA, e, &dummy_nid, 1, 1); |
| 98 | return 1; | 98 | return 1; |
| 99 | } | 99 | } |
| 100 | 100 | ||
