Mercurial > dropbear
comparison rsa.c @ 1511:5916af64acd4 fuzz
merge from main
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Sat, 17 Feb 2018 19:29:51 +0800 |
parents | 798854f62430 06d52bcb8094 |
children | b024f9695782 |
comparison
equal
deleted
inserted
replaced
1457:32f990cc96b1 | 1511:5916af64acd4 |
---|---|
36 #include "ssh.h" | 36 #include "ssh.h" |
37 #include "dbrandom.h" | 37 #include "dbrandom.h" |
38 | 38 |
39 #if DROPBEAR_RSA | 39 #if DROPBEAR_RSA |
40 | 40 |
41 static void rsa_pad_em(dropbear_rsa_key * key, | 41 static void rsa_pad_em(const dropbear_rsa_key * key, |
42 buffer *data_buf, mp_int * rsa_em); | 42 const buffer *data_buf, mp_int * rsa_em); |
43 | 43 |
44 /* Load a public rsa key from a buffer, initialising the values. | 44 /* Load a public rsa key from a buffer, initialising the values. |
45 * The key will have the same format as buf_put_rsa_key. | 45 * The key will have the same format as buf_put_rsa_key. |
46 * These should be freed with rsa_key_free. | 46 * These should be freed with rsa_key_free. |
47 * Returns DROPBEAR_SUCCESS or DROPBEAR_FAILURE */ | 47 * Returns DROPBEAR_SUCCESS or DROPBEAR_FAILURE */ |
145 * | 145 * |
146 * string "ssh-rsa" | 146 * string "ssh-rsa" |
147 * mp_int e | 147 * mp_int e |
148 * mp_int n | 148 * mp_int n |
149 */ | 149 */ |
150 void buf_put_rsa_pub_key(buffer* buf, dropbear_rsa_key *key) { | 150 void buf_put_rsa_pub_key(buffer* buf, const dropbear_rsa_key *key) { |
151 | 151 |
152 TRACE(("enter buf_put_rsa_pub_key")) | 152 TRACE(("enter buf_put_rsa_pub_key")) |
153 dropbear_assert(key != NULL); | 153 dropbear_assert(key != NULL); |
154 | 154 |
155 buf_putstring(buf, SSH_SIGNKEY_RSA, SSH_SIGNKEY_RSA_LEN); | 155 buf_putstring(buf, SSH_SIGNKEY_RSA, SSH_SIGNKEY_RSA_LEN); |
159 TRACE(("leave buf_put_rsa_pub_key")) | 159 TRACE(("leave buf_put_rsa_pub_key")) |
160 | 160 |
161 } | 161 } |
162 | 162 |
163 /* Same as buf_put_rsa_pub_key, but with the private "x" key appended */ | 163 /* Same as buf_put_rsa_pub_key, but with the private "x" key appended */ |
164 void buf_put_rsa_priv_key(buffer* buf, dropbear_rsa_key *key) { | 164 void buf_put_rsa_priv_key(buffer* buf, const dropbear_rsa_key *key) { |
165 | 165 |
166 TRACE(("enter buf_put_rsa_priv_key")) | 166 TRACE(("enter buf_put_rsa_priv_key")) |
167 | 167 |
168 dropbear_assert(key != NULL); | 168 dropbear_assert(key != NULL); |
169 buf_put_rsa_pub_key(buf, key); | 169 buf_put_rsa_pub_key(buf, key); |
183 } | 183 } |
184 | 184 |
185 #if DROPBEAR_SIGNKEY_VERIFY | 185 #if DROPBEAR_SIGNKEY_VERIFY |
186 /* Verify a signature in buf, made on data by the key given. | 186 /* Verify a signature in buf, made on data by the key given. |
187 * Returns DROPBEAR_SUCCESS or DROPBEAR_FAILURE */ | 187 * Returns DROPBEAR_SUCCESS or DROPBEAR_FAILURE */ |
188 int buf_rsa_verify(buffer * buf, dropbear_rsa_key *key, buffer *data_buf) { | 188 int buf_rsa_verify(buffer * buf, const dropbear_rsa_key *key, const buffer *data_buf) { |
189 unsigned int slen; | 189 unsigned int slen; |
190 DEF_MP_INT(rsa_s); | 190 DEF_MP_INT(rsa_s); |
191 DEF_MP_INT(rsa_mdash); | 191 DEF_MP_INT(rsa_mdash); |
192 DEF_MP_INT(rsa_em); | 192 DEF_MP_INT(rsa_em); |
193 int ret = DROPBEAR_FAILURE; | 193 int ret = DROPBEAR_FAILURE; |
238 | 238 |
239 #endif /* DROPBEAR_SIGNKEY_VERIFY */ | 239 #endif /* DROPBEAR_SIGNKEY_VERIFY */ |
240 | 240 |
241 /* Sign the data presented with key, writing the signature contents | 241 /* Sign the data presented with key, writing the signature contents |
242 * to the buffer */ | 242 * to the buffer */ |
243 void buf_put_rsa_sign(buffer* buf, dropbear_rsa_key *key, buffer *data_buf) { | 243 void buf_put_rsa_sign(buffer* buf, const dropbear_rsa_key *key, const buffer *data_buf) { |
244 unsigned int nsize, ssize; | 244 unsigned int nsize, ssize; |
245 unsigned int i; | 245 unsigned int i; |
246 DEF_MP_INT(rsa_s); | 246 DEF_MP_INT(rsa_s); |
247 DEF_MP_INT(rsa_tmp1); | 247 DEF_MP_INT(rsa_tmp1); |
248 DEF_MP_INT(rsa_tmp2); | 248 DEF_MP_INT(rsa_tmp2); |
344 * prefix is the ASN1 designator prefix, | 344 * prefix is the ASN1 designator prefix, |
345 * hex 30 21 30 09 06 05 2B 0E 03 02 1A 05 00 04 14 | 345 * hex 30 21 30 09 06 05 2B 0E 03 02 1A 05 00 04 14 |
346 * | 346 * |
347 * rsa_em must be a pointer to an initialised mp_int. | 347 * rsa_em must be a pointer to an initialised mp_int. |
348 */ | 348 */ |
349 static void rsa_pad_em(dropbear_rsa_key * key, | 349 static void rsa_pad_em(const dropbear_rsa_key * key, |
350 buffer *data_buf, mp_int * rsa_em) { | 350 const buffer *data_buf, mp_int * rsa_em) { |
351 | 351 |
352 /* ASN1 designator (including the 0x00 preceding) */ | 352 /* ASN1 designator (including the 0x00 preceding) */ |
353 const unsigned char rsa_asn1_magic[] = | 353 const unsigned char rsa_asn1_magic[] = |
354 {0x00, 0x30, 0x21, 0x30, 0x09, 0x06, 0x05, 0x2b, | 354 {0x00, 0x30, 0x21, 0x30, 0x09, 0x06, 0x05, 0x2b, |
355 0x0e, 0x03, 0x02, 0x1a, 0x05, 0x00, 0x04, 0x14}; | 355 0x0e, 0x03, 0x02, 0x1a, 0x05, 0x00, 0x04, 0x14}; |