MCUX CLNS
MCUX Crypto Library Normal Secure
Loading...
Searching...
No Matches
mcuxClEcc_MemoryConsumption.h
Go to the documentation of this file.
1/*--------------------------------------------------------------------------*/
2/* Copyright 2021-2025 NXP */
3/* */
4/* SPDX-License-Identifier: BSD-3-Clause */
5/* */
6/* Redistribution and use in source and binary forms, with or without */
7/* modification, are permitted provided that the following conditions are */
8/* met: */
9/* */
10/* 1. Redistributions of source code must retain the above copyright */
11/* notice, this list of conditions and the following disclaimer. */
12/* */
13/* 2. Redistributions in binary form must reproduce the above copyright */
14/* notice, this list of conditions and the following disclaimer in the */
15/* documentation and/or other materials provided with the distribution. */
16/* */
17/* 3. Neither the name of the copyright holder nor the names of its */
18/* contributors may be used to endorse or promote products derived from */
19/* this software without specific prior written permission. */
20/* */
21/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS */
22/* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED */
23/* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A */
24/* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */
25/* HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
26/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */
27/* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR */
28/* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
29/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */
30/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */
31/* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
32/*--------------------------------------------------------------------------*/
33
38
39#ifndef MCUXCLECC_MEMORYCONSUMPTION_H_
40#define MCUXCLECC_MEMORYCONSUMPTION_H_
41
42#include <mcuxClCore_Macros.h>
43
50
56#define MCUXCLKEY_GENERATEKEYPAIR_WEIERECC_WACPU_SIZE 472u
57
58
59#define MCUXCLSIGNATURE_SIGN_ECDSA_WACPU_SIZE 472u
60
61#define MCUXCLSIGNATURE_VERIFY_ECDSA_WACPU_SIZE 480u
62
63#define MCUXCLKEY_AGREEMENT_ECDH_WACPU_SIZE 472u
64
65#define MCUXCLECC_WEIERECC_GENERATEDOMAINPARAMS_WACPU_SIZE 156u
66
67#define MCUXCLECC_WEIERECC_DECODEPOINT_WACPU_SIZE 148u
68
69#ifdef MCUXCL_FEATURE_ECC_ARITHMETICOPERATION
70#ifdef MCUXCL_FEATURE_ECC_ARITHMETICOPERATION_SCALARMULT
71#define MCUXCLECC_ARITHMETICOPERATION_SCALARMULT_WACPU_SIZE $(mcuxClEcc_ArithmeticOperation_ScalarMult_WaCPU_SIZE)u
72#endif /* MCUXCL_FEATURE_ECC_ARITHMETICOPERATION_SCALARMULT */
73
74#ifdef MCUXCL_FEATURE_ECC_ARITHMETICOPERATION_SECURESCALARMULT
75#define MCUXCLECC_ARITHMETICOPERATION_SECURESCALARMULT_WACPU_SIZE $(mcuxClEcc_ArithmeticOperation_SecureScalarMult_WaCPU_SIZE)u
76#endif /* MCUXCL_FEATURE_ECC_ARITHMETICOPERATION_SECURESCALARMULT */
77
78#ifdef MCUXCL_FEATURE_ECC_ARITHMETICOPERATION_POINTADD
79#define MCUXCLECC_ARITHMETICOPERATION_POINTADD_WACPU_SIZE $(mcuxClEcc_ArithmeticOperation_PointAdd_WaCPU_SIZE)u
80#endif /* MCUXCL_FEATURE_ECC_ARITHMETICOPERATION_POINTADD */
81
82#ifdef MCUXCL_FEATURE_ECC_ARITHMETICOPERATION_POINTSUB
83#define MCUXCLECC_ARITHMETICOPERATION_POINTSUB_WACPU_SIZE $(mcuxClEcc_ArithmeticOperation_PointSub_WaCPU_SIZE)u
84#endif /* MCUXCL_FEATURE_ECC_ARITHMETICOPERATION_POINTSUB */
85#endif /* MCUXCL_FEATURE_ECC_ARITHMETICOPERATION */
86
87#define MCUXCLECC_WEIERECC_PRIVATEKEYVALIDATION_WACPU_SIZE 132u
88#define MCUXCLECC_WEIERECC_PUBLICKEYVALIDATION_WACPU_SIZE 140u
89 /* MCUXCLECC_WACPU_ */
93
94#ifdef MCUXCL_FEATURE_ECC_MONTDH
100
101#ifdef MCUXCL_FEATURE_ECC_CURVE25519
102#define MCUXCLECC_MONTDH_GENERATEKEYPAIR_CURVE25519_WACPU_SIZE 472u
103#define MCUXCLECC_MONTDH_KEYAGREEMENT_CURVE25519_WACPU_SIZE 156u
104#endif /* MCUXCL_FEATURE_ECC_CURVE25519 */
105
106#ifdef MCUXCL_FEATURE_ECC_CURVE448
107#define MCUXCLECC_MONTDH_GENERATEKEYPAIR_CURVE448_WACPU_SIZE 472u
108#define MCUXCLECC_MONTDH_KEYAGREEMENT_CURVE448_WACPU_SIZE 156u
109#endif /* MCUXCL_FEATURE_ECC_CURVE448 */
110 /* MCUXCLECC_MONTDH_WACPU_ */
114#endif /* MCUXCL_FEATURE_ECC_MONTDH */
115
116#ifdef MCUXCL_FEATURE_ECC_EDDSA
122
123#define MCUXCLECC_EDDSA_GENERATEKEYPAIR_ED25519_WACPU_SIZE 1076u
124#define MCUXCLECC_EDDSA_GENERATESIGNATURE_ED25519_WACPU_SIZE 1560u
125#define MCUXCLECC_EDDSA_VERIFYSIGNATURE_ED25519_WACPU_SIZE 620u
126
127 /* MCUXCLECC_EDDSA_WACPU_ */
131#endif /* MCUXCL_FEATURE_ECC_EDDSA */
132
138
142#define MCUXCLECC_PKC_WORDSIZE 8u
143
147#define MCUXCLECC_KEYGEN_WAPKC_SIZE(pByteLen,nByteLen) \
148 (1u + \
149 (24u * (MCUXCLPKC_ALIGN_TO_PKC_WORDSIZE(MCUXCLCORE_MAX(pByteLen,nByteLen)) + MCUXCLECC_PKC_WORDSIZE)))
150
151#define MCUXCLKEY_GENERATEKEYPAIR_WEIERECC_WAPKC_SIZE_128 (576u)
152#define MCUXCLKEY_GENERATEKEYPAIR_WEIERECC_WAPKC_SIZE_256 (960u)
153#define MCUXCLKEY_GENERATEKEYPAIR_WEIERECC_WAPKC_SIZE_384 (1344u)
154#define MCUXCLKEY_GENERATEKEYPAIR_WEIERECC_WAPKC_SIZE_512 (1728u)
155#define MCUXCLKEY_GENERATEKEYPAIR_WEIERECC_WAPKC_SIZE_640 (2112u)
156
157
161#define MCUXCLECC_SIGN_WAPKC_SIZE(pByteLen,nByteLen) \
162 (1u + \
163 (24u * (MCUXCLPKC_ALIGN_TO_PKC_WORDSIZE(MCUXCLCORE_MAX(pByteLen,nByteLen)) + MCUXCLECC_PKC_WORDSIZE)))
164
165#define MCUXCLSIGNATURE_SIGN_ECDSA_WAPKC_SIZE_128 (576u )
166#define MCUXCLSIGNATURE_SIGN_ECDSA_WAPKC_SIZE_256 (960u )
167#define MCUXCLSIGNATURE_SIGN_ECDSA_WAPKC_SIZE_384 (1344u )
168#define MCUXCLSIGNATURE_SIGN_ECDSA_WAPKC_SIZE_512 (1728u )
169#define MCUXCLSIGNATURE_SIGN_ECDSA_WAPKC_SIZE_640 (2112u )
170
174
175#define MCUXCLECC_VERIFY_WAPKC_SIZE(pByteLen,nByteLen) \
176 (1u + \
177 (28u * (MCUXCLPKC_ALIGN_TO_PKC_WORDSIZE(MCUXCLCORE_MAX(pByteLen,nByteLen)) + MCUXCLECC_PKC_WORDSIZE)))
178
179#define MCUXCLSIGNATURE_VERIFY_ECDSA_WAPKC_SIZE_128 (672u)
180#define MCUXCLSIGNATURE_VERIFY_ECDSA_WAPKC_SIZE_256 (1120u)
181#define MCUXCLSIGNATURE_VERIFY_ECDSA_WAPKC_SIZE_384 (1568u)
182#define MCUXCLSIGNATURE_VERIFY_ECDSA_WAPKC_SIZE_512 (2016u)
183#define MCUXCLSIGNATURE_VERIFY_ECDSA_WAPKC_SIZE_640 (2464u)
184
188#define MCUXCLECC_POINTMULT_WAPKC_SIZE(pByteLen,nByteLen) \
189 (1u + \
190 (24u * (MCUXCLPKC_ALIGN_TO_PKC_WORDSIZE(MCUXCLCORE_MAX(pByteLen,nByteLen)) + MCUXCLECC_PKC_WORDSIZE)))
191
192#define MCUXCLKEY_AGREEMENT_ECDH_WAPKC_SIZE_128 (576u )
193#define MCUXCLKEY_AGREEMENT_ECDH_WAPKC_SIZE_256 (960u )
194#define MCUXCLKEY_AGREEMENT_ECDH_WAPKC_SIZE_384 (1344u )
195#define MCUXCLKEY_AGREEMENT_ECDH_WAPKC_SIZE_512 (1728u )
196#define MCUXCLKEY_AGREEMENT_ECDH_WAPKC_SIZE_640 (2112u )
197
201#define MCUXCLECC_WEIERECC_GENERATEDOMAINPARAMS_WAPKC_SIZE(pByteLen,nByteLen) \
202 (1u + \
203 (22u * (MCUXCLPKC_ALIGN_TO_PKC_WORDSIZE(MCUXCLCORE_MAX(pByteLen,nByteLen)) + MCUXCLECC_PKC_WORDSIZE)))
204
205#define MCUXCLECC_WEIERECC_GENERATEDOMAINPARAMS_WAPKC_SIZE_128 (528u )
206#define MCUXCLECC_WEIERECC_GENERATEDOMAINPARAMS_WAPKC_SIZE_256 (880u )
207#define MCUXCLECC_WEIERECC_GENERATEDOMAINPARAMS_WAPKC_SIZE_384 (1232u )
208#define MCUXCLECC_WEIERECC_GENERATEDOMAINPARAMS_WAPKC_SIZE_512 (1584u )
209#define MCUXCLECC_WEIERECC_GENERATEDOMAINPARAMS_WAPKC_SIZE_640 (1936u )
210
214#define MCUXCLECC_WEIERECC_DECODEPOINT_WAPKC_SIZE_128 (432u)
215#define MCUXCLECC_WEIERECC_DECODEPOINT_WAPKC_SIZE_256 (720u)
216#define MCUXCLECC_WEIERECC_DECODEPOINT_WAPKC_SIZE_384 (1008u)
217#define MCUXCLECC_WEIERECC_DECODEPOINT_WAPKC_SIZE_512 (1296u)
218#define MCUXCLECC_WEIERECC_DECODEPOINT_WAPKC_SIZE_640 (1584u)
219
220#ifdef MCUXCL_FEATURE_ECC_ARITHMETICOPERATION
221#ifdef MCUXCL_FEATURE_ECC_ARITHMETICOPERATION_SCALARMULT
225#define MCUXCLECC_ARITHMETICOPERATION_SCALARMULT_WAPKC_SIZE_128 $(mcuxClEcc_ArithmeticOperation_ScalarMult_WaPKC_Size_128)u
226#define MCUXCLECC_ARITHMETICOPERATION_SCALARMULT_WAPKC_SIZE_256 $(mcuxClEcc_ArithmeticOperation_ScalarMult_WaPKC_Size_256)u
227#define MCUXCLECC_ARITHMETICOPERATION_SCALARMULT_WAPKC_SIZE_384 $(mcuxClEcc_ArithmeticOperation_ScalarMult_WaPKC_Size_384)u
228#define MCUXCLECC_ARITHMETICOPERATION_SCALARMULT_WAPKC_SIZE_512 $(mcuxClEcc_ArithmeticOperation_ScalarMult_WaPKC_Size_512)u
229#define MCUXCLECC_ARITHMETICOPERATION_SCALARMULT_WAPKC_SIZE_640 $(mcuxClEcc_ArithmeticOperation_ScalarMult_WaPKC_Size_640)u
230#endif /* MCUXCL_FEATURE_ECC_ARITHMETICOPERATION_SCALARMULT */
231
232#ifdef MCUXCL_FEATURE_ECC_ARITHMETICOPERATION_SECURESCALARMULT
236#define MCUXCLECC_ARITHMETICOPERATION_SECURESCALARMULT_WAPKC_SIZE_128 $(mcuxClEcc_ArithmeticOperation_SecureScalarMult_WaPKC_Size_128)u
237#define MCUXCLECC_ARITHMETICOPERATION_SECURESCALARMULT_WAPKC_SIZE_256 $(mcuxClEcc_ArithmeticOperation_SecureScalarMult_WaPKC_Size_256)u
238#define MCUXCLECC_ARITHMETICOPERATION_SECURESCALARMULT_WAPKC_SIZE_384 $(mcuxClEcc_ArithmeticOperation_SecureScalarMult_WaPKC_Size_384)u
239#define MCUXCLECC_ARITHMETICOPERATION_SECURESCALARMULT_WAPKC_SIZE_512 $(mcuxClEcc_ArithmeticOperation_SecureScalarMult_WaPKC_Size_512)u
240#define MCUXCLECC_ARITHMETICOPERATION_SECURESCALARMULT_WAPKC_SIZE_640 $(mcuxClEcc_ArithmeticOperation_SecureScalarMult_WaPKC_Size_640)u
241#endif /* MCUXCL_FEATURE_ECC_ARITHMETICOPERATION_SECURESCALARMULT */
242
243#ifdef MCUXCL_FEATURE_ECC_ARITHMETICOPERATION_POINTADD
247#define MCUXCLECC_ARITHMETICOPERATION_POINTADD_WAPKC_SIZE_128 ($(mcuxClEcc_ArithmeticOperation_PointAdd_WaPKC_Size_128)u)
248#define MCUXCLECC_ARITHMETICOPERATION_POINTADD_WAPKC_SIZE_256 ($(mcuxClEcc_ArithmeticOperation_PointAdd_WaPKC_Size_256)u)
249#define MCUXCLECC_ARITHMETICOPERATION_POINTADD_WAPKC_SIZE_384 ($(mcuxClEcc_ArithmeticOperation_PointAdd_WaPKC_Size_384)u)
250#define MCUXCLECC_ARITHMETICOPERATION_POINTADD_WAPKC_SIZE_512 ($(mcuxClEcc_ArithmeticOperation_PointAdd_WaPKC_Size_512)u)
251#define MCUXCLECC_ARITHMETICOPERATION_POINTADD_WAPKC_SIZE_640 ($(mcuxClEcc_ArithmeticOperation_PointAdd_WaPKC_Size_640)u)
252
253#endif /* MCUXCL_FEATURE_ECC_ARITHMETICOPERATION_POINTADD */
254
255#ifdef MCUXCL_FEATURE_ECC_ARITHMETICOPERATION_POINTSUB
259#define MCUXCLECC_ARITHMETICOPERATION_POINTSUB_WAPKC_SIZE_128 ($(mcuxClEcc_ArithmeticOperation_PointSub_WaPKC_Size_128)u)
260#define MCUXCLECC_ARITHMETICOPERATION_POINTSUB_WAPKC_SIZE_256 ($(mcuxClEcc_ArithmeticOperation_PointSub_WaPKC_Size_256)u)
261#define MCUXCLECC_ARITHMETICOPERATION_POINTSUB_WAPKC_SIZE_384 ($(mcuxClEcc_ArithmeticOperation_PointSub_WaPKC_Size_384)u)
262#define MCUXCLECC_ARITHMETICOPERATION_POINTSUB_WAPKC_SIZE_512 ($(mcuxClEcc_ArithmeticOperation_PointSub_WaPKC_Size_512)u)
263#define MCUXCLECC_ARITHMETICOPERATION_POINTSUB_WAPKC_SIZE_640 ($(mcuxClEcc_ArithmeticOperation_PointSub_WaPKC_Size_640)u)
264
265#endif /* MCUXCL_FEATURE_ECC_ARITHMETICOPERATION_POINTSUB */
266#endif /* MCUXCL_FEATURE_ECC_ARITHMETICOPERATION */
267
271#define MCUXCLECC_WEIERECC_PRIVATEKEYVALIDATION_WAPKC_SIZE_128 (240u)
272#define MCUXCLECC_WEIERECC_PRIVATEKEYVALIDATION_WAPKC_SIZE_256 (400u)
273#define MCUXCLECC_WEIERECC_PRIVATEKEYVALIDATION_WAPKC_SIZE_384 (560u)
274#define MCUXCLECC_WEIERECC_PRIVATEKEYVALIDATION_WAPKC_SIZE_512 (720u)
275#define MCUXCLECC_WEIERECC_PRIVATEKEYVALIDATION_WAPKC_SIZE_640 (880u)
276
277#define MCUXCLECC_WEIERECC_PUBLICKEYVALIDATION_WAPKC_SIZE_128 (336u)
278#define MCUXCLECC_WEIERECC_PUBLICKEYVALIDATION_WAPKC_SIZE_256 (560u)
279#define MCUXCLECC_WEIERECC_PUBLICKEYVALIDATION_WAPKC_SIZE_384 (784u)
280#define MCUXCLECC_WEIERECC_PUBLICKEYVALIDATION_WAPKC_SIZE_512 (1008u)
281#define MCUXCLECC_WEIERECC_PUBLICKEYVALIDATION_WAPKC_SIZE_640 (1232u)
282 /* MCUXCLECC_WAPKC_ */
286
287#if defined(MCUXCL_FEATURE_ECC_MONTDH)
293
297#ifdef MCUXCL_FEATURE_ECC_CURVE25519
298#define MCUXCLECC_MONTDH_GENERATEKEYPAIR_CURVE25519_WAPKC_SIZE 880u
299#endif /* MCUXCL_FEATURE_ECC_CURVE25519 */
300#ifdef MCUXCL_FEATURE_ECC_CURVE448
301#define MCUXCLECC_MONTDH_GENERATEKEYPAIR_CURVE448_WAPKC_SIZE 1408u
302#endif /* MCUXCL_FEATURE_ECC_CURVE448 */
303
307#ifdef MCUXCL_FEATURE_ECC_CURVE25519
308#define MCUXCLECC_MONTDH_KEYAGREEMENT_CURVE25519_WAPKC_SIZE 880u
309#endif /* MCUXCL_FEATURE_ECC_CURVE25519 */
310#ifdef MCUXCL_FEATURE_ECC_CURVE448
311#define MCUXCLECC_MONTDH_KEYAGREEMENT_CURVE448_WAPKC_SIZE 1408u
312#endif /* MCUXCL_FEATURE_ECC_CURVE448 */
313 /* MCUXCLECC_MONTDH_WAPKC_ */
317#endif /* defined(MCUXCL_FEATURE_ECC_MONTDH) && defined(MCUXCL_FEATURE_PKC) */
318
319#if defined(MCUXCL_FEATURE_ECC_EDDSA)
325
329#define MCUXCLECC_EDDSA_GENERATEKEYPAIR_ED25519_WAPKC_SIZE 1800u
330
334#define MCUXCLECC_EDDSA_GENERATESIGNATURE_ED25519_WAPKC_SIZE 1800u
335
339#define MCUXCLECC_EDDSA_VERIFYSIGNATURE_ED25519_WAPKC_SIZE 1800u
340 /* MCUXCLECC_EDDSA_WAPKC_ */
344#endif /* defined(MCUXCL_FEATURE_ECC_EDDSA) && defined(MCUXCL_FEATURE_PKC) */
345
349#define MCUXCLECC_CUSTOMWEIERECCDOMAINPARAMS_SIZE(byteLenP, byteLenN) \
350 MCUXCLCORE_ALIGN_TO_CPU_WORDSIZE(64u \
351 + 8u * (byteLenP) \
352 + 2u * (byteLenN) )
353
354#ifdef MCUXCL_FEATURE_ECC_EDDSA
360#define MCUXCLECC_EDDSA_GENERATEKEYPAIR_DESCRIPTOR_SIZE 20u /* MCUXCLECC_EDDSA_GENKEYPAIR_DESC_SIZE_ */
364
370#define MCUXCLECC_EDDSA_SIGNATURE_PROTOCOL_DESCRIPTOR_SIZE 20u
371
372#define MCUXCLECC_EDDSA_ED25519_SIZE_SIGNATURE_PROTOCOL_DESCRIPTOR(contextLen) \
373 (MCUXCLECC_EDDSA_SIGNATURE_PROTOCOL_DESCRIPTOR_SIZE + MCUXCLECC_EDDSA_SIZE_HASH_PREFIX(MCUXCLECC_EDDSA_ED25519_DOMPREFIXLEN, (contextLen)))
374
375 /* MCUXCLECC_EDDSA_SIGNATURE_PROTOCOL_DESC_SIZE_ */
379
385#define MCUXCLECC_EDDSA_SIGNATURE_MODE_SIZE (40u)
386
387#define MCUXCLECC_EDDSA_ED25519_SIZE_SIGNATURE_MODE_DESCRIPTOR(contextLen) \
388 (MCUXCLECC_EDDSA_SIGNATURE_MODE_SIZE + MCUXCLECC_EDDSA_SIZE_HASH_PREFIX(MCUXCLECC_EDDSA_ED25519_DOMPREFIXLEN, (contextLen)))
389
390
391 /* MCUXCLECC_EDDSA_SIGNATURE_MODE_SIZE_ */
395
396#endif /* MCUXCL_FEATURE_ECC_EDDSA */
397
398
399 /* mcuxClEcc_MemoryConsumption */
403
404#endif /* MCUXCLECC_MEMORYCONSUMPTION_H_ */
Definition of macros.