Index: openssl/apps/engine.c |
=================================================================== |
--- openssl/apps/engine.c (revision 105093) |
+++ openssl/apps/engine.c (working copy) |
@@ -92,7 +92,7 @@ |
NULL |
}; |
-static void identity(void *ptr) |
+static void identity(char *ptr) |
{ |
return; |
} |
@@ -148,11 +148,6 @@ |
if(flags & ENGINE_CMD_FLAG_NUMERIC) |
{ |
- if(started) |
- { |
- BIO_printf(bio_out, "|"); |
- err = 1; |
- } |
BIO_printf(bio_out, "NUMERIC"); |
started = 1; |
} |
@@ -205,7 +200,7 @@ |
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)) |
@@ -216,7 +211,7 @@ |
return 1; |
} |
- cmds = sk_new_null(); |
+ cmds = sk_OPENSSL_STRING_new_null(); |
if(!cmds) |
goto err; |
@@ -289,15 +284,17 @@ |
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; |
} |
-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"); |
@@ -307,7 +304,7 @@ |
{ |
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) |
@@ -347,9 +344,9 @@ |
const char **pp; |
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 = " "; |
@@ -396,20 +393,20 @@ |
argc--; argv++; |
if (argc == 0) |
goto skip_arg_loop; |
- sk_push(pre_cmds,*argv); |
+ sk_OPENSSL_STRING_push(pre_cmds,*argv); |
} |
else if (strcmp(*argv,"-post") == 0) |
{ |
argc--; argv++; |
if (argc == 0) |
goto skip_arg_loop; |
- sk_push(post_cmds,*argv); |
+ sk_OPENSSL_STRING_push(post_cmds,*argv); |
} |
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++; |
} |
@@ -424,17 +421,17 @@ |
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)) |
{ |
- 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); |
@@ -454,6 +451,7 @@ |
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", |
@@ -492,6 +490,15 @@ |
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); |
@@ -526,9 +533,9 @@ |
end: |
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); |