1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/pkg/cryptoauthlib/include/atecc608a_config.h
2024-07-10 14:07:47 +02:00

117 lines
4.0 KiB
C

/*
* Copyright (C) 2024 HAW Hamburg
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @file
* @brief Example configuration for Microchip CryptoAuth devices
*
* This is an example configuration for an ATECC608A device with
* some explanation on what the bits mean (for more details
* see complete datasheet).
*
* @note This configuration works with the example/psa_crypto application.
*
* @warning Parts of this config are insecure (e.g. some key slots can be
* written to repeatedly), so it should only be used for
* testing and development. If you want to use your device for
* production, please refer to the datasheet and change the bits
* accordingly.
*
* @author Lena Boeckmann <lena.boeckmann@haw-hamburg.de>
*
*/
#ifndef ATECC608A_CONFIG_H
#define ATECC608A_CONFIG_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
/**
* @brief Example device configuration for the atecc608a.
*
*/
const uint8_t atecc608a_config[] = {
0x00, 0x00, 0x00, 0x00, /* Read only serial number */
0x00, 0x00, 0x00, 0x00, /* Read only revision number */
0x00, 0x00, 0x00, 0x00, /* Read only serial number */
0x00, 0x00, 0x00, 0x00, /* Read only reserved, I2C enable, reserved */
0xC0, 0x00, 0x00, 0x00, /* I2C address, reserved, CountMatch, chip mode*/
/* Private keys:
0x8720 = 1 0 0 0 | 0 1 1 1 | 0 0 1 0 | 0 0 0 0
7 - 4 | 3 - 0 | 15 - 12 | 11 - 8
- External signatures of arbitrary messages enabled
- Internal signatures of messages by GenDig/GenKey enabled
- ECDH operations permitted
- ECDH Master Secret will be output in the clear
- No write by write command */
0x87, 0x20, 0x87, 0x20, /* Slot 0, Slot 1 */
0x87, 0x20, 0x87, 0x20, /* Slot 2, Slot 3 */
/* Private Keys, write always allowed (use only for testing!!!)*/
0x87, 0x00, 0x87, 0x00,
/* Private key:
- as above but
- ECDH Master Secret will be written into slot n + 1 (7)*/
0x8F, 0x20, 0x87, 0x20, /* Slot 6, Slot 7 */
/* Data storage and public keys, anything goes */
0x00, 0x00, 0x00, 0x00, /* Slot 8, Slot 9 */
0x00, 0x00, 0x00, 0x00, /* Slot 10, Slot 11 */
0x00, 0x00, 0x00, 0x00, /* Slot 12, Slot 13 */
0x00, 0x00, 0x00, 0x00, /* Slot 14, Slot 15 */
0xFF, 0xFF, 0xFF, 0xFF, /* Counter 0 */
0x00, 0x00, 0x00, 0x00, /* Counter 0 */
0xFF, 0xFF, 0xFF, 0xFF, /* Counter 1 */
0x00, 0x00, 0x00, 0x00, /* Counter 1 */
0x00, 0x00, 0x00, 0x00, /* UseLock, VolatileKeyPermission, Secure Boot */
0x00, 0x00, 0x00, 0x00, /* KdflvLoc, KdflvStr, KdflcStr, Reserved */
0x00, 0x00, 0x00, 0x00, /* Reserved */
0x00, 0x00, 0x00, 0x00, /* Reserved */
0x00, 0x00, 0x55, 0x55, /* UserExtra, UserExtraAdd, LockValue, LockConfig */
0xFF, 0xFF, 0x00, 0x00, /* 2x SlotLocked, 2x ChipOptions */
0x00, 0x00, 0x00, 0x00, /* X509format */
/* Private Key, access only with Sign, GenKey, PrivWrite cmds
Public Version can always be generated
Slots are individually lockable with Lock command */
0x13, 0x00, 0x13, 0x00, /* KeyConfig 0, KeyConfig 1 */
0x13, 0x00, 0x13, 0x00, /* KeyConfig 2, KeyConfig 3 */
/* AES Key */
0x18, 0x00, 0x18, 0x00, /* KeyConfig 4, KeyConfig 5 -> not usable as AES keys! */
/* Private Key
- Used for ECDH
- Slot 7 will contain corresponding Master Secret */
0x13, 0x00, 0x1F, 0x00, /* KeyConfig 6, KeyConfig 7 */
/* SHA Key or other data */
0x1C, 0x00, /* KeyConfig 8 */
/* ECC Public Keys */
0x10, 0x00, /* KeyConfig 9 */
0x10, 0x00, 0x10, 0x00, /* KeyConfig 10, KeyConfig 11 */
0x10, 0x00, 0x10, 0x00, /* KeyConfig 12, KeyConfig 13 */
/* SHA Key or other data */
0x1C, 0x00, 0x1C, 0x00 /* KeyConfig 14, KeyConfig 15 */
};
#ifdef __cplusplus
}
#endif
#endif /* ATECC608A_CONFIG_H */