| author | Stefan Karlsson <stefan.karlsson@nokia.com> | 
| Mon, 29 Mar 2010 12:27:51 +0100 | |
| branch | CompilerCompatibility | 
| changeset 14 | 69a2780c0013 | 
| parent 0 | e4d67989cc36 | 
| permissions | -rw-r--r-- | 
| 0 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 1 | /* apps/engine.c -*- mode: C; c-file-style: "eay" -*- */ | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 2 | /* Written by Richard Levitte <richard@levitte.org> for the OpenSSL | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 3 | * project 2000. | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 4 | */ | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 5 | /* ==================================================================== | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 6 | * Copyright (c) 2000 The OpenSSL Project. All rights reserved. | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 7 | * | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 8 | * Redistribution and use in source and binary forms, with or without | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 9 | * modification, are permitted provided that the following conditions | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 10 | * are met: | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 11 | * | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 12 | * 1. Redistributions of source code must retain the above copyright | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 13 | * notice, this list of conditions and the following disclaimer. | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 14 | * | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 15 | * 2. Redistributions in binary form must reproduce the above copyright | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 16 | * notice, this list of conditions and the following disclaimer in | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 17 | * the documentation and/or other materials provided with the | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 18 | * distribution. | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 19 | * | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 20 | * 3. All advertising materials mentioning features or use of this | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 21 | * software must display the following acknowledgment: | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 22 | * "This product includes software developed by the OpenSSL Project | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 24 | * | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 26 | * endorse or promote products derived from this software without | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 27 | * prior written permission. For written permission, please contact | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 28 | * licensing@OpenSSL.org. | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 29 | * | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 30 | * 5. Products derived from this software may not be called "OpenSSL" | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 31 | * nor may "OpenSSL" appear in their names without prior written | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 32 | * permission of the OpenSSL Project. | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 33 | * | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 34 | * 6. Redistributions of any form whatsoever must retain the following | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 35 | * acknowledgment: | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 36 | * "This product includes software developed by the OpenSSL Project | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 38 | * | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 51 | * ==================================================================== | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 52 | * | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 53 | * This product includes cryptographic software written by Eric Young | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 54 | * (eay@cryptsoft.com). This product includes software written by Tim | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 55 | * Hudson (tjh@cryptsoft.com). | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 56 | * | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 57 | */ | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 58 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 59 | #ifndef OPENSSL_NO_ENGINE | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 60 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 61 | #include <stdio.h> | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 62 | #include <stdlib.h> | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 63 | #include <string.h> | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 64 | #ifdef OPENSSL_NO_STDIO | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 65 | #define APPS_WIN16 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 66 | #endif | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 67 | #include "apps.h" | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 68 | #include <openssl/err.h> | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 69 | #include <openssl/engine.h> | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 70 | #include <openssl/ssl.h> | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 71 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 72 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 73 | #undef PROG | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 74 | #define PROG engine_main | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 75 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 76 | static const char *engine_usage[]={
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 77 | "usage: engine opts [engine ...]\n", | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 78 | " -v[v[v[v]]] - verbose mode, for each engine, list its 'control commands'\n", | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 79 | " -vv will additionally display each command's description\n", | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 80 | " -vvv will also add the input flags for each command\n", | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 81 | " -vvvv will also show internal input flags\n", | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 82 | " -c - for each engine, also list the capabilities\n", | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 83 | " -t[t] - for each engine, check that they are really available\n", | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 84 | " -tt will display error trace for unavailable engines\n", | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 85 | " -pre <cmd> - runs command 'cmd' against the ENGINE before any attempts\n", | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 86 | " to load it (if -t is used)\n", | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 87 | " -post <cmd> - runs command 'cmd' against the ENGINE after loading it\n", | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 88 | " (only used if -t is also provided)\n", | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 89 | " NB: -pre and -post will be applied to all ENGINEs supplied on the command\n", | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 90 | " line, or all supported ENGINEs if none are specified.\n", | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 91 | " Eg. '-pre \"SO_PATH:/lib/libdriver.so\"' calls command \"SO_PATH\" with\n", | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 92 | " argument \"/lib/libdriver.so\".\n", | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 93 | NULL | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 94 | }; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 95 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 96 | static void identity(void *ptr) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 97 | 	{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 98 | return; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 99 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 100 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 101 | static int append_buf(char **buf, const char *s, int *size, int step) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 102 | 	{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 103 | int l = strlen(s); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 104 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 105 | if (*buf == NULL) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 106 | 		{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 107 | *size = step; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 108 | *buf = OPENSSL_malloc(*size); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 109 | if (*buf == NULL) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 110 | return 0; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 111 | **buf = '\0'; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 112 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 113 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 114 | if (**buf != '\0') | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 115 | l += 2; /* ", " */ | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 116 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 117 | if (strlen(*buf) + strlen(s) >= (unsigned int)*size) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 118 | 		{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 119 | *size += step; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 120 | *buf = OPENSSL_realloc(*buf, *size); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 121 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 122 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 123 | if (*buf == NULL) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 124 | return 0; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 125 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 126 | if (**buf != '\0') | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 127 | BUF_strlcat(*buf, ", ", *size); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 128 | BUF_strlcat(*buf, s, *size); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 129 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 130 | return 1; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 131 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 132 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 133 | static int util_flags(BIO *bio_out, unsigned int flags, const char *indent) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 134 | 	{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 135 | int started = 0, err = 0; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 136 | /* Indent before displaying input flags */ | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 137 | BIO_printf(bio_out, "%s%s(input flags): ", indent, indent); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 138 | if(flags == 0) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 139 | 		{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 140 | BIO_printf(bio_out, "<no flags>\n"); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 141 | return 1; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 142 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 143 | /* If the object is internal, mark it in a way that shows instead of | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 144 | * having it part of all the other flags, even if it really is. */ | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 145 | if(flags & ENGINE_CMD_FLAG_INTERNAL) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 146 | 		{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 147 | BIO_printf(bio_out, "[Internal] "); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 148 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 149 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 150 | if(flags & ENGINE_CMD_FLAG_NUMERIC) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 151 | 		{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 152 | if(started) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 153 | 			{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 154 | BIO_printf(bio_out, "|"); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 155 | err = 1; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 156 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 157 | BIO_printf(bio_out, "NUMERIC"); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 158 | started = 1; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 159 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 160 | /* Now we check that no combinations of the mutually exclusive NUMERIC, | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 161 | * STRING, and NO_INPUT flags have been used. Future flags that can be | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 162 | * OR'd together with these would need to added after these to preserve | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 163 | * the testing logic. */ | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 164 | if(flags & ENGINE_CMD_FLAG_STRING) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 165 | 		{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 166 | if(started) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 167 | 			{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 168 | BIO_printf(bio_out, "|"); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 169 | err = 1; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 170 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 171 | BIO_printf(bio_out, "STRING"); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 172 | started = 1; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 173 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 174 | if(flags & ENGINE_CMD_FLAG_NO_INPUT) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 175 | 		{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 176 | if(started) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 177 | 			{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 178 | BIO_printf(bio_out, "|"); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 179 | err = 1; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 180 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 181 | BIO_printf(bio_out, "NO_INPUT"); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 182 | started = 1; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 183 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 184 | /* Check for unknown flags */ | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 185 | flags = flags & ~ENGINE_CMD_FLAG_NUMERIC & | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 186 | ~ENGINE_CMD_FLAG_STRING & | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 187 | ~ENGINE_CMD_FLAG_NO_INPUT & | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 188 | ~ENGINE_CMD_FLAG_INTERNAL; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 189 | if(flags) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 190 | 		{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 191 | if(started) BIO_printf(bio_out, "|"); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 192 | BIO_printf(bio_out, "<0x%04X>", flags); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 193 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 194 | if(err) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 195 | BIO_printf(bio_out, " <illegal flags!>"); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 196 | BIO_printf(bio_out, "\n"); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 197 | return 1; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 198 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 199 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 200 | static int util_verbose(ENGINE *e, int verbose, BIO *bio_out, const char *indent) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 201 | 	{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 202 | static const int line_wrap = 78; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 203 | int num; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 204 | int ret = 0; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 205 | char *name = NULL; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 206 | char *desc = NULL; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 207 | int flags; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 208 | int xpos = 0; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 209 | STACK *cmds = NULL; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 210 | if(!ENGINE_ctrl(e, ENGINE_CTRL_HAS_CTRL_FUNCTION, 0, NULL, NULL) || | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 211 | ((num = ENGINE_ctrl(e, ENGINE_CTRL_GET_FIRST_CMD_TYPE, | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 212 | 0, NULL, NULL)) <= 0)) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 213 | 		{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 214 | #if 0 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 215 | BIO_printf(bio_out, "%s<no control commands>\n", indent); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 216 | #endif | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 217 | return 1; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 218 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 219 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 220 | cmds = sk_new_null(); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 221 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 222 | if(!cmds) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 223 | goto err; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 224 | 	do {
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 225 | int len; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 226 | /* Get the command input flags */ | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 227 | if((flags = ENGINE_ctrl(e, ENGINE_CTRL_GET_CMD_FLAGS, num, | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 228 | NULL, NULL)) < 0) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 229 | goto err; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 230 | if (!(flags & ENGINE_CMD_FLAG_INTERNAL) || verbose >= 4) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 231 |                         {
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 232 | /* Get the command name */ | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 233 | if((len = ENGINE_ctrl(e, ENGINE_CTRL_GET_NAME_LEN_FROM_CMD, num, | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 234 | NULL, NULL)) <= 0) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 235 | goto err; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 236 | if((name = OPENSSL_malloc(len + 1)) == NULL) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 237 | goto err; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 238 | if(ENGINE_ctrl(e, ENGINE_CTRL_GET_NAME_FROM_CMD, num, name, | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 239 | NULL) <= 0) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 240 | goto err; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 241 | /* Get the command description */ | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 242 | if((len = ENGINE_ctrl(e, ENGINE_CTRL_GET_DESC_LEN_FROM_CMD, num, | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 243 | NULL, NULL)) < 0) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 244 | goto err; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 245 | if(len > 0) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 246 |                                 {
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 247 | if((desc = OPENSSL_malloc(len + 1)) == NULL) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 248 | goto err; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 249 | if(ENGINE_ctrl(e, ENGINE_CTRL_GET_DESC_FROM_CMD, num, desc, | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 250 | NULL) <= 0) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 251 | goto err; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 252 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 253 | /* Now decide on the output */ | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 254 | if(xpos == 0) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 255 | /* Do an indent */ | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 256 | xpos = BIO_printf(bio_out, indent); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 257 | else | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 258 | /* Otherwise prepend a ", " */ | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 259 | xpos += BIO_printf(bio_out, ", "); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 260 | if(verbose == 1) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 261 |                                 {
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 262 | /* We're just listing names, comma-delimited */ | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 263 | if((xpos > (int)strlen(indent)) && | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 264 | (xpos + (int)strlen(name) > line_wrap)) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 265 |                                         {
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 266 | BIO_printf(bio_out, "\n"); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 267 | xpos = BIO_printf(bio_out, indent); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 268 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 269 | xpos += BIO_printf(bio_out, "%s", name); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 270 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 271 | else | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 272 |                                 {
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 273 | /* We're listing names plus descriptions */ | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 274 | BIO_printf(bio_out, "%s: %s\n", name, | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 275 | (desc == NULL) ? "<no description>" : desc); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 276 | /* ... and sometimes input flags */ | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 277 | if((verbose >= 3) && !util_flags(bio_out, flags, | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 278 | indent)) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 279 | goto err; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 280 | xpos = 0; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 281 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 282 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 283 | OPENSSL_free(name); name = NULL; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 284 | 		if(desc) { OPENSSL_free(desc); desc = NULL; }
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 285 | /* Move to the next command */ | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 286 | num = ENGINE_ctrl(e, ENGINE_CTRL_GET_NEXT_CMD_TYPE, | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 287 | num, NULL, NULL); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 288 | } while(num > 0); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 289 | if(xpos > 0) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 290 | BIO_printf(bio_out, "\n"); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 291 | ret = 1; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 292 | err: | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 293 | if(cmds) sk_pop_free(cmds, identity); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 294 | if(name) OPENSSL_free(name); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 295 | if(desc) OPENSSL_free(desc); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 296 | return ret; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 297 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 298 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 299 | static void util_do_cmds(ENGINE *e, STACK *cmds, BIO *bio_out, const char *indent) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 300 | 	{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 301 | int loop, res, num = sk_num(cmds); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 302 | if(num < 0) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 303 | 		{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 304 | BIO_printf(bio_out, "[Error]: internal stack error\n"); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 305 | return; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 306 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 307 | for(loop = 0; loop < num; loop++) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 308 | 		{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 309 | char buf[256]; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 310 | const char *cmd, *arg; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 311 | cmd = sk_value(cmds, loop); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 312 | res = 1; /* assume success */ | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 313 | /* Check if this command has no ":arg" */ | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 314 | if((arg = strstr(cmd, ":")) == NULL) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 315 | 			{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 316 | if(!ENGINE_ctrl_cmd_string(e, cmd, NULL, 0)) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 317 | res = 0; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 318 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 319 | else | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 320 | 			{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 321 | if((int)(arg - cmd) > 254) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 322 | 				{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 323 | BIO_printf(bio_out,"[Error]: command name too long\n"); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 324 | return; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 325 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 326 | memcpy(buf, cmd, (int)(arg - cmd)); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 327 | buf[arg-cmd] = '\0'; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 328 | arg++; /* Move past the ":" */ | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 329 | /* Call the command with the argument */ | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 330 | if(!ENGINE_ctrl_cmd_string(e, buf, arg, 0)) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 331 | res = 0; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 332 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 333 | if(res) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 334 | BIO_printf(bio_out, "[Success]: %s\n", cmd); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 335 | else | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 336 | 			{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 337 | BIO_printf(bio_out, "[Failure]: %s\n", cmd); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 338 | ERR_print_errors(bio_out); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 339 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 340 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 341 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 342 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 343 | int MAIN(int, char **); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 344 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 345 | int MAIN(int argc, char **argv) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 346 | 	{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 347 | int ret=1,i; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 348 | const char **pp; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 349 | int verbose=0, list_cap=0, test_avail=0, test_avail_noise = 0; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 350 | ENGINE *e; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 351 | STACK *engines = sk_new_null(); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 352 | STACK *pre_cmds = sk_new_null(); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 353 | STACK *post_cmds = sk_new_null(); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 354 | int badops=1; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 355 | BIO *bio_out=NULL; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 356 | const char *indent = " "; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 357 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 358 | apps_startup(); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 359 | SSL_load_error_strings(); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 360 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 361 | if (bio_err == NULL) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 362 | bio_err=BIO_new_fp(stderr,BIO_NOCLOSE); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 363 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 364 | if (!load_config(bio_err, NULL)) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 365 | goto end; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 366 | bio_out=BIO_new_fp(stdout,BIO_NOCLOSE); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 367 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 368 | #ifdef OPENSSL_SYS_VMS | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 369 | 	{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 370 | BIO *tmpbio = BIO_new(BIO_f_linebuffer()); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 371 | bio_out = BIO_push(tmpbio, bio_out); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 372 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 373 | #endif | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 374 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 375 | argc--; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 376 | argv++; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 377 | while (argc >= 1) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 378 | 		{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 379 | if (strncmp(*argv,"-v",2) == 0) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 380 | 			{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 381 | if(strspn(*argv + 1, "v") < strlen(*argv + 1)) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 382 | goto skip_arg_loop; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 383 | if((verbose=strlen(*argv + 1)) > 4) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 384 | goto skip_arg_loop; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 385 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 386 | else if (strcmp(*argv,"-c") == 0) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 387 | list_cap=1; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 388 | else if (strncmp(*argv,"-t",2) == 0) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 389 | 			{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 390 | test_avail=1; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 391 | if(strspn(*argv + 1, "t") < strlen(*argv + 1)) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 392 | goto skip_arg_loop; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 393 | if((test_avail_noise = strlen(*argv + 1) - 1) > 1) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 394 | goto skip_arg_loop; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 395 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 396 | else if (strcmp(*argv,"-pre") == 0) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 397 | 			{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 398 | argc--; argv++; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 399 | if (argc == 0) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 400 | goto skip_arg_loop; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 401 | sk_push(pre_cmds,*argv); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 402 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 403 | else if (strcmp(*argv,"-post") == 0) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 404 | 			{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 405 | argc--; argv++; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 406 | if (argc == 0) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 407 | goto skip_arg_loop; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 408 | sk_push(post_cmds,*argv); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 409 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 410 | else if ((strncmp(*argv,"-h",2) == 0) || | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 411 | (strcmp(*argv,"-?") == 0)) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 412 | goto skip_arg_loop; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 413 | else | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 414 | sk_push(engines,*argv); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 415 | argc--; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 416 | argv++; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 417 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 418 | /* Looks like everything went OK */ | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 419 | badops = 0; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 420 | skip_arg_loop: | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 421 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 422 | if (badops) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 423 | 		{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 424 | for (pp=engine_usage; (*pp != NULL); pp++) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 425 | BIO_printf(bio_err,"%s",*pp); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 426 | goto end; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 427 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 428 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 429 | if (sk_num(engines) == 0) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 430 | 		{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 431 | for(e = ENGINE_get_first(); e != NULL; e = ENGINE_get_next(e)) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 432 | 			{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 433 | sk_push(engines,(char *)ENGINE_get_id(e)); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 434 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 435 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 436 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 437 | for (i=0; i<sk_num(engines); i++) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 438 | 		{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 439 | const char *id = sk_value(engines,i); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 440 | if ((e = ENGINE_by_id(id)) != NULL) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 441 | 			{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 442 | const char *name = ENGINE_get_name(e); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 443 | /* Do "id" first, then "name". Easier to auto-parse. */ | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 444 | BIO_printf(bio_out, "(%s) %s\n", id, name); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 445 | util_do_cmds(e, pre_cmds, bio_out, indent); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 446 | if (strcmp(ENGINE_get_id(e), id) != 0) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 447 | 				{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 448 | BIO_printf(bio_out, "Loaded: (%s) %s\n", | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 449 | ENGINE_get_id(e), ENGINE_get_name(e)); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 450 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 451 | if (list_cap) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 452 | 				{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 453 | int cap_size = 256; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 454 | char *cap_buf = NULL; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 455 | int k,n; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 456 | const int *nids; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 457 | ENGINE_CIPHERS_PTR fn_c; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 458 | ENGINE_DIGESTS_PTR fn_d; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 459 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 460 | if (ENGINE_get_RSA(e) != NULL | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 461 | && !append_buf(&cap_buf, "RSA", | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 462 | &cap_size, 256)) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 463 | goto end; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 464 | if (ENGINE_get_DSA(e) != NULL | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 465 | && !append_buf(&cap_buf, "DSA", | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 466 | &cap_size, 256)) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 467 | goto end; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 468 | if (ENGINE_get_DH(e) != NULL | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 469 | && !append_buf(&cap_buf, "DH", | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 470 | &cap_size, 256)) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 471 | goto end; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 472 | if (ENGINE_get_RAND(e) != NULL | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 473 | && !append_buf(&cap_buf, "RAND", | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 474 | &cap_size, 256)) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 475 | goto end; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 476 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 477 | fn_c = ENGINE_get_ciphers(e); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 478 | if(!fn_c) goto skip_ciphers; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 479 | n = fn_c(e, NULL, &nids, 0); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 480 | for(k=0 ; k < n ; ++k) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 481 | if(!append_buf(&cap_buf, | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 482 | OBJ_nid2sn(nids[k]), | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 483 | &cap_size, 256)) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 484 | goto end; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 485 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 486 | skip_ciphers: | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 487 | fn_d = ENGINE_get_digests(e); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 488 | if(!fn_d) goto skip_digests; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 489 | n = fn_d(e, NULL, &nids, 0); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 490 | for(k=0 ; k < n ; ++k) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 491 | if(!append_buf(&cap_buf, | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 492 | OBJ_nid2sn(nids[k]), | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 493 | &cap_size, 256)) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 494 | goto end; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 495 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 496 | skip_digests: | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 497 | if (cap_buf && (*cap_buf != '\0')) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 498 | BIO_printf(bio_out, " [%s]\n", cap_buf); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 499 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 500 | OPENSSL_free(cap_buf); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 501 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 502 | if(test_avail) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 503 | 				{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 504 | BIO_printf(bio_out, "%s", indent); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 505 | if (ENGINE_init(e)) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 506 | 					{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 507 | BIO_printf(bio_out, "[ available ]\n"); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 508 | util_do_cmds(e, post_cmds, bio_out, indent); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 509 | ENGINE_finish(e); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 510 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 511 | else | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 512 | 					{
 | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 513 | BIO_printf(bio_out, "[ unavailable ]\n"); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 514 | if(test_avail_noise) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 515 | ERR_print_errors_fp(stdout); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 516 | ERR_clear_error(); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 517 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 518 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 519 | if((verbose > 0) && !util_verbose(e, verbose, bio_out, indent)) | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 520 | goto end; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 521 | ENGINE_free(e); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 522 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 523 | else | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 524 | ERR_print_errors(bio_err); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 525 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 526 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 527 | ret=0; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 528 | end: | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 529 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 530 | ERR_print_errors(bio_err); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 531 | sk_pop_free(engines, identity); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 532 | sk_pop_free(pre_cmds, identity); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 533 | sk_pop_free(post_cmds, identity); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 534 | if (bio_out != NULL) BIO_free_all(bio_out); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 535 | apps_shutdown(); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 536 | OPENSSL_EXIT(ret); | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 537 | } | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 538 | #else | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 539 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 540 | # if PEDANTIC | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 541 | static void *dummy=&dummy; | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 542 | # endif | 
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 543 | |
| 
e4d67989cc36
Revision: 201002
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 544 | #endif |