Mercurial > dropbear
comparison dss.c @ 1094:c45d65392c1a
Fix pointer differ in signess warnings [-Werror=pointer-sign]
author | Gaël PORTAY <gael.portay@gmail.com> |
---|---|
date | Sat, 02 May 2015 15:59:06 +0200 |
parents | 220f55d540ae |
children | aaf576b27a10 |
comparison
equal
deleted
inserted
replaced
1093:aae71c5f7d5b | 1094:c45d65392c1a |
---|---|
134 * mpint y | 134 * mpint y |
135 */ | 135 */ |
136 void buf_put_dss_pub_key(buffer* buf, dropbear_dss_key *key) { | 136 void buf_put_dss_pub_key(buffer* buf, dropbear_dss_key *key) { |
137 | 137 |
138 dropbear_assert(key != NULL); | 138 dropbear_assert(key != NULL); |
139 buf_putstring(buf, SSH_SIGNKEY_DSS, SSH_SIGNKEY_DSS_LEN); | 139 buf_putstring(buf, (const unsigned char*) SSH_SIGNKEY_DSS, SSH_SIGNKEY_DSS_LEN); |
140 buf_putmpint(buf, key->p); | 140 buf_putmpint(buf, key->p); |
141 buf_putmpint(buf, key->q); | 141 buf_putmpint(buf, key->q); |
142 buf_putmpint(buf, key->g); | 142 buf_putmpint(buf, key->g); |
143 buf_putmpint(buf, key->y); | 143 buf_putmpint(buf, key->y); |
144 | 144 |
163 DEF_MP_INT(val1); | 163 DEF_MP_INT(val1); |
164 DEF_MP_INT(val2); | 164 DEF_MP_INT(val2); |
165 DEF_MP_INT(val3); | 165 DEF_MP_INT(val3); |
166 DEF_MP_INT(val4); | 166 DEF_MP_INT(val4); |
167 char * string = NULL; | 167 char * string = NULL; |
168 int stringlen; | 168 unsigned int stringlen; |
169 | 169 |
170 TRACE(("enter buf_dss_verify")) | 170 TRACE(("enter buf_dss_verify")) |
171 dropbear_assert(key != NULL); | 171 dropbear_assert(key != NULL); |
172 | 172 |
173 m_mp_init_multi(&val1, &val2, &val3, &val4, NULL); | 173 m_mp_init_multi(&val1, &val2, &val3, &val4, NULL); |
174 | 174 |
175 /* get blob, check length */ | 175 /* get blob, check length */ |
176 string = buf_getstring(buf, &stringlen); | 176 string = (char*) buf_getstring(buf, &stringlen); |
177 if (stringlen != 2*SHA1_HASH_SIZE) { | 177 if (stringlen != 2*SHA1_HASH_SIZE) { |
178 goto out; | 178 goto out; |
179 } | 179 } |
180 | 180 |
181 /* hash the data */ | 181 /* hash the data */ |
184 sha1_done(&hs, msghash); | 184 sha1_done(&hs, msghash); |
185 | 185 |
186 /* create the signature - s' and r' are the received signatures in buf */ | 186 /* create the signature - s' and r' are the received signatures in buf */ |
187 /* w = (s')-1 mod q */ | 187 /* w = (s')-1 mod q */ |
188 /* let val1 = s' */ | 188 /* let val1 = s' */ |
189 bytes_to_mp(&val1, &string[SHA1_HASH_SIZE], SHA1_HASH_SIZE); | 189 bytes_to_mp(&val1, (const unsigned char*) &string[SHA1_HASH_SIZE], SHA1_HASH_SIZE); |
190 | 190 |
191 if (mp_cmp(&val1, key->q) != MP_LT) { | 191 if (mp_cmp(&val1, key->q) != MP_LT) { |
192 TRACE(("verify failed, s' >= q")) | 192 TRACE(("verify failed, s' >= q")) |
193 goto out; | 193 goto out; |
194 } | 194 } |
206 goto out; | 206 goto out; |
207 } | 207 } |
208 | 208 |
209 /* u2 = ((r')w) mod q */ | 209 /* u2 = ((r')w) mod q */ |
210 /* let val1 = r' */ | 210 /* let val1 = r' */ |
211 bytes_to_mp(&val1, &string[0], SHA1_HASH_SIZE); | 211 bytes_to_mp(&val1, (const unsigned char*) &string[0], SHA1_HASH_SIZE); |
212 if (mp_cmp(&val1, key->q) != MP_LT) { | 212 if (mp_cmp(&val1, key->q) != MP_LT) { |
213 TRACE(("verify failed, r' >= q")) | 213 TRACE(("verify failed, r' >= q")) |
214 goto out; | 214 goto out; |
215 } | 215 } |
216 /* let val4 = u2 = ((r')w) mod q */ | 216 /* let val4 = u2 = ((r')w) mod q */ |
308 /* s = (k^-1(SHA1(M) + xr)) mod q */ | 308 /* s = (k^-1(SHA1(M) + xr)) mod q */ |
309 if (mp_mulmod(&dss_temp1, &dss_temp2, key->q, &dss_s) != MP_OKAY) { | 309 if (mp_mulmod(&dss_temp1, &dss_temp2, key->q, &dss_s) != MP_OKAY) { |
310 dropbear_exit("DSS error"); | 310 dropbear_exit("DSS error"); |
311 } | 311 } |
312 | 312 |
313 buf_putstring(buf, SSH_SIGNKEY_DSS, SSH_SIGNKEY_DSS_LEN); | 313 buf_putstring(buf, (const unsigned char*) SSH_SIGNKEY_DSS, SSH_SIGNKEY_DSS_LEN); |
314 buf_putint(buf, 2*SHA1_HASH_SIZE); | 314 buf_putint(buf, 2*SHA1_HASH_SIZE); |
315 | 315 |
316 writelen = mp_unsigned_bin_size(&dss_r); | 316 writelen = mp_unsigned_bin_size(&dss_r); |
317 dropbear_assert(writelen <= SHA1_HASH_SIZE); | 317 dropbear_assert(writelen <= SHA1_HASH_SIZE); |
318 /* need to pad to 160 bits with leading zeros */ | 318 /* need to pad to 160 bits with leading zeros */ |