1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
/**
* \file
* \brief CryptoAuthLib Basic API methods for Lock command.
*
* The Lock command prevents future modifications of the Configuration zone,
* enables configured policies for Data and OTP zones, and can render
* individual slots read-only regardless of configuration.
*
* \note List of devices that support this command - ATSHA204A, ATECC108A,
* ATECC508A, ATECC608A. There are differences in the modes that they
* support. Refer to device datasheets for full details.
*
* \copyright (c) 2015-2020 Microchip Technology Inc. and its subsidiaries.
*
* \page License
*
* Subject to your compliance with these terms, you may use Microchip software
* and any derivatives exclusively with Microchip products. It is your
* responsibility to comply with third party license terms applicable to your
* use of third party software (including open source software) that may
* accompany Microchip software.
*
* THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
* EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED
* WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A
* PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT,
* SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE
* OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF
* MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE
* FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL
* LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED
* THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR
* THIS SOFTWARE.
*/
/** \brief The Lock command prevents future modifications of the Configuration
* and/or Data and OTP zones. If the device is so configured, then
* this command can be used to lock individual data slots. This
* command fails if the designated area is already locked.
*
* \param[in] mode Zone, and/or slot, and summary check (bit 7).
* \param[in] summary_crc CRC of the config or data zones. Ignored for
* slot locks or when mode bit 7 is set.
*
* \return ATCA_SUCCESS on success, otherwise an error code.
*/
ATCA_STATUS
/** \brief Unconditionally (no CRC required) lock the config zone.
*
* \return ATCA_SUCCESS on success, otherwise an error code.
*/
ATCA_STATUS
/** \brief Lock the config zone with summary CRC.
*
* The CRC is calculated over the entire config zone contents. 88 bytes for
* ATSHA devices, 128 bytes for ATECC devices. Lock will fail if the provided
* CRC doesn't match the internally calculated one.
*
* \param[in] summary_crc Expected CRC over the config zone.
*
* \return ATCA_SUCCESS on success, otherwise an error code.
*/
ATCA_STATUS
/** \brief Unconditionally (no CRC required) lock the data zone (slots and OTP).
*
* ConfigZone must be locked and DataZone must be unlocked for the zone to be successfully locked.
*
* \return ATCA_SUCCESS on success, otherwise an error code.
*/
ATCA_STATUS
/** \brief Lock the data zone (slots and OTP) with summary CRC.
*
* The CRC is calculated over the concatenated contents of all the slots and
* OTP at the end. Private keys (KeyConfig.Private=1) are skipped. Lock will
* fail if the provided CRC doesn't match the internally calculated one.
*
* \param[in] summary_crc Expected CRC over the data zone.
*
* \return ATCA_SUCCESS on success, otherwise an error code.
*/
ATCA_STATUS
/** \brief Lock an individual slot in the data zone on an ATECC device. Not
* available for ATSHA devices. Slot must be configured to be slot
* lockable (KeyConfig.Lockable=1).
*
* \param[in] slot Slot to be locked in data zone.
*
* \return ATCA_SUCCESS on success, otherwise an error code.
*/
ATCA_STATUS