Mercurial > dropbear
annotate crypto_desc.c @ 1938:77bc00dcc19f default tip main master
Bump version to 2022.82
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Fri, 01 Apr 2022 14:43:27 +0800 |
parents | 3f4cdf839a1a |
children |
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[] = { | |
1916
3f4cdf839a1a
Make SHA1 optional, implement SHA256 fingerprints
Matt Johnston <matt@ucc.asn.au>
parents:
1915
diff
changeset
|
34 #if DROPBEAR_SHA1_HMAC |
766 | 35 &sha1_desc, |
1916
3f4cdf839a1a
Make SHA1 optional, implement SHA256 fingerprints
Matt Johnston <matt@ucc.asn.au>
parents:
1915
diff
changeset
|
36 #endif |
1295
750ec4ec4cbe
Convert #ifdef to #if, other build changes
Matt Johnston <matt@ucc.asn.au>
parents:
767
diff
changeset
|
37 #if DROPBEAR_MD5_HMAC |
766 | 38 &md5_desc, |
39 #endif | |
1295
750ec4ec4cbe
Convert #ifdef to #if, other build changes
Matt Johnston <matt@ucc.asn.au>
parents:
767
diff
changeset
|
40 #if DROPBEAR_SHA256 |
766 | 41 &sha256_desc, |
42 #endif | |
1295
750ec4ec4cbe
Convert #ifdef to #if, other build changes
Matt Johnston <matt@ucc.asn.au>
parents:
767
diff
changeset
|
43 #if DROPBEAR_SHA384 |
766 | 44 &sha384_desc, |
45 #endif | |
1295
750ec4ec4cbe
Convert #ifdef to #if, other build changes
Matt Johnston <matt@ucc.asn.au>
parents:
767
diff
changeset
|
46 #if DROPBEAR_SHA512 |
766 | 47 &sha512_desc, |
48 #endif | |
49 NULL | |
1916
3f4cdf839a1a
Make SHA1 optional, implement SHA256 fingerprints
Matt Johnston <matt@ucc.asn.au>
parents:
1915
diff
changeset
|
50 }; |
766 | 51 int i; |
1916
3f4cdf839a1a
Make SHA1 optional, implement SHA256 fingerprints
Matt Johnston <matt@ucc.asn.au>
parents:
1915
diff
changeset
|
52 |
766 | 53 for (i = 0; regciphers[i] != NULL; i++) { |
54 if (register_cipher(regciphers[i]) == -1) { | |
55 dropbear_exit("Error registering crypto"); | |
56 } | |
57 } | |
58 | |
59 for (i = 0; reghashes[i] != NULL; i++) { | |
60 if (register_hash(reghashes[i]) == -1) { | |
61 dropbear_exit("Error registering crypto"); | |
62 } | |
63 } | |
64 | |
1295
750ec4ec4cbe
Convert #ifdef to #if, other build changes
Matt Johnston <matt@ucc.asn.au>
parents:
767
diff
changeset
|
65 #if DROPBEAR_LTC_PRNG |
766 | 66 dropbear_ltc_prng = register_prng(&dropbear_prng_desc); |
67 if (dropbear_ltc_prng == -1) { | |
68 dropbear_exit("Error registering crypto"); | |
69 } | |
70 #endif | |
71 | |
1748
34d9d3c022ce
Use Dropbear's random source rather than libtommath's platform
Matt Johnston <matt@ucc.asn.au>
parents:
1295
diff
changeset
|
72 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
|
73 |
1295
750ec4ec4cbe
Convert #ifdef to #if, other build changes
Matt Johnston <matt@ucc.asn.au>
parents:
767
diff
changeset
|
74 #if DROPBEAR_ECC |
766 | 75 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
|
76 dropbear_ecc_fill_dp(); |
766 | 77 #endif |
78 } | |
79 |