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