summaryrefslogtreecommitdiff
path: root/src/crypto_desc.c
diff options
context:
space:
mode:
authorTJ Kolev <tjkolev@gmail.com>2023-02-02 15:10:37 -0600
committerTJ Kolev <tjkolev@gmail.com>2023-02-02 15:10:37 -0600
commitfdcadd906c21dcf2c09a965a6046f7bf9de84a69 (patch)
treef3ca129cb8f9d058a963fafadb707fee26b8a872 /src/crypto_desc.c
parent9defeb477aebf0eb575885eb1fd4a4330ce52531 (diff)
downloaddropbear-fdcadd906c21dcf2c09a965a6046f7bf9de84a69.tar.gz
Dropbear SSH - file structure reorg
Separating source and binaries. * Dropbear source files (.c, .h) were moved under a new ./src folder. * Object binaries get generated into the ./obj folder. This helps to keep less cluttered project. tjk :)
Diffstat (limited to 'src/crypto_desc.c')
-rw-r--r--src/crypto_desc.c76
1 files changed, 76 insertions, 0 deletions
diff --git a/src/crypto_desc.c b/src/crypto_desc.c
new file mode 100644
index 0000000..d0dcc82
--- /dev/null
+++ b/src/crypto_desc.c
@@ -0,0 +1,76 @@
+#include "includes.h"
+#include "dbutil.h"
+#include "crypto_desc.h"
+#include "ltc_prng.h"
+#include "ecc.h"
+#include "dbrandom.h"
+
+#if DROPBEAR_LTC_PRNG
+ int dropbear_ltc_prng = -1;
+#endif
+
+/* Wrapper for libtommath */
+static mp_err dropbear_rand_source(void* out, size_t size) {
+ genrandom((unsigned char*)out, (unsigned int)size);
+ return MP_OKAY;
+}
+
+
+/* Register the compiled in ciphers.
+ * This should be run before using any of the ciphers/hashes */
+void crypto_init() {
+
+ const struct ltc_cipher_descriptor *regciphers[] = {
+#if DROPBEAR_AES
+ &aes_desc,
+#endif
+#if DROPBEAR_3DES
+ &des3_desc,
+#endif
+ NULL
+ };
+
+ const struct ltc_hash_descriptor *reghashes[] = {
+#if DROPBEAR_SHA1_HMAC
+ &sha1_desc,
+#endif
+#if DROPBEAR_SHA256
+ &sha256_desc,
+#endif
+#if DROPBEAR_SHA384
+ &sha384_desc,
+#endif
+#if DROPBEAR_SHA512
+ &sha512_desc,
+#endif
+ NULL
+ };
+ int i;
+
+ for (i = 0; regciphers[i] != NULL; i++) {
+ if (register_cipher(regciphers[i]) == -1) {
+ dropbear_exit("Error registering crypto");
+ }
+ }
+
+ for (i = 0; reghashes[i] != NULL; i++) {
+ if (register_hash(reghashes[i]) == -1) {
+ dropbear_exit("Error registering crypto");
+ }
+ }
+
+#if DROPBEAR_LTC_PRNG
+ dropbear_ltc_prng = register_prng(&dropbear_prng_desc);
+ if (dropbear_ltc_prng == -1) {
+ dropbear_exit("Error registering crypto");
+ }
+#endif
+
+ mp_rand_source(dropbear_rand_source);
+
+#if DROPBEAR_ECC
+ ltc_mp = ltm_desc;
+ dropbear_ecc_fill_dp();
+#endif
+}
+