diff options
author | jsing <> | 2016-12-30 17:25:48 +0000 |
---|---|---|
committer | jsing <> | 2016-12-30 17:25:48 +0000 |
commit | a8b45803d3fb6170b4567bc459cc88846d7d09ee (patch) | |
tree | 60cfd9ecaf49a5109e5cbbe2facdf318f5110875 /src | |
parent | c6852449efeadbfc5a05c733da7136ce72a68a35 (diff) | |
download | openbsd-a8b45803d3fb6170b4567bc459cc88846d7d09ee.tar.gz openbsd-a8b45803d3fb6170b4567bc459cc88846d7d09ee.tar.bz2 openbsd-a8b45803d3fb6170b4567bc459cc88846d7d09ee.zip |
Display details of the server ephemeral key, based on OpenSSL.
ok doug@
Diffstat (limited to 'src')
-rw-r--r-- | src/usr.bin/openssl/s_apps.h | 3 | ||||
-rw-r--r-- | src/usr.bin/openssl/s_cb.c | 39 | ||||
-rw-r--r-- | src/usr.bin/openssl/s_client.c | 5 |
3 files changed, 44 insertions, 3 deletions
diff --git a/src/usr.bin/openssl/s_apps.h b/src/usr.bin/openssl/s_apps.h index cd0a057845..ecadff5c01 100644 --- a/src/usr.bin/openssl/s_apps.h +++ b/src/usr.bin/openssl/s_apps.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: s_apps.h,v 1.3 2015/09/10 06:36:45 bcook Exp $ */ | 1 | /* $OpenBSD: s_apps.h,v 1.4 2016/12/30 17:25:48 jsing Exp $ */ |
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 | * |
@@ -128,6 +128,7 @@ int verify_callback(int ok, X509_STORE_CTX *ctx); | |||
128 | int set_cert_stuff(SSL_CTX *ctx, char *cert_file, char *key_file); | 128 | int set_cert_stuff(SSL_CTX *ctx, char *cert_file, char *key_file); |
129 | int set_cert_key_stuff(SSL_CTX *ctx, X509 *cert, EVP_PKEY *key); | 129 | int set_cert_key_stuff(SSL_CTX *ctx, X509 *cert, EVP_PKEY *key); |
130 | #endif | 130 | #endif |
131 | int ssl_print_tmp_key(BIO *out, SSL *s); | ||
131 | int init_client(int *sock, char *server, char *port, int type, int af); | 132 | int init_client(int *sock, char *server, char *port, int type, int af); |
132 | int should_retry(int i); | 133 | int should_retry(int i); |
133 | int extract_port(char *str, short *port_ptr); | 134 | int extract_port(char *str, short *port_ptr); |
diff --git a/src/usr.bin/openssl/s_cb.c b/src/usr.bin/openssl/s_cb.c index ac3a0076bd..d8ab83fb01 100644 --- a/src/usr.bin/openssl/s_cb.c +++ b/src/usr.bin/openssl/s_cb.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: s_cb.c,v 1.6 2015/09/10 19:08:46 jsing Exp $ */ | 1 | /* $OpenBSD: s_cb.c,v 1.7 2016/12/30 17:25:48 jsing Exp $ */ |
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 | * |
@@ -285,6 +285,43 @@ set_cert_key_stuff(SSL_CTX * ctx, X509 * cert, EVP_PKEY * key) | |||
285 | return 1; | 285 | return 1; |
286 | } | 286 | } |
287 | 287 | ||
288 | int | ||
289 | ssl_print_tmp_key(BIO *out, SSL *s) | ||
290 | { | ||
291 | const char *cname; | ||
292 | EVP_PKEY *pkey; | ||
293 | EC_KEY *ec; | ||
294 | int nid; | ||
295 | |||
296 | if (!SSL_get_server_tmp_key(s, &pkey)) | ||
297 | return 0; | ||
298 | |||
299 | BIO_puts(out, "Server Temp Key: "); | ||
300 | switch (EVP_PKEY_id(pkey)) { | ||
301 | case EVP_PKEY_DH: | ||
302 | BIO_printf(out, "DH, %d bits\n", EVP_PKEY_bits(pkey)); | ||
303 | break; | ||
304 | |||
305 | case EVP_PKEY_EC: | ||
306 | ec = EVP_PKEY_get1_EC_KEY(pkey); | ||
307 | nid = EC_GROUP_get_curve_name(EC_KEY_get0_group(ec)); | ||
308 | EC_KEY_free(ec); | ||
309 | |||
310 | if ((cname = EC_curve_nid2nist(nid)) == NULL) | ||
311 | cname = OBJ_nid2sn(nid); | ||
312 | |||
313 | BIO_printf(out, "ECDH, %s, %d bits\n", cname, EVP_PKEY_bits(pkey)); | ||
314 | break; | ||
315 | |||
316 | default: | ||
317 | BIO_printf(out, "%s, %d bits\n", OBJ_nid2sn(EVP_PKEY_id(pkey)), | ||
318 | EVP_PKEY_bits(pkey)); | ||
319 | } | ||
320 | |||
321 | EVP_PKEY_free(pkey); | ||
322 | return 1; | ||
323 | } | ||
324 | |||
288 | long | 325 | long |
289 | bio_dump_callback(BIO * bio, int cmd, const char *argp, | 326 | bio_dump_callback(BIO * bio, int cmd, const char *argp, |
290 | int argi, long argl, long ret) | 327 | int argi, long argl, long ret) |
diff --git a/src/usr.bin/openssl/s_client.c b/src/usr.bin/openssl/s_client.c index b35fa8c3fc..78909873b8 100644 --- a/src/usr.bin/openssl/s_client.c +++ b/src/usr.bin/openssl/s_client.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: s_client.c,v 1.28 2016/06/21 03:56:43 bcook Exp $ */ | 1 | /* $OpenBSD: s_client.c,v 1.29 2016/12/30 17:25:48 jsing Exp $ */ |
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 | * |
@@ -1365,6 +1365,9 @@ print_stuff(BIO * bio, SSL * s, int full) | |||
1365 | } | 1365 | } |
1366 | BIO_write(bio, "\n", 1); | 1366 | BIO_write(bio, "\n", 1); |
1367 | } | 1367 | } |
1368 | |||
1369 | ssl_print_tmp_key(bio, s); | ||
1370 | |||
1368 | BIO_printf(bio, "---\nSSL handshake has read %ld bytes and written %ld bytes\n", | 1371 | BIO_printf(bio, "---\nSSL handshake has read %ld bytes and written %ld bytes\n", |
1369 | BIO_number_read(SSL_get_rbio(s)), | 1372 | BIO_number_read(SSL_get_rbio(s)), |
1370 | BIO_number_written(SSL_get_wbio(s))); | 1373 | BIO_number_written(SSL_get_wbio(s))); |