1 // SPDX-License-Identifier: BSD-2-Clause 2 /* LibTomCrypt, modular cryptographic library -- Tom St Denis 3 * 4 * LibTomCrypt is a library that provides various cryptographic 5 * algorithms in a highly modular and flexible manner. 6 * 7 * The library is free for all purposes without any express 8 * guarantee it works. 9 */ 10 #include "tomcrypt_private.h" 11 12 /** 13 @file crypt.c 14 Build strings, Tom St Denis 15 */ 16 #define NAME_VALUE(s) #s"="NAME(s) 17 #define NAME(s) #s 18 19 const char *crypt_build_settings = 20 "LibTomCrypt " SCRYPT " (www.libtom.net)\n" 21 "LibTomCrypt is public domain software.\n" 22 #if defined(INCLUDE_BUILD_DATE) 23 "Built on " __DATE__ " at " __TIME__ "\n" 24 #endif 25 "\n\nEndianness: " 26 #if defined(ENDIAN_NEUTRAL) 27 "neutral/" 28 #endif 29 #if defined(ENDIAN_LITTLE) 30 "little" 31 #elif defined(ENDIAN_BIG) 32 "big" 33 #endif 34 #if defined(ENDIAN_32BITWORD) 35 " (32-bit words)\n" 36 #elif defined(ENDIAN_64BITWORD) 37 " (64-bit words)\n" 38 #else 39 " (no wordsize defined)\n" 40 #endif 41 "Clean stack: " 42 #if defined(LTC_CLEAN_STACK) 43 "enabled\n" 44 #else 45 "disabled\n" 46 #endif 47 "\nCiphers built-in:\n" 48 #if defined(LTC_BLOWFISH) 49 " Blowfish\n" 50 #endif 51 #if defined(LTC_RC2) 52 " RC2\n" 53 #endif 54 #if defined(LTC_RC5) 55 " RC5\n" 56 #endif 57 #if defined(LTC_RC6) 58 " RC6\n" 59 #endif 60 #if defined(LTC_SAFERP) 61 " Safer+\n" 62 #endif 63 #if defined(LTC_SAFER) 64 " Safer\n" 65 #endif 66 #if defined(LTC_RIJNDAEL) 67 " Rijndael\n" 68 #endif 69 #if defined(LTC_XTEA) 70 " XTEA\n" 71 #endif 72 #if defined(LTC_TWOFISH) 73 " Twofish " 74 #if defined(LTC_TWOFISH_SMALL) && defined(LTC_TWOFISH_TABLES) && defined(LTC_TWOFISH_ALL_TABLES) 75 "(small, tables, all_tables)\n" 76 #elif defined(LTC_TWOFISH_SMALL) && defined(LTC_TWOFISH_TABLES) 77 "(small, tables)\n" 78 #elif defined(LTC_TWOFISH_SMALL) && defined(LTC_TWOFISH_ALL_TABLES) 79 "(small, all_tables)\n" 80 #elif defined(LTC_TWOFISH_TABLES) && defined(LTC_TWOFISH_ALL_TABLES) 81 "(tables, all_tables)\n" 82 #elif defined(LTC_TWOFISH_SMALL) 83 "(small)\n" 84 #elif defined(LTC_TWOFISH_TABLES) 85 "(tables)\n" 86 #elif defined(LTC_TWOFISH_ALL_TABLES) 87 "(all_tables)\n" 88 #else 89 "\n" 90 #endif 91 #endif 92 #if defined(LTC_DES) 93 " DES\n" 94 #endif 95 #if defined(LTC_CAST5) 96 " CAST5\n" 97 #endif 98 #if defined(LTC_NOEKEON) 99 " Noekeon\n" 100 #endif 101 #if defined(LTC_SKIPJACK) 102 " Skipjack\n" 103 #endif 104 #if defined(LTC_KHAZAD) 105 " Khazad\n" 106 #endif 107 #if defined(LTC_ANUBIS) 108 " Anubis " 109 #endif 110 #if defined(LTC_ANUBIS_TWEAK) 111 " (tweaked)" 112 #endif 113 "\n" 114 #if defined(LTC_KSEED) 115 " KSEED\n" 116 #endif 117 #if defined(LTC_KASUMI) 118 " KASUMI\n" 119 #endif 120 #if defined(LTC_MULTI2) 121 " MULTI2\n" 122 #endif 123 #if defined(LTC_CAMELLIA) 124 " Camellia\n" 125 #endif 126 #if defined(LTC_IDEA) 127 " IDEA\n" 128 #endif 129 #if defined(LTC_SERPENT) 130 " Serpent\n" 131 #endif 132 "Stream ciphers built-in:\n" 133 #if defined(LTC_CHACHA) 134 " ChaCha\n" 135 #endif 136 #if defined(LTC_SALSA20) 137 " Salsa20\n" 138 #endif 139 #if defined(LTC_XSALSA20) 140 " XSalsa20\n" 141 #endif 142 #if defined(LTC_SOSEMANUK) 143 " Sosemanuk\n" 144 #endif 145 #if defined(LTC_RABBIT) 146 " Rabbit\n" 147 #endif 148 #if defined(LTC_RC4_STREAM) 149 " RC4\n" 150 #endif 151 #if defined(LTC_SOBER128_STREAM) 152 " SOBER128\n" 153 #endif 154 155 "\nHashes built-in:\n" 156 #if defined(LTC_SHA3) 157 " SHA3\n" 158 #endif 159 #if defined(LTC_KECCAK) 160 " KECCAK\n" 161 #endif 162 #if defined(LTC_SHA512) 163 " SHA-512\n" 164 #endif 165 #if defined(LTC_SHA384) 166 " SHA-384\n" 167 #endif 168 #if defined(LTC_SHA512_256) 169 " SHA-512/256\n" 170 #endif 171 #if defined(LTC_SHA256) 172 " SHA-256\n" 173 #endif 174 #if defined(LTC_SHA512_224) 175 " SHA-512/224\n" 176 #endif 177 #if defined(LTC_SHA224) 178 " SHA-224\n" 179 #endif 180 #if defined(LTC_TIGER) 181 " TIGER\n" 182 #endif 183 #if defined(LTC_SHA1) 184 " SHA1\n" 185 #endif 186 #if defined(LTC_MD5) 187 " MD5\n" 188 #endif 189 #if defined(LTC_MD4) 190 " MD4\n" 191 #endif 192 #if defined(LTC_MD2) 193 " MD2\n" 194 #endif 195 #if defined(LTC_RIPEMD128) 196 " RIPEMD128\n" 197 #endif 198 #if defined(LTC_RIPEMD160) 199 " RIPEMD160\n" 200 #endif 201 #if defined(LTC_RIPEMD256) 202 " RIPEMD256\n" 203 #endif 204 #if defined(LTC_RIPEMD320) 205 " RIPEMD320\n" 206 #endif 207 #if defined(LTC_WHIRLPOOL) 208 " WHIRLPOOL\n" 209 #endif 210 #if defined(LTC_BLAKE2S) 211 " BLAKE2S\n" 212 #endif 213 #if defined(LTC_BLAKE2B) 214 " BLAKE2B\n" 215 #endif 216 #if defined(LTC_CHC_HASH) 217 " CHC_HASH\n" 218 #endif 219 220 "\nBlock Chaining Modes:\n" 221 #if defined(LTC_CFB_MODE) 222 " CFB\n" 223 #endif 224 #if defined(LTC_OFB_MODE) 225 " OFB\n" 226 #endif 227 #if defined(LTC_ECB_MODE) 228 " ECB\n" 229 #endif 230 #if defined(LTC_CBC_MODE) 231 " CBC\n" 232 #endif 233 #if defined(LTC_CTR_MODE) 234 " CTR\n" 235 #endif 236 #if defined(LTC_LRW_MODE) 237 " LRW" 238 #if defined(LTC_LRW_TABLES) 239 " (tables) " 240 #endif 241 "\n" 242 #endif 243 #if defined(LTC_F8_MODE) 244 " F8\n" 245 #endif 246 #if defined(LTC_XTS_MODE) 247 " XTS\n" 248 #endif 249 250 "\nMACs:\n" 251 #if defined(LTC_HMAC) 252 " HMAC\n" 253 #endif 254 #if defined(LTC_OMAC) 255 " OMAC\n" 256 #endif 257 #if defined(LTC_PMAC) 258 " PMAC\n" 259 #endif 260 #if defined(LTC_PELICAN) 261 " PELICAN\n" 262 #endif 263 #if defined(LTC_XCBC) 264 " XCBC\n" 265 #endif 266 #if defined(LTC_F9_MODE) 267 " F9\n" 268 #endif 269 #if defined(LTC_POLY1305) 270 " POLY1305\n" 271 #endif 272 #if defined(LTC_BLAKE2SMAC) 273 " BLAKE2S MAC\n" 274 #endif 275 #if defined(LTC_BLAKE2BMAC) 276 " BLAKE2B MAC\n" 277 #endif 278 279 "\nENC + AUTH modes:\n" 280 #if defined(LTC_EAX_MODE) 281 " EAX\n" 282 #endif 283 #if defined(LTC_OCB_MODE) 284 " OCB\n" 285 #endif 286 #if defined(LTC_OCB3_MODE) 287 " OCB3\n" 288 #endif 289 #if defined(LTC_CCM_MODE) 290 " CCM\n" 291 #endif 292 #if defined(LTC_GCM_MODE) 293 " GCM" 294 #if defined(LTC_GCM_TABLES) 295 " (tables) " 296 #endif 297 #if defined(LTC_GCM_TABLES_SSE2) 298 " (SSE2) " 299 #endif 300 "\n" 301 #endif 302 #if defined(LTC_CHACHA20POLY1305_MODE) 303 " CHACHA20POLY1305\n" 304 #endif 305 306 "\nPRNG:\n" 307 #if defined(LTC_YARROW) 308 " Yarrow ("NAME_VALUE(LTC_YARROW_AES)")\n" 309 #endif 310 #if defined(LTC_SPRNG) 311 " SPRNG\n" 312 #endif 313 #if defined(LTC_RC4) 314 " RC4\n" 315 #endif 316 #if defined(LTC_CHACHA20_PRNG) 317 " ChaCha20\n" 318 #endif 319 #if defined(LTC_FORTUNA) 320 " Fortuna (" NAME_VALUE(LTC_FORTUNA_POOLS) ", " 321 #if defined(LTC_FORTUNA_RESEED_RATELIMIT_TIMED) 322 "LTC_FORTUNA_RESEED_RATELIMIT_TIMED, " 323 #else 324 "LTC_FORTUNA_RESEED_RATELIMIT_STATIC, " NAME_VALUE(LTC_FORTUNA_WD) 325 #endif 326 ")\n" 327 #endif 328 #if defined(LTC_SOBER128) 329 " SOBER128\n" 330 #endif 331 332 "\nPK Crypto:\n" 333 #if defined(LTC_MRSA) 334 " RSA" 335 #if defined(LTC_RSA_BLINDING) && defined(LTC_RSA_CRT_HARDENING) 336 " (with blinding and CRT hardening)" 337 #elif defined(LTC_RSA_BLINDING) 338 " (with blinding)" 339 #elif defined(LTC_RSA_CRT_HARDENING) 340 " (with CRT hardening)" 341 #endif 342 "\n" 343 #endif 344 #if defined(LTC_MDH) 345 " DH\n" 346 #endif 347 #if defined(LTC_MECC) 348 " ECC" 349 #if defined(LTC_ECC_TIMING_RESISTANT) 350 " (with blinding)" 351 #endif 352 "\n" 353 #endif 354 #if defined(LTC_MDSA) 355 " DSA\n" 356 #endif 357 #if defined(LTC_CURVE25519) 358 #if defined(LTC_CURVE25519) 359 " Ed25519\n" 360 #endif 361 #if defined(LTC_CURVE25519) 362 " X25519\n" 363 #endif 364 #endif 365 #if defined(LTC_PK_MAX_RETRIES) 366 " "NAME_VALUE(LTC_PK_MAX_RETRIES)"\n" 367 #endif 368 369 "\nMPI (Math):\n" 370 #if defined(LTC_MPI) 371 " LTC_MPI\n" 372 #endif 373 #if defined(LTM_DESC) 374 " LTM_DESC\n" 375 #endif 376 #if defined(TFM_DESC) 377 " TFM_DESC\n" 378 #endif 379 #if defined(GMP_DESC) 380 " GMP_DESC\n" 381 #endif 382 #if defined(LTC_MILLER_RABIN_REPS) 383 " "NAME_VALUE(LTC_MILLER_RABIN_REPS)"\n" 384 #endif 385 386 "\nCompiler:\n" 387 #if defined(_WIN64) 388 " WIN64 platform detected.\n" 389 #elif defined(_WIN32) 390 " WIN32 platform detected.\n" 391 #endif 392 #if defined(__CYGWIN__) 393 " CYGWIN Detected.\n" 394 #endif 395 #if defined(__DJGPP__) 396 " DJGPP Detected.\n" 397 #endif 398 #if defined(_MSC_VER) 399 " MSVC compiler detected.\n" 400 #endif 401 #if defined(__clang_version__) 402 " Clang compiler " __clang_version__ ".\n" 403 #elif defined(INTEL_CC) 404 " Intel C Compiler " __VERSION__ ".\n" 405 #elif defined(__GNUC__) /* clang and icc also define __GNUC__ */ 406 " GCC compiler " __VERSION__ ".\n" 407 #endif 408 409 #if defined(__x86_64__) 410 " x86-64 detected.\n" 411 #endif 412 #if defined(LTC_PPC32) 413 " PPC32 detected.\n" 414 #endif 415 416 "\nVarious others: " 417 #if defined(ARGTYPE) 418 " " NAME_VALUE(ARGTYPE) " " 419 #endif 420 #if defined(LTC_ADLER32) 421 " ADLER32 " 422 #endif 423 #if defined(LTC_BASE64) 424 " BASE64 " 425 #endif 426 #if defined(LTC_BASE64_URL) 427 " BASE64-URL-SAFE " 428 #endif 429 #if defined(LTC_BASE32) 430 " BASE32 " 431 #endif 432 #if defined(LTC_BASE16) 433 " BASE16 " 434 #endif 435 #if defined(LTC_CRC32) 436 " CRC32 " 437 #endif 438 #if defined(LTC_DER) 439 " DER " 440 " " NAME_VALUE(LTC_DER_MAX_RECURSION) " " 441 #endif 442 #if defined(LTC_PKCS_1) 443 " PKCS#1 " 444 #endif 445 #if defined(LTC_PKCS_5) 446 " PKCS#5 " 447 #endif 448 #if defined(LTC_PKCS_8) 449 " PKCS#8 " 450 #endif 451 #if defined(LTC_PKCS_12) 452 " PKCS#12 " 453 #endif 454 #if defined(LTC_PADDING) 455 " PADDING " 456 #endif 457 #if defined(LTC_HKDF) 458 " HKDF " 459 #endif 460 #if defined(LTC_PBES) 461 " PBES1 " 462 " PBES2 " 463 #endif 464 #if defined(LTC_SSH) 465 " SSH " 466 #endif 467 #if defined(LTC_DEVRANDOM) 468 " LTC_DEVRANDOM " 469 #endif 470 #if defined(LTC_TRY_URANDOM_FIRST) 471 " LTC_TRY_URANDOM_FIRST " 472 #endif 473 #if defined(LTC_RNG_GET_BYTES) 474 " LTC_RNG_GET_BYTES " 475 #endif 476 #if defined(LTC_RNG_MAKE_PRNG) 477 " LTC_RNG_MAKE_PRNG " 478 #endif 479 #if defined(LTC_PRNG_ENABLE_LTC_RNG) 480 " LTC_PRNG_ENABLE_LTC_RNG " 481 #endif 482 #if defined(LTC_HASH_HELPERS) 483 " LTC_HASH_HELPERS " 484 #endif 485 #if defined(LTC_VALGRIND) 486 " LTC_VALGRIND " 487 #endif 488 #if defined(LTC_TEST) 489 " LTC_TEST " 490 #endif 491 #if defined(LTC_TEST_DBG) 492 " " NAME_VALUE(LTC_TEST_DBG) " " 493 #endif 494 #if defined(LTC_TEST_EXT) 495 " LTC_TEST_EXT " 496 #endif 497 #if defined(LTC_SMALL_CODE) 498 " LTC_SMALL_CODE " 499 #endif 500 #if defined(LTC_NO_FILE) 501 " LTC_NO_FILE " 502 #endif 503 #if defined(LTC_FILE_READ_BUFSIZE) 504 " " NAME_VALUE(LTC_FILE_READ_BUFSIZE) " " 505 #endif 506 #if defined(LTC_FAST) 507 " LTC_FAST " 508 #endif 509 #if defined(LTC_NO_FAST) 510 " LTC_NO_FAST " 511 #endif 512 #if defined(LTC_NO_BSWAP) 513 " LTC_NO_BSWAP " 514 #endif 515 #if defined(LTC_NO_ASM) 516 " LTC_NO_ASM " 517 #endif 518 #if defined(LTC_ROx_ASM) 519 " LTC_ROx_ASM " 520 #if defined(LTC_NO_ROLC) 521 " LTC_NO_ROLC " 522 #endif 523 #endif 524 #if defined(LTC_NO_TEST) 525 " LTC_NO_TEST " 526 #endif 527 #if defined(LTC_NO_TABLES) 528 " LTC_NO_TABLES " 529 #endif 530 #if defined(LTC_PTHREAD) 531 " LTC_PTHREAD " 532 #endif 533 #if defined(LTC_EASY) 534 " LTC_EASY " 535 #endif 536 #if defined(LTC_MECC_ACCEL) 537 " LTC_MECC_ACCEL " 538 #endif 539 #if defined(LTC_MECC_FP) 540 " LTC_MECC_FP " 541 #endif 542 #if defined(LTC_ECC_SHAMIR) 543 " LTC_ECC_SHAMIR " 544 #endif 545 #if defined(LTC_CLOCK_GETTIME) 546 " LTC_CLOCK_GETTIME " 547 #endif 548 "\n" 549 ; 550 551 552 /* ref: $Format:%D$ */ 553 /* git commit: $Format:%H$ */ 554 /* commit time: $Format:%ai$ */ 555