~ubuntu-branches/ubuntu/dapper/gnutls12/dapper

« back to all changes in this revision

Viewing changes to lib/gnutls_compress.c

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Urlichs
  • Date: 2005-11-15 19:26:02 UTC
  • Revision ID: james.westby@ubuntu.com-20051115192602-f1ux56uyducz3f96
Tags: upstream-1.2.9
ImportĀ upstreamĀ versionĀ 1.2.9

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright (C) 2000, 2004, 2005 Free Software Foundation
 
3
 *
 
4
 * Author: Nikos Mavroyanopoulos
 
5
 *
 
6
 * This file is part of GNUTLS.
 
7
 *
 
8
 * The GNUTLS library is free software; you can redistribute it and/or
 
9
 * modify it under the terms of the GNU Lesser General Public License
 
10
 * as published by the Free Software Foundation; either version 2.1 of
 
11
 * the License, or (at your option) any later version.
 
12
 *
 
13
 * This library is distributed in the hope that it will be useful, but
 
14
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 
15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
16
 * Lesser General Public License for more details.
 
17
 *
 
18
 * You should have received a copy of the GNU Lesser General Public
 
19
 * License along with this library; if not, write to the Free Software
 
20
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
 
21
 * USA
 
22
 *
 
23
 */
 
24
 
 
25
/* This file contains the functions which convert the TLS plaintext
 
26
 * packet to TLS compressed packet.
 
27
 */
 
28
 
 
29
#include "gnutls_int.h"
 
30
#include "gnutls_compress.h"
 
31
#include "gnutls_errors.h"
 
32
#include "gnutls_compress_int.h"
 
33
 
 
34
/* These functions allocate the return value internally
 
35
 */
 
36
int _gnutls_m_plaintext2compressed(gnutls_session_t session,
 
37
                                   gnutls_datum_t * compressed,
 
38
                                   gnutls_datum_t plaintext)
 
39
{
 
40
    int size;
 
41
    opaque *data;
 
42
 
 
43
    size =
 
44
        _gnutls_compress(session->connection_state.write_compression_state,
 
45
                         plaintext.data, plaintext.size, &data,
 
46
                         MAX_RECORD_SEND_SIZE + 1024);
 
47
    if (size < 0) {
 
48
        gnutls_assert();
 
49
        return GNUTLS_E_COMPRESSION_FAILED;
 
50
    }
 
51
    compressed->data = data;
 
52
    compressed->size = size;
 
53
 
 
54
    return 0;
 
55
}
 
56
 
 
57
int _gnutls_m_compressed2plaintext(gnutls_session_t session,
 
58
                                   gnutls_datum_t * plain,
 
59
                                   gnutls_datum_t compressed)
 
60
{
 
61
    int size;
 
62
    opaque *data;
 
63
 
 
64
    size =
 
65
        _gnutls_decompress(session->connection_state.
 
66
                           read_compression_state, compressed.data,
 
67
                           compressed.size, &data, MAX_RECORD_RECV_SIZE);
 
68
    if (size < 0) {
 
69
        gnutls_assert();
 
70
        return GNUTLS_E_DECOMPRESSION_FAILED;
 
71
    }
 
72
    plain->data = data;
 
73
    plain->size = size;
 
74
 
 
75
    return 0;
 
76
}