The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Wed Feb 20 20:53:29 2019 +0000
Revision:
172:65be27845400
Parent:
171:3a7713b1edbc
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 171:3a7713b1edbc 1 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 2 /*!
AnnaBridge 171:3a7713b1edbc 3 * \file wsf_sec_int.h
AnnaBridge 171:3a7713b1edbc 4 *
AnnaBridge 171:3a7713b1edbc 5 * \brief Internal security service structures.
AnnaBridge 171:3a7713b1edbc 6 *
AnnaBridge 171:3a7713b1edbc 7 * $Date: 2015-12-10 09:40:54 -0800 (Thu, 10 Dec 2015) $
AnnaBridge 171:3a7713b1edbc 8 * $Revision: 4754 $
AnnaBridge 171:3a7713b1edbc 9 *
AnnaBridge 171:3a7713b1edbc 10 * Copyright (c) 2010 Wicentric, Inc., all rights reserved.
AnnaBridge 171:3a7713b1edbc 11 * Wicentric confidential and proprietary.
AnnaBridge 171:3a7713b1edbc 12 *
AnnaBridge 171:3a7713b1edbc 13 * IMPORTANT. Your use of this file is governed by a Software License Agreement
AnnaBridge 171:3a7713b1edbc 14 * ("Agreement") that must be accepted in order to download or otherwise receive a
AnnaBridge 171:3a7713b1edbc 15 * copy of this file. You may not use or copy this file for any purpose other than
AnnaBridge 171:3a7713b1edbc 16 * as described in the Agreement. If you do not agree to all of the terms of the
AnnaBridge 171:3a7713b1edbc 17 * Agreement do not use this file and delete all copies in your possession or control;
AnnaBridge 171:3a7713b1edbc 18 * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior
AnnaBridge 171:3a7713b1edbc 19 * to any use, copying or further distribution of this software.
AnnaBridge 171:3a7713b1edbc 20 */
AnnaBridge 171:3a7713b1edbc 21 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 22 #ifndef WSF_SEC_INT_H
AnnaBridge 171:3a7713b1edbc 23 #define WSF_SEC_INT_H
AnnaBridge 171:3a7713b1edbc 24
AnnaBridge 171:3a7713b1edbc 25 #include "hci_api.h"
AnnaBridge 171:3a7713b1edbc 26
AnnaBridge 171:3a7713b1edbc 27 #ifdef __cplusplus
AnnaBridge 171:3a7713b1edbc 28 extern "C" {
AnnaBridge 171:3a7713b1edbc 29 #endif
AnnaBridge 171:3a7713b1edbc 30
AnnaBridge 171:3a7713b1edbc 31 /**************************************************************************************************
AnnaBridge 171:3a7713b1edbc 32 Macros
AnnaBridge 171:3a7713b1edbc 33 **************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 34
AnnaBridge 171:3a7713b1edbc 35
AnnaBridge 171:3a7713b1edbc 36 /*! AES, CMAC and HCI algorithm block length */
AnnaBridge 171:3a7713b1edbc 37 #define WSF_SEC_BLOCK_LEN 16
AnnaBridge 171:3a7713b1edbc 38
AnnaBridge 171:3a7713b1edbc 39 /* CMAC constant Rb */
AnnaBridge 171:3a7713b1edbc 40 #define WSF_SEC_CMAC_RB 0x87
AnnaBridge 171:3a7713b1edbc 41
AnnaBridge 171:3a7713b1edbc 42 /*! Multiple of HCI_RAND_LEN to keep in the wsfSecCb_t rand data buffer */
AnnaBridge 171:3a7713b1edbc 43 #define WSF_HCI_RAND_MULT (32 / HCI_RAND_LEN)
AnnaBridge 171:3a7713b1edbc 44
AnnaBridge 171:3a7713b1edbc 45 /*! Compile time ECC configuration */
AnnaBridge 171:3a7713b1edbc 46 #define WSF_SEC_ECC_CFG_DEBUG 0
AnnaBridge 171:3a7713b1edbc 47 #define WSF_SEC_ECC_CFG_UECC 1
AnnaBridge 171:3a7713b1edbc 48 #define WSF_SEC_ECC_CFG_HCI 2
AnnaBridge 171:3a7713b1edbc 49
AnnaBridge 171:3a7713b1edbc 50 /**************************************************************************************************
AnnaBridge 171:3a7713b1edbc 51 Data Types
AnnaBridge 171:3a7713b1edbc 52 **************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 53
AnnaBridge 171:3a7713b1edbc 54 /*! Enumeration of security operation types */
AnnaBridge 171:3a7713b1edbc 55 enum
AnnaBridge 171:3a7713b1edbc 56 {
AnnaBridge 171:3a7713b1edbc 57 WSF_SEC_TYPE_AES,
AnnaBridge 171:3a7713b1edbc 58 WSF_SEC_TYPE_CMAC,
AnnaBridge 171:3a7713b1edbc 59 WSF_SEC_TYPE_DH,
AnnaBridge 171:3a7713b1edbc 60 WSF_SEC_NUM_TYPES
AnnaBridge 171:3a7713b1edbc 61 };
AnnaBridge 171:3a7713b1edbc 62
AnnaBridge 171:3a7713b1edbc 63 /*! Security queue element for CMAC operations */
AnnaBridge 171:3a7713b1edbc 64 typedef struct
AnnaBridge 171:3a7713b1edbc 65 {
AnnaBridge 171:3a7713b1edbc 66 uint8_t *pPlainText;
AnnaBridge 171:3a7713b1edbc 67 uint8_t key[WSF_CMAC_KEY_LEN];
AnnaBridge 171:3a7713b1edbc 68 uint8_t subkey[WSF_CMAC_KEY_LEN];
AnnaBridge 171:3a7713b1edbc 69 uint16_t position;
AnnaBridge 171:3a7713b1edbc 70 uint16_t len;
AnnaBridge 171:3a7713b1edbc 71 wsfHandlerId_t handlerId;
AnnaBridge 171:3a7713b1edbc 72 uint8_t state;
AnnaBridge 171:3a7713b1edbc 73 } wsfSecCmacSecCb_t;
AnnaBridge 171:3a7713b1edbc 74
AnnaBridge 171:3a7713b1edbc 75 /*! Security queue element */
AnnaBridge 171:3a7713b1edbc 76 typedef struct
AnnaBridge 171:3a7713b1edbc 77 {
AnnaBridge 171:3a7713b1edbc 78 wsfSecMsg_t msg;
AnnaBridge 171:3a7713b1edbc 79 uint8_t ciphertext[WSF_SEC_BLOCK_LEN];
AnnaBridge 171:3a7713b1edbc 80 uint8_t reserved[WSF_SEC_BLOCK_LEN];
AnnaBridge 171:3a7713b1edbc 81 void *pCb;
AnnaBridge 171:3a7713b1edbc 82 uint8_t type;
AnnaBridge 171:3a7713b1edbc 83 } wsfSecQueueBuf_t;
AnnaBridge 171:3a7713b1edbc 84
AnnaBridge 171:3a7713b1edbc 85 typedef void wsfSecHciCback_t(wsfSecQueueBuf_t *pBuf, hciEvt_t *pEvent, wsfHandlerId_t handlerId);
AnnaBridge 171:3a7713b1edbc 86 typedef wsfSecHciCback_t *pWsfSecHciCback_t;
AnnaBridge 171:3a7713b1edbc 87
AnnaBridge 171:3a7713b1edbc 88 /* Control block */
AnnaBridge 171:3a7713b1edbc 89 typedef struct
AnnaBridge 171:3a7713b1edbc 90 {
AnnaBridge 171:3a7713b1edbc 91 uint8_t rand[HCI_RAND_LEN*WSF_HCI_RAND_MULT]; /* Random data buffer */
AnnaBridge 171:3a7713b1edbc 92 wsfQueue_t queue; /* Queue for AES requests */
AnnaBridge 171:3a7713b1edbc 93 uint8_t token; /* Token value */
AnnaBridge 171:3a7713b1edbc 94 pWsfSecHciCback_t hciCbackTbl[WSF_SEC_NUM_TYPES];
AnnaBridge 171:3a7713b1edbc 95 } wsfSecCb_t;
AnnaBridge 171:3a7713b1edbc 96
AnnaBridge 171:3a7713b1edbc 97 /**************************************************************************************************
AnnaBridge 171:3a7713b1edbc 98 Function Declarations
AnnaBridge 171:3a7713b1edbc 99 **************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 100
AnnaBridge 171:3a7713b1edbc 101 #ifdef __cplusplus
AnnaBridge 171:3a7713b1edbc 102 };
AnnaBridge 171:3a7713b1edbc 103 #endif
AnnaBridge 171:3a7713b1edbc 104
AnnaBridge 171:3a7713b1edbc 105 #endif /* WSF_SEC_H */