Mistake on this page? Email us
smp_defs.h File Reference

Security manager constants and definitions from the Bluetooth specification. More...

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.


#define SMP_HDR_LEN   1
 PDU format. More...
#define SMP_TIMEOUT   30
 Protocol timeout. More...
#define SMP_OOB_LEN   16
 OOB Data length in bytes.
#define SMP_PIN_LEN   3
 Passkey Pin lenght in bytes.
SMP Encryption Key Size
#define SMP_KEY_SIZE_MAX   16
 Maximum encryption key size.
#define SMP_KEY_SIZE_MIN   7
 Minimum encryption key size.
SMP Error Codes

SMP PDU status codes

#define SMP_ERR_PASSKEY_ENTRY   0x01
 User input of passkey failed.
#define SMP_ERR_OOB   0x02
 OOB data is not available.
#define SMP_ERR_AUTH_REQ   0x03
 Authentication requirements cannot be met.
#define SMP_ERR_CONFIRM_VALUE   0x04
 Confirm value does not match.
#define SMP_ERR_PAIRING_NOT_SUP   0x05
 Pairing is not supported by the device.
#define SMP_ERR_ENC_KEY_SIZE   0x06
 Insufficient encryption key size.
#define SMP_ERR_COMMAND_NOT_SUP   0x07
 Command not supported.
#define SMP_ERR_UNSPECIFIED   0x08
 Unspecified reason.
#define SMP_ERR_ATTEMPTS   0x09
 Repeated attempts.
 Invalid parameter or command length.
#define SMP_ERR_DH_KEY_CHECK   0x0B
 DH Key check did not match.
 Numeric comparison did not match.
 BR/EDR in progress.
 BR/EDR cross transport key generation not allowed.
Proprietary Error Codes

Internal error codes not sent in any SMP PDU.

#define SMP_ERR_MEMORY   0xE0
 Out of memory.
#define SMP_ERR_TIMEOUT   0xE1
 Transaction timeout.

SMP PDU Code describing command received or sent.

#define SMP_CMD_PAIR_REQ   0x01
 Pairing request.
#define SMP_CMD_PAIR_RSP   0x02
 Pairing response.
#define SMP_CMD_PAIR_CNF   0x03
 Pairing confirm.
#define SMP_CMD_PAIR_RAND   0x04
 Pairing random.
#define SMP_CMD_PAIR_FAIL   0x05
 Pairing failed.
#define SMP_CMD_ENC_INFO   0x06
 Encryption information.
#define SMP_CMD_MASTER_ID   0x07
 Master identification.
#define SMP_CMD_ID_INFO   0x08
 Identity information.
#define SMP_CMD_ID_ADDR_INFO   0x09
 Identity address information.
#define SMP_CMD_SIGN_INFO   0x0A
 Signing information.
 Security fequest.
#define SMP_CMD_PUBLIC_KEY   0x0C
 Public Kkey.
#define SMP_CMD_DHKEY_CHECK   0x0D
 DH Key check.
#define SMP_CMD_KEYPRESS   0x0E
 User key press.
#define SMP_CMD_MAX   0x0F
 Command code maximum.
SMP PDU Packet Lengths

Fixed length of the PDU to be sent.

#define SMP_PAIR_REQ_LEN   7
 Pairing request message length.
#define SMP_PAIR_RSP_LEN   7
 Pairing response message length.
#define SMP_PAIR_CNF_LEN   17
 Pairing confirmation message length.
#define SMP_PAIR_RAND_LEN   17
 Pairing random message length.
#define SMP_PAIR_FAIL_LEN   2
 Pairing fail message length.
#define SMP_ENC_INFO_LEN   17
 Encryption information message length.
#define SMP_MASTER_ID_LEN   11
 Master identification messagelength.
#define SMP_ID_INFO_LEN   17
 Identity information message length.
#define SMP_ID_ADDR_INFO_LEN   8
 Identity address information message length.
#define SMP_SIGN_INFO_LEN   17
 Signing information message length.
 Security request message length.
 Public key message length.
 Diffie-Hellman key check message length.
 Keypress message length.
SMP I/O Capabilities

I/O capabilities codes to be set for SMP_CMD_PAIR_REQ and SMP_CMD_PAIR_RSP

#define SMP_IO_DISP_ONLY   0x00
 Display only.
