xref: /xnu-11215.1.10/EXTERNAL_HEADERS/corecrypto/cc_impl.h (revision 8d741a5de7ff4191bf97d57b9f54c2f6d4a15585)
1 /* Copyright (c) (2021) Apple Inc. All rights reserved.
2  *
3  * corecrypto is licensed under Apple Inc.’s Internal Use License Agreement (which
4  * is contained in the License.txt file distributed with corecrypto) and only to
5  * people who accept that license. IMPORTANT:  Any license rights granted to you by
6  * Apple Inc. (if any) are limited to internal use within your organization only on
7  * devices and computers you own or control, for the sole purpose of verifying the
8  * security characteristics and correct functioning of the Apple Software.  You may
9  * not, directly or indirectly, redistribute the Apple Software or any portions thereof.
10  */
11 
12 #ifndef _CORECRYPTO_CC_IMPL_H_
13 #define _CORECRYPTO_CC_IMPL_H_
14 
15 #define CC_IMPL_LIST                                        \
16     CC_IMPL_ITEM(UNKNOWN, 0)                                \
17                                                             \
18     CC_IMPL_ITEM(SHA256_LTC, 1)                             \
19     CC_IMPL_ITEM(SHA256_VNG_ARM, 2)                         \
20     CC_IMPL_ITEM(SHA256_VNG_ARM64_NEON, 3)                  \
21     CC_IMPL_ITEM(SHA256_VNG_INTEL_SUPPLEMENTAL_SSE3, 4)     \
22     CC_IMPL_ITEM(SHA256_VNG_INTEL_AVX1, 5)                  \
23     CC_IMPL_ITEM(SHA256_VNG_INTEL_AVX2, 6)                  \
24                                                             \
25     CC_IMPL_ITEM(AES_ECB_LTC, 11)                           \
26     CC_IMPL_ITEM(AES_ECB_ARM, 12)                           \
27     CC_IMPL_ITEM(AES_ECB_INTEL_OPT, 13)                     \
28     CC_IMPL_ITEM(AES_ECB_INTEL_AESNI, 14)                   \
29     CC_IMPL_ITEM(AES_ECB_SKG, 15)                           \
30     CC_IMPL_ITEM(AES_ECB_TRNG, 16)                          \
31                                                             \
32     CC_IMPL_ITEM(AES_XTS_GENERIC, 21)                       \
33     CC_IMPL_ITEM(AES_XTS_ARM, 22)                           \
34     CC_IMPL_ITEM(AES_XTS_INTEL_OPT, 23)                     \
35     CC_IMPL_ITEM(AES_XTS_INTEL_AESNI, 24)                   \
36                                                             \
37     CC_IMPL_ITEM(SHA1_LTC, 31)                              \
38     CC_IMPL_ITEM(SHA1_VNG_ARM, 32)                          \
39     CC_IMPL_ITEM(SHA1_VNG_INTEL_SUPPLEMENTAL_SSE3, 33)      \
40     CC_IMPL_ITEM(SHA1_VNG_INTEL_AVX1, 34)                   \
41     CC_IMPL_ITEM(SHA1_VNG_INTEL_AVX2, 35)                   \
42                                                             \
43     CC_IMPL_ITEM(SHA384_LTC, 41)                            \
44     CC_IMPL_ITEM(SHA384_VNG_ARM, 42)                        \
45     CC_IMPL_ITEM(SHA384_VNG_INTEL_SUPPLEMENTAL_SSE3, 43)    \
46     CC_IMPL_ITEM(SHA384_VNG_INTEL_AVX1, 44)                 \
47     CC_IMPL_ITEM(SHA384_VNG_INTEL_AVX2, 45)                 \
48                                                             \
49     CC_IMPL_ITEM(SHA512_LTC, 51)                            \
50     CC_IMPL_ITEM(SHA512_VNG_ARM, 52)                        \
51     CC_IMPL_ITEM(SHA512_VNG_INTEL_SUPPLEMENTAL_SSE3, 53)    \
52     CC_IMPL_ITEM(SHA512_VNG_INTEL_AVX1, 54)                 \
53     CC_IMPL_ITEM(SHA512_VNG_INTEL_AVX2, 55)
54 
55 
56 #define CC_IMPL_ITEM(k, v)                      \
57     CC_IMPL_##k = v,
58 
59 typedef enum cc_impl {
60     CC_IMPL_LIST
61 } cc_impl_t;
62 
63 #undef CC_IMPL_ITEM
64 
65 const char *cc_impl_name(cc_impl_t impl);
66 
67 #endif /* _CORECRYPTO_CC_IMPL_H_ */
68