Changeset 610:a137913d9f88 in freeDiameter for extensions/app_diameap/plugins/eap_tls/eap_tls.c
- Timestamp:
- Dec 1, 2010, 6:19:54 PM (13 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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.