crypt.c 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501
  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_RC4_STREAM)
  134. " RC4\n"
  135. #endif
  136. #if defined(LTC_SOBER128_STREAM)
  137. " SOBER128\n"
  138. #endif
  139. "\nHashes built-in:\n"
  140. #if defined(LTC_SHA3)
  141. " SHA3\n"
  142. #endif
  143. #if defined(LTC_SHA512)
  144. " SHA-512\n"
  145. #endif
  146. #if defined(LTC_SHA384)
  147. " SHA-384\n"
  148. #endif
  149. #if defined(LTC_SHA512_256)
  150. " SHA-512/256\n"
  151. #endif
  152. #if defined(LTC_SHA256)
  153. " SHA-256\n"
  154. #endif
  155. #if defined(LTC_SHA512_224)
  156. " SHA-512/224\n"
  157. #endif
  158. #if defined(LTC_SHA224)
  159. " SHA-224\n"
  160. #endif
  161. #if defined(LTC_TIGER)
  162. " TIGER\n"
  163. #endif
  164. #if defined(LTC_SHA1)
  165. " SHA1\n"
  166. #endif
  167. #if defined(LTC_MD5)
  168. " MD5\n"
  169. #endif
  170. #if defined(LTC_MD4)
  171. " MD4\n"
  172. #endif
  173. #if defined(LTC_MD2)
  174. " MD2\n"
  175. #endif
  176. #if defined(LTC_RIPEMD128)
  177. " RIPEMD128\n"
  178. #endif
  179. #if defined(LTC_RIPEMD160)
  180. " RIPEMD160\n"
  181. #endif
  182. #if defined(LTC_RIPEMD256)
  183. " RIPEMD256\n"
  184. #endif
  185. #if defined(LTC_RIPEMD320)
  186. " RIPEMD320\n"
  187. #endif
  188. #if defined(LTC_WHIRLPOOL)
  189. " WHIRLPOOL\n"
  190. #endif
  191. #if defined(LTC_BLAKE2S)
  192. " BLAKE2S\n"
  193. #endif
  194. #if defined(LTC_BLAKE2B)
  195. " BLAKE2B\n"
  196. #endif
  197. #if defined(LTC_CHC_HASH)
  198. " CHC_HASH\n"
  199. #endif
  200. "\nBlock Chaining Modes:\n"
  201. #if defined(LTC_CFB_MODE)
  202. " CFB\n"
  203. #endif
  204. #if defined(LTC_OFB_MODE)
  205. " OFB\n"
  206. #endif
  207. #if defined(LTC_ECB_MODE)
  208. " ECB\n"
  209. #endif
  210. #if defined(LTC_CBC_MODE)
  211. " CBC\n"
  212. #endif
  213. #if defined(LTC_CTR_MODE)
  214. " CTR\n"
  215. #endif
  216. #if defined(LTC_LRW_MODE)
  217. " LRW"
  218. #if defined(LTC_LRW_TABLES)
  219. " (tables) "
  220. #endif
  221. "\n"
  222. #endif
  223. #if defined(LTC_F8_MODE)
  224. " F8\n"
  225. #endif
  226. #if defined(LTC_XTS_MODE)
  227. " XTS\n"
  228. #endif
  229. "\nMACs:\n"
  230. #if defined(LTC_HMAC)
  231. " HMAC\n"
  232. #endif
  233. #if defined(LTC_OMAC)
  234. " OMAC\n"
  235. #endif
  236. #if defined(LTC_PMAC)
  237. " PMAC\n"
  238. #endif
  239. #if defined(LTC_PELICAN)
  240. " PELICAN\n"
  241. #endif
  242. #if defined(LTC_XCBC)
  243. " XCBC\n"
  244. #endif
  245. #if defined(LTC_F9_MODE)
  246. " F9\n"
  247. #endif
  248. #if defined(LTC_POLY1305)
  249. " POLY1305\n"
  250. #endif
  251. #if defined(LTC_BLAKE2SMAC)
  252. " BLAKE2S MAC\n"
  253. #endif
  254. #if defined(LTC_BLAKE2BMAC)
  255. " BLAKE2B MAC\n"
  256. #endif
  257. "\nENC + AUTH modes:\n"
  258. #if defined(LTC_EAX_MODE)
  259. " EAX\n"
  260. #endif
  261. #if defined(LTC_OCB_MODE)
  262. " OCB\n"
  263. #endif
  264. #if defined(LTC_OCB3_MODE)
  265. " OCB3\n"
  266. #endif
  267. #if defined(LTC_CCM_MODE)
  268. " CCM\n"
  269. #endif
  270. #if defined(LTC_GCM_MODE)
  271. " GCM"
  272. #if defined(LTC_GCM_TABLES)
  273. " (tables) "
  274. #endif
  275. #if defined(LTC_GCM_TABLES_SSE2)
  276. " (SSE2) "
  277. #endif
  278. "\n"
  279. #endif
  280. #if defined(LTC_CHACHA20POLY1305_MODE)
  281. " CHACHA20POLY1305\n"
  282. #endif
  283. "\nPRNG:\n"
  284. #if defined(LTC_YARROW)
  285. " Yarrow ("NAME_VALUE(LTC_YARROW_AES)")\n"
  286. #endif
  287. #if defined(LTC_SPRNG)
  288. " SPRNG\n"
  289. #endif
  290. #if defined(LTC_RC4)
  291. " RC4\n"
  292. #endif
  293. #if defined(LTC_CHACHA20_PRNG)
  294. " ChaCha20\n"
  295. #endif
  296. #if defined(LTC_FORTUNA)
  297. " Fortuna (" NAME_VALUE(LTC_FORTUNA_POOLS) ", " NAME_VALUE(LTC_FORTUNA_WD) ")\n"
  298. #endif
  299. #if defined(LTC_SOBER128)
  300. " SOBER128\n"
  301. #endif
  302. "\nPK Crypto:\n"
  303. #if defined(LTC_MRSA)
  304. " RSA"
  305. #if defined(LTC_RSA_BLINDING) && defined(LTC_RSA_CRT_HARDENING)
  306. " (with blinding and CRT hardening)"
  307. #elif defined(LTC_RSA_BLINDING)
  308. " (with blinding)"
  309. #elif defined(LTC_RSA_CRT_HARDENING)
  310. " (with CRT hardening)"
  311. #endif
  312. "\n"
  313. #endif
  314. #if defined(LTC_MDH)
  315. " DH\n"
  316. #endif
  317. #if defined(LTC_MECC)
  318. " ECC"
  319. #if defined(LTC_ECC_TIMING_RESISTANT)
  320. " (with blinding)"
  321. #endif
  322. "\n"
  323. #endif
  324. #if defined(LTC_MDSA)
  325. " DSA\n"
  326. #endif
  327. #if defined(LTC_MKAT)
  328. " Katja\n"
  329. #endif
  330. #if defined(LTC_PK_MAX_RETRIES)
  331. " "NAME_VALUE(LTC_PK_MAX_RETRIES)"\n"
  332. #endif
  333. "\nMPI (Math):\n"
  334. #if defined(LTC_MPI)
  335. " LTC_MPI\n"
  336. #endif
  337. #if defined(LTM_DESC)
  338. " LTM_DESC\n"
  339. #endif
  340. #if defined(TFM_DESC)
  341. " TFM_DESC\n"
  342. #endif
  343. #if defined(GMP_DESC)
  344. " GMP_DESC\n"
  345. #endif
  346. #if defined(LTC_MILLER_RABIN_REPS)
  347. " "NAME_VALUE(LTC_MILLER_RABIN_REPS)"\n"
  348. #endif
  349. "\nCompiler:\n"
  350. #if defined(_WIN64)
  351. " WIN64 platform detected.\n"
  352. #elif defined(_WIN32)
  353. " WIN32 platform detected.\n"
  354. #endif
  355. #if defined(__CYGWIN__)
  356. " CYGWIN Detected.\n"
  357. #endif
  358. #if defined(__DJGPP__)
  359. " DJGPP Detected.\n"
  360. #endif
  361. #if defined(_MSC_VER)
  362. " MSVC compiler detected.\n"
  363. #endif
  364. #if defined(__clang_version__)
  365. " Clang compiler " __clang_version__ ".\n"
  366. #elif defined(INTEL_CC)
  367. " Intel C Compiler " __VERSION__ ".\n"
  368. #elif defined(__GNUC__) /* clang and icc also define __GNUC__ */
  369. " GCC compiler " __VERSION__ ".\n"
  370. #endif
  371. #if defined(__x86_64__)
  372. " x86-64 detected.\n"
  373. #endif
  374. #if defined(LTC_PPC32)
  375. " PPC32 detected.\n"
  376. #endif
  377. "\nVarious others: "
  378. #if defined(ARGTYPE)
  379. " " NAME_VALUE(ARGTYPE) " "
  380. #endif
  381. #if defined(LTC_ADLER32)
  382. " ADLER32 "
  383. #endif
  384. #if defined(LTC_BASE64)
  385. " BASE64 "
  386. #endif
  387. #if defined(LTC_BASE64_URL)
  388. " BASE64-URL-SAFE "
  389. #endif
  390. #if defined(LTC_CRC32)
  391. " CRC32 "
  392. #endif
  393. #if defined(LTC_DER)
  394. " DER "
  395. #endif
  396. #if defined(LTC_PKCS_1)
  397. " PKCS#1 "
  398. #endif
  399. #if defined(LTC_PKCS_5)
  400. " PKCS#5 "
  401. #endif
  402. #if defined(LTC_HKDF)
  403. " HKDF "
  404. #endif
  405. #if defined(LTC_DEVRANDOM)
  406. " LTC_DEVRANDOM "
  407. #endif
  408. #if defined(LTC_TRY_URANDOM_FIRST)
  409. " LTC_TRY_URANDOM_FIRST "
  410. #endif
  411. #if defined(LTC_RNG_GET_BYTES)
  412. " LTC_RNG_GET_BYTES "
  413. #endif
  414. #if defined(LTC_RNG_MAKE_PRNG)
  415. " LTC_RNG_MAKE_PRNG "
  416. #endif
  417. #if defined(LTC_PRNG_ENABLE_LTC_RNG)
  418. " LTC_PRNG_ENABLE_LTC_RNG "
  419. #endif
  420. #if defined(LTC_HASH_HELPERS)
  421. " LTC_HASH_HELPERS "
  422. #endif
  423. #if defined(LTC_VALGRIND)
  424. " LTC_VALGRIND "
  425. #endif
  426. #if defined(LTC_TEST)
  427. " LTC_TEST "
  428. #endif
  429. #if defined(LTC_TEST_DBG)
  430. " " NAME_VALUE(LTC_TEST_DBG) " "
  431. #endif
  432. #if defined(LTC_TEST_EXT)
  433. " LTC_TEST_EXT "
  434. #endif
  435. #if defined(LTC_SMALL_CODE)
  436. " LTC_SMALL_CODE "
  437. #endif
  438. #if defined(LTC_NO_FILE)
  439. " LTC_NO_FILE "
  440. #endif
  441. #if defined(LTC_FILE_READ_BUFSIZE)
  442. " " NAME_VALUE(LTC_FILE_READ_BUFSIZE) " "
  443. #endif
  444. #if defined(LTC_FAST)
  445. " LTC_FAST "
  446. #endif
  447. #if defined(LTC_NO_FAST)
  448. " LTC_NO_FAST "
  449. #endif
  450. #if defined(LTC_NO_BSWAP)
  451. " LTC_NO_BSWAP "
  452. #endif
  453. #if defined(LTC_NO_ASM)
  454. " LTC_NO_ASM "
  455. #endif
  456. #if defined(LTC_ROx_ASM)
  457. " LTC_ROx_ASM "
  458. #if defined(LTC_NO_ROLC)
  459. " LTC_NO_ROLC "
  460. #endif
  461. #endif
  462. #if defined(LTC_NO_TEST)
  463. " LTC_NO_TEST "
  464. #endif
  465. #if defined(LTC_NO_TABLES)
  466. " LTC_NO_TABLES "
  467. #endif
  468. #if defined(LTC_PTHREAD)
  469. " LTC_PTHREAD "
  470. #endif
  471. #if defined(LTC_EASY)
  472. " LTC_EASY "
  473. #endif
  474. #if defined(LTC_MECC_ACCEL)
  475. " LTC_MECC_ACCEL "
  476. #endif
  477. #if defined(LTC_MECC_FP)
  478. " LTC_MECC_FP "
  479. #endif
  480. #if defined(LTC_ECC_SHAMIR)
  481. " LTC_ECC_SHAMIR "
  482. #endif
  483. "\n"
  484. ;
  485. /* ref: $Format:%D$ */
  486. /* git commit: $Format:%H$ */
  487. /* commit time: $Format:%ai$ */