summaryrefslogtreecommitdiff
path: root/lib/gnutls_compress.c
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2000-04-09 11:49:42 +0000
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2000-04-09 11:49:42 +0000
commitccb26d30efc4aeda237196cab4cb88fb40dc9f25 (patch)
tree29ace3c191e2ce6acb203093d7a9ce23644d0245 /lib/gnutls_compress.c
parentaf145d777894217cc337ce6505566d6799d8831b (diff)
downloadgnutls-ccb26d30efc4aeda237196cab4cb88fb40dc9f25.tar.gz
Changed directory structure.
Diffstat (limited to 'lib/gnutls_compress.c')
-rw-r--r--lib/gnutls_compress.c79
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;
+}