kexdh.c (113908) | kexdh.c (157016) |
---|---|
1/* 2 * Copyright (c) 2001 Markus Friedl. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. --- 9 unchanged lines hidden (view full) --- 18 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 19 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 20 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 22 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 */ 24 25#include "includes.h" | 1/* 2 * Copyright (c) 2001 Markus Friedl. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. --- 9 unchanged lines hidden (view full) --- 18 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 19 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 20 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 22 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 */ 24 25#include "includes.h" |
26RCSID("$OpenBSD: kexdh.c,v 1.19 2003/02/16 17:09:57 markus Exp $"); | 26RCSID("$OpenBSD: kexdh.c,v 1.20 2005/11/04 05:15:59 djm Exp $"); |
27 28#include <openssl/evp.h> 29 30#include "buffer.h" 31#include "bufaux.h" 32#include "ssh2.h" 33#include "kex.h" 34 | 27 28#include <openssl/evp.h> 29 30#include "buffer.h" 31#include "bufaux.h" 32#include "ssh2.h" 33#include "kex.h" 34 |
35u_char * | 35void |
36kex_dh_hash( 37 char *client_version_string, 38 char *server_version_string, 39 char *ckexinit, int ckexinitlen, 40 char *skexinit, int skexinitlen, 41 u_char *serverhostkeyblob, int sbloblen, 42 BIGNUM *client_dh_pub, 43 BIGNUM *server_dh_pub, | 36kex_dh_hash( 37 char *client_version_string, 38 char *server_version_string, 39 char *ckexinit, int ckexinitlen, 40 char *skexinit, int skexinitlen, 41 u_char *serverhostkeyblob, int sbloblen, 42 BIGNUM *client_dh_pub, 43 BIGNUM *server_dh_pub, |
44 BIGNUM *shared_secret) | 44 BIGNUM *shared_secret, 45 u_char **hash, u_int *hashlen) |
45{ 46 Buffer b; 47 static u_char digest[EVP_MAX_MD_SIZE]; 48 const EVP_MD *evp_md = EVP_sha1(); 49 EVP_MD_CTX md; 50 51 buffer_init(&b); 52 buffer_put_cstring(&b, client_version_string); --- 19 unchanged lines hidden (view full) --- 72 EVP_DigestUpdate(&md, buffer_ptr(&b), buffer_len(&b)); 73 EVP_DigestFinal(&md, digest, NULL); 74 75 buffer_free(&b); 76 77#ifdef DEBUG_KEX 78 dump_digest("hash", digest, EVP_MD_size(evp_md)); 79#endif | 46{ 47 Buffer b; 48 static u_char digest[EVP_MAX_MD_SIZE]; 49 const EVP_MD *evp_md = EVP_sha1(); 50 EVP_MD_CTX md; 51 52 buffer_init(&b); 53 buffer_put_cstring(&b, client_version_string); --- 19 unchanged lines hidden (view full) --- 73 EVP_DigestUpdate(&md, buffer_ptr(&b), buffer_len(&b)); 74 EVP_DigestFinal(&md, digest, NULL); 75 76 buffer_free(&b); 77 78#ifdef DEBUG_KEX 79 dump_digest("hash", digest, EVP_MD_size(evp_md)); 80#endif |
80 return digest; | 81 *hash = digest; 82 *hashlen = EVP_MD_size(evp_md); |
81} | 83} |