Mercurial > dropbear
annotate crypto_desc.c @ 1915:13cb8cc1b0e4
Remove twofish and remnants of blowfish
Twofish CTR was never enabled by default and CBC modes are
deprecated
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Wed, 30 Mar 2022 10:23:39 +0800 |
parents | 34d9d3c022ce |
children | 3f4cdf839a1a |
rev | line source |
---|---|
766 | 1 #include "includes.h" |
2 #include "dbutil.h" | |
3 #include "crypto_desc.h" | |
4 #include "ltc_prng.h" | |
767
e465ed10c51d
Be safer with how we handle ltc_ecc_sets[] (particularly with
Matt Johnston <matt@ucc.asn.au>
parents:
766
diff
changeset
|
5 #include "ecc.h" |
1748
34d9d3c022ce
Use Dropbear's random source rather than libtommath's platform
Matt Johnston <matt@ucc.asn.au>
parents:
1295
diff
changeset
|
6 #include "dbrandom.h" |
766 | 7 |
1295
750ec4ec4cbe
Convert #ifdef to #if, other build changes
Matt Johnston <matt@ucc.asn.au>
parents:
767
diff
changeset
|
8 #if DROPBEAR_LTC_PRNG |
766 | 9 int dropbear_ltc_prng = -1; |
10 #endif | |
11 | |
1748
34d9d3c022ce
Use Dropbear's random source rather than libtommath's platform
Matt Johnston <matt@ucc.asn.au>
parents:
1295
diff
changeset
|
12 /* Wrapper for libtommath */ |
34d9d3c022ce
Use Dropbear's random source rather than libtommath's platform
Matt Johnston <matt@ucc.asn.au>
parents:
1295
diff
changeset
|
13 static mp_err dropbear_rand_source(void* out, size_t size) { |
34d9d3c022ce
Use Dropbear's random source rather than libtommath's platform
Matt Johnston <matt@ucc.asn.au>
parents:
1295
diff
changeset
|
14 genrandom((unsigned char*)out, (unsigned int)size); |
34d9d3c022ce
Use Dropbear's random source rather than libtommath's platform
Matt Johnston <matt@ucc.asn.au>
parents:
1295
diff
changeset
|
15 return MP_OKAY; |
34d9d3c022ce
Use Dropbear's random source rather than libtommath's platform
Matt Johnston <matt@ucc.asn.au>
parents:
1295
diff
changeset
|
16 } |
34d9d3c022ce
Use Dropbear's random source rather than libtommath's platform
Matt Johnston <matt@ucc.asn.au>
parents:
1295
diff
changeset
|
17 |
766 | 18 |
19 /* Register the compiled in ciphers. | |
20 * This should be run before using any of the ciphers/hashes */ | |
21 void crypto_init() { | |
22 | |
23 const struct ltc_cipher_descriptor *regciphers[] = { | |
1295
750ec4ec4cbe
Convert #ifdef to #if, other build changes
Matt Johnston <matt@ucc.asn.au>
parents:
767
diff
changeset
|
24 #if DROPBEAR_AES |
766 | 25 &aes_desc, |
26 #endif | |
1295
750ec4ec4cbe
Convert #ifdef to #if, other build changes
Matt Johnston <matt@ucc.asn.au>
parents:
767
diff
changeset
|
27 #if DROPBEAR_3DES |
766 | 28 &des3_desc, |
29 #endif | |
30 NULL | |
31 }; | |
32 | |
33 const struct ltc_hash_descriptor *reghashes[] = { | |
34 /* we need sha1 for hostkey stuff regardless */ | |
35 &sha1_desc, | |
1295
750ec4ec4cbe
Convert #ifdef to #if, other build changes
Matt Johnston <matt@ucc.asn.au>
parents:
767
diff
changeset
|
36 #if DROPBEAR_MD5_HMAC |
766 | 37 &md5_desc, |
38 #endif | |
1295
750ec4ec4cbe
Convert #ifdef to #if, other build changes
Matt Johnston <matt@ucc.asn.au>
parents:
767
diff
changeset
|
39 #if DROPBEAR_SHA256 |
766 | 40 &sha256_desc, |
41 #endif | |
1295
750ec4ec4cbe
Convert #ifdef to #if, other build changes
Matt Johnston <matt@ucc.asn.au>
parents:
767
diff
changeset
|
42 #if DROPBEAR_SHA384 |
766 | 43 &sha384_desc, |
44 #endif | |
1295
750ec4ec4cbe
Convert #ifdef to #if, other build changes
Matt Johnston <matt@ucc.asn.au>
parents:
767
diff
changeset
|
45 #if DROPBEAR_SHA512 |
766 | 46 &sha512_desc, |
47 #endif | |
48 NULL | |
49 }; | |
50 int i; | |
51 | |
52 for (i = 0; regciphers[i] != NULL; i++) { | |
53 if (register_cipher(regciphers[i]) == -1) { | |
54 dropbear_exit("Error registering crypto"); | |
55 } | |
56 } | |
57 | |
58 for (i = 0; reghashes[i] != NULL; i++) { | |
59 if (register_hash(reghashes[i]) == -1) { | |
60 dropbear_exit("Error registering crypto"); | |
61 } | |
62 } | |
63 | |
1295
750ec4ec4cbe
Convert #ifdef to #if, other build changes
Matt Johnston <matt@ucc.asn.au>
parents:
767
diff
changeset
|
64 #if DROPBEAR_LTC_PRNG |
766 | 65 dropbear_ltc_prng = register_prng(&dropbear_prng_desc); |
66 if (dropbear_ltc_prng == -1) { | |
67 dropbear_exit("Error registering crypto"); | |
68 } | |
69 #endif | |
70 | |
1748
34d9d3c022ce
Use Dropbear's random source rather than libtommath's platform
Matt Johnston <matt@ucc.asn.au>
parents:
1295
diff
changeset
|
71 mp_rand_source(dropbear_rand_source); |
34d9d3c022ce
Use Dropbear's random source rather than libtommath's platform
Matt Johnston <matt@ucc.asn.au>
parents:
1295
diff
changeset
|
72 |
1295
750ec4ec4cbe
Convert #ifdef to #if, other build changes
Matt Johnston <matt@ucc.asn.au>
parents:
767
diff
changeset
|
73 #if DROPBEAR_ECC |
766 | 74 ltc_mp = ltm_desc; |
767
e465ed10c51d
Be safer with how we handle ltc_ecc_sets[] (particularly with
Matt Johnston <matt@ucc.asn.au>
parents:
766
diff
changeset
|
75 dropbear_ecc_fill_dp(); |
766 | 76 #endif |
77 } | |
78 |