1a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* 2a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * broadcastKey802_1x.c 3a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 4a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved. 5a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * All rights reserved. 6a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 7a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Redistribution and use in source and binary forms, with or without 8a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * modification, are permitted provided that the following conditions 9a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * are met: 10a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 11a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * * Redistributions of source code must retain the above copyright 12a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * notice, this list of conditions and the following disclaimer. 13a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * * Redistributions in binary form must reproduce the above copyright 14a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * notice, this list of conditions and the following disclaimer in 15a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * the documentation and/or other materials provided with the 16a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * distribution. 17a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * * Neither the name Texas Instruments nor the names of its 18a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * contributors may be used to endorse or promote products derived 19a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * from this software without specific prior written permission. 20a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 21a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 25a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 27a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 31a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 33a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 34a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** \file broadcastKey802_1x.c 35a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \brief broadcast key 802.1x implementation 36a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 37a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \see broadcastKey802_1x.h 38a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*/ 39a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 40a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**************************************************************************** 41a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * * 42a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * MODULE: 802.1x station broadcast key SM * 43a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * PURPOSE: 802.1x station broadcast key SM implementation * 44a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * * 45a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/ 46a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 47a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#define __FILE_ID__ FILE_ID_22 48a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "osApi.h" 49a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "report.h" 50a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "rsnApi.h" 51a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 52a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "keyDerive.h" 53a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 54a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "broadcastKey802_1x.h" 55a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "mainKeysSm.h" 56a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 57a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 58a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS broadcastKey802_1x_start(struct _broadcastKey_t *pBroadcastKey); 59a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 60a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS broadcastKey802_1x_stop(struct _broadcastKey_t *pBroadcastKey); 61a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 62a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS broadcastKey802_1x_recvSuccess(struct _broadcastKey_t *pBroadcastKey, 63a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt encodedKeyMaterial_t *pEncodedKeyMaterial); 64a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 65a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS broadcastKey802_1x_recvFailure(struct _broadcastKey_t *pBroadcastKey); 66a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 67a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS broadcastKey802_1x_distribute(struct _broadcastKey_t *pBroadcastKey); 68a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 69a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS broadcastKey802_1x_redistribute(struct _broadcastKey_t *pBroadcastKey); 70a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 71a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS broadcastKey802_1x_event(struct _broadcastKey_t *pBroadcastKey, 72a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8 event, 73a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt void *pData); 74a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 75a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 76a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** 77a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 78a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Function - Init KEY Parser module. 79a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 80a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b Description: 81a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 82a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Called by RSN Manager. 83a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Registers the function 'rsn_BroadcastKeyRecv()' at the distributor to receive KEY frames upon receiving a KEY_RECV event. 84a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 85a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b ARGS: 86a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 87a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 88a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b RETURNS: 89a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 90a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* TI_STATUS - 0 on success, any other value on failure. 91a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 92a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*/ 93a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 94a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS broadcastKey802_1x_config(struct _broadcastKey_t *pBroadcastKey) 95a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 96a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_STATUS status = TI_NOK; 97a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 98a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /** Station broadcast key State Machine matrix */ 99a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt fsm_actionCell_t broadcastKey802_1x_matrix[BCAST_KEY_802_1X_NUM_STATES][BCAST_KEY_802_1X_NUM_EVENTS] = 100a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 101a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* next state and actions for IDLE state */ 102a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { {BCAST_KEY_802_1X_STATE_START, (fsm_Action_t)broadcastKeySmNop}, 103a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {BCAST_KEY_802_1X_STATE_IDLE, (fsm_Action_t)broadcastKeySmNop}, 104a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {BCAST_KEY_802_1X_STATE_IDLE, (fsm_Action_t)broadcastKeySmNop}, 105a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {BCAST_KEY_802_1X_STATE_IDLE, (fsm_Action_t)broadcastKeySmUnexpected} 106a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt }, 107a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 108a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* next state and actions for START state */ 109a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { {BCAST_KEY_802_1X_STATE_START, (fsm_Action_t)broadcastKeySmUnexpected}, 110a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {BCAST_KEY_802_1X_STATE_IDLE, (fsm_Action_t)broadcastKeySmNop}, 111a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {BCAST_KEY_802_1X_STATE_COMPLETE, (fsm_Action_t)broadcastKey802_1x_distribute}, 112a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {BCAST_KEY_802_1X_STATE_START, (fsm_Action_t)broadcastKeySmNop} 113a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt }, 114a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 115a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* next state and actions for COMPLETE state */ 116a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { {BCAST_KEY_802_1X_STATE_COMPLETE, (fsm_Action_t)broadcastKeySmUnexpected}, 117a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {BCAST_KEY_802_1X_STATE_IDLE, (fsm_Action_t)broadcastKeySmNop}, 118a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {BCAST_KEY_802_1X_STATE_COMPLETE, (fsm_Action_t)broadcastKey802_1x_distribute}, 119a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {BCAST_KEY_802_1X_STATE_COMPLETE, (fsm_Action_t)broadcastKeySmUnexpected} 120a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 121a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt }; 122a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 123a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 124a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pBroadcastKey->start = broadcastKey802_1x_start; 125a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pBroadcastKey->stop = broadcastKey802_1x_stop; 126a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pBroadcastKey->recvFailure = broadcastKey802_1x_recvFailure; 127a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pBroadcastKey->recvSuccess = broadcastKey802_1x_recvSuccess; 128a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 129a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pBroadcastKey->currentState = BCAST_KEY_802_1X_STATE_IDLE; 130a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 131a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt status = fsm_Config(pBroadcastKey->pBcastKeySm, 132a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt &broadcastKey802_1x_matrix[0][0], 133a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt BCAST_KEY_802_1X_NUM_STATES, 134a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt BCAST_KEY_802_1X_NUM_EVENTS, 135a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt NULL, pBroadcastKey->hOs); 136a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 137a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 138a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 139a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return status; 140a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 141a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 142a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 143a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** 144a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 145a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* broadcastKey802_1x_event 146a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 147a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b Description: 148a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 149a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* broadcast key state machine transition function 150a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 151a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b ARGS: 152a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 153a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* I/O - currentState - current state in the state machine\n 154a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* I - event - specific event for the state machine\n 155a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* I - pData - Data for state machine action function\n 156a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 157a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b RETURNS: 158a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 159a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* TI_OK on success, TI_NOK otherwise. 160a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 161a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \sa 162a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*/ 163a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS broadcastKey802_1x_event(struct _broadcastKey_t *pBroadcastKey, TI_UINT8 event, void *pData) 164a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 165a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_STATUS status; 166a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8 nextState; 167a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 168a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt status = fsm_GetNextState(pBroadcastKey->pBcastKeySm, pBroadcastKey->currentState, event, &nextState); 169a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (status != TI_OK) 170a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 171a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTRACE0(pBroadcastKey->hReport, REPORT_SEVERITY_ERROR, "BROADCAST_KEY_SM: ERROR: failed getting next state\n"); 172a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_NOK; 173a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 174a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 175a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTRACE3(pBroadcastKey->hReport, REPORT_SEVERITY_INFORMATION, "STATION_BROADCAST_KEY_SM: <currentState = %d, event = %d> --> nextState = %d\n", pBroadcastKey->currentState, event, nextState); 176a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 177a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt status = fsm_Event(pBroadcastKey->pBcastKeySm, &pBroadcastKey->currentState, event, pData); 178a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 179a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return status; 180a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 181a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 182a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 183a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** 184a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 185a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* broadcastKey802_1x_start 186a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 187a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b Description: 188a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 189a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* START event handler 190a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 191a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b ARGS: 192a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 193a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* I - pCtrlB - station control block \n 194a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 195a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b RETURNS: 196a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 197a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* TI_OK on success, TI_NOK otherwise. 198a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 199a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \sa broadcastKey802_1x_stop() 200a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*/ 201a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS broadcastKey802_1x_start(struct _broadcastKey_t *pBroadcastKey) 202a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 203a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_STATUS status; 204a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 205a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt status = broadcastKey802_1x_event(pBroadcastKey, BCAST_KEY_802_1X_EVENT_START, pBroadcastKey); 206a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 207a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return status; 208a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 209a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 210a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 211a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** 212a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 213a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* broadcastKey802_1x_stop 214a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 215a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b Description: 216a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 217a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* START event handler 218a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 219a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b ARGS: 220a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 221a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* I - pCtrlB - station control block \n 222a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 223a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b RETURNS: 224a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 225a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* TI_OK on success, TI_NOK otherwise. 226a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 227a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \sa broadcastKey802_1x_start() 228a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*/ 229a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS broadcastKey802_1x_stop(struct _broadcastKey_t *pBroadcastKey) 230a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 231a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_STATUS status; 232a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 233a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt status = broadcastKey802_1x_event(pBroadcastKey, BCAST_KEY_802_1X_EVENT_STOP, pBroadcastKey); 234a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 235a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return status; 236a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 237a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 238a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 239a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** 240a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 241a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* broadcastKey802_1x_recvSuccess 242a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 243a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b Description: 244a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 245a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* SUCCESS event handler 246a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 247a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b ARGS: 248a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 249a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* I - pCtrlB - station control block \n 250a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* I - pEncodedKeyMaterial - Encoded key material \n 251a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 252a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b RETURNS: 253a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 254a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* TI_OK on success, TI_NOK otherwise. 255a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 256a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*/ 257a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS broadcastKey802_1x_recvSuccess(struct _broadcastKey_t *pBroadcastKey, encodedKeyMaterial_t *pEncodedKeyMaterial) 258a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 259a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_STATUS status; 260a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 261a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pBroadcastKey->data.pEncodedKeyMaterial = pEncodedKeyMaterial; 262a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 263a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt status = broadcastKey802_1x_event(pBroadcastKey, BCAST_KEY_802_1X_EVENT_SUCCESS, pBroadcastKey); 264a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 265a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return status; 266a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 267a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 268a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 269a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** 270a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 271a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* broadcastKey802_1x_recvFailure 272a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 273a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b Description: 274a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 275a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* FAILURE event handler 276a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 277a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b ARGS: 278a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 279a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* I - pCtrlB - station control block \n 280a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 281a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b RETURNS: 282a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 283a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* TI_OK on success, TI_NOK otherwise. 284a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 285a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*/ 286a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS broadcastKey802_1x_recvFailure(struct _broadcastKey_t *pBroadcastKey) 287a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 288a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_STATUS status; 289a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 290a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt status = broadcastKey802_1x_event(pBroadcastKey, BCAST_KEY_802_1X_EVENT_FAILURE, pBroadcastKey); 291a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 292a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return status; 293a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 294a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 295a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 296a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** 297a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 298a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* broadcastKey802_1x_distribute 299a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 300a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b Description: 301a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 302a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Distribute broadcast key material to the driver and report the main key SM on broadcast complete. 303a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 304a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b ARGS: 305a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 306a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* I - pData - Encoded key material \n 307a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 308a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b RETURNS: 309a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 310a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* TI_OK on success, TI_NOK otherwise. 311a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*/ 312a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS broadcastKey802_1x_distribute(struct _broadcastKey_t *pBroadcastKey) 313a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 314a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_STATUS status=TI_NOK; 315a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 316a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (pBroadcastKey->pKeyDerive->derive!=NULL) 317a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 318a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt status = pBroadcastKey->pKeyDerive->derive(pBroadcastKey->pKeyDerive, 319a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pBroadcastKey->data.pEncodedKeyMaterial); 320a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 321a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (status != TI_OK) 322a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 323a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_NOK; 324a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 325a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 326a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (pBroadcastKey->pParent->reportBcastStatus!=NULL) 327a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 328a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt status = pBroadcastKey->pParent->reportBcastStatus(pBroadcastKey->pParent, TI_OK); 329a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 330a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 331a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt mainKeys_reAuth(pBroadcastKey->pParent); 332a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 333a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return status; 334a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 335a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 336