crypto_desc.c 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #include "includes.h"
  2. #include "dbutil.h"
  3. #include "crypto_desc.h"
  4. #include "ltc_prng.h"
  5. #include "ecc.h"
  6. #ifdef DROPBEAR_LTC_PRNG
  7. int dropbear_ltc_prng = -1;
  8. #endif
  9. /* Register the compiled in ciphers.
  10. * This should be run before using any of the ciphers/hashes */
  11. void crypto_init() {
  12. const struct ltc_cipher_descriptor *regciphers[] = {
  13. #ifdef DROPBEAR_AES
  14. &aes_desc,
  15. #endif
  16. #ifdef DROPBEAR_BLOWFISH
  17. &blowfish_desc,
  18. #endif
  19. #ifdef DROPBEAR_TWOFISH
  20. &twofish_desc,
  21. #endif
  22. #ifdef DROPBEAR_3DES
  23. &des3_desc,
  24. #endif
  25. NULL
  26. };
  27. const struct ltc_hash_descriptor *reghashes[] = {
  28. /* we need sha1 for hostkey stuff regardless */
  29. &sha1_desc,
  30. #ifdef DROPBEAR_MD5_HMAC
  31. &md5_desc,
  32. #endif
  33. #ifdef DROPBEAR_SHA256
  34. &sha256_desc,
  35. #endif
  36. #ifdef DROPBEAR_SHA384
  37. &sha384_desc,
  38. #endif
  39. #ifdef DROPBEAR_SHA512
  40. &sha512_desc,
  41. #endif
  42. NULL
  43. };
  44. int i;
  45. for (i = 0; regciphers[i] != NULL; i++) {
  46. if (register_cipher(regciphers[i]) == -1) {
  47. dropbear_exit("Error registering crypto");
  48. }
  49. }
  50. for (i = 0; reghashes[i] != NULL; i++) {
  51. if (register_hash(reghashes[i]) == -1) {
  52. dropbear_exit("Error registering crypto");
  53. }
  54. }
  55. #ifdef DROPBEAR_LTC_PRNG
  56. dropbear_ltc_prng = register_prng(&dropbear_prng_desc);
  57. if (dropbear_ltc_prng == -1) {
  58. dropbear_exit("Error registering crypto");
  59. }
  60. #endif
  61. #ifdef DROPBEAR_ECC
  62. ltc_mp = ltm_desc;
  63. dropbear_ecc_fill_dp();
  64. #endif
  65. }