Annotation of embedaddon/strongswan/src/libtls/tls_eap.h, revision 1.1.1.1

1.1       misho       1: /*
                      2:  * Copyright (C) 2010 Martin Willi
                      3:  * Copyright (C) 2010 revosec AG
                      4:  *
                      5:  * This program is free software; you can redistribute it and/or modify it
                      6:  * under the terms of the GNU General Public License as published by the
                      7:  * Free Software Foundation; either version 2 of the License, or (at your
                      8:  * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
                      9:  *
                     10:  * This program is distributed in the hope that it will be useful, but
                     11:  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
                     12:  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
                     13:  * for more details.
                     14:  */
                     15: 
                     16: /**
                     17:  * @defgroup tls_eap tls_eap
                     18:  * @{ @ingroup libtls
                     19:  */
                     20: 
                     21: #ifndef TLS_EAP_H_
                     22: #define TLS_EAP_H_
                     23: 
                     24: typedef struct tls_eap_t tls_eap_t;
                     25: 
                     26: #include <eap/eap.h>
                     27: 
                     28: #include "tls.h"
                     29: 
                     30: /**
                     31:  * TLS over EAP helper, as used by EAP-TLS and EAP-TTLS.
                     32:  */
                     33: struct tls_eap_t {
                     34: 
                     35:        /**
                     36:         * Initiate TLS/TTLS/TNC over EAP exchange (as client).
                     37:         *
                     38:         * @param out                   allocated EAP packet data to send
                     39:         * @return
                     40:         *                                              - NEED_MORE if more exchanges required
                     41:         *                                              - FAILED if initiation failed
                     42:         */
                     43:        status_t (*initiate)(tls_eap_t *this, chunk_t *out);
                     44: 
                     45:        /**
                     46:         * Process a received EAP-TLS/TTLS/TNC packet, create response.
                     47:         *
                     48:         * @param in                    EAP packet data to process
                     49:         * @param out                   allocated EAP packet data to send
                     50:         * @return
                     51:         *                                              - SUCCESS if TLS negotiation completed
                     52:         *                                              - FAILED if TLS negotiation failed
                     53:         *                                              - NEED_MORE if more exchanges required
                     54:         */
                     55:        status_t (*process)(tls_eap_t *this, chunk_t in, chunk_t *out);
                     56: 
                     57:        /**
                     58:         * Get the EAP-MSK.
                     59:         *
                     60:         * @return                              MSK
                     61:         */
                     62:        chunk_t (*get_msk)(tls_eap_t *this);
                     63: 
                     64:        /**
                     65:         * Get the current EAP identifier.
                     66:         *
                     67:         * @return                              identifier
                     68:         */
                     69:        uint8_t (*get_identifier)(tls_eap_t *this);
                     70: 
                     71:        /**
                     72:         * Set the EAP identifier to a deterministic value, overwriting
                     73:         * the randomly initialized default value.
                     74:         *
                     75:         * @param identifier    EAP identifier
                     76:         */
                     77:        void (*set_identifier) (tls_eap_t *this, uint8_t identifier);
                     78: 
                     79:        /**
                     80:         * Get the authentication details after completing the handshake.
                     81:         *
                     82:         * @return                              authentication details, internal data
                     83:         */
                     84:        auth_cfg_t* (*get_auth)(tls_eap_t *this);
                     85: 
                     86:        /**
                     87:         * Destroy a tls_eap_t.
                     88:         */
                     89:        void (*destroy)(tls_eap_t *this);
                     90: };
                     91: 
                     92: /**
                     93:  * Create a tls_eap instance.
                     94:  *
                     95:  * @param type                         EAP type, EAP-TLS or EAP-TTLS
                     96:  * @param tls                          TLS implementation
                     97:  * @param frag_size                    maximum size of a TLS fragment we send
                     98:  * @param max_msg_count                maximum number of processed messages
                     99:  * @param include_length       if TRUE include length in non-fragmented packets
                    100:  */
                    101: tls_eap_t *tls_eap_create(eap_type_t type, tls_t *tls, size_t frag_size,
                    102:                                                  int max_msg_count, bool include_length);
                    103: 
                    104: #endif /** TLS_EAP_H_ @}*/

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>