diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2002-03-20 12:21:51 +0000 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2002-03-20 12:21:51 +0000 |
commit | 9409242790e0363d0c2d779c1897a4fe089739a1 (patch) | |
tree | 0a79ee5245d2fbd0941521a0d031e4fa4fc8af99 /lib/gnutls_constate.c | |
parent | c2a598b64f17b05cb0c00f2bbfa5fb88f4d43d08 (diff) | |
download | gnutls-9409242790e0363d0c2d779c1897a4fe089739a1.tar.gz |
Improved compression support. Corrected several bugs in empty
fragment sending and receiving.
Diffstat (limited to 'lib/gnutls_constate.c')
-rw-r--r-- | lib/gnutls_constate.c | 54 |
1 files changed, 53 insertions, 1 deletions
diff --git a/lib/gnutls_constate.c b/lib/gnutls_constate.c index cea17c6620..e359ef1c40 100644 --- a/lib/gnutls_constate.c +++ b/lib/gnutls_constate.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2001 Nikos Mavroyanopoulos + * Copyright (C) 2001,2002 Nikos Mavroyanopoulos * * This file is part of GNUTLS. * @@ -283,6 +283,10 @@ int rc; gnutls_cipher_deinit(state->connection_state. read_cipher_state); + if (state->connection_state.read_compression_state != NULL) + gnutls_comp_deinit(state->connection_state. + read_compression_state, 1); + mac_size = _gnutls_mac_get_digest_size(state->security_parameters. @@ -307,6 +311,17 @@ int rc; return GNUTLS_E_UNKNOWN_CIPHER; } + state->connection_state.read_compression_state = + gnutls_comp_init(state->security_parameters. + read_compression_algorithm, 1); + if (state->connection_state.read_compression_state == + GNUTLS_COMP_FAILED + && state->security_parameters.read_compression_algorithm != + GNUTLS_COMP_NULL) { + gnutls_assert(); + return GNUTLS_E_UNKNOWN_COMPRESSION_ALGORITHM; + } + /* copy mac secrets from cipherspecs, to connection * state. */ @@ -336,6 +351,18 @@ int rc; return GNUTLS_E_UNKNOWN_CIPHER; } + state->connection_state.read_compression_state = + gnutls_comp_init(state->security_parameters. + read_compression_algorithm, 1); + + if (state->connection_state.read_compression_state == + GNUTLS_COMP_FAILED + && state->security_parameters.read_compression_algorithm != + GNUTLS_COMP_NULL) { + gnutls_assert(); + return GNUTLS_E_UNKNOWN_COMPRESSION_ALGORITHM; + } + /* copy mac secret to connection state */ @@ -428,6 +455,10 @@ int rc; gnutls_cipher_deinit(state->connection_state. write_cipher_state); + if (state->connection_state.write_compression_state != NULL) + gnutls_comp_deinit(state->connection_state. + write_compression_state, 0); + mac_size = _gnutls_mac_get_digest_size(state->security_parameters. write_mac_algorithm); @@ -449,6 +480,16 @@ int rc; return GNUTLS_E_UNKNOWN_CIPHER; } + state->connection_state.write_compression_state = + gnutls_comp_init(state->security_parameters.write_compression_algorithm, 0); + + if (state->connection_state.write_compression_state == GNUTLS_COMP_FAILED + && state->security_parameters.write_compression_algorithm != GNUTLS_COMP_NULL) { + gnutls_assert(); + return GNUTLS_E_UNKNOWN_COMPRESSION_ALGORITHM; + } + + /* copy mac secrets from cipherspecs, to connection * state. */ @@ -477,6 +518,17 @@ int rc; return GNUTLS_E_UNKNOWN_CIPHER; } + state->connection_state.write_compression_state = + gnutls_comp_init(state->security_parameters.write_compression_algorithm, 0); + + if (state->connection_state.write_compression_state == + GNUTLS_COMP_FAILED + && state->security_parameters.write_compression_algorithm != + GNUTLS_CIPHER_NULL) { + gnutls_assert(); + return GNUTLS_E_UNKNOWN_COMPRESSION_ALGORITHM; + } + /* copy mac secret to connection state */ if (mac_size > 0) { |