Mercurial > dropbear
comparison gendss.c @ 118:5312ca05ed48 private-rez
propagate of 717950f4061f1123659ee87c7c168805af920ab7 and 839f98f136788cc1466e4641bf796f96040a085d from branch 'matt.dbclient.authpam' to 'matt.dbclient.rez'
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Sun, 12 Sep 2004 04:56:50 +0000 |
parents | 6571b480fa04 |
children | c9483550701b |
comparison
equal
deleted
inserted
replaced
57:3b2a5a1c4347 | 118:5312ca05ed48 |
---|---|
29 #include "random.h" | 29 #include "random.h" |
30 #include "buffer.h" | 30 #include "buffer.h" |
31 #include "gendss.h" | 31 #include "gendss.h" |
32 #include "dss.h" | 32 #include "dss.h" |
33 | 33 |
34 #define PSIZE 128 /* 1024 bit*/ | |
35 #define QSIZE 20 /* 160 bit */ | 34 #define QSIZE 20 /* 160 bit */ |
35 | |
36 /* This is just a test */ | |
36 | 37 |
37 #ifdef DROPBEAR_DSS | 38 #ifdef DROPBEAR_DSS |
38 | 39 |
39 static void getq(dss_key *key); | 40 static void getq(dss_key *key); |
40 static void getp(dss_key *key, unsigned int size); | 41 static void getp(dss_key *key, unsigned int size); |
88 } | 89 } |
89 } | 90 } |
90 | 91 |
91 static void getp(dss_key *key, unsigned int size) { | 92 static void getp(dss_key *key, unsigned int size) { |
92 | 93 |
93 mp_int tempX, tempC, tempP, temp2q; | 94 DEF_MP_INT(tempX); |
95 DEF_MP_INT(tempC); | |
96 DEF_MP_INT(tempP); | |
97 DEF_MP_INT(temp2q); | |
94 int result; | 98 int result; |
95 unsigned char *buf; | 99 unsigned char *buf; |
96 | 100 |
97 m_mp_init_multi(&tempX, &tempC, &tempP, &temp2q, NULL); | 101 m_mp_init_multi(&tempX, &tempC, &tempP, &temp2q, NULL); |
98 | 102 |
146 m_free(buf); | 150 m_free(buf); |
147 } | 151 } |
148 | 152 |
149 static void getg(dss_key * key) { | 153 static void getg(dss_key * key) { |
150 | 154 |
151 char printbuf[1000]; | 155 DEF_MP_INT(div); |
152 mp_int div, h, val; | 156 DEF_MP_INT(h); |
157 DEF_MP_INT(val); | |
153 | 158 |
154 m_mp_init_multi(&div, &h, &val, NULL); | 159 m_mp_init_multi(&div, &h, &val, NULL); |
155 | 160 |
156 /* get div=(p-1)/q */ | 161 /* get div=(p-1)/q */ |
157 if (mp_sub_d(key->p, 1, &val) != MP_OKAY) { | 162 if (mp_sub_d(key->p, 1, &val) != MP_OKAY) { |
177 exit(1); | 182 exit(1); |
178 } | 183 } |
179 | 184 |
180 } while (mp_cmp_d(key->g, 1) != MP_GT); | 185 } while (mp_cmp_d(key->g, 1) != MP_GT); |
181 | 186 |
182 mp_toradix(key->g, printbuf, 10); | |
183 | |
184 mp_clear_multi(&div, &h, &val, NULL); | 187 mp_clear_multi(&div, &h, &val, NULL); |
185 } | 188 } |
186 | 189 |
187 static void getx(dss_key *key) { | 190 static void getx(dss_key *key) { |
188 | 191 |
189 mp_int val; | 192 DEF_MP_INT(val); |
190 char buf[QSIZE]; | 193 char buf[QSIZE]; |
191 | 194 |
192 m_mp_init(&val); | 195 m_mp_init(&val); |
193 | 196 |
194 do { | 197 do { |