#define SMP_IO_DISP_YES_NO   0x01
 Display yes/no.
#define SMP_IO_KEY_ONLY   0x02
 Keyboard only.
#define SMP_IO_NO_IN_NO_OUT   0x03
 No input, no output.
#define SMP_IO_KEY_DISP   0x04
 Keyboard display.
SMP OOB Data Flag

Out-of-Band codes to be set for SMP_CMD_PAIR_REQ and SMP_CMD_PAIR_RSP

#define SMP_OOB_DATA_NONE   0x00
 No OOB data from the remote device is present.
#define SMP_OOB_DATA_PRESENT   0x01
 OOB data from the remote device is present.
SMP Authentication Requirements Flags

Authentication Requirements Flags to be set for SMP_CMD_PAIR_REQ and SMP_CMD_PAIR_RSP.

#define SMP_AUTH_BOND_MASK   0x03
 Mask for bonding bits.
#define SMP_AUTH_BOND_FLAG   0x01
 Bonding requested.
#define SMP_AUTH_MITM_FLAG   0x04
 MITM (authenticated pairing) requested.
#define SMP_AUTH_SC_FLAG   0x08
 LE Secure Connections requested.
#define SMP_AUTH_KP_FLAG   0x10
 Keypress notifications requested.
SMP Key Distribution Flags

Flags of security keys this device is requesting to be distribution once pairing completes.

#define SMP_KEY_DIST_ENC   0x01
 Distribute LTK.
#define SMP_KEY_DIST_ID   0x02
 Distribute IRK.
#define SMP_KEY_DIST_SIGN   0x04
 Distribute CSRK.
 Key distribution mask.
SMP LE Secure Connection Keypress Codes

Keypress codes found in SMP_CMD_KEYPRESS PDU to be sent on the respective action when the SMP_AUTH_KP_FLAG is set in both the SMP_CMD_PAIR_REQ and SMP_CMD_PAIR_RSP.

 Passkey entry started keypress type.
 Passkey digit entered keypress type.
 Passkey digit erased keypress type.
#define SMP_PASSKEY_CLEARED   0x03
 Passkey cleared keypress type.
 Passkey entry complete keypress type.
SMP Value Length Constants

Lengths of various keys and values.

#define SMP_RAND_LEN   16
 Random number length.
#define SMP_CONFIRM_LEN   16
 Confirm number length.
#define SMP_KEY_LEN   16
 Key length.
#define SMP_RAND8_LEN   8
 Random 8-byte number length.
#define SMP_PRIVATE_KEY_LEN   32
 Secure connections private key length.
#define SMP_PUB_KEY_LEN   32
 Secure connecdtions public key length.
#define SMP_DHKEY_LEN   32
 Secure connection Diffie-Hellman key length.
#define SMP_DHKEY_CHECK_LEN   16
 Secure connection Diffie-Hellman key check length.
CMAC Input Lengths Constants

Input lengths of SMP cryptopgraphic toolbox functions.

#define SMP_F4_TEXT_LEN   (SMP_PUB_KEY_LEN * 2 + 1)
 F4 input length.
 G2 input length.
 F5 Temporary key input length.
#define SMP_F5_TEXT_LEN   (9 + 2*BDA_ADDR_LEN + 2*SMP_RAND_LEN)
 F5 input length.
#define SMP_F6_TEXT_LEN   (2*BDA_ADDR_LEN + 3*SMP_RAND_LEN + 5)
 F6 input length.

Detailed Description

Security manager constants and definitions from the Bluetooth specification.

Copyright (c) 2010-2018 Arm Ltd. All Rights Reserved. Arm Ltd. confidential and proprietary.

IMPORTANT. Your use of this file is governed by a Software License Agreement ("Agreement") that must be accepted in order to download or otherwise receive a copy of this file. You may not use or copy this file for any purpose other than as described in the Agreement. If you do not agree to all of the terms of the Agreement do not use this file and delete all copies in your possession or control; if you do not have a copy of the Agreement, you must contact Arm Ltd. prior to any use, copying or further distribution of this software.

Definition in file smp_defs.h.

Important Information for this Arm website

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies. If you are not happy with the use of these cookies, please review our Cookie Policy to learn how they can be disabled. By disabling cookies, some features of the site will not work.