Changeset 610:a137913d9f88 in freeDiameter
- Timestamp:
- Dec 1, 2010, 6:19:54 PM (13 years ago)
- Branch:
- default
- Phase:
- public
- Location:
- extensions/app_diameap
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
extensions/app_diameap/diameap_eap.c
r438 r610 444 444 { 445 445 /*diameap_ba_PolicyUpdate();*/ 446 eap_i->aaaEapKeyLength = 0; 446 eap_i->aaaEapMSKLength = 0; 447 eap_i->aaaEapEMSKLength = 0; 447 448 if (eap_sm->selectedMethod->eap_method_getKey) 448 449 { 449 450 if ((*eap_sm->selectedMethod->eap_method_getKey)(eap_sm, 450 &eap_i->aaaEapKeyData, &eap_i->aaaEapKeyLength)) 451 &eap_i->aaaEapMSKData, &eap_i->aaaEapMSKLength, 452 &eap_i->aaaEapEMSKData, &eap_i->aaaEapEMSKLength)) 451 453 { 452 454 TRACE_DEBUG(INFO,"%s[EAP Protocol] Generating EAP Master Key failed.",DIAMEAP_EXTENSION,eap_sm->selectedMethod->methodname) 453 eap_i->aaaEapKeyLength = 0; 455 eap_i->aaaEapMSKLength = 0; 456 eap_i->aaaEapEMSKLength = 0; 454 457 eap_i->aaaEapKeyAvailable = FALSE; 455 458 } … … 556 559 CHECK_FCT(diameap_eap_new(EAP_SUCCESS, (u8) eap_sm->currentId, TYPE_NONE, NULL, 0,&eap_i->aaaEapReqData)) 557 560 ; 558 if (eap_i->aaaEap KeyData != NULL)561 if (eap_i->aaaEapMSKData != NULL) 559 562 { 560 563 TRACE_DEBUG(FULL+1,"%s[EAP Protocol] EAP Key available [User: %s].",DIAMEAP_EXTENSION,eap_sm->user.userid); -
extensions/app_diameap/diameap_eap.h
r438 r610 59 59 boolean aaaFail; 60 60 struct eap_packet aaaEapReqData; 61 u8 *aaaEapKeyData; 62 int aaaEapKeyLength; 61 u8 *aaaEapMSKData; 62 int aaaEapMSKLength; 63 u8 *aaaEapEMSKData; 64 int aaaEapEMSKLength; 63 65 boolean aaaEapKeyAvailable; 64 66 int aaaMethodTimeout; -
extensions/app_diameap/diameap_plugins.c
r425 r610 329 329 { 330 330 plugin->eap_method_getKey = (int(*)(struct eap_state_machine *, 331 u8**, int* )) dlsym(plugin->handler, registerplugin->getKey);331 u8**, int*,u8**, int*)) dlsym(plugin->handler, registerplugin->getKey); 332 332 if (plugin->eap_method_getKey == NULL) 333 333 { -
extensions/app_diameap/diameap_server.c
r577 r610 309 309 eap_i->aaaFail = FALSE; 310 310 eap_i->aaaEapReqData.data = NULL; 311 eap_i->aaaEapKeyData = NULL; 311 eap_i->aaaEapMSKData = NULL; 312 eap_i->aaaEapEMSKData = NULL; 312 313 eap_i->aaaEapKeyAvailable = FALSE; 313 314 eap_i->aaaMethodTimeout = 0; … … 2957 2958 { 2958 2959 CHECK_FCT(fd_msg_avp_new(dataobj_eap_master_session_key, 0, &avp)); 2959 avp_val.os.data = eap_i.aaaEap KeyData;2960 avp_val.os.len = eap_i.aaaEap KeyLength;2960 avp_val.os.data = eap_i.aaaEapMSKData; 2961 avp_val.os.len = eap_i.aaaEapMSKLength; 2961 2962 CHECK_FCT(fd_msg_avp_setvalue(avp, &avp_val)); 2962 2963 CHECK_FCT( fd_msg_avp_add( ans, MSG_BRW_LAST_CHILD, avp ) ); -
extensions/app_diameap/libdiameap.h
r425 r610 114 114 struct eap_packet eapRespData); /* address of the eap_method_process method */ 115 115 boolean (*eap_method_isDone)(struct eap_state_machine *smd); /* address of the eap_method_isDone method */ 116 int (*eap_method_getKey)(struct eap_state_machine *smd, u8 ** key,int *keylength); /* address of the eap_method_getKey method */ 116 int (*eap_method_getKey)(struct eap_state_machine *smd, u8 ** msk,int *msklength, 117 u8 ** emsk,int *emsklength); /* address of the eap_method_getKey method */ 117 118 void (*eap_method_unregister)(void); /* (Optional) address of the eap_method_unregister method */ 118 119 void (*eap_method_free)(void *); /* (Optional) address of the eap_method_datafree method */ -
extensions/app_diameap/plugins/eap_tls/eap_tls.c
r577 r610 50 50 struct eap_packet eapRespData); 51 51 boolean eap_tls_isDone(struct eap_state_machine *smd); 52 int eap_tls_getKey(struct eap_state_machine *smd, u8** key, int * keylen);52 int eap_tls_getKey(struct eap_state_machine *smd, u8** msk, int * msklen, u8** emsk, int * emsklen); 53 53 void eap_tls_unregister(void); 54 54 void eap_tls_free(void * data); … … 289 289 } 290 290 291 int eap_tls_getKey(struct eap_state_machine *smd, u8 ** key, int *keylen)291 int eap_tls_getKey(struct eap_state_machine *smd, u8 ** msk, int *msklen, u8 ** emsk, int *emsklen) 292 292 { 293 293 struct tls_data * data; 294 int len = emsk ? 128 : 64; 294 295 data = (struct tls_data *) smd->methodData; 295 * key = malloc(64);296 *msk = malloc(len); 296 297 if (gnutls_prf(data->session, strlen("client EAP encryption"), 297 "client EAP encryption", 0, 0, NULL, 64, (char *) *key)298 "client EAP encryption", 0, 0, NULL, len, (char *) *msk) 298 299 != GNUTLS_E_SUCCESS) 299 300 { 300 free(* key);301 * key= NULL;302 * keylen = 0;301 free(*msk); 302 *msk = NULL; 303 *msklen = 0; 303 304 return 1; 304 305 } 305 306 else 306 307 { 307 *keylen = 64; 308 *msklen = 64; 309 } 310 if (emsk) { 311 *emsk = malloc(64); 312 memcpy(*emsk, (*msk)+64, 64); 313 memset((*msk)+64, 0, 64); 314 *emsklen = 64; 308 315 } 309 316
Note: See TracChangeset
for help on using the changeset viewer.