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 */