diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2000-04-09 11:49:42 +0000 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2000-04-09 11:49:42 +0000 |
commit | ccb26d30efc4aeda237196cab4cb88fb40dc9f25 (patch) | |
tree | 29ace3c191e2ce6acb203093d7a9ce23644d0245 /lib/gnutls_compress.c | |
parent | af145d777894217cc337ce6505566d6799d8831b (diff) | |
download | gnutls-ccb26d30efc4aeda237196cab4cb88fb40dc9f25.tar.gz |
Changed directory structure.
Diffstat (limited to 'lib/gnutls_compress.c')
-rw-r--r-- | lib/gnutls_compress.c | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/lib/gnutls_compress.c b/lib/gnutls_compress.c new file mode 100644 index 0000000000..fa0d2bb11b --- /dev/null +++ b/lib/gnutls_compress.c @@ -0,0 +1,79 @@ +#include <defines.h> +#include <mhash.h> +#include "gnutls_int.h" +#include "gnutls_compress.h" +#include "gnutls_errors.h" + +int _gnutls_TLSPlaintext2TLSCompressed(GNUTLS_STATE state, + GNUTLSCompressed ** + compress, + GNUTLSPlaintext * + plaintext) +{ + GNUTLSCompressed *compressed; + + *compress = gnutls_malloc(sizeof(GNUTLSCompressed)); + compressed = *compress; + + switch (state->security_parameters.compression_algorithm) { + case COMPRESSION_NULL: + + compressed->fragment = gnutls_malloc(plaintext->length); + + memmove(compressed->fragment, plaintext->fragment, + plaintext->length); + compressed->length = plaintext->length; + compressed->type = plaintext->type; + compressed->version.major = plaintext->version.major; + compressed->version.minor = plaintext->version.minor; + break; + default: + gnutls_free(*compress); + return GNUTLS_E_UNKNOWN_COMPRESSION_ALGORITHM; + } + + return 0; +} + +int _gnutls_TLSCompressed2TLSPlaintext(GNUTLS_STATE state, + GNUTLSPlaintext** + plain, + GNUTLSCompressed * + compressed) +{ + GNUTLSPlaintext *plaintext; + + *plain = gnutls_malloc(sizeof(GNUTLSPlaintext)); + plaintext = *plain; + + switch (state->security_parameters.compression_algorithm) { + case COMPRESSION_NULL: + plaintext->fragment = gnutls_malloc(compressed->length); + memmove(plaintext->fragment, compressed->fragment, + compressed->length); + plaintext->length = compressed->length; + plaintext->type = compressed->type; + plaintext->version.major = compressed->version.major; + plaintext->version.minor = compressed->version.minor; + break; + default: + gnutls_free(*plain); + return GNUTLS_E_UNKNOWN_COMPRESSION_ALGORITHM; + } + + return 0; +} + + + + +int _gnutls_freeTLSCompressed(GNUTLSCompressed * compressed) +{ + if (compressed == NULL) + return 0; + + gnutls_free(compressed->fragment); + gnutls_free(compressed); + + return 0; +} |