diff options
author | Martin Willi <martin@revosec.ch> | 2010-03-19 18:55:23 +0100 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2010-08-03 15:39:25 +0200 |
commit | 0b71bc7af047f1a20bbad8a38d33b01452c35613 (patch) | |
tree | e20e0292fda6b32dd6415414e39336b6d868ac77 /src/libcharon/plugins/eap_tls/tls/tls_compression.h | |
parent | 400df4ca7c659d2f371129d18c6dedf82840c2ea (diff) | |
download | strongswan-0b71bc7af047f1a20bbad8a38d33b01452c35613.tar.bz2 strongswan-0b71bc7af047f1a20bbad8a38d33b01452c35613.tar.xz |
Moved eap-tls plugin to libcharon, updated to 4.4.1 APIs
Diffstat (limited to 'src/libcharon/plugins/eap_tls/tls/tls_compression.h')
-rw-r--r-- | src/libcharon/plugins/eap_tls/tls/tls_compression.h | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/src/libcharon/plugins/eap_tls/tls/tls_compression.h b/src/libcharon/plugins/eap_tls/tls/tls_compression.h new file mode 100644 index 000000000..a61543004 --- /dev/null +++ b/src/libcharon/plugins/eap_tls/tls/tls_compression.h @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2010 Martin Willi + * Copyright (C) 2010 revosec AG + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + */ + +/** + * @defgroup tls_compression tls_compression + * @{ @ingroup tls + */ + +#ifndef TLS_COMPRESSION_H_ +#define TLS_COMPRESSION_H_ + +typedef struct tls_compression_t tls_compression_t; + +#include <library.h> + +#include "tls.h" +#include "tls_fragmentation.h" + +/** + * TLS record protocol compression layer. + */ +struct tls_compression_t { + + /** + * Process a compressed TLS record, pass it to upper layers. + * + * @param type type of the TLS record to process + * @param data associated TLS record data + * @return + * - SUCCESS if TLS negotiation complete + * - FAILED if TLS handshake failed + * - NEED_MORE if more invocations to process/build needed + */ + status_t (*process)(tls_compression_t *this, + tls_content_type_t type, chunk_t data); + + /** + * Query upper layer for TLS record, build compressed record. + * + * @param type type of the built TLS record + * @param data allocated data of the built TLS record + * @return + * - SUCCESS if TLS negotiation complete + * - FAILED if TLS handshake failed + * - NEED_MORE if upper layers have more records to send + * - INVALID_STATE if more input records required + */ + status_t (*build)(tls_compression_t *this, + tls_content_type_t *type, chunk_t *data); + + /** + * Destroy a tls_compression_t. + */ + void (*destroy)(tls_compression_t *this); +}; + +/** + * Create a tls_compression instance. + * + * @param fragmentation fragmentation layer of TLS stack + * @return TLS compression layer. + */ +tls_compression_t *tls_compression_create(tls_fragmentation_t *fragmentation); + +#endif /** TLS_COMPRESSION_H_ @}*/ |