projects
/
oweals
/
openssl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add functions to return FIPS module version.
[oweals/openssl.git]
/
apps
/
engine.c
diff --git
a/apps/engine.c
b/apps/engine.c
index 1a22d5dee9224df23e7e5cc79c02040c85eae08c..9a0294398e83a1f554019b002647d6c485832256 100644
(file)
--- a/
apps/engine.c
+++ b/
apps/engine.c
@@
-56,6
+56,7
@@
*
*/
*
*/
+
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@
-64,13
+65,14
@@
#endif
#include "apps.h"
#include <openssl/err.h>
#endif
#include "apps.h"
#include <openssl/err.h>
+#ifndef OPENSSL_NO_ENGINE
#include <openssl/engine.h>
#include <openssl/ssl.h>
#undef PROG
#define PROG engine_main
#include <openssl/engine.h>
#include <openssl/ssl.h>
#undef PROG
#define PROG engine_main
-static char *engine_usage[]={
+static c
onst c
har *engine_usage[]={
"usage: engine opts [engine ...]\n",
" -v[v[v[v]]] - verbose mode, for each engine, list its 'control commands'\n",
" -vv will additionally display each command's description\n",
"usage: engine opts [engine ...]\n",
" -v[v[v[v]]] - verbose mode, for each engine, list its 'control commands'\n",
" -vv will additionally display each command's description\n",
@@
-90,7
+92,7
@@
static char *engine_usage[]={
NULL
};
NULL
};
-static void identity(
void
*ptr)
+static void identity(
char
*ptr)
{
return;
}
{
return;
}
@@
-121,8
+123,8
@@
static int append_buf(char **buf, const char *s, int *size, int step)
return 0;
if (**buf != '\0')
return 0;
if (**buf != '\0')
-
strcat(*buf, ", "
);
-
strcat(*buf, s
);
+
BUF_strlcat(*buf, ", ", *size
);
+
BUF_strlcat(*buf, s, *size
);
return 1;
}
return 1;
}
@@
-146,11
+148,6
@@
static int util_flags(BIO *bio_out, unsigned int flags, const char *indent)
if(flags & ENGINE_CMD_FLAG_NUMERIC)
{
if(flags & ENGINE_CMD_FLAG_NUMERIC)
{
- if(started)
- {
- BIO_printf(bio_out, "|");
- err = 1;
- }
BIO_printf(bio_out, "NUMERIC");
started = 1;
}
BIO_printf(bio_out, "NUMERIC");
started = 1;
}
@@
-203,7
+200,7
@@
static int util_verbose(ENGINE *e, int verbose, BIO *bio_out, const char *indent
char *desc = NULL;
int flags;
int xpos = 0;
char *desc = NULL;
int flags;
int xpos = 0;
- STACK *cmds = NULL;
+ STACK
_OF(OPENSSL_STRING)
*cmds = NULL;
if(!ENGINE_ctrl(e, ENGINE_CTRL_HAS_CTRL_FUNCTION, 0, NULL, NULL) ||
((num = ENGINE_ctrl(e, ENGINE_CTRL_GET_FIRST_CMD_TYPE,
0, NULL, NULL)) <= 0))
if(!ENGINE_ctrl(e, ENGINE_CTRL_HAS_CTRL_FUNCTION, 0, NULL, NULL) ||
((num = ENGINE_ctrl(e, ENGINE_CTRL_GET_FIRST_CMD_TYPE,
0, NULL, NULL)) <= 0))
@@
-214,7
+211,7
@@
static int util_verbose(ENGINE *e, int verbose, BIO *bio_out, const char *indent
return 1;
}
return 1;
}
- cmds = sk_new_null();
+ cmds = sk_
OPENSSL_STRING_
new_null();
if(!cmds)
goto err;
if(!cmds)
goto err;
@@
-250,7
+247,7
@@
static int util_verbose(ENGINE *e, int verbose, BIO *bio_out, const char *indent
/* Now decide on the output */
if(xpos == 0)
/* Do an indent */
/* Now decide on the output */
if(xpos == 0)
/* Do an indent */
- xpos = BIO_p
rintf
(bio_out, indent);
+ xpos = BIO_p
uts
(bio_out, indent);
else
/* Otherwise prepend a ", " */
xpos += BIO_printf(bio_out, ", ");
else
/* Otherwise prepend a ", " */
xpos += BIO_printf(bio_out, ", ");
@@
-261,7
+258,7
@@
static int util_verbose(ENGINE *e, int verbose, BIO *bio_out, const char *indent
(xpos + (int)strlen(name) > line_wrap))
{
BIO_printf(bio_out, "\n");
(xpos + (int)strlen(name) > line_wrap))
{
BIO_printf(bio_out, "\n");
- xpos = BIO_p
rintf
(bio_out, indent);
+ xpos = BIO_p
uts
(bio_out, indent);
}
xpos += BIO_printf(bio_out, "%s", name);
}
}
xpos += BIO_printf(bio_out, "%s", name);
}
@@
-287,15
+284,17
@@
static int util_verbose(ENGINE *e, int verbose, BIO *bio_out, const char *indent
BIO_printf(bio_out, "\n");
ret = 1;
err:
BIO_printf(bio_out, "\n");
ret = 1;
err:
- if(cmds) sk_pop_free(cmds, identity);
+ if(cmds) sk_
OPENSSL_STRING_
pop_free(cmds, identity);
if(name) OPENSSL_free(name);
if(desc) OPENSSL_free(desc);
return ret;
}
if(name) OPENSSL_free(name);
if(desc) OPENSSL_free(desc);
return ret;
}
-static void util_do_cmds(ENGINE *e, STACK *cmds, BIO *bio_out, const char *indent)
+static void util_do_cmds(ENGINE *e, STACK_OF(OPENSSL_STRING) *cmds,
+ BIO *bio_out, const char *indent)
{
{
- int loop, res, num = sk_num(cmds);
+ int loop, res, num = sk_OPENSSL_STRING_num(cmds);
+
if(num < 0)
{
BIO_printf(bio_out, "[Error]: internal stack error\n");
if(num < 0)
{
BIO_printf(bio_out, "[Error]: internal stack error\n");
@@
-305,7
+304,7
@@
static void util_do_cmds(ENGINE *e, STACK *cmds, BIO *bio_out, const char *inden
{
char buf[256];
const char *cmd, *arg;
{
char buf[256];
const char *cmd, *arg;
- cmd = sk_value(cmds, loop);
+ cmd = sk_
OPENSSL_STRING_
value(cmds, loop);
res = 1; /* assume success */
/* Check if this command has no ":arg" */
if((arg = strstr(cmd, ":")) == NULL)
res = 1; /* assume success */
/* Check if this command has no ":arg" */
if((arg = strstr(cmd, ":")) == NULL)
@@
-342,12
+341,12
@@
int MAIN(int, char **);
int MAIN(int argc, char **argv)
{
int ret=1,i;
int MAIN(int argc, char **argv)
{
int ret=1,i;
- char **pp;
+ c
onst c
har **pp;
int verbose=0, list_cap=0, test_avail=0, test_avail_noise = 0;
ENGINE *e;
int verbose=0, list_cap=0, test_avail=0, test_avail_noise = 0;
ENGINE *e;
- STACK
*engines = sk
_new_null();
- STACK
*pre_cmds = sk
_new_null();
- STACK
*post_cmds = sk
_new_null();
+ STACK
_OF(OPENSSL_STRING) *engines = sk_OPENSSL_STRING
_new_null();
+ STACK
_OF(OPENSSL_STRING) *pre_cmds = sk_OPENSSL_STRING
_new_null();
+ STACK
_OF(OPENSSL_STRING) *post_cmds = sk_OPENSSL_STRING
_new_null();
int badops=1;
BIO *bio_out=NULL;
const char *indent = " ";
int badops=1;
BIO *bio_out=NULL;
const char *indent = " ";
@@
-392,18
+391,22
@@
int MAIN(int argc, char **argv)
else if (strcmp(*argv,"-pre") == 0)
{
argc--; argv++;
else if (strcmp(*argv,"-pre") == 0)
{
argc--; argv++;
- sk_push(pre_cmds,*argv);
+ if (argc == 0)
+ goto skip_arg_loop;
+ sk_OPENSSL_STRING_push(pre_cmds,*argv);
}
else if (strcmp(*argv,"-post") == 0)
{
argc--; argv++;
}
else if (strcmp(*argv,"-post") == 0)
{
argc--; argv++;
- sk_push(post_cmds,*argv);
+ if (argc == 0)
+ goto skip_arg_loop;
+ sk_OPENSSL_STRING_push(post_cmds,*argv);
}
else if ((strncmp(*argv,"-h",2) == 0) ||
(strcmp(*argv,"-?") == 0))
goto skip_arg_loop;
else
}
else if ((strncmp(*argv,"-h",2) == 0) ||
(strcmp(*argv,"-?") == 0))
goto skip_arg_loop;
else
- sk_push(engines,*argv);
+ sk_
OPENSSL_STRING_
push(engines,*argv);
argc--;
argv++;
}
argc--;
argv++;
}
@@
-418,17
+421,17
@@
skip_arg_loop:
goto end;
}
goto end;
}
- if (sk_num(engines) == 0)
+ if (sk_
OPENSSL_STRING_
num(engines) == 0)
{
for(e = ENGINE_get_first(); e != NULL; e = ENGINE_get_next(e))
{
{
for(e = ENGINE_get_first(); e != NULL; e = ENGINE_get_next(e))
{
- sk_push(engines,(char *)ENGINE_get_id(e));
+ sk_
OPENSSL_STRING_
push(engines,(char *)ENGINE_get_id(e));
}
}
}
}
- for (i=0; i<sk_num(engines); i++)
+ for (i=0; i<sk_
OPENSSL_STRING_
num(engines); i++)
{
{
- const char *id = sk_value(engines,i);
+ const char *id = sk_
OPENSSL_STRING_
value(engines,i);
if ((e = ENGINE_by_id(id)) != NULL)
{
const char *name = ENGINE_get_name(e);
if ((e = ENGINE_by_id(id)) != NULL)
{
const char *name = ENGINE_get_name(e);
@@
-448,6
+451,7
@@
skip_arg_loop:
const int *nids;
ENGINE_CIPHERS_PTR fn_c;
ENGINE_DIGESTS_PTR fn_d;
const int *nids;
ENGINE_CIPHERS_PTR fn_c;
ENGINE_DIGESTS_PTR fn_d;
+ ENGINE_PKEY_METHS_PTR fn_pk;
if (ENGINE_get_RSA(e) != NULL
&& !append_buf(&cap_buf, "RSA",
if (ENGINE_get_RSA(e) != NULL
&& !append_buf(&cap_buf, "RSA",
@@
-486,6
+490,15
@@
skip_ciphers:
goto end;
skip_digests:
goto end;
skip_digests:
+ fn_pk = ENGINE_get_pkey_meths(e);
+ if(!fn_pk) goto skip_pmeths;
+ n = fn_pk(e, NULL, &nids, 0);
+ for(k=0 ; k < n ; ++k)
+ if(!append_buf(&cap_buf,
+ OBJ_nid2sn(nids[k]),
+ &cap_size, 256))
+ goto end;
+skip_pmeths:
if (cap_buf && (*cap_buf != '\0'))
BIO_printf(bio_out, " [%s]\n", cap_buf);
if (cap_buf && (*cap_buf != '\0'))
BIO_printf(bio_out, " [%s]\n", cap_buf);
@@
-518,11
+531,19
@@
skip_digests:
ret=0;
end:
ret=0;
end:
+
ERR_print_errors(bio_err);
ERR_print_errors(bio_err);
- sk_pop_free(engines, identity);
- sk_pop_free(pre_cmds, identity);
- sk_pop_free(post_cmds, identity);
+ sk_
OPENSSL_STRING_
pop_free(engines, identity);
+ sk_
OPENSSL_STRING_
pop_free(pre_cmds, identity);
+ sk_
OPENSSL_STRING_
pop_free(post_cmds, identity);
if (bio_out != NULL) BIO_free_all(bio_out);
apps_shutdown();
OPENSSL_EXIT(ret);
}
if (bio_out != NULL) BIO_free_all(bio_out);
apps_shutdown();
OPENSSL_EXIT(ret);
}
+#else
+
+# if PEDANTIC
+static void *dummy=&dummy;
+# endif
+
+#endif