Annotation of embedaddon/strongswan/src/libcharon/plugins/eap_aka_3gpp2/eap_aka_3gpp2_functions.h, revision 1.1.1.1

1.1       misho       1: /*
                      2:  * Copyright (C) 2008-2009 Martin Willi
                      3:  * HSR Hochschule fuer Technik Rapperswil
                      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 eap_aka_3gpp2_functions eap_aka_3gpp2_functions
                     18:  * @{ @ingroup eap_aka_3gpp2
                     19:  */
                     20: 
                     21: #ifndef EAP_AKA_3GPP2_FUNCTIONS_H_
                     22: #define EAP_AKA_3GPP2_FUNCTIONS_H_
                     23: 
                     24: #include <simaka_manager.h>
                     25: 
                     26: #define AKA_SQN_LEN             6
                     27: #define AKA_K_LEN              16
                     28: #define AKA_MAC_LEN     8
                     29: #define AKA_AK_LEN              6
                     30: #define AKA_AMF_LEN             2
                     31: #define AKA_FMK_LEN             4
                     32: 
                     33: typedef struct eap_aka_3gpp2_functions_t eap_aka_3gpp2_functions_t;
                     34: 
                     35: /**
                     36:  * f1-f5(), f1*() and f5*() functions from the 3GPP2 (S.S0055) standard.
                     37:  */
                     38: struct eap_aka_3gpp2_functions_t {
                     39: 
                     40:        /**
                     41:         * Calculate MAC from RAND, SQN, AMF using K.
                     42:         *
                     43:         * @param k             secret key K
                     44:         * @param rand  random value rand
                     45:         * @param sqn   sequence number
                     46:         * @param amf   authentication management field
                     47:         * @param mac   buffer receiving mac MAC
                     48:         * @return              TRUE if calculations successful
                     49:         */
                     50:        bool (*f1)(eap_aka_3gpp2_functions_t *this, u_char k[AKA_K_LEN],
                     51:                                u_char rand[AKA_RAND_LEN], u_char sqn[AKA_SQN_LEN],
                     52:                                u_char amf[AKA_AMF_LEN], u_char mac[AKA_MAC_LEN]);
                     53: 
                     54:        /**
                     55:         * Calculate MACS from RAND, SQN, AMF using K
                     56:         *
                     57:         * @param k             secret key K
                     58:         * @param rand  random value RAND
                     59:         * @param sqn   sequence number
                     60:         * @param amf   authentication management field
                     61:         * @param macs  buffer receiving resynchronization mac MACS
                     62:         * @return              TRUE if calculations successful
                     63:         */
                     64:        bool (*f1star)(eap_aka_3gpp2_functions_t *this, u_char k[AKA_K_LEN],
                     65:                                u_char rand[AKA_RAND_LEN], u_char sqn[AKA_SQN_LEN],
                     66:                                u_char amf[AKA_AMF_LEN], u_char macs[AKA_MAC_LEN]);
                     67: 
                     68:        /**
                     69:         * Calculate RES from RAND using K
                     70:         *
                     71:         * @param k             secret key K
                     72:         * @param rand  random value RAND
                     73:         * @param res   buffer receiving result RES, uses full 128 bit
                     74:         * @return              TRUE if calculations successful
                     75:         */
                     76:        bool (*f2)(eap_aka_3gpp2_functions_t *this, u_char k[AKA_K_LEN],
                     77:                                u_char rand[AKA_RAND_LEN], u_char res[AKA_RES_MAX]);
                     78:        /**
                     79:         * Calculate CK from RAND using K
                     80:         *
                     81:         * @param k             secret key K
                     82:         * @param rand  random value RAND
                     83:         * @param macs  buffer receiving encryption key CK
                     84:         * @return              TRUE if calculations successful
                     85:         */
                     86:        bool (*f3)(eap_aka_3gpp2_functions_t *this, u_char k[AKA_K_LEN],
                     87:                                u_char rand[AKA_RAND_LEN], u_char ck[AKA_CK_LEN]);
                     88:        /**
                     89:         * Calculate IK from RAND using K
                     90:         *
                     91:         * @param k             secret key K
                     92:         * @param rand  random value RAND
                     93:         * @param macs  buffer receiving integrity key IK
                     94:         * @return              TRUE if calculations successful
                     95:         */
                     96:        bool (*f4)(eap_aka_3gpp2_functions_t *this, u_char k[AKA_K_LEN],
                     97:                                u_char rand[AKA_RAND_LEN], u_char ik[AKA_IK_LEN]);
                     98:        /**
                     99:         * Calculate AK from a RAND using K
                    100:         *
                    101:         * @param k             secret key K
                    102:         * @param rand  random value RAND
                    103:         * @param macs  buffer receiving anonymity key AK
                    104:         * @return              TRUE if calculations successful
                    105:         */
                    106:        bool (*f5)(eap_aka_3gpp2_functions_t *this, u_char k[AKA_K_LEN],
                    107:                                u_char rand[AKA_RAND_LEN], u_char ak[AKA_AK_LEN]);
                    108:        /**
                    109:         * Calculate AKS from a RAND using K
                    110:         *
                    111:         * @param k             secret key K
                    112:         * @param rand  random value RAND
                    113:         * @param macs  buffer receiving resynchronization anonymity key AKS
                    114:         * @return              TRUE if calculations successful
                    115:         */
                    116:        bool (*f5star)(eap_aka_3gpp2_functions_t *this, u_char k[AKA_K_LEN],
                    117:                                u_char rand[AKA_RAND_LEN], u_char aks[AKA_AK_LEN]);
                    118: 
                    119:        /**
                    120:         * Destroy a eap_aka_3gpp2_functions_t.
                    121:         */
                    122:        void (*destroy)(eap_aka_3gpp2_functions_t *this);
                    123: };
                    124: 
                    125: /**
                    126:  * Create a eap_aka_3gpp2_functions instance.
                    127:  *
                    128:  * @return                     function set, NULL on error
                    129:  */
                    130: eap_aka_3gpp2_functions_t *eap_aka_3gpp2_functions_create();
                    131: 
                    132: #endif /** EAP_AKA_3GPP2_FUNCTIONS_H_ @}*/

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