@@ -23,7 +23,7 @@ This state represents the MAC after it has been allocated.
2323=item initialised
2424
2525This state represents the MAC when it is set up and capable of processing
26- input.
26+ input or generating output .
2727
2828=item updated
2929
@@ -93,17 +93,19 @@ This is the canonical list.
9393=begin man
9494
9595 Function Call --------------------- Current State ----------------------
96- start newed initialised updated finaled freed
96+ start newed initialised updated finaled freed
9797 EVP_MAC_CTX_new newed
98- EVP_MAC_init initialised initialised initialised initialised
99- EVP_MAC_update updated updated
100- EVP_MAC_final finaled
101- EVP_MAC_finalXOF finaled
102- EVP_MAC_CTX_free freed freed freed freed freed
103- EVP_MAC_CTX_get_params newed initialised updated
104- EVP_MAC_CTX_set_params newed initialised updated
105- EVP_MAC_CTX_gettable_params newed initialised updated
106- EVP_MAC_CTX_settable_params newed initialised updated
98+ EVP_MAC_CTX_dup newed initialised updated finaled
99+ EVP_MAC_init initialised initialised initialised initialised
100+ EVP_MAC_init_SKEY initialised initialised initialised initialised
101+ EVP_MAC_update updated updated
102+ EVP_MAC_final finaled finaled
103+ EVP_MAC_finalXOF finaled finaled
104+ EVP_MAC_CTX_free freed freed freed freed freed
105+ EVP_MAC_CTX_get_params newed initialised updated finaled
106+ EVP_MAC_CTX_set_params newed initialised updated finaled
107+ EVP_MAC_CTX_gettable_params newed initialised updated finaled
108+ EVP_MAC_CTX_settable_params newed initialised updated finaled
107109
108110=end man
109111
@@ -126,13 +128,27 @@ This is the canonical list.
126128 <td style="border:1px solid" align="center"></td>
127129 <td style="border:1px solid" align="center"></td>
128130 <td style="border:1px solid" align="center"></td></tr>
131+ <tr><th style="border:1px solid" align="left">EVP_MAC_CTX_dup</th>
132+ <td style="border:1px solid" align="center"></td>
133+ <td style="border:1px solid" align="center">newed</td>
134+ <td style="border:1px solid" align="center">initialised</td>
135+ <td style="border:1px solid" align="center">updated</td>
136+ <td style="border:1px solid" align="center">finaled</td>
137+ <td style="border:1px solid" align="center"></td></tr>
129138<tr><th style="border:1px solid" align="left">EVP_MAC_init</th>
130139 <td style="border:1px solid" align="center"></td>
131140 <td style="border:1px solid" align="center">initialised</td>
132141 <td style="border:1px solid" align="center">initialised</td>
133142 <td style="border:1px solid" align="center">initialised</td>
134143 <td style="border:1px solid" align="center">initialised</td>
135144 <td style="border:1px solid" align="center"></td></tr>
145+ <tr><th style="border:1px solid" align="left">EVP_MAC_init_SKEY</th>
146+ <td style="border:1px solid" align="center"></td>
147+ <td style="border:1px solid" align="center">initialised</td>
148+ <td style="border:1px solid" align="center">initialised</td>
149+ <td style="border:1px solid" align="center">initialised</td>
150+ <td style="border:1px solid" align="center">initialised</td>
151+ <td style="border:1px solid" align="center"></td></tr>
136152<tr><th style="border:1px solid" align="left">EVP_MAC_update</th>
137153 <td style="border:1px solid" align="center"></td>
138154 <td style="border:1px solid" align="center"></td>
@@ -143,15 +159,15 @@ This is the canonical list.
143159<tr><th style="border:1px solid" align="left">EVP_MAC_final</th>
144160 <td style="border:1px solid" align="center"></td>
145161 <td style="border:1px solid" align="center"></td>
146- <td style="border:1px solid" align="center"></td>
162+ <td style="border:1px solid" align="center">finaled </td>
147163 <td style="border:1px solid" align="center">finaled</td>
148164 <td style="border:1px solid" align="center"></td>
149165 <td style="border:1px solid" align="center"></td></tr>
150166<tr><th style="border:1px solid" align="left">EVP_MAC_finalXOF</th>
151- <td style="border:1px solid" align="center"></td>
152167 <td style="border:1px solid" align="center"></td>
153168 <td style="border:1px solid" align="center"></td>
154169 <td style="border:1px solid" align="center">finaled</td>
170+ <td style="border:1px solid" align="center">finaled</td>
155171 <td style="border:1px solid" align="center"></td>
156172 <td style="border:1px solid" align="center"></td></tr>
157173<tr><th style="border:1px solid" align="left">EVP_MAC_CTX_free</th>
@@ -166,37 +182,40 @@ This is the canonical list.
166182 <td style="border:1px solid" align="center">newed</td>
167183 <td style="border:1px solid" align="center">initialised</td>
168184 <td style="border:1px solid" align="center">updated</td>
169- <td style="border:1px solid" align="center"></td>
185+ <td style="border:1px solid" align="center">finaled </td>
170186 <td style="border:1px solid" align="center"></td></tr>
171187<tr><th style="border:1px solid" align="left">EVP_MAC_CTX_set_params</th>
172188 <td style="border:1px solid" align="center"></td>
173189 <td style="border:1px solid" align="center">newed</td>
174190 <td style="border:1px solid" align="center">initialised</td>
175191 <td style="border:1px solid" align="center">updated</td>
176- <td style="border:1px solid" align="center"></td>
192+ <td style="border:1px solid" align="center">finaled </td>
177193 <td style="border:1px solid" align="center"></td></tr>
178194<tr><th style="border:1px solid" align="left">EVP_MAC_CTX_gettable_params</th>
179195 <td style="border:1px solid" align="center"></td>
180196 <td style="border:1px solid" align="center">newed</td>
181197 <td style="border:1px solid" align="center">initialised</td>
182198 <td style="border:1px solid" align="center">updated</td>
183- <td style="border:1px solid" align="center"></td>
199+ <td style="border:1px solid" align="center">finaled </td>
184200 <td style="border:1px solid" align="center"></td></tr>
185201<tr><th style="border:1px solid" align="left">EVP_MAC_CTX_settable_params</th>
186202 <td style="border:1px solid" align="center"></td>
187203 <td style="border:1px solid" align="center">newed</td>
188204 <td style="border:1px solid" align="center">initialised</td>
189205 <td style="border:1px solid" align="center">updated</td>
190- <td style="border:1px solid" align="center"></td>
206+ <td style="border:1px solid" align="center">finaled </td>
191207 <td style="border:1px solid" align="center"></td></tr>
192208</table>
193209
194210=end html
195211
196212=head1 NOTES
197213
198- At some point the EVP layer will begin enforcing the transitions described
199- herein.
214+ Since OpenSSL 4.2, the EVP layer enforces the transitions described herein:
215+ EVP_MAC_update(), EVP_MAC_final() and EVP_MAC_finalXOF() fail in the
216+ B<newed> and B<finaled> states, see L<EVP_MAC(3)>. Querying the output
217+ length by calling EVP_MAC_final() with a NULL output buffer is permitted in
218+ every state and does not change it.
200219
201220=head1 SEE ALSO
202221
@@ -208,7 +227,7 @@ The provider MAC interface was introduced in OpenSSL 3.0.
208227
209228=head1 COPYRIGHT
210229
211- Copyright 2021 The OpenSSL Project Authors. All Rights Reserved.
230+ Copyright 2021-2026 The OpenSSL Project Authors. All Rights Reserved.
212231
213232Licensed under the Apache License 2.0 (the "License"). You may not use
214233this file except in compliance with the License. You can obtain a copy
0 commit comments