blob: 12c8d1eb00693da88ec4bb15391fd2f6b677948c [file] [log] [blame]
David Vinczef0dc21c2019-11-28 16:01:21 +01001/*
2 * Copyright (c) 2001-2019, Arm Limited and Contributors. All rights reserved.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7#include "aes.h"
8
9/*!
10 @defgroup cryptocell_api CryptoCell runtime library
11
12 @{
13 @}
14 */
15
16/*
17 ############################TOP-LEVEL APIs###################################
18 */
19/*!
20 @defgroup cc_top Basic CryptoCell library definitions
21 @brief Contains basic CryptoCell library definitions.
22
23 @{
24 @ingroup cryptocell_api
25 @}
26 */
27
28/*!
29 @defgroup cc_lib Basic CryptoCell library APIs
30 @brief Contains basic CryptoCell library APIs.
31
32 This module lists the basic CryptoCell library APIs.
33
34 @{
35 @ingroup cc_top
36 @}
37 */
38
39 /*!
40 @defgroup cc_general_defs General CryptoCell definitions
41 @brief Contains general definitions of the CryptoCell runtime SW APIs.
42
43 @{
44 @ingroup cc_top
45 @}
46 */
47
48/*!
49 @defgroup cc_error General base error codes for CryptoCell
50 @brief Contains general base-error codes for CryptoCell.
51
52
53 @{
54 @ingroup cc_top
55 @}
56 */
57
58
59 /*
60 ################################AES APIs#####################################
61 */
62/*!
63 @defgroup cc_aes CryptoCell AES APIs
64
65 @ingroup cryptocell_api
66
67 @brief AES is a symmetric block cipher that uses a combination of both substitution
68 and permutation. It is fast in both software and hardware.
69
70 AES has a fixed block size of 128 bits, and supports the following key sizes:
71 <ul><li>128 bits.</li><li>192 bits.</li><li>256 bits.</li></ul>
72
73 For the implementation of AES, see aes.h.
74
75 */
76
77 /*!
78 @defgroup cc_aes_hw_limit CryptoCell-312 hardware limitations for AES
79
80 @ingroup cc_aes
81
82 The CrytoCell-312 hardware accelerates the following AES operations:
83 <ul><li>ECB.</li>
84 <li>CBC.</li>
85 <li>CTR.</li>
86 <li>CMAC. For the implementation of CMAC, see cmac.h.</li>
87 <li>OFB.</li>
88 <li>CCM. For the implementation of CCM, see ccm.h.</li>
89 <li>CCM star. For the implementation of CCM star, see mbedtls_cc_ccm_star.h and ccm.h.</li>
90 <li>GCM. For the implementation of GCM, see gcm.h.</li></ul>
91
92 To support the accelerated algorithms, the following conditions
93 must be met:
94 <ul><li>The input and output buffers must be DMA-able.</li>
95 <li>The input and output buffers must be physically contingous
96 blocks in memory.</li>
97 <li>Buffer size must be up to 64KB.</li>
98 <li>The context must also be DMA-able, as partial
99 and final results are written to the context.</li>
100 <li>Only integrated operations are supported for CCM, CCM star and GCM algorithms.</li></ul>
101 */
102
103 /*!
104 @defgroup cc_aes_typical Typical usage of AES in CryptoCell-312
105
106 @ingroup cc_aes
107
108 The following is a typical AES Block operation flow:
109 <ol><li>mbedtls_aes_init().</li>
110 <li>mbedtls_aes_setkey_enc().</li>
111 <li>mbedtls_aes_crypt_cbc().</li></ol>
112
113*/
114
115/*!
116 @defgroup cc_aesccm_star CryptoCell AES-CCM star APIs
117 @brief Contains the CryptoCell AES-CCM star APIs.
118
119 @{
120 @ingroup cc_aes
121 @}
122 */
123
124/*!
125 @defgroup cc_aes_defs Definitions of CryptoCell AES APIs
126 @brief Contains CryptoCell AES API type definitions.
127
128 @{
129 @ingroup cc_aes
130 @}
131 */
132
133/*!
134 @defgroup cc_aes_defs_proj Project definitions of CryptoCell AES APIs
135 @brief Contains CryptoCell AES API project type definitions.
136
137 @{
138 @ingroup cc_aes_defs
139 @}
140 */
141
142 /*!
143 @defgroup cc_aesccm_star_common Common definitions of the CryptoCell AES-CCM star APIs
144 @brief Contains the CryptoCell AES-CCM star APIs.
145
146 @{
147 @ingroup cc_aes_defs
148 @}
149 */
150
151
152 /*
153 ################################DHM APIs#####################################
154 */
155 /*!
156 @defgroup dhm_module CryptoCell DHM APIs
157
158 @ingroup cryptocell_api
159
160 @brief Diffie-Hellman-Merkle (DHM) is used to securely exchange cryptographic
161 keys over a public channel.
162
163 As described in <em>Public-Key Cryptography Standards (PKCS) #3: Diffie Hellman
164 Key Agreement Standard</em>:
165 "[T]wo parties, without any prior arrangements, can agree upon a secret key
166 that is known only to them...This secret key can then be used, for example,
167 to encrypt further communications between the parties."
168
169 The DHM module is implemented based on the definitions in the following
170 standards:
171 <ul><li><em>RFC-3526: More Modular Exponential (MODP) Diffie-Hellman groups
172 for Internet Key Exchange (IKE)</em>: defines a number of standardized
173 Diffie-Hellman groups for IKE.</li>
174 <li><em>RFC-5114: Additional Diffie-Hellman Groups for Use with IETF
175 Standards</em>: defines a number of standardized Diffie-Hellman
176 groups that can be used.</li></ul>
177
178 For the implementation of DHM, see dhm.h.
179 */
180
181 /*!
182 @defgroup cc_dhm_hw_limit CryptoCell-312 hardware limitations for DHM
183
184 @ingroup dhm_module
185
186 To support the accelerated algorithms, the following conditions
187 must be met:
188 <ul><li>The contexts must be DMA-able, as they might
189 be used for some symmetric operations.</li></ul>
190 */
191
192 /*!
193 @defgroup cc_dhm_typical Typical usage of DHM in CryptoCell-312
194
195 @ingroup dhm_module
196
197 The following is a typical DHM flow for one party:
198 <ol><li>mbedtls_dhm_init().</li>
199 <li>mbedtls_mpi_read_string().</li>
200 <li>mbedtls_mpi_read_string().</li>
201 <li>mbedtls_dhm_make_params().</li>
202 <li>mbedtls_dhm_read_public().</li>
203 <li>mbedtls_dhm_calc_secret().</li></ol>
204 */
205
206/*
207 ################################ECC APIs#####################################
208 */
209
210/*!
211 @defgroup cc_ecc CryptoCell Elliptic Curve APIs
212 @brief Contains all CryptoCell Elliptic Curve APIs.
213
214 Elliptic-curve cryptography (ECC) is defined in <em>Standards for Efficient
215 Cryptography Group (SECG): SEC1 Elliptic Curve Cryptography</em>.
216
217 @{
218 @ingroup cryptocell_api
219 @}
220*/
221
222 /*!
223 @defgroup ecdh_module ECDH module overview
224
225 @ingroup cc_ecc
226
227 @brief Elliptic-curve Diffie–Hellman (ECDH) is an anonymous key agreement
228 protocol. It allows two parties to establish a shared secret over an
229 insecure channel. Each party must have an elliptic-curve public–private
230 key pair.
231
232 For more information, see <em>NIST SP 800-56A Rev. 2: Recommendation
233 for Pair-Wise Key Establishment Schemes Using Discrete Logarithm
234 Cryptography</em>.
235
236 For the implementation of ECDH, see ecdh.h.
237 */
238
239 /*!
240 @defgroup cc_ecdh_hw_limit CryptoCell-312 hardware limitations for ECDH
241
242 @ingroup ecdh_module
243
244 CryotoCell-312 does not support Brainpool curves.
245
246 */
247
248/*!
249 @defgroup cc_ecdh_typical Typical usage of ECDH in CryptoCell-312
250
251 @ingroup ecdh_module
252
253 The following is a typical ECDH operation flow:
254 <ol><li>mbedtls_ecp_group_init().</li>
255 <li>mbedtls_mpi_init() for each group parameter.</li>
256 <li>mbedtls_ecdh_gen_public().</li></ol>
257 */
258
259/*!
260 @defgroup ecdh_edwards CryptoCell ECDH Edwards curve APIs
261 @brief Contains the CryptoCell ECDH Edwards curve APIs.
262 @{
263 @ingroup ecdh_module
264 @}
265 */
266
267/*!
268 @defgroup ecdsa_module ECDSA module overview
269
270 @ingroup cc_ecc
271
272 @brief The Elliptic Curve Digital Signature Algorithm (ECDSA) is a used for
273 generating and validating digital signatures.
274
275 For the definition of ECDSA, see <em>Standards for Efficient Cryptography Group (SECG):
276 SEC1 Elliptic Curve Cryptography</em>.
277
278 For the use of ECDSA for TLS, see <em>RFC-4492: Elliptic Curve
279 Cryptography (ECC) Cipher Suites for Transport Layer Security (TLS)</em>.
280
281 For the implementation of ECDSA, see ecdsa.h.
282 */
283
284/*!
285 @defgroup cc_ecdsa_hw_limit CryptoCell-312 hardware limitations for ECDSA
286
287 @ingroup ecdsa_module
288
289 CryotoCell-312 does not support Brainpool curves.
290
291 \note Using hash functions with hash size greater than the EC modulus size
292 is not recommended.
293 */
294/*!
295 @defgroup cc_ecdsa_typical Typical usage of ECDSA in CryptoCell-312
296
297 @ingroup ecdsa_module
298
299 The following is a typical ECDSA operation flow:
300 <ol><li>mbedtls_ecp_group_init().</li>
301 <li>mbedtls_mpi_init() for each group parameter.</li>
302 <li>mbedtls_ecp_gen_keypair().</li>
303 <li>mbedtls_ecdsa_sign() or mbedtls_ecdsa_verify().</li></ol>
304 */
305
306/*!
307 @defgroup eddsa CryptoCell EDDSA Edwards curve APIs
308 @brief Contains the CryptoCell EDDSA Edwards curve APIs.
309 @{
310 @ingroup ecdsa_module
311 @}
312 */
313
314/*!
315 @defgroup cc_ecies CryptoCell ECIES APIs
316 @brief Contains the CryptoCell Elliptic Curve Integrated Encryption Scheme (ECIES) APIs.
317 @{
318
319 @ingroup cc_ecc
320 @}
321*/
322
323/*!
324 @defgroup cc_ecpki CryptoCell ECPKI APIs
325 @brief Contains all CryptoCell ECPKI APIs.
326
327 This module contains all definitions relating to Elliptic Curve Public Key Infrastructure.
328 @{
329 @ingroup cc_ecc
330 @}
331*/
332
333/*!
334 @defgroup cc_ecpki_domains_defs CryptoCell ECPKI supported domains
335 @brief Contains CryptoCell ECPKI domains supported by the project.
336
337 @{
338 @ingroup cc_ecpki
339 @}
340 */
341
342 /*!
343 @defgroup cc_ecpki_types CryptoCell ECPKI type definitions
344 @brief Contains CryptoCell ECPKI API type definitions.
345
346 @{
347 @ingroup cc_ecpki
348 @}
349 */
350
351/*
352 ##############################EXT DMA APIs###################################
353 */
354
355/*!
356 @defgroup ext_dma CryptoCell external DMA APIs
357 @brief Contains all CryptoCell external DMA API definitions.
358
359 @{
360 @ingroup cryptocell_api
361 @}
362*/
363
364/*!
365 @defgroup aes_ext_dma CryptoCell AES external DMA APIs
366 @brief Contains CryptoCell AES external DMA API definitions.
367
368 @{
369 @ingroup ext_dma
370 @}
371*/
372
373/*!
374 @defgroup chacha_ext_dma CryptoCell ChaCha external DMA APIs
375 @brief Contains CryptoCell ChaCha external DMA APIs.
376
377 @{
378 @ingroup ext_dma
379 @}
380 */
381
382/*!
383 @defgroup hash_ext_dma CryptoCell hash external DMA APIs
384 @brief Contains CryptoCell hash external DMA APIs.
385
386 @{
387 @ingroup ext_dma
388 @}
389 */
390
391/*!
392 @defgroup ext_dma_errors Specific errors of the CryptoCell external DMA APIs
393 @brief Contains the CryptoCell external DMA-API error definitions.
394
395 @{
396 @ingroup ext_dma
397 @}
398 */
399
400
401/*
402 ###############################HASH APIs#####################################
403 */
404
405/*!
406 @defgroup cc_hash CryptoCell hash APIs
407 @brief Contains all CryptoCell hash APIs and definitions.
408
409 The hash or Message Digest (MD) module allows you to calculate
410 hash digests from data, and create signatures based on those hash digests.
411
412 HMAC is a wrapping algorithm that uses one of the supported
413 hash algorithms and a key, to generate a unique
414 authentication code over the input data.
415
416 All hash algorithms can be accessed via the generic MD layer.
417 For more information, see ::mbedtls_md_setup().
418
419 For more information on supported hash algorithms, @see cc_hash_hw_limit.
420
421 For the implementation of hash and HMAC, see md.h.
422 @{
423 @ingroup cryptocell_api
424 @}
425 */
426
427/*!
428 @defgroup cc_hash_hw_limit CryptoCell-312 hardware limitations for hash
429
430 @ingroup cc_hash
431
432 The CryptoCell-312 hardware supports accelerated hash operations for
433 the following modes:
434 <ul><li>SHA-1</li>
435 <li>SHA-224</li>
436 <li>SHA-256</li></ul>
437
438 SHA-384 and SHA-512 operations are only supported in a
439 non-accelerated software mode.
440
441 To support the accelerated algorithms, the following conditions
442 must be met:
443 <ul><li>The input buffer must be DMA-able.</li>
444 <li>The input buffer must be physically contingous
445 block in memory.</li>
446 <li>Buffer size must be up to 64KB.</li>
447 <li>The context must also be DMA-able, as partial
448 and final results are written to the context.</li></ul>
449 */
450
451/*!
452 @defgroup cc_hash_typical Typical usage of hash in CryptoCell-312
453
454 @ingroup cc_hash
455
456 The following is a typical hash Block operation flow
457 directly using the SHA module:
458 <ol><li>mbedtls_sha1_init().</li>
459 <li>mbedtls_sha1_starts_ret().</li>
460 <li>mbedtls_sha1_update_ret().</li>
461 <li>mbedtls_sha1_finish_ret().</li></ol>
462
463 The following is a typical HMAC Block operation flow
464 using the MD module:
465 <ol><li>mbedtls_md_setup().</li>
466 <li>mbedtls_md_hmac_starts().</li>
467 <li>mbedtls_md_hmac_update().</li>
468 <li>mbedtls_md_hmac_finish().</li></ol>
469 */
470
471 /*!
472 @defgroup cc_sha512_t_h CryptoCell SHA-512 truncated APIs
473
474 @ingroup cc_hash
475
476 @brief Contains all CryptoCell SHA-512 truncated APIs.
477
478 */
479
480 /*!
481 @defgroup cc_hash_defs CryptoCell hash API definitions
482 @brief Contains CryptoCell hash API definitions.
483
484 @{
485 @ingroup cc_hash
486 @}
487*/
488
489/*!
490 @defgroup cc_hash_defs_proj CryptoCell hash API project-specific definitions
491 @brief Contains the project-specific hash API definitions.
492
493 @{
494 @ingroup cc_hash
495 @}
496 */
497
498/*
499 ###############################MGMT APIs#####################################
500 */
501/*!
502 @defgroup cc_management CryptoCell management APIs
503 @brief Contains CryptoCell Management APIs.
504
505 @{
506 @ingroup cryptocell_api
507 @}
508 */
509
510/*!
511 @defgroup cc_management_error Specific errors of the CryptoCell Management APIs
512 @brief Contains the CryptoCell management-API error definitions.
513
514 @{
515 @ingroup cc_management
516 @}
517*/
518
519/*
520 ################################PAL APIs#####################################
521 */
522/*!
523 @defgroup cc_pal CryptoCell PAL APIs
524 @brief Groups all PAL APIs and definitions.
525
526 @{
527 @ingroup cryptocell_api
528 @}
529 */
530
531 /*!
532 @defgroup cc_pal_abort CryptoCell PAL abort operations
533 @brief Contains CryptoCell PAL abort operations.
534
535 @{
536 @ingroup cc_pal
537 @}
538 */
539
540/*!
541 @defgroup cc_pal_apbc CryptoCell PAL APB-C APIs
542 @brief Contains PAL APB-C APIs.
543
544 @{
545 @ingroup cc_pal
546 @}
547 */
548
549/*!
550 @defgroup cc_pal_sb_plat CryptoCell PAL definitions for Boot Services
551 @brief Contains CryptoCell PAL Secure Boot definitions.
552
553 @{
554 @ingroup cc_pal
555 @}
556 */
557
558/*!
559 @defgroup cc_pal_init CryptoCell PAL entry or exit point APIs
560 @brief Contains PAL initialization and termination APIs.
561
562 @{
563 @ingroup cc_pal
564 @}
565 */
566
567/*!
568 @defgroup cc_pal_log CryptoCell PAL logging APIs and definitions
569 @brief Contains CryptoCell PAL layer log definitions.
570
571 @{
572 @ingroup cc_pal
573 @}
574 */
575
576/*!
577 @defgroup cc_pal_mem CryptoCell PAL memory operations
578 @brief Contains memory-operation functions.
579
580 @{
581 @ingroup cc_pal
582 @}
583 */
584
585/*!
586 @defgroup cc_pal_barrier CryptoCell PAL memory Barrier APIs
587 @brief Contains memory-barrier implementation definitions and APIs.
588
589 @{
590 @ingroup cc_pal_mem
591 @}
592*/
593
594/*!
595 @defgroup cc_pal_memmap CryptoCell PAL memory mapping APIs
596 @brief Contains memory mapping functions.
597
598 @{
599 @ingroup cc_pal_mem
600 @}
601 */
602
603/*!
604 @defgroup cc_pal_mutex CryptoCell PAL mutex APIs
605 @brief Contains resource management functions.
606
607 @{
608 @ingroup cc_pal
609 @}
610 */
611
612/*!
613 @defgroup cc_pal_types CryptoCell PAL platform-dependent definitions and types
614 @brief Contains CryptoCell PAL platform-dependent definitions and types.
615
616 @{
617 @ingroup cc_pal
618 @}
619*/
620
621/*!
622 @defgroup cc_pal_compiler CryptoCell PAL platform-dependent compiler-related definitions
623 @brief Contains CryptoCell PAL platform-dependent compiler-related definitions.
624 @{
625 @ingroup cc_pal
626 @}
627 */
628
629 /*!
630 @defgroup cc_pal_pm CryptoCell PAL power-management APIs
631 @brief Contains PAL power-management APIs.
632
633 @{
634 @ingroup cc_pal
635 @}
636 */
637
638/*!
639 @defgroup cc_pal_trng CryptoCell PAL TRNG APIs
640 @brief Contains APIs for retrieving TRNG user parameters.
641
642 @{
643 @ingroup cc_pal
644 @}
645 */
646
647/*!
648 @defgroup cc_pal_error Specific errors of the CryptoCell PAL APIs
649 @brief Contains platform-dependent PAL-API error definitions.
650
651 @{
652 @ingroup cc_pal
653 @}
654 */
655
656/*
657 ################################PKA APIs#####################################
658 */
659/*!
660 @defgroup cc_pka CryptoCell PKA APIs
661 @brief Contains all CryptoCell PKA APIs.
662
663 @{
664 @ingroup cryptocell_api
665 @}
666 */
667
668 /*!
669 @defgroup cc_pka_defs_hw CryptoCell PKA-specific definitions
670 @brief Contains the CryptoCell PKA API definitions.
671
672 @{
673 @ingroup cc_pka
674 @}
675 */
676
677/*!
678 @defgroup cc_pka_hw_plat_defs CryptoCell PKA-API platform-dependent types and definitions
679 @brief Contains the platform-dependent definitions of the CryptoCell PKA APIs.
680
681 @{
682 @ingroup cc_pka_defs_hw
683 @}
684 */
685
686
687/*
688 ###############################PROD APIs#####################################
689 */
690
691/*!
692 @addtogroup prod CryptoCell production-library APIs
693 @brief Contains CryptoCell production-library APIs.
694
695 @{
696 @ingroup cryptocell_api
697 @}
698 */
699
700 /*!
701 @defgroup prod_mem CryptoCell production-library definitions
702 @brief Contains CryptoCell production-library definitions.
703
704 @{
705 @ingroup prod
706 @}
707 */
708
709/*!
710 @defgroup cc_cmpu CryptoCell ICV production library APIs
711 @brief Contains CryptoCell ICV production library APIs.
712
713 @{
714 @ingroup prod
715 @}
716 */
717
718/*!
719 @defgroup cc_dmpu CryptoCell OEM production library APIs
720 @brief Contains CryptoCell OEM production library APIs.
721
722 @{
723 @ingroup prod
724 @}
725 */
726
727/*!
728 @defgroup prod_errors Specific errors of the CryptoCell production-library APIs
729 @brief Contains the CryptoCell production-library-API error definitions.
730
731 @{
732 @ingroup prod
733 @}
734 */
735
736
737/*
738 ################################RNG APIs#####################################
739 */
740/*!
741 @defgroup rng_module CryptoCell RNG APIs
742
743 @brief The Random Number Generator (RNG) module supports random number
744 generation, as defined in <em>NIST SP 800-90A: Recommendation for Random
745 Number Generation Using Deterministic Random Bit Generators</em>.
746 See mbedtls_ctr_drbg_random().
747
748 The block-cipher counter-mode based deterministic random-bit
749 generator (CTR_DBRG). CryptoCell provides the source of entropy.
750
751 For the implementation of RNG, see ctr_drbg.h.
752 @{
753 @ingroup cryptocell_api
754 @}
755 */
756
757/*!
758 @defgroup cc_rnd CryptoCell random-number generation APIs.
759 @brief Contains the CryptoCell random-number generation APIs.
760 @{
761 @ingroup rng_module
762 @}
763 */
764
765
766 /*
767 ################################RSA APIs#####################################
768 */
769/*!
770 @defgroup rsa_module CryptoCell RSA APIs
771
772 @ingroup cryptocell_api
773
774 @brief RSA is an asymmetric algorithm used for secure-data transmission.
775
776 @note As it is considered slow, it is mainly used to pass encrypted shared
777 keys for symmetric key cryptography.
778
779 The RSA module implements the standards defined in <em>Public-Key Cryptography
780 Standards (PKCS) #1 v1.5: RSA Encryption</em> and <em>Public-Key
781 Cryptography Standards (PKCS) #1 v2.1: RSA Cryptography Specifications</em>.
782
783 @note CryptoCell-312 does not support blinding for RSA. If a function receives
784 random pointers as input, these may be NULL.
785
786 For the implementation of RSA, see rsa.h
787 */
788
789/*!
790 @defgroup cc_rsa_hw_limit CryptoCell-312 hardware limitations for RSA
791
792 @ingroup rsa_module
793
794 CryptoCell-312 supports the following RSA key sizes for private-public
795 operations:
796 <ul><li>256 bytes (2048 bits).</li>
797 <li>384 bytes (3072 bits).</li>
798 <li>512 bytes (4096 bits).</li></ul>
799
800 For key-generation, CryptoCell-312 supports the following RSA key sizes:
801 <ul><li>256 bytes (2048 bits).</li>
802 <li>384 bytes (3072 bits).</li></ul>
803 */
804
805/*!
806 @defgroup cc_rsa_typical Typical usage of RSA in CryptoCell-312
807
808 @ingroup rsa_module
809
810 The following is a typical RSA operation flow:
811 <ol><li>mbedtls_rsa_init().</li>
812 <li>mbedtls_rsa_gen_key().</li>
813 <li>mbedtls_rsa_pkcs1_encrypt().</li></ol>
814
815 @note CryptoCell-312 requires that the same \c hash_id used for
816 mbedtls_rsa_init() is used for all subsequent operations.
817 Otherwise, it returns an error.
818 */
819
820 /*!
821 @defgroup cc_rsa_typical_ki Typical insertion of keys in CryptoCell-312
822
823 @ingroup rsa_module
824
825 The following is a typical RSA key-insertion flow:
826 <ol><li>mbedtls_rsa_import() or mbedtls_rsa_import_raw().</li>
827 <li>mbedtls_rsa_complete().</li></ol>
828
829 If you insert keys that are not derived by CryptoCell-312,
830 the following restrictions apply:
831 <ul><li>The user may insert \c N, \c D, \c E, and the complete function does
832 not derive the \c P and \c Q (the CRT values).</li>
833 <li>The user may insert \c P and \c Q, and the complete function derives the
834 CRT values from that, but does not derive \c D.</li>
835 <li>Its Illegal to insert only part of the CRT key (only \c DP for example).</li>
836 <li> If all the required key parameters were inserted the function does nothing.</li></ul>
837 */
838
839/*
840 #############################Secure Boot APIs################################
841 */
842/*!
843 @defgroup cc_sb CryptoCell Secure Boot and Secure Debug APIs.
844 @brief Contains all Secure Boot and Secure Debug APIs and definitions.
845
846 @{
847 @ingroup cryptocell_api
848 @}
849 */
850
851 /*!
852 @defgroup cc_sb_image_verifier CryptoCell Secure Boot and Secure Debug API definitions
853 @brief Contains definitions used for the Secure Boot and Secure Debug APIs.
854
855 @{
856 @ingroup cc_sb
857 @}
858 */
859
860 /*!
861 @defgroup cc_sb_basetypes CryptoCell Secure Boot basic type definitions
862 @brief Contains CryptoCell Secure Boot basic type definitions.
863 @{
864 @ingroup cc_sb
865 @}
866 */
867
868/*!
869 @defgroup cc_sbrt CryptoCell Secure Boot certificate-chain-processing APIs.
870 @brief Contains CryptoCell Secure Boot certificate-chain-processing APIs.
871
872 @{
873 @ingroup cc_sb
874 @}
875 */
876
877/*!
878 @defgroup cc_sb_defs CryptoCell Secure Boot type definitions
879 @brief Contains CryptoCell Secure Boot type definitions.
880 @{
881 @ingroup cc_sb
882 @}
883 */
884
885/*!
886 @defgroup cc_sb_gen_defs CryptoCell Secure Boot and Secure Debug definitions and structures
887 @brief Contains CryptoCell Secure Boot and Secure Debug definitions and structures.
888
889 @{
890 @ingroup cc_sb_defs
891 @}
892 */
893
894/*
895 ##############################SRAM MAP APIs###################################
896 */
897/*!
898 @defgroup cc_sram_map CryptoCell SRAM mapping APIs
899 @brief Contains internal SRAM mapping APIs.
900
901 @{
902 @ingroup cryptocell_api
903 @}
904 */
905
906
907/*
908 ################################SRP APIs#####################################
909 */
910/*!
911 @defgroup cc_srp CryptoCell SRP APIs
912 @brief Contains CryptoCell SRP APIs.
913
914 @{
915 @ingroup cryptocell_api
916 @}
917 */
918
919/*!
920 @defgroup cc_srp_errors Specific errors of the CryptoCell SRP APIs
921 @brief Contains the CryptoCell SRP-API error definitions.
922 @{
923 @ingroup cc_srp
924 @}
925 */
926
927
928 /*
929 ################################UTIL APIs####################################
930 */
931/*!
932 @defgroup cc_utils CryptoCell utility APIs
933 @brief This contains all utility APIs.
934 @{
935 @ingroup cryptocell_api
936 @}
937 */
938
939 /*!
940 @defgroup cc_util_asset_prov CryptoCell runtime-library asset-provisioning APIs
941 @brief Contains CryptoCell runtime-library ICV and OEM asset-provisioning APIs
942 and definitions.
943
944 @{
945 @ingroup cc_utils
946 @}
947 */
948
949 /*!
950 @defgroup cc_utils_defs CryptoCell utility APIs general definitions
951 @brief Contains CryptoCell utility APIs general definitions.
952 @{
953 @ingroup cc_utils
954 @}
955 */
956
957 /*!
958 @defgroup cc_utils_key_defs CryptoCell utility general key definitions
959 @brief Contains KDF API definitions.
960 @{
961 @ingroup cc_utils_key_derivation
962 @}
963 */
964
965 /*!
966 @defgroup cc_utils_key_derivation CryptoCell utility key-derivation APIs
967 @brief Contains the CryptoCell utility key-derivation function API.
968
969 @{
970 @ingroup cc_utils
971 @}
972 */
973
974/*!
975 @defgroup cc_utils_errors Specific errors of the CryptoCell utility module APIs
976 @brief Contains utility API error definitions.
977
978 @{
979 @ingroup cc_utils
980 @}
981 */
982