/* Copyright (c) (2021) Apple Inc. All rights reserved.
*
* corecrypto is licensed under Apple Inc.’s Internal Use License Agreement (which
* is contained in the License.txt file distributed with corecrypto) and only to
* people who accept that license. IMPORTANT: Any license rights granted to you by
* Apple Inc. (if any) are limited to internal use within your organization only on
* devices and computers you own or control, for the sole purpose of verifying the
* security characteristics and correct functioning of the Apple Software. You may
* not, directly or indirectly, redistribute the Apple Software or any portions thereof.
*/
#ifndef _CORECRYPTO_CC_IMPL_H_
#define _CORECRYPTO_CC_IMPL_H_
#define CC_IMPL_LIST \
CC_IMPL_ITEM(UNKNOWN, 0) \
\
CC_IMPL_ITEM(SHA256_LTC, 1) \
CC_IMPL_ITEM(SHA256_VNG_ARM, 2) \
CC_IMPL_ITEM(SHA256_VNG_ARM64_NEON, 3) \
CC_IMPL_ITEM(SHA256_VNG_INTEL_SUPPLEMENTAL_SSE3, 4) \
CC_IMPL_ITEM(SHA256_VNG_INTEL_AVX1, 5) \
CC_IMPL_ITEM(SHA256_VNG_INTEL_AVX2, 6) \
\
CC_IMPL_ITEM(AES_ECB_LTC, 11) \
CC_IMPL_ITEM(AES_ECB_ARM, 12) \
CC_IMPL_ITEM(AES_ECB_INTEL_OPT, 13) \
CC_IMPL_ITEM(AES_ECB_INTEL_AESNI, 14) \
CC_IMPL_ITEM(AES_ECB_SKG, 15) \
CC_IMPL_ITEM(AES_ECB_TRNG, 16) \
\
CC_IMPL_ITEM(AES_XTS_GENERIC, 21) \
CC_IMPL_ITEM(AES_XTS_ARM, 22) \
CC_IMPL_ITEM(AES_XTS_INTEL_OPT, 23) \
CC_IMPL_ITEM(AES_XTS_INTEL_AESNI, 24) \
\
CC_IMPL_ITEM(SHA1_LTC, 31) \
CC_IMPL_ITEM(SHA1_VNG_ARM, 32) \
CC_IMPL_ITEM(SHA1_VNG_INTEL_SUPPLEMENTAL_SSE3, 33) \
CC_IMPL_ITEM(SHA1_VNG_INTEL_AVX1, 34) \
CC_IMPL_ITEM(SHA1_VNG_INTEL_AVX2, 35) \
\
CC_IMPL_ITEM(SHA384_LTC, 41) \
CC_IMPL_ITEM(SHA384_VNG_ARM, 42) \
CC_IMPL_ITEM(SHA384_VNG_INTEL_SUPPLEMENTAL_SSE3, 43) \
CC_IMPL_ITEM(SHA384_VNG_INTEL_AVX1, 44) \
CC_IMPL_ITEM(SHA384_VNG_INTEL_AVX2, 45) \
\
CC_IMPL_ITEM(SHA512_LTC, 51) \
CC_IMPL_ITEM(SHA512_VNG_ARM, 52) \
CC_IMPL_ITEM(SHA512_VNG_INTEL_SUPPLEMENTAL_SSE3, 53) \
CC_IMPL_ITEM(SHA512_VNG_INTEL_AVX1, 54) \
CC_IMPL_ITEM(SHA512_VNG_INTEL_AVX2, 55)
#define CC_IMPL_ITEM(k, v) \
CC_IMPL_##k = v,
typedef enum cc_impl {
CC_IMPL_LIST
} cc_impl_t;
#undef CC_IMPL_ITEM
const char *cc_impl_name(cc_impl_t impl);
#endif /* _CORECRYPTO_CC_IMPL_H_ */