projects
/
openssl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Make OPENSSL_NO_COMP compile again.
[openssl.git]
/
ssl
/
s3_enc.c
diff --git
a/ssl/s3_enc.c
b/ssl/s3_enc.c
index 559924d3681b1fc8f3ba6fa968fa33ccfbdebd05..d83d42e583f0ed82c9bdd17f6ecda6252ead3ac6 100644
(file)
--- a/
ssl/s3_enc.c
+++ b/
ssl/s3_enc.c
@@
-139,7
+139,7
@@
static int ssl3_generate_key_block(SSL *s, unsigned char *km, int num)
EVP_MD_CTX s1;
unsigned char buf[16],smd[SHA_DIGEST_LENGTH];
unsigned char c='A';
EVP_MD_CTX s1;
unsigned char buf[16],smd[SHA_DIGEST_LENGTH];
unsigned char c='A';
- int i,j,k;
+
unsigned
int i,j,k;
#ifdef CHARSET_EBCDIC
c = os_toascii[c]; /*'A' in ASCII */
#ifdef CHARSET_EBCDIC
c = os_toascii[c]; /*'A' in ASCII */
@@
-147,7
+147,7
@@
static int ssl3_generate_key_block(SSL *s, unsigned char *km, int num)
k=0;
EVP_MD_CTX_init(&m5);
EVP_MD_CTX_init(&s1);
k=0;
EVP_MD_CTX_init(&m5);
EVP_MD_CTX_init(&s1);
- for (i=0; i<num; i+=MD5_DIGEST_LENGTH)
+ for (i=0;
(int)
i<num; i+=MD5_DIGEST_LENGTH)
{
k++;
if (k > sizeof buf)
{
k++;
if (k > sizeof buf)
@@
-172,7
+172,7
@@
static int ssl3_generate_key_block(SSL *s, unsigned char *km, int num)
EVP_DigestUpdate(&m5,s->session->master_key,
s->session->master_key_length);
EVP_DigestUpdate(&m5,smd,SHA_DIGEST_LENGTH);
EVP_DigestUpdate(&m5,s->session->master_key,
s->session->master_key_length);
EVP_DigestUpdate(&m5,smd,SHA_DIGEST_LENGTH);
- if ((i+MD5_DIGEST_LENGTH) > num)
+ if ((i
nt)(i
+MD5_DIGEST_LENGTH) > num)
{
EVP_DigestFinal_ex(&m5,smd,NULL);
memcpy(km,smd,(num-i));
{
EVP_DigestFinal_ex(&m5,smd,NULL);
memcpy(km,smd,(num-i));
@@
-196,19
+196,23
@@
int ssl3_change_cipher_state(SSL *s, int which)
unsigned char *ms,*key,*iv,*er1,*er2;
EVP_CIPHER_CTX *dd;
const EVP_CIPHER *c;
unsigned char *ms,*key,*iv,*er1,*er2;
EVP_CIPHER_CTX *dd;
const EVP_CIPHER *c;
+#ifndef OPENSSL_NO_COMP
COMP_METHOD *comp;
COMP_METHOD *comp;
+#endif
const EVP_MD *m;
EVP_MD_CTX md;
const EVP_MD *m;
EVP_MD_CTX md;
- int exp,n,i,j,k,cl;
+ int
is_
exp,n,i,j,k,cl;
int reuse_dd = 0;
int reuse_dd = 0;
- exp=SSL_C_IS_EXPORT(s->s3->tmp.new_cipher);
+
is_
exp=SSL_C_IS_EXPORT(s->s3->tmp.new_cipher);
c=s->s3->tmp.new_sym_enc;
m=s->s3->tmp.new_hash;
c=s->s3->tmp.new_sym_enc;
m=s->s3->tmp.new_hash;
+#ifndef OPENSSL_NO_COMP
if (s->s3->tmp.new_compression == NULL)
comp=NULL;
else
comp=s->s3->tmp.new_compression->method;
if (s->s3->tmp.new_compression == NULL)
comp=NULL;
else
comp=s->s3->tmp.new_compression->method;
+#endif
key_block=s->s3->tmp.key_block;
if (which & SSL3_CC_READ)
key_block=s->s3->tmp.key_block;
if (which & SSL3_CC_READ)
@@
-219,6
+223,7
@@
int ssl3_change_cipher_state(SSL *s, int which)
goto err;
dd= s->enc_read_ctx;
s->read_hash=m;
goto err;
dd= s->enc_read_ctx;
s->read_hash=m;
+#ifndef OPENSSL_NO_COMP
/* COMPRESS */
if (s->expand != NULL)
{
/* COMPRESS */
if (s->expand != NULL)
{
@@
-239,6
+244,7
@@
int ssl3_change_cipher_state(SSL *s, int which)
if (s->s3->rrec.comp == NULL)
goto err;
}
if (s->s3->rrec.comp == NULL)
goto err;
}
+#endif
memset(&(s->s3->read_sequence[0]),0,8);
mac_secret= &(s->s3->read_mac_secret[0]);
}
memset(&(s->s3->read_sequence[0]),0,8);
mac_secret= &(s->s3->read_mac_secret[0]);
}
@@
-250,6
+256,7
@@
int ssl3_change_cipher_state(SSL *s, int which)
goto err;
dd= s->enc_write_ctx;
s->write_hash=m;
goto err;
dd= s->enc_write_ctx;
s->write_hash=m;
+#ifndef OPENSSL_NO_COMP
/* COMPRESS */
if (s->compress != NULL)
{
/* COMPRESS */
if (s->compress != NULL)
{
@@
-265,6
+272,7
@@
int ssl3_change_cipher_state(SSL *s, int which)
goto err2;
}
}
goto err2;
}
}
+#endif
memset(&(s->s3->write_sequence[0]),0,8);
mac_secret= &(s->s3->write_mac_secret[0]);
}
memset(&(s->s3->write_sequence[0]),0,8);
mac_secret= &(s->s3->write_mac_secret[0]);
}
@@
-276,9
+284,9
@@
int ssl3_change_cipher_state(SSL *s, int which)
p=s->s3->tmp.key_block;
i=EVP_MD_size(m);
cl=EVP_CIPHER_key_length(c);
p=s->s3->tmp.key_block;
i=EVP_MD_size(m);
cl=EVP_CIPHER_key_length(c);
- j=exp ? (cl < SSL_C_EXPORT_KEYLENGTH(s->s3->tmp.new_cipher) ?
+ j=
is_
exp ? (cl < SSL_C_EXPORT_KEYLENGTH(s->s3->tmp.new_cipher) ?
cl : SSL_C_EXPORT_KEYLENGTH(s->s3->tmp.new_cipher)) : cl;
cl : SSL_C_EXPORT_KEYLENGTH(s->s3->tmp.new_cipher)) : cl;
- /* Was j=(exp)?5:EVP_CIPHER_key_length(c); */
+ /* Was j=(
is_
exp)?5:EVP_CIPHER_key_length(c); */
k=EVP_CIPHER_iv_length(c);
if ( (which == SSL3_CHANGE_CIPHER_CLIENT_WRITE) ||
(which == SSL3_CHANGE_CIPHER_SERVER_READ))
k=EVP_CIPHER_iv_length(c);
if ( (which == SSL3_CHANGE_CIPHER_CLIENT_WRITE) ||
(which == SSL3_CHANGE_CIPHER_SERVER_READ))
@@
-307,7
+315,7
@@
int ssl3_change_cipher_state(SSL *s, int which)
EVP_MD_CTX_init(&md);
memcpy(mac_secret,ms,i);
EVP_MD_CTX_init(&md);
memcpy(mac_secret,ms,i);
- if (exp)
+ if (
is_
exp)
{
/* In here I set both the read and write key/iv to the
* same value since only the correct one will be used :-).
{
/* In here I set both the read and write key/iv to the
* same value since only the correct one will be used :-).
@@
-350,7
+358,9
@@
int ssl3_setup_key_block(SSL *s)
const EVP_MD *hash;
int num;
int ret = 0;
const EVP_MD *hash;
int num;
int ret = 0;
+#ifdef OPENSSL_NO_COMP
SSL_COMP *comp;
SSL_COMP *comp;
+#endif
if (s->s3->tmp.key_block_length != 0)
return(1);
if (s->s3->tmp.key_block_length != 0)
return(1);
@@
-363,7
+373,11
@@
int ssl3_setup_key_block(SSL *s)
s->s3->tmp.new_sym_enc=c;
s->s3->tmp.new_hash=hash;
s->s3->tmp.new_sym_enc=c;
s->s3->tmp.new_hash=hash;
+#ifdef OPENSSL_NO_COMP
+ s->s3->tmp.new_compression=NULL;
+#else
s->s3->tmp.new_compression=comp;
s->s3->tmp.new_compression=comp;
+#endif
num=EVP_CIPHER_key_length(c)+EVP_MD_size(hash)+EVP_CIPHER_iv_length(c);
num*=2;
num=EVP_CIPHER_key_length(c)+EVP_MD_size(hash)+EVP_CIPHER_iv_length(c);
num*=2;
@@
-569,7
+583,7
@@
int ssl3_mac(SSL *ssl, unsigned char *md, int send)
const EVP_MD *hash;
unsigned char *p,rec_char;
unsigned int md_size;
const EVP_MD *hash;
unsigned char *p,rec_char;
unsigned int md_size;
- int npad
,i
;
+ int npad;
if (send)
{
if (send)
{
@@
-612,13
+626,19
@@
int ssl3_mac(SSL *ssl, unsigned char *md, int send)
EVP_MD_CTX_cleanup(&md_ctx);
EVP_MD_CTX_cleanup(&md_ctx);
+ ssl3_record_sequence_update(seq);
+ return(md_size);
+ }
+
+void ssl3_record_sequence_update(unsigned char *seq)
+ {
+ int i;
+
for (i=7; i>=0; i--)
{
++seq[i];
if (seq[i] != 0) break;
}
for (i=7; i>=0; i--)
{
++seq[i];
if (seq[i] != 0) break;
}
-
- return(md_size);
}
int ssl3_generate_master_secret(SSL *s, unsigned char *out, unsigned char *p,
}
int ssl3_generate_master_secret(SSL *s, unsigned char *out, unsigned char *p,