From 6afb2ce28b06502dc97c44f04e87d6f4ecc8edd4 Mon Sep 17 00:00:00 2001 From: cameronrich Date: Wed, 3 Oct 2007 22:10:21 +0000 Subject: [PATCH] made inc ms5/sha1 a tmp git-svn-id: svn://svn.code.sf.net/p/axtls/code/trunk@134 9a5d90b5-6617-0410-8a86-bb477d3ed2e3 --- ssl/tls1.c | 16 ++++++++++------ ssl/tls1.h | 4 ++-- ssl/tls1_clnt.c | 4 ++++ ssl/tls1_svr.c | 4 ++++ 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/ssl/tls1.c b/ssl/tls1.c index 60f66f9da..2a32f4068 100755 --- a/ssl/tls1.c +++ b/ssl/tls1.c @@ -274,6 +274,8 @@ EXP_FUNC void STDCALL ssl_free(SSL *ssl) free(ssl->encrypt_ctx); free(ssl->decrypt_ctx); free(ssl->master_secret); + free(ssl->md5_ctx); + free(ssl->sha1_ctx); #ifdef CONFIG_SSL_CERT_VERIFICATION x509_free(ssl->x509_ctx); #endif @@ -552,8 +554,10 @@ SSL *ssl_new(SSL_CTX *ssl_ctx, int client_fd) #ifdef CONFIG_ENABLE_VERIFICATION ssl->ca_cert_ctx = ssl_ctx->ca_cert_ctx; #endif - MD5_Init(&ssl->md5_ctx); - SHA1_Init(&ssl->sha1_ctx); + ssl->md5_ctx = (MD5_CTX *)malloc(sizeof(MD5_CTX)); + ssl->sha1_ctx = (SHA1_CTX *)malloc(sizeof(SHA1_CTX)); + MD5_Init(ssl->md5_ctx); + SHA1_Init(ssl->sha1_ctx); /* a bit hacky but saves a few bytes of memory */ ssl->flag |= ssl_ctx->options; @@ -714,8 +718,8 @@ static int verify_digest(SSL *ssl, int mode, const uint8_t *buf, int read_len) */ void add_packet(SSL *ssl, const uint8_t *pkt, int len) { - MD5_Update(&ssl->md5_ctx, pkt, len); - SHA1_Update(&ssl->sha1_ctx, pkt, len); + MD5_Update(ssl->md5_ctx, pkt, len); + SHA1_Update(ssl->sha1_ctx, pkt, len); } /** @@ -833,8 +837,8 @@ void finished_digest(SSL *ssl, const char *label, uint8_t *digest) { uint8_t mac_buf[128]; uint8_t *q = mac_buf; - MD5_CTX md5_ctx = ssl->md5_ctx; - SHA1_CTX sha1_ctx = ssl->sha1_ctx; + MD5_CTX md5_ctx = *ssl->md5_ctx; + SHA1_CTX sha1_ctx = *ssl->sha1_ctx; if (label) { diff --git a/ssl/tls1.h b/ssl/tls1.h index e8be2e44d..8590215ac 100755 --- a/ssl/tls1.h +++ b/ssl/tls1.h @@ -163,8 +163,8 @@ struct _SSL int16_t hs_status; uint8_t *all_pkts; int all_pkts_len; - MD5_CTX md5_ctx; - SHA1_CTX sha1_ctx; + MD5_CTX *md5_ctx; + SHA1_CTX *sha1_ctx; int client_fd; const cipher_info_t *cipher_info; uint8_t *final_finish_mac; diff --git a/ssl/tls1_clnt.c b/ssl/tls1_clnt.c index c33962e78..92f60fb80 100644 --- a/ssl/tls1_clnt.c +++ b/ssl/tls1_clnt.c @@ -110,6 +110,10 @@ int do_clnt_handshake(SSL *ssl, int handshake_type, uint8_t *buf, int hs_len) case HS_FINISHED: ret = process_finished(ssl, hs_len); + free(ssl->md5_ctx); + free(ssl->sha1_ctx); + ssl->md5_ctx = NULL; + ssl->sha1_ctx = NULL; break; case HS_HELLO_REQUEST: diff --git a/ssl/tls1_svr.c b/ssl/tls1_svr.c index 6baae5b67..1da3d8fc4 100644 --- a/ssl/tls1_svr.c +++ b/ssl/tls1_svr.c @@ -92,6 +92,10 @@ int do_svr_handshake(SSL *ssl, int handshake_type, uint8_t *buf, int hs_len) case HS_FINISHED: ret = process_finished(ssl, hs_len); + free(ssl->md5_ctx); + free(ssl->sha1_ctx); + ssl->md5_ctx = NULL; + ssl->sha1_ctx = NULL; break; }