crypt.c 9.5 KB

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