summaryrefslogtreecommitdiff
path: root/gendss.c
diff options
context:
space:
mode:
Diffstat (limited to 'gendss.c')
-rw-r--r--gendss.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/gendss.c b/gendss.c
index 5abb4d8..2785aec 100644
--- a/gendss.c
+++ b/gendss.c
@@ -47,19 +47,16 @@ dropbear_dss_key * gen_dss_priv_key(unsigned int size) {
dropbear_dss_key *key;
+ if (size != 1024) {
+ dropbear_exit("DSS keys have a fixed size of 1024 bits");
+ }
+
key = m_malloc(sizeof(*key));
- key->p = (mp_int*)m_malloc(sizeof(mp_int));
- key->q = (mp_int*)m_malloc(sizeof(mp_int));
- key->g = (mp_int*)m_malloc(sizeof(mp_int));
- key->y = (mp_int*)m_malloc(sizeof(mp_int));
- key->x = (mp_int*)m_malloc(sizeof(mp_int));
- m_mp_init_multi(key->p, key->q, key->g, key->y, key->x, NULL);
-
- seedrandom();
+ m_mp_alloc_init_multi(&key->p, &key->q, &key->g, &key->y, &key->x, NULL);
getq(key);
- getp(key, size);
+ getp(key, size/8);
getg(key);
getx(key);
gety(key);