mirror of
https://git.libssh.org/projects/libssh.git
synced 2025-11-30 13:01:23 +03:00
Use constant time comparison function for HMAC comparison
Signed-off-by: Dirkjan Bussink <d.bussink@gmail.com> Reviewed-by: Jon Simons <jon@jonsimons.org> Reviewed-by: Jakub Jelen <jjelen@redhat.com>
This commit is contained in:
committed by
Andreas Schneider
parent
1af10fcdb3
commit
46d15b3161
@@ -188,6 +188,17 @@ unsigned char *ssh_packet_encrypt(ssh_session session, void *data, uint32_t len)
|
|||||||
return crypto->hmacbuf;
|
return crypto->hmacbuf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int secure_memcmp(const void *s1, const void *s2, size_t n)
|
||||||
|
{
|
||||||
|
int rc = 0;
|
||||||
|
const unsigned char *p1 = s1;
|
||||||
|
const unsigned char *p2 = s2;
|
||||||
|
for (; n > 0; --n) {
|
||||||
|
rc |= *p1++ ^ *p2++;
|
||||||
|
}
|
||||||
|
return (rc != 0);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @internal
|
* @internal
|
||||||
*
|
*
|
||||||
@@ -234,7 +245,7 @@ int ssh_packet_hmac_verify(ssh_session session,
|
|||||||
ssh_print_hexa("Computed mac",hmacbuf,len);
|
ssh_print_hexa("Computed mac",hmacbuf,len);
|
||||||
ssh_print_hexa("seq",(unsigned char *)&seq,sizeof(uint32_t));
|
ssh_print_hexa("seq",(unsigned char *)&seq,sizeof(uint32_t));
|
||||||
#endif
|
#endif
|
||||||
if (memcmp(mac, hmacbuf, len) == 0) {
|
if (secure_memcmp(mac, hmacbuf, len) == 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user