Mercurial > dropbear
comparison dss.c @ 398:59c7938af2bd
merge of '1250b8af44b62d8f4fe0f8d9fc7e7a1cc34e7e1c'
and '7f8670ac3bb975f40967f3979d09d2199b7e90c8'
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Sat, 03 Feb 2007 08:20:30 +0000 |
parents | a124aff0cbf1 |
children | b50f0107e505 76097ec1a29a |
comparison
equal
deleted
inserted
replaced
396:e7c1a77d2921 | 398:59c7938af2bd |
---|---|
88 } | 88 } |
89 | 89 |
90 key->x = m_malloc(sizeof(mp_int)); | 90 key->x = m_malloc(sizeof(mp_int)); |
91 m_mp_init(key->x); | 91 m_mp_init(key->x); |
92 ret = buf_getmpint(buf, key->x); | 92 ret = buf_getmpint(buf, key->x); |
93 if (ret == DROPBEAR_FAILURE) { | |
94 m_free(key->x); | |
95 } | |
93 | 96 |
94 return ret; | 97 return ret; |
95 } | 98 } |
96 | 99 |
97 | 100 |
336 sha512_done(&hs, proto_k); | 339 sha512_done(&hs, proto_k); |
337 | 340 |
338 /* generate k */ | 341 /* generate k */ |
339 m_mp_init(&dss_protok); | 342 m_mp_init(&dss_protok); |
340 bytes_to_mp(&dss_protok, proto_k, SHA512_HASH_SIZE); | 343 bytes_to_mp(&dss_protok, proto_k, SHA512_HASH_SIZE); |
341 mp_mod(&dss_protok, key->q, &dss_k); | 344 if (mp_mod(&dss_protok, key->q, &dss_k) != MP_OKAY) { |
345 dropbear_exit("dss error"); | |
346 } | |
342 mp_clear(&dss_protok); | 347 mp_clear(&dss_protok); |
343 m_burn(proto_k, SHA512_HASH_SIZE); | 348 m_burn(proto_k, SHA512_HASH_SIZE); |
344 #else /* DSS_PROTOK not defined*/ | 349 #else /* DSS_PROTOK not defined*/ |
345 gen_random_mpint(key->q, &dss_k); | 350 gen_random_mpint(key->q, &dss_k); |
346 #endif | 351 #endif |