| OLD | NEW |
| 1 /* apps/ciphers.c */ | 1 /* apps/ciphers.c */ |
| 2 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 * All rights reserved. | 3 * All rights reserved. |
| 4 * | 4 * |
| 5 * This package is an SSL implementation written | 5 * This package is an SSL implementation written |
| 6 * by Eric Young (eay@cryptsoft.com). | 6 * by Eric Young (eay@cryptsoft.com). |
| 7 * The implementation was written so as to conform with Netscapes SSL. | 7 * The implementation was written so as to conform with Netscapes SSL. |
| 8 * | 8 * |
| 9 * This library is free for commercial and non-commercial use as long as | 9 * This library is free for commercial and non-commercial use as long as |
| 10 * the following conditions are aheared to. The following conditions | 10 * the following conditions are aheared to. The following conditions |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 64 #endif | 64 #endif |
| 65 #include "apps.h" | 65 #include "apps.h" |
| 66 #include <openssl/err.h> | 66 #include <openssl/err.h> |
| 67 #include <openssl/ssl.h> | 67 #include <openssl/ssl.h> |
| 68 | 68 |
| 69 #undef PROG | 69 #undef PROG |
| 70 #define PROG ciphers_main | 70 #define PROG ciphers_main |
| 71 | 71 |
| 72 static const char *ciphers_usage[]={ | 72 static const char *ciphers_usage[]={ |
| 73 "usage: ciphers args\n", | 73 "usage: ciphers args\n", |
| 74 " -v - verbose mode, a textual listing of the ciphers in SSLeay\n", | 74 " -v - verbose mode, a textual listing of the SSL/TLS ciphers in OpenSS
L\n", |
| 75 " -V - even more verbose\n", |
| 75 " -ssl2 - SSL2 mode\n", | 76 " -ssl2 - SSL2 mode\n", |
| 76 " -ssl3 - SSL3 mode\n", | 77 " -ssl3 - SSL3 mode\n", |
| 77 " -tls1 - TLS1 mode\n", | 78 " -tls1 - TLS1 mode\n", |
| 78 NULL | 79 NULL |
| 79 }; | 80 }; |
| 80 | 81 |
| 81 int MAIN(int, char **); | 82 int MAIN(int, char **); |
| 82 | 83 |
| 83 int MAIN(int argc, char **argv) | 84 int MAIN(int argc, char **argv) |
| 84 { | 85 { |
| 85 int ret=1,i; | 86 int ret=1,i; |
| 86 » int verbose=0; | 87 » int verbose=0,Verbose=0; |
| 87 const char **pp; | 88 const char **pp; |
| 88 const char *p; | 89 const char *p; |
| 89 int badops=0; | 90 int badops=0; |
| 90 SSL_CTX *ctx=NULL; | 91 SSL_CTX *ctx=NULL; |
| 91 SSL *ssl=NULL; | 92 SSL *ssl=NULL; |
| 92 char *ciphers=NULL; | 93 char *ciphers=NULL; |
| 93 » SSL_METHOD *meth=NULL; | 94 » const SSL_METHOD *meth=NULL; |
| 94 STACK_OF(SSL_CIPHER) *sk; | 95 STACK_OF(SSL_CIPHER) *sk; |
| 95 char buf[512]; | 96 char buf[512]; |
| 96 BIO *STDout=NULL; | 97 BIO *STDout=NULL; |
| 97 | 98 |
| 98 #if !defined(OPENSSL_NO_SSL2) && !defined(OPENSSL_NO_SSL3) | 99 #if !defined(OPENSSL_NO_SSL2) && !defined(OPENSSL_NO_SSL3) |
| 99 meth=SSLv23_server_method(); | 100 meth=SSLv23_server_method(); |
| 100 #elif !defined(OPENSSL_NO_SSL3) | 101 #elif !defined(OPENSSL_NO_SSL3) |
| 101 meth=SSLv3_server_method(); | 102 meth=SSLv3_server_method(); |
| 102 #elif !defined(OPENSSL_NO_SSL2) | 103 #elif !defined(OPENSSL_NO_SSL2) |
| 103 meth=SSLv2_server_method(); | 104 meth=SSLv2_server_method(); |
| 104 #endif | 105 #endif |
| 105 | 106 |
| 106 apps_startup(); | 107 apps_startup(); |
| 107 | 108 |
| 108 if (bio_err == NULL) | 109 if (bio_err == NULL) |
| 109 bio_err=BIO_new_fp(stderr,BIO_NOCLOSE); | 110 bio_err=BIO_new_fp(stderr,BIO_NOCLOSE); |
| 110 STDout=BIO_new_fp(stdout,BIO_NOCLOSE); | 111 STDout=BIO_new_fp(stdout,BIO_NOCLOSE); |
| 111 #ifdef OPENSSL_SYS_VMS | 112 #ifdef OPENSSL_SYS_VMS |
| 112 { | 113 { |
| 113 BIO *tmpbio = BIO_new(BIO_f_linebuffer()); | 114 BIO *tmpbio = BIO_new(BIO_f_linebuffer()); |
| 114 STDout = BIO_push(tmpbio, STDout); | 115 STDout = BIO_push(tmpbio, STDout); |
| 115 } | 116 } |
| 116 #endif | 117 #endif |
| 118 if (!load_config(bio_err, NULL)) |
| 119 goto end; |
| 117 | 120 |
| 118 argc--; | 121 argc--; |
| 119 argv++; | 122 argv++; |
| 120 while (argc >= 1) | 123 while (argc >= 1) |
| 121 { | 124 { |
| 122 if (strcmp(*argv,"-v") == 0) | 125 if (strcmp(*argv,"-v") == 0) |
| 123 verbose=1; | 126 verbose=1; |
| 127 else if (strcmp(*argv,"-V") == 0) |
| 128 verbose=Verbose=1; |
| 124 #ifndef OPENSSL_NO_SSL2 | 129 #ifndef OPENSSL_NO_SSL2 |
| 125 else if (strcmp(*argv,"-ssl2") == 0) | 130 else if (strcmp(*argv,"-ssl2") == 0) |
| 126 meth=SSLv2_client_method(); | 131 meth=SSLv2_client_method(); |
| 127 #endif | 132 #endif |
| 128 #ifndef OPENSSL_NO_SSL3 | 133 #ifndef OPENSSL_NO_SSL3 |
| 129 else if (strcmp(*argv,"-ssl3") == 0) | 134 else if (strcmp(*argv,"-ssl3") == 0) |
| 130 meth=SSLv3_client_method(); | 135 meth=SSLv3_client_method(); |
| 131 #endif | 136 #endif |
| 132 #ifndef OPENSSL_NO_TLS1 | 137 #ifndef OPENSSL_NO_TLS1 |
| 133 else if (strcmp(*argv,"-tls1") == 0) | 138 else if (strcmp(*argv,"-tls1") == 0) |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 172 { | 177 { |
| 173 for (i=0; ; i++) | 178 for (i=0; ; i++) |
| 174 { | 179 { |
| 175 p=SSL_get_cipher_list(ssl,i); | 180 p=SSL_get_cipher_list(ssl,i); |
| 176 if (p == NULL) break; | 181 if (p == NULL) break; |
| 177 if (i != 0) BIO_printf(STDout,":"); | 182 if (i != 0) BIO_printf(STDout,":"); |
| 178 BIO_printf(STDout,"%s",p); | 183 BIO_printf(STDout,"%s",p); |
| 179 } | 184 } |
| 180 BIO_printf(STDout,"\n"); | 185 BIO_printf(STDout,"\n"); |
| 181 } | 186 } |
| 182 » else | 187 » else /* verbose */ |
| 183 { | 188 { |
| 184 sk=SSL_get_ciphers(ssl); | 189 sk=SSL_get_ciphers(ssl); |
| 185 | 190 |
| 186 for (i=0; i<sk_SSL_CIPHER_num(sk); i++) | 191 for (i=0; i<sk_SSL_CIPHER_num(sk); i++) |
| 187 { | 192 { |
| 188 » » » BIO_puts(STDout,SSL_CIPHER_description( | 193 » » » SSL_CIPHER *c; |
| 189 » » » » sk_SSL_CIPHER_value(sk,i), | 194 |
| 190 » » » » buf,sizeof buf)); | 195 » » » c = sk_SSL_CIPHER_value(sk,i); |
| 196 » » » |
| 197 » » » if (Verbose) |
| 198 » » » » { |
| 199 » » » » unsigned long id = c->id; |
| 200 » » » » int id0 = (int)(id >> 24); |
| 201 » » » » int id1 = (int)((id >> 16) & 0xffL); |
| 202 » » » » int id2 = (int)((id >> 8) & 0xffL); |
| 203 » » » » int id3 = (int)(id & 0xffL); |
| 204 » » » » |
| 205 » » » » if ((id & 0xff000000L) == 0x02000000L) |
| 206 » » » » » BIO_printf(STDout, " 0x%02X,0x%02X,0
x%02X - ", id1, id2, id3); /* SSL2 cipher */ |
| 207 » » » » else if ((id & 0xff000000L) == 0x03000000L) |
| 208 » » » » » BIO_printf(STDout, " 0x%02X,0x%
02X - ", id2, id3); /* SSL3 cipher */ |
| 209 » » » » else |
| 210 » » » » » BIO_printf(STDout, "0x%02X,0x%02X,0x%02X
,0x%02X - ", id0, id1, id2, id3); /* whatever */ |
| 211 » » » » } |
| 212 |
| 213 » » » BIO_puts(STDout,SSL_CIPHER_description(c,buf,sizeof buf)
); |
| 191 } | 214 } |
| 192 } | 215 } |
| 193 | 216 |
| 194 ret=0; | 217 ret=0; |
| 195 if (0) | 218 if (0) |
| 196 { | 219 { |
| 197 err: | 220 err: |
| 198 SSL_load_error_strings(); | 221 SSL_load_error_strings(); |
| 199 ERR_print_errors(bio_err); | 222 ERR_print_errors(bio_err); |
| 200 } | 223 } |
| 201 end: | 224 end: |
| 202 if (ctx != NULL) SSL_CTX_free(ctx); | 225 if (ctx != NULL) SSL_CTX_free(ctx); |
| 203 if (ssl != NULL) SSL_free(ssl); | 226 if (ssl != NULL) SSL_free(ssl); |
| 204 if (STDout != NULL) BIO_free_all(STDout); | 227 if (STDout != NULL) BIO_free_all(STDout); |
| 205 apps_shutdown(); | 228 apps_shutdown(); |
| 206 OPENSSL_EXIT(ret); | 229 OPENSSL_EXIT(ret); |
| 207 } | 230 } |
| 208 | 231 |
| OLD | NEW |