X-Git-Url: http://wagner.pp.ru/gitweb/?a=blobdiff_plain;f=gost_ctl.c;h=64b76ad66e802a5896547f53465f679622a93cf3;hb=refs%2Fheads%2Fgost_provider;hp=8e3c1c62462adcfbcaba428cdbba676b2cdb8ec9;hpb=57d07eb0dc22bee10aebb0bd37cbdf2258413564;p=openssl-gost%2Fengine.git diff --git a/gost_ctl.c b/gost_ctl.c index 8e3c1c6..64b76ad 100644 --- a/gost_ctl.c +++ b/gost_ctl.c @@ -15,7 +15,8 @@ #include "gost_lcl.h" static char *gost_params[GOST_PARAM_MAX + 1] = { NULL }; -static const char *gost_envnames[] = { "CRYPT_PARAMS", "GOST_PBE_HMAC" }; +static const char *gost_envnames[] = + { "CRYPT_PARAMS", "GOST_PBE_HMAC", "GOST_PK_FORMAT" }; const ENGINE_CMD_DEFN gost_cmds[] = { {GOST_CTRL_CRYPT_PARAMS, @@ -26,6 +27,10 @@ const ENGINE_CMD_DEFN gost_cmds[] = { "PBE_PARAMS", "Shortname of default digest alg for PBE", ENGINE_CMD_FLAG_STRING}, + {GOST_CTRL_PK_FORMAT, + "GOST_PK_FORMAT", + "Private key format params", + ENGINE_CMD_FLAG_STRING}, {0, NULL, NULL, 0} }; @@ -44,8 +49,9 @@ int gost_control_func(ENGINE *e, int cmd, long i, void *p, void (*f) (void)) { int param = cmd - ENGINE_CMD_BASE; int ret = 0; - if (param < 0 || param > GOST_PARAM_MAX) + if (param < 0 || param > GOST_PARAM_MAX) { return -1; + } ret = gost_set_default_param(param, p); return ret; } @@ -53,7 +59,7 @@ int gost_control_func(ENGINE *e, int cmd, long i, void *p, void (*f) (void)) const char *get_gost_engine_param(int param) { char *tmp; - if (param < 0 || param > GOST_PARAM_MAX) + if (param < 0 || param >= GOST_PARAM_MAX) return NULL; if (gost_params[param] != NULL) { return gost_params[param]; @@ -70,14 +76,16 @@ const char *get_gost_engine_param(int param) int gost_set_default_param(int param, const char *value) { const char *tmp; - if (param < 0 || param > GOST_PARAM_MAX) + if (param < 0 || param >= GOST_PARAM_MAX) return 0; tmp = getenv(gost_envnames[param]); + /* * if there is value in the environment, use it, else -passed string * */ - if (!tmp) + if (!tmp) { tmp = value; + } OPENSSL_free(gost_params[param]); gost_params[param] = BUF_strdup(tmp);