1a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*
2a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * unicastKeySM.h
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 unicastKeySM.h
35a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *  \brief station unicast key SM API
36a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
37a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *  \see unicastKeySM.c
38a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */
39a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
40a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/****************************************************************************
41a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                                                                          *
42a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *   MODULE:  station unicast key SM	                                	*
43a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *   PURPOSE: station unicast key SM API		                            *
44a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                                                                          *
45a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/
46a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
47a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#ifndef _UNICAST_KEY_SM_H
48a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#define _UNICAST_KEY_SM_H
49a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
50a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "paramOut.h"
51a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "fsm.h"
52a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "rsnApi.h"
53a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "keyTypes.h"
54a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
55a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "keyDerive.h"
56a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
57a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Constants */
58a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
59a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Enumerations */
60a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
61a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Typedefs */
62a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
63a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidttypedef struct _unicastKey_t    unicastKey_t;
64a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
65a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Main Sec SM functions */
66a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidttypedef TI_STATUS (*unicastKeySmStart_t)(struct _unicastKey_t *pUnicastKey);
67a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidttypedef TI_STATUS (*unicastKeySmStop_t)(struct _unicastKey_t *pUnicastKey);
68a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidttypedef TI_STATUS (*unicastKeySmRecvSuccess_t)(struct _unicastKey_t *pUnicastKey, encodedKeyMaterial_t *pEncodedKeyMaterial);
69a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidttypedef TI_STATUS (*unicastKeySmRecvFailure_t)(struct _unicastKey_t *pUnicastKey);
70a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
71a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Structures */
72a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
73a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* State machine associated data structures. */
74a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidttypedef struct
75a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
76a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	encodedKeyMaterial_t    *pEncodedKeyMaterial;
77a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} unicastKeyData_t;
78a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
79a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstruct _unicastKey_t
80a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
81a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_UINT8                               currentState;
82a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	fsm_stateMachine_t	                *pUcastKeySm;
83a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    unicastKeyData_t					data;
84a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
85a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    struct _mainKeys_t                 	*pParent;
86a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	keyDerive_t							*pKeyDerive;
87a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
88a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_HANDLE			                hReport;
89a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_HANDLE			                hOs;
90a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
91a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    unicastKeySmStart_t               	start;
92a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    unicastKeySmStop_t                	stop;
93a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    unicastKeySmRecvSuccess_t			recvSuccess;
94a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    unicastKeySmRecvFailure_t			recvFailure;
95a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt};
96a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
97a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* External data definitions */
98a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
99a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* External functions definitions */
100a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
101a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Function prototypes */
102a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
103a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtunicastKey_t* unicastKey_create(TI_HANDLE hOs);
104a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
105a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS unicastKey_unload(unicastKey_t *punicastKey);
106a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
107a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS unicastKey_config(struct _unicastKey_t *pUnicastKey,
108a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt						   TRsnPaeConfig *pPaeConfig,
109a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt						   struct _mainKeys_t *pParent,
110a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt						   TI_HANDLE hReport,
111a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt						   TI_HANDLE hOs);
112a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
113a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS unicastKeySmUnexpected(struct _unicastKey_t *pUnicastKey);
114a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
115a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS unicastKeySmNop(struct _unicastKey_t *pUnicastKey);
116a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
117a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#endif /*  _UNICAST_KEY_SM_H*/
118