587 lines
11 KiB
C
587 lines
11 KiB
C
/* LibTomCrypt, modular cryptographic library -- Tom St Denis */
|
|
/* SPDX-License-Identifier: Unlicense */
|
|
#include "tomcrypt_private.h"
|
|
|
|
/**
|
|
@file crypt.c
|
|
Build strings, Tom St Denis
|
|
*/
|
|
#define NAME_VALUE(s) #s"="NAME(s)
|
|
#define NAME(s) #s
|
|
|
|
const char *crypt_build_settings =
|
|
"LibTomCrypt " SCRYPT " (www.libtom.net)\n"
|
|
"LibTomCrypt is public domain software.\n"
|
|
#if defined(INCLUDE_BUILD_DATE)
|
|
"Built on " __DATE__ " at " __TIME__ "\n"
|
|
#endif
|
|
"\n\nEndianness: "
|
|
#if defined(ENDIAN_NEUTRAL)
|
|
"neutral/"
|
|
#endif
|
|
#if defined(ENDIAN_LITTLE)
|
|
"little"
|
|
#elif defined(ENDIAN_BIG)
|
|
"big"
|
|
#endif
|
|
#if defined(ENDIAN_32BITWORD)
|
|
" (32-bit words)\n"
|
|
#elif defined(ENDIAN_64BITWORD)
|
|
" (64-bit words)\n"
|
|
#else
|
|
" (no wordsize defined)\n"
|
|
#endif
|
|
"Clean stack: "
|
|
#if defined(LTC_CLEAN_STACK)
|
|
"enabled\n"
|
|
#else
|
|
"disabled\n"
|
|
#endif
|
|
"\nCiphers built-in:\n"
|
|
#if defined(LTC_BLOWFISH)
|
|
" Blowfish\n"
|
|
#endif
|
|
#if defined(LTC_RC2)
|
|
" RC2\n"
|
|
#endif
|
|
#if defined(LTC_RC5)
|
|
" RC5\n"
|
|
#endif
|
|
#if defined(LTC_RC6)
|
|
" RC6\n"
|
|
#endif
|
|
#if defined(LTC_SAFERP)
|
|
" Safer+\n"
|
|
#endif
|
|
#if defined(LTC_SAFER)
|
|
" Safer\n"
|
|
#endif
|
|
#if defined(LTC_RIJNDAEL)
|
|
" Rijndael\n"
|
|
#endif
|
|
#if defined(LTC_XTEA)
|
|
" XTEA\n"
|
|
#endif
|
|
#if defined(LTC_TWOFISH)
|
|
" Twofish "
|
|
#if defined(LTC_TWOFISH_SMALL) && defined(LTC_TWOFISH_TABLES) && defined(LTC_TWOFISH_ALL_TABLES)
|
|
"(small, tables, all_tables)\n"
|
|
#elif defined(LTC_TWOFISH_SMALL) && defined(LTC_TWOFISH_TABLES)
|
|
"(small, tables)\n"
|
|
#elif defined(LTC_TWOFISH_SMALL) && defined(LTC_TWOFISH_ALL_TABLES)
|
|
"(small, all_tables)\n"
|
|
#elif defined(LTC_TWOFISH_TABLES) && defined(LTC_TWOFISH_ALL_TABLES)
|
|
"(tables, all_tables)\n"
|
|
#elif defined(LTC_TWOFISH_SMALL)
|
|
"(small)\n"
|
|
#elif defined(LTC_TWOFISH_TABLES)
|
|
"(tables)\n"
|
|
#elif defined(LTC_TWOFISH_ALL_TABLES)
|
|
"(all_tables)\n"
|
|
#else
|
|
"\n"
|
|
#endif
|
|
#endif
|
|
#if defined(LTC_DES)
|
|
" DES\n"
|
|
" DES-X\n"
|
|
" 3DES\n"
|
|
#endif
|
|
#if defined(LTC_SM4)
|
|
" SM4\n"
|
|
#endif
|
|
#if defined(LTC_CAST5)
|
|
" CAST5\n"
|
|
#endif
|
|
#if defined(LTC_NOEKEON)
|
|
" Noekeon\n"
|
|
#endif
|
|
#if defined(LTC_SKIPJACK)
|
|
" Skipjack\n"
|
|
#endif
|
|
#if defined(LTC_KHAZAD)
|
|
" Khazad\n"
|
|
#endif
|
|
#if defined(LTC_ANUBIS)
|
|
" Anubis "
|
|
#endif
|
|
#if defined(LTC_ANUBIS_TWEAK)
|
|
" (tweaked)"
|
|
#endif
|
|
"\n"
|
|
#if defined(LTC_KSEED)
|
|
" KSEED\n"
|
|
#endif
|
|
#if defined(LTC_KASUMI)
|
|
" KASUMI\n"
|
|
#endif
|
|
#if defined(LTC_MULTI2)
|
|
" MULTI2\n"
|
|
#endif
|
|
#if defined(LTC_CAMELLIA)
|
|
" Camellia\n"
|
|
#endif
|
|
#if defined(LTC_IDEA)
|
|
" IDEA\n"
|
|
#endif
|
|
#if defined(LTC_SERPENT)
|
|
" Serpent\n"
|
|
#endif
|
|
#if defined(LTC_TEA)
|
|
" TEA\n"
|
|
#endif
|
|
"Stream ciphers built-in:\n"
|
|
#if defined(LTC_CHACHA)
|
|
" ChaCha\n"
|
|
#endif
|
|
#if defined(LTC_SALSA20)
|
|
" Salsa20\n"
|
|
#endif
|
|
#if defined(LTC_XSALSA20)
|
|
" XSalsa20\n"
|
|
#endif
|
|
#if defined(LTC_SOSEMANUK)
|
|
" Sosemanuk\n"
|
|
#endif
|
|
#if defined(LTC_RABBIT)
|
|
" Rabbit\n"
|
|
#endif
|
|
#if defined(LTC_RC4_STREAM)
|
|
" RC4\n"
|
|
#endif
|
|
#if defined(LTC_SOBER128_STREAM)
|
|
" SOBER128\n"
|
|
#endif
|
|
|
|
"\nHashes built-in:\n"
|
|
#if defined(LTC_SHA3)
|
|
" SHA3\n"
|
|
#endif
|
|
#if defined(LTC_KECCAK)
|
|
" KECCAK\n"
|
|
#endif
|
|
#if defined(LTC_SHA512)
|
|
" SHA-512\n"
|
|
#endif
|
|
#if defined(LTC_SHA384)
|
|
" SHA-384\n"
|
|
#endif
|
|
#if defined(LTC_SHA512_256)
|
|
" SHA-512/256\n"
|
|
#endif
|
|
#if defined(LTC_SHA256)
|
|
" SHA-256\n"
|
|
#endif
|
|
#if defined(LTC_SHA512_224)
|
|
" SHA-512/224\n"
|
|
#endif
|
|
#if defined(LTC_SHA224)
|
|
" SHA-224\n"
|
|
#endif
|
|
#if defined(LTC_TIGER)
|
|
" TIGER\n"
|
|
#endif
|
|
#if defined(LTC_SHA1)
|
|
" SHA1\n"
|
|
#endif
|
|
#if defined(LTC_MD5)
|
|
" MD5\n"
|
|
#endif
|
|
#if defined(LTC_MD4)
|
|
" MD4\n"
|
|
#endif
|
|
#if defined(LTC_MD2)
|
|
" MD2\n"
|
|
#endif
|
|
#if defined(LTC_RIPEMD128)
|
|
" RIPEMD128\n"
|
|
#endif
|
|
#if defined(LTC_RIPEMD160)
|
|
" RIPEMD160\n"
|
|
#endif
|
|
#if defined(LTC_RIPEMD256)
|
|
" RIPEMD256\n"
|
|
#endif
|
|
#if defined(LTC_RIPEMD320)
|
|
" RIPEMD320\n"
|
|
#endif
|
|
#if defined(LTC_WHIRLPOOL)
|
|
" WHIRLPOOL\n"
|
|
#endif
|
|
#if defined(LTC_BLAKE2S)
|
|
" BLAKE2S\n"
|
|
#endif
|
|
#if defined(LTC_BLAKE2B)
|
|
" BLAKE2B\n"
|
|
#endif
|
|
#if defined(LTC_CHC_HASH)
|
|
" CHC_HASH\n"
|
|
#endif
|
|
|
|
"\nBlock Chaining Modes:\n"
|
|
#if defined(LTC_CFB_MODE)
|
|
" CFB\n"
|
|
#endif
|
|
#if defined(LTC_OFB_MODE)
|
|
" OFB\n"
|
|
#endif
|
|
#if defined(LTC_ECB_MODE)
|
|
" ECB\n"
|
|
#endif
|
|
#if defined(LTC_CBC_MODE)
|
|
" CBC\n"
|
|
#endif
|
|
#if defined(LTC_CTR_MODE)
|
|
" CTR\n"
|
|
#endif
|
|
#if defined(LTC_LRW_MODE)
|
|
" LRW"
|
|
#if defined(LTC_LRW_TABLES)
|
|
" (tables) "
|
|
#endif
|
|
"\n"
|
|
#endif
|
|
#if defined(LTC_F8_MODE)
|
|
" F8\n"
|
|
#endif
|
|
#if defined(LTC_XTS_MODE)
|
|
" XTS\n"
|
|
#endif
|
|
|
|
"\nMACs:\n"
|
|
#if defined(LTC_HMAC)
|
|
" HMAC\n"
|
|
#endif
|
|
#if defined(LTC_OMAC)
|
|
" OMAC\n"
|
|
#endif
|
|
#if defined(LTC_PMAC)
|
|
" PMAC\n"
|
|
#endif
|
|
#if defined(LTC_PELICAN)
|
|
" PELICAN\n"
|
|
#endif
|
|
#if defined(LTC_XCBC)
|
|
" XCBC\n"
|
|
#endif
|
|
#if defined(LTC_F9_MODE)
|
|
" F9\n"
|
|
#endif
|
|
#if defined(LTC_POLY1305)
|
|
" POLY1305\n"
|
|
#endif
|
|
#if defined(LTC_BLAKE2SMAC)
|
|
" BLAKE2S MAC\n"
|
|
#endif
|
|
#if defined(LTC_BLAKE2BMAC)
|
|
" BLAKE2B MAC\n"
|
|
#endif
|
|
|
|
"\nENC + AUTH modes:\n"
|
|
#if defined(LTC_EAX_MODE)
|
|
" EAX\n"
|
|
#endif
|
|
#if defined(LTC_OCB_MODE)
|
|
" OCB\n"
|
|
#endif
|
|
#if defined(LTC_OCB3_MODE)
|
|
" OCB3\n"
|
|
#endif
|
|
#if defined(LTC_CCM_MODE)
|
|
" CCM\n"
|
|
#endif
|
|
#if defined(LTC_GCM_MODE)
|
|
" GCM"
|
|
#if defined(LTC_GCM_TABLES)
|
|
" (tables) "
|
|
#endif
|
|
#if defined(LTC_GCM_TABLES_SSE2)
|
|
" (SSE2) "
|
|
#endif
|
|
"\n"
|
|
#endif
|
|
#if defined(LTC_CHACHA20POLY1305_MODE)
|
|
" CHACHA20POLY1305\n"
|
|
#endif
|
|
#if defined(LTC_SIV_MODE)
|
|
" SIV\n"
|
|
#endif
|
|
|
|
"\nPRNG:\n"
|
|
#if defined(LTC_YARROW)
|
|
" Yarrow ("NAME_VALUE(LTC_YARROW_AES)")\n"
|
|
#endif
|
|
#if defined(LTC_SPRNG)
|
|
" SPRNG\n"
|
|
#endif
|
|
#if defined(LTC_RC4)
|
|
" RC4\n"
|
|
#endif
|
|
#if defined(LTC_CHACHA20_PRNG)
|
|
" ChaCha20\n"
|
|
#endif
|
|
#if defined(LTC_FORTUNA)
|
|
" Fortuna (" NAME_VALUE(LTC_FORTUNA_POOLS) ", "
|
|
#if defined(LTC_FORTUNA_RESEED_RATELIMIT_TIMED)
|
|
"LTC_FORTUNA_RESEED_RATELIMIT_TIMED"
|
|
#else
|
|
"LTC_FORTUNA_RESEED_RATELIMIT_STATIC, " NAME_VALUE(LTC_FORTUNA_WD)
|
|
#endif
|
|
#if defined(LTC_FORTUNA_USE_ENCRYPT_ONLY)
|
|
", LTC_FORTUNA_USE_ENCRYPT_ONLY"
|
|
#endif
|
|
")\n"
|
|
#endif
|
|
#if defined(LTC_SOBER128)
|
|
" SOBER128\n"
|
|
#endif
|
|
#if defined(LTC_WIN32_BCRYPT)
|
|
" WIN32_BCRYPT\n"
|
|
#endif
|
|
|
|
"\nPK Crypto:\n"
|
|
#if defined(LTC_MRSA)
|
|
" RSA"
|
|
#if defined(LTC_RSA_BLINDING) && defined(LTC_RSA_CRT_HARDENING)
|
|
" (with blinding and CRT hardening)"
|
|
#elif defined(LTC_RSA_BLINDING)
|
|
" (with blinding)"
|
|
#elif defined(LTC_RSA_CRT_HARDENING)
|
|
" (with CRT hardening)"
|
|
#endif
|
|
"\n"
|
|
#endif
|
|
#if defined(LTC_MDH)
|
|
" DH\n"
|
|
#endif
|
|
#if defined(LTC_MECC)
|
|
" ECC"
|
|
#if defined(LTC_ECC_TIMING_RESISTANT)
|
|
" (with blinding)"
|
|
#endif
|
|
"\n"
|
|
#endif
|
|
#if defined(LTC_MDSA)
|
|
" DSA\n"
|
|
#endif
|
|
#if defined(LTC_CURVE25519)
|
|
#if defined(LTC_CURVE25519)
|
|
" Ed25519\n"
|
|
#endif
|
|
#if defined(LTC_CURVE25519)
|
|
" X25519\n"
|
|
#endif
|
|
#endif
|
|
#if defined(LTC_PK_MAX_RETRIES)
|
|
" "NAME_VALUE(LTC_PK_MAX_RETRIES)"\n"
|
|
#endif
|
|
|
|
"\nMPI (Math):\n"
|
|
#if defined(LTC_MPI)
|
|
" LTC_MPI\n"
|
|
#endif
|
|
#if defined(LTM_DESC)
|
|
" LTM_DESC\n"
|
|
#endif
|
|
#if defined(TFM_DESC)
|
|
" TFM_DESC\n"
|
|
#endif
|
|
#if defined(GMP_DESC)
|
|
" GMP_DESC\n"
|
|
#endif
|
|
#if defined(LTC_MILLER_RABIN_REPS)
|
|
" "NAME_VALUE(LTC_MILLER_RABIN_REPS)"\n"
|
|
#endif
|
|
|
|
"\nCompiler:\n"
|
|
#if defined(_WIN64)
|
|
" WIN64 platform detected.\n"
|
|
#elif defined(_WIN32)
|
|
" WIN32 platform detected.\n"
|
|
#endif
|
|
#if defined(__CYGWIN__)
|
|
" CYGWIN Detected.\n"
|
|
#endif
|
|
#if defined(__DJGPP__)
|
|
" DJGPP Detected.\n"
|
|
#endif
|
|
#if defined(_MSC_VER)
|
|
" MSVC compiler detected.\n"
|
|
#endif
|
|
#if defined(__clang_version__)
|
|
" Clang compiler " __clang_version__ ".\n"
|
|
#elif defined(INTEL_CC)
|
|
" Intel C Compiler " __VERSION__ ".\n"
|
|
#elif defined(__GNUC__) /* clang and icc also define __GNUC__ */
|
|
" GCC compiler " __VERSION__ ".\n"
|
|
#endif
|
|
|
|
#if defined(__x86_64__)
|
|
" x86-64 detected.\n"
|
|
#endif
|
|
#if defined(LTC_PPC32)
|
|
" PPC32 detected.\n"
|
|
#endif
|
|
|
|
"\nVarious others: "
|
|
#if defined(ARGTYPE)
|
|
" " NAME_VALUE(ARGTYPE) " "
|
|
#endif
|
|
#if defined(LTC_ADLER32)
|
|
" ADLER32 "
|
|
#endif
|
|
#if defined(LTC_AES_NI)
|
|
" AES-NI "
|
|
#endif
|
|
#if defined(LTC_BASE64)
|
|
" BASE64 "
|
|
#endif
|
|
#if defined(LTC_BASE64_URL)
|
|
" BASE64-URL-SAFE "
|
|
#endif
|
|
#if defined(LTC_BASE32)
|
|
" BASE32 "
|
|
#endif
|
|
#if defined(LTC_BASE16)
|
|
" BASE16 "
|
|
#endif
|
|
#if defined(LTC_BCRYPT)
|
|
" BCRYPT "
|
|
" " NAME_VALUE(LTC_BCRYPT_DEFAULT_ROUNDS) " "
|
|
#endif
|
|
#if defined(LTC_CRC32)
|
|
" CRC32 "
|
|
#endif
|
|
#if defined(LTC_DER)
|
|
" DER "
|
|
" " NAME_VALUE(LTC_DER_MAX_RECURSION) " "
|
|
#endif
|
|
#if defined(LTC_PKCS_1)
|
|
" PKCS#1 "
|
|
#endif
|
|
#if defined(LTC_PKCS_5)
|
|
" PKCS#5 "
|
|
#endif
|
|
#if defined(LTC_PKCS_8)
|
|
" PKCS#8 "
|
|
#endif
|
|
#if defined(LTC_PKCS_12)
|
|
" PKCS#12 "
|
|
#endif
|
|
#if defined(LTC_PADDING)
|
|
" PADDING "
|
|
#endif
|
|
#if defined(LTC_HKDF)
|
|
" HKDF "
|
|
#endif
|
|
#if defined(LTC_PBES)
|
|
" PBES1 "
|
|
" PBES2 "
|
|
#endif
|
|
#if defined(LTC_PEM)
|
|
" PEM "
|
|
" " NAME_VALUE(LTC_PEM_DECODE_BUFSZ) " "
|
|
" " NAME_VALUE(LTC_PEM_READ_BUFSIZE) " "
|
|
#endif
|
|
#if defined(LTC_SSH)
|
|
" SSH "
|
|
#endif
|
|
#if defined(LTC_PEM_SSH)
|
|
" OpenSSH-PEM "
|
|
#endif
|
|
#if defined(LTC_DEVRANDOM)
|
|
" LTC_DEVRANDOM "
|
|
#endif
|
|
#if defined(LTC_TRY_URANDOM_FIRST)
|
|
" LTC_TRY_URANDOM_FIRST "
|
|
#endif
|
|
#if defined(LTC_RNG_GET_BYTES)
|
|
" LTC_RNG_GET_BYTES "
|
|
#endif
|
|
#if defined(LTC_RNG_MAKE_PRNG)
|
|
" LTC_RNG_MAKE_PRNG "
|
|
#endif
|
|
#if defined(LTC_PRNG_ENABLE_LTC_RNG)
|
|
" LTC_PRNG_ENABLE_LTC_RNG "
|
|
#endif
|
|
#if defined(LTC_HASH_HELPERS)
|
|
" LTC_HASH_HELPERS "
|
|
#endif
|
|
#if defined(LTC_VALGRIND)
|
|
" LTC_VALGRIND "
|
|
#endif
|
|
#if defined(LTC_TEST)
|
|
" LTC_TEST "
|
|
#endif
|
|
#if defined(LTC_TEST_DBG)
|
|
" " NAME_VALUE(LTC_TEST_DBG) " "
|
|
#endif
|
|
#if defined(LTC_TEST_EXT)
|
|
" LTC_TEST_EXT "
|
|
#endif
|
|
#if defined(LTC_SMALL_CODE)
|
|
" LTC_SMALL_CODE "
|
|
#endif
|
|
#if defined(LTC_NO_FILE)
|
|
" LTC_NO_FILE "
|
|
#endif
|
|
#if defined(LTC_FILE_READ_BUFSIZE)
|
|
" " NAME_VALUE(LTC_FILE_READ_BUFSIZE) " "
|
|
#endif
|
|
#if defined(LTC_FAST)
|
|
" LTC_FAST "
|
|
#endif
|
|
#if defined(LTC_NO_FAST)
|
|
" LTC_NO_FAST "
|
|
#endif
|
|
#if defined(LTC_NO_BSWAP)
|
|
" LTC_NO_BSWAP "
|
|
#endif
|
|
#if defined(LTC_NO_ASM)
|
|
" LTC_NO_ASM "
|
|
#endif
|
|
#if defined(LTC_ROx_BUILTIN)
|
|
" LTC_ROx_BUILTIN "
|
|
#elif defined(LTC_ROx_ASM)
|
|
" LTC_ROx_ASM "
|
|
#if defined(LTC_NO_ROLC)
|
|
" LTC_NO_ROLC "
|
|
#endif
|
|
#endif
|
|
#if defined(LTC_HAVE_ROTATE_BUILTIN)
|
|
" LTC_HAVE_ROTATE_BUILTIN "
|
|
#endif
|
|
#if defined(LTC_HAVE_CLZL_BUILTIN)
|
|
" LTC_HAVE_CLZL_BUILTIN "
|
|
#endif
|
|
#if defined(LTC_HAVE_CTZL_BUILTIN)
|
|
" LTC_HAVE_CTZL_BUILTIN "
|
|
#endif
|
|
#if defined(LTC_NO_TEST)
|
|
" LTC_NO_TEST "
|
|
#endif
|
|
#if defined(LTC_NO_TABLES)
|
|
" LTC_NO_TABLES "
|
|
#endif
|
|
#if defined(LTC_PTHREAD)
|
|
" LTC_PTHREAD "
|
|
#endif
|
|
#if defined(LTC_EASY)
|
|
" LTC_EASY "
|
|
#endif
|
|
#if defined(LTC_MECC_ACCEL)
|
|
" LTC_MECC_ACCEL "
|
|
#endif
|
|
#if defined(LTC_MECC_FP)
|
|
" LTC_MECC_FP "
|
|
#endif
|
|
#if defined(LTC_ECC_SHAMIR)
|
|
" LTC_ECC_SHAMIR "
|
|
#endif
|
|
#if defined(LTC_CLOCK_GETTIME)
|
|
" LTC_CLOCK_GETTIME "
|
|
#endif
|
|
"\n"
|
|
;
|
|
|