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:
Thu Nov 08 11:45:42 2018 +0000
Revision:
171:3a7713b1edbc
mbed library. Release version 164

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 171:3a7713b1edbc 1 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 2 /*!
AnnaBridge 171:3a7713b1edbc 3 * \file smp_defs.h
AnnaBridge 171:3a7713b1edbc 4 *
AnnaBridge 171:3a7713b1edbc 5 * \brief Security manager constants and definitions from the Bluetooth specification.
AnnaBridge 171:3a7713b1edbc 6 *
AnnaBridge 171:3a7713b1edbc 7 * $Date: 2015-10-15 10:06:43 -0700 (Thu, 15 Oct 2015) $
AnnaBridge 171:3a7713b1edbc 8 * $Revision: 4216 $
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 SMP_DEFS_H
AnnaBridge 171:3a7713b1edbc 23 #define SMP_DEFS_H
AnnaBridge 171:3a7713b1edbc 24
AnnaBridge 171:3a7713b1edbc 25 #ifdef __cplusplus
AnnaBridge 171:3a7713b1edbc 26 extern "C" {
AnnaBridge 171:3a7713b1edbc 27 #endif
AnnaBridge 171:3a7713b1edbc 28
AnnaBridge 171:3a7713b1edbc 29 /**************************************************************************************************
AnnaBridge 171:3a7713b1edbc 30 Macros
AnnaBridge 171:3a7713b1edbc 31 **************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 32
AnnaBridge 171:3a7713b1edbc 33 /*! PDU format */
AnnaBridge 171:3a7713b1edbc 34 #define SMP_HDR_LEN 1 /*! Attribute PDU header length */
AnnaBridge 171:3a7713b1edbc 35
AnnaBridge 171:3a7713b1edbc 36 /*! Protocol timeout */
AnnaBridge 171:3a7713b1edbc 37 #define SMP_TIMEOUT 30 /*! Protocol timeout in seconds */
AnnaBridge 171:3a7713b1edbc 38
AnnaBridge 171:3a7713b1edbc 39 /*! Encryption key size */
AnnaBridge 171:3a7713b1edbc 40 #define SMP_KEY_SIZE_MAX 16 /*! Maximum encryption key size */
AnnaBridge 171:3a7713b1edbc 41 #define SMP_KEY_SIZE_MIN 7 /*! Minimum encryption key size */
AnnaBridge 171:3a7713b1edbc 42
AnnaBridge 171:3a7713b1edbc 43 /*! OOB and PIN data lengths in bytes */
AnnaBridge 171:3a7713b1edbc 44 #define SMP_OOB_LEN 16
AnnaBridge 171:3a7713b1edbc 45 #define SMP_PIN_LEN 3
AnnaBridge 171:3a7713b1edbc 46
AnnaBridge 171:3a7713b1edbc 47 /*! Error codes */
AnnaBridge 171:3a7713b1edbc 48 #define SMP_ERR_PASSKEY_ENTRY 0x01 /*! User input of passkey failed */
AnnaBridge 171:3a7713b1edbc 49 #define SMP_ERR_OOB 0x02 /*! OOB data is not available */
AnnaBridge 171:3a7713b1edbc 50 #define SMP_ERR_AUTH_REQ 0x03 /*! Authentication requirements cannot be met */
AnnaBridge 171:3a7713b1edbc 51 #define SMP_ERR_CONFIRM_VALUE 0x04 /*! Confirm value does not match */
AnnaBridge 171:3a7713b1edbc 52 #define SMP_ERR_PAIRING_NOT_SUP 0x05 /*! Pairing is not supported by the device */
AnnaBridge 171:3a7713b1edbc 53 #define SMP_ERR_ENC_KEY_SIZE 0x06 /*! Insufficient encryption key size */
AnnaBridge 171:3a7713b1edbc 54 #define SMP_ERR_COMMAND_NOT_SUP 0x07 /*! Command not supported */
AnnaBridge 171:3a7713b1edbc 55 #define SMP_ERR_UNSPECIFIED 0x08 /*! Unspecified reason */
AnnaBridge 171:3a7713b1edbc 56 #define SMP_ERR_ATTEMPTS 0x09 /*! Repeated attempts */
AnnaBridge 171:3a7713b1edbc 57 #define SMP_ERR_INVALID_PARAM 0x0A /*! Invalid parameter or command length */
AnnaBridge 171:3a7713b1edbc 58 #define SMP_ERR_DH_KEY_CHECK 0x0B /*! DH Key check did not match */
AnnaBridge 171:3a7713b1edbc 59 #define SMP_ERR_NUMERIC_COMPARISON 0x0C /*! Numeric comparison did not match */
AnnaBridge 171:3a7713b1edbc 60 #define SMP_ERR_BR_EDR_IN_PROGRESS 0x0D /*! BR/EDR in progress */
AnnaBridge 171:3a7713b1edbc 61 #define SMP_ERR_CROSS_TRANSPORT 0x0E /*! BR/EDR Cross transport key generation not allowed */
AnnaBridge 171:3a7713b1edbc 62
AnnaBridge 171:3a7713b1edbc 63 /*! Proprietary internal error codes */
AnnaBridge 171:3a7713b1edbc 64 #define SMP_ERR_MEMORY 0xE0 /*! Out of memory */
AnnaBridge 171:3a7713b1edbc 65 #define SMP_ERR_TIMEOUT 0xE1 /*! Transaction timeout */
AnnaBridge 171:3a7713b1edbc 66
AnnaBridge 171:3a7713b1edbc 67 /*! Command codes */
AnnaBridge 171:3a7713b1edbc 68 #define SMP_CMD_PAIR_REQ 0x01 /*! Pairing Request */
AnnaBridge 171:3a7713b1edbc 69 #define SMP_CMD_PAIR_RSP 0x02 /*! Pairing Response */
AnnaBridge 171:3a7713b1edbc 70 #define SMP_CMD_PAIR_CNF 0x03 /*! Pairing Confirm */
AnnaBridge 171:3a7713b1edbc 71 #define SMP_CMD_PAIR_RAND 0x04 /*! Pairing Random */
AnnaBridge 171:3a7713b1edbc 72 #define SMP_CMD_PAIR_FAIL 0x05 /*! Pairing Failed */
AnnaBridge 171:3a7713b1edbc 73 #define SMP_CMD_ENC_INFO 0x06 /*! Encryption Information */
AnnaBridge 171:3a7713b1edbc 74 #define SMP_CMD_MASTER_ID 0x07 /*! Master Identification */
AnnaBridge 171:3a7713b1edbc 75 #define SMP_CMD_ID_INFO 0x08 /*! Identity Information */
AnnaBridge 171:3a7713b1edbc 76 #define SMP_CMD_ID_ADDR_INFO 0x09 /*! Identity Address Information */
AnnaBridge 171:3a7713b1edbc 77 #define SMP_CMD_SIGN_INFO 0x0A /*! Signing Information */
AnnaBridge 171:3a7713b1edbc 78 #define SMP_CMD_SECURITY_REQ 0x0B /*! Security Request */
AnnaBridge 171:3a7713b1edbc 79 #define SMP_CMD_PUBLIC_KEY 0x0C /*! Public Key */
AnnaBridge 171:3a7713b1edbc 80 #define SMP_CMD_DHKEY_CHECK 0x0D /*! DH Key Check */
AnnaBridge 171:3a7713b1edbc 81 #define SMP_CMD_KEYPRESS 0x0E /*! User Key Press */
AnnaBridge 171:3a7713b1edbc 82 #define SMP_CMD_MAX 0x0F /*! Command code maximum */
AnnaBridge 171:3a7713b1edbc 83
AnnaBridge 171:3a7713b1edbc 84 /*! Command packet lengths */
AnnaBridge 171:3a7713b1edbc 85 #define SMP_PAIR_REQ_LEN 7
AnnaBridge 171:3a7713b1edbc 86 #define SMP_PAIR_RSP_LEN 7
AnnaBridge 171:3a7713b1edbc 87 #define SMP_PAIR_CNF_LEN 17
AnnaBridge 171:3a7713b1edbc 88 #define SMP_PAIR_RAND_LEN 17
AnnaBridge 171:3a7713b1edbc 89 #define SMP_PAIR_FAIL_LEN 2
AnnaBridge 171:3a7713b1edbc 90 #define SMP_ENC_INFO_LEN 17
AnnaBridge 171:3a7713b1edbc 91 #define SMP_MASTER_ID_LEN 11
AnnaBridge 171:3a7713b1edbc 92 #define SMP_ID_INFO_LEN 17
AnnaBridge 171:3a7713b1edbc 93 #define SMP_ID_ADDR_INFO_LEN 8
AnnaBridge 171:3a7713b1edbc 94 #define SMP_SIGN_INFO_LEN 17
AnnaBridge 171:3a7713b1edbc 95 #define SMP_SECURITY_REQ_LEN 2
AnnaBridge 171:3a7713b1edbc 96 #define SMP_PUB_KEY_MSG_LEN (1 + 2*SMP_PUB_KEY_LEN)
AnnaBridge 171:3a7713b1edbc 97 #define SMP_DHKEY_CHECK_MSG_LEN (1 + SMP_DHKEY_CHECK_LEN)
AnnaBridge 171:3a7713b1edbc 98 #define SMP_KEYPRESS_MSG_LEN 2
AnnaBridge 171:3a7713b1edbc 99
AnnaBridge 171:3a7713b1edbc 100 /*! I/O capabilities */
AnnaBridge 171:3a7713b1edbc 101 #define SMP_IO_DISP_ONLY 0x00 /*! DisplayOnly */
AnnaBridge 171:3a7713b1edbc 102 #define SMP_IO_DISP_YES_NO 0x01 /*! DisplayYesNo */
AnnaBridge 171:3a7713b1edbc 103 #define SMP_IO_KEY_ONLY 0x02 /*! KeyboardOnly */
AnnaBridge 171:3a7713b1edbc 104 #define SMP_IO_NO_IN_NO_OUT 0x03 /*! NoInputNoOutput */
AnnaBridge 171:3a7713b1edbc 105 #define SMP_IO_KEY_DISP 0x04 /*! KeyboardDisplay */
AnnaBridge 171:3a7713b1edbc 106
AnnaBridge 171:3a7713b1edbc 107 /*! OOB data present */
AnnaBridge 171:3a7713b1edbc 108 #define SMP_OOB_DATA_NONE 0x00
AnnaBridge 171:3a7713b1edbc 109 #define SMP_OOB_DATA_PRESENT 0x01
AnnaBridge 171:3a7713b1edbc 110
AnnaBridge 171:3a7713b1edbc 111 /*! Authentication/security properties bit mask */
AnnaBridge 171:3a7713b1edbc 112 #define SMP_AUTH_BOND_MASK 0x03 /*! Mask for bonding bits */
AnnaBridge 171:3a7713b1edbc 113 #define SMP_AUTH_BOND_FLAG 0x01 /*! Bonding requested */
AnnaBridge 171:3a7713b1edbc 114 #define SMP_AUTH_MITM_FLAG 0x04 /*! MITM (authenticated pairing) requested */
AnnaBridge 171:3a7713b1edbc 115 #define SMP_AUTH_SC_FLAG 0x08 /*! LE Secure Connections requested */
AnnaBridge 171:3a7713b1edbc 116 #define SMP_AUTH_KP_FLAG 0x10 /*! Keypress notifications requested */
AnnaBridge 171:3a7713b1edbc 117
AnnaBridge 171:3a7713b1edbc 118 /*! Key distribution bit mask */
AnnaBridge 171:3a7713b1edbc 119 #define SMP_KEY_DIST_ENC 0x01 /*! Distribute LTK */
AnnaBridge 171:3a7713b1edbc 120 #define SMP_KEY_DIST_ID 0x02 /*! Distribute IRK */
AnnaBridge 171:3a7713b1edbc 121 #define SMP_KEY_DIST_SIGN 0x04 /*! Distribute CSRK */
AnnaBridge 171:3a7713b1edbc 122 #define SMP_KEY_DIST_MASK (SMP_KEY_DIST_ENC | SMP_KEY_DIST_ID | SMP_KEY_DIST_SIGN)
AnnaBridge 171:3a7713b1edbc 123
AnnaBridge 171:3a7713b1edbc 124 /*! LESC Passkey keypress types */
AnnaBridge 171:3a7713b1edbc 125 #define SMP_PASSKEY_ENTRY_STARTED 0x00 /*! Passkey entry started keypress type */
AnnaBridge 171:3a7713b1edbc 126 #define SMP_PASSKEY_DIGIT_ENTERED 0x01 /*! Passkey digit entered keypress type */
AnnaBridge 171:3a7713b1edbc 127 #define SMP_PASSKEY_DIGIT_ERASED 0x02 /*! Passkey digit erased keypress type */
AnnaBridge 171:3a7713b1edbc 128 #define SMP_PASSKEY_CLEARED 0x03 /*! Passkey cleared keypress type */
AnnaBridge 171:3a7713b1edbc 129 #define SMP_PASSKEY_ENTRY_COMPLETED 0x04 /*! Passkey entry complete keypress type */
AnnaBridge 171:3a7713b1edbc 130
AnnaBridge 171:3a7713b1edbc 131 /*! Various parameter lengths */
AnnaBridge 171:3a7713b1edbc 132 #define SMP_RAND_LEN 16
AnnaBridge 171:3a7713b1edbc 133 #define SMP_CONFIRM_LEN 16
AnnaBridge 171:3a7713b1edbc 134 #define SMP_KEY_LEN 16
AnnaBridge 171:3a7713b1edbc 135 #define SMP_RAND8_LEN 8
AnnaBridge 171:3a7713b1edbc 136 #define SMP_PRIVATE_KEY_LEN 32
AnnaBridge 171:3a7713b1edbc 137 #define SMP_PUB_KEY_LEN 32
AnnaBridge 171:3a7713b1edbc 138 #define SMP_DHKEY_LEN 32
AnnaBridge 171:3a7713b1edbc 139 #define SMP_DHKEY_CHECK_LEN 16
AnnaBridge 171:3a7713b1edbc 140
AnnaBridge 171:3a7713b1edbc 141 /* CMAC Input Lengths */
AnnaBridge 171:3a7713b1edbc 142 #define SMP_F4_TEXT_LEN (SMP_PUB_KEY_LEN * 2 + 1)
AnnaBridge 171:3a7713b1edbc 143 #define SMP_G2_TEXT_LEN (SMP_PUB_KEY_LEN * 2 + SMP_RAND_LEN)
AnnaBridge 171:3a7713b1edbc 144 #define SMP_F5_TKEY_TEXT_LEN (SMP_DHKEY_LEN)
AnnaBridge 171:3a7713b1edbc 145 #define SMP_F5_TEXT_LEN (9 + 2*BDA_ADDR_LEN + 2*SMP_RAND_LEN)
AnnaBridge 171:3a7713b1edbc 146 #define SMP_F6_TEXT_LEN (2*BDA_ADDR_LEN + 3*SMP_RAND_LEN + 5)
AnnaBridge 171:3a7713b1edbc 147
AnnaBridge 171:3a7713b1edbc 148 #ifdef __cplusplus
AnnaBridge 171:3a7713b1edbc 149 };
AnnaBridge 171:3a7713b1edbc 150 #endif
AnnaBridge 171:3a7713b1edbc 151
AnnaBridge 171:3a7713b1edbc 152 #endif /* SMP_DEFS_H */