summaryrefslogtreecommitdiffstats
path: root/usr.bin/ssh/ssh-rsa.c
diff options
context:
space:
mode:
authordjm <djm@openbsd.org>2010-07-13 11:52:06 +0000
committerdjm <djm@openbsd.org>2010-07-13 11:52:06 +0000
commit8488487f0974f365bb51defabda91a3e5dcdfaa6 (patch)
tree6435ebeffbf21ae55995d5adfca159bf99c291b6 /usr.bin/ssh/ssh-rsa.c
parentFix a broken mask for core temperature 1 and 2, and bias properly for degC. (diff)
downloadwireguard-openbsd-8488487f0974f365bb51defabda91a3e5dcdfaa6.tar.xz
wireguard-openbsd-8488487f0974f365bb51defabda91a3e5dcdfaa6.zip
implement a timing_safe_cmp() function to compare memory without leaking
timing information by short-circuiting like memcmp() and use it for some of the more sensitive comparisons (though nothing high-value was readily attackable anyway); "looks ok" markus@
Diffstat (limited to 'usr.bin/ssh/ssh-rsa.c')
-rw-r--r--usr.bin/ssh/ssh-rsa.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/usr.bin/ssh/ssh-rsa.c b/usr.bin/ssh/ssh-rsa.c
index e98533cbe18..dbb31d83143 100644
--- a/usr.bin/ssh/ssh-rsa.c
+++ b/usr.bin/ssh/ssh-rsa.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssh-rsa.c,v 1.41 2010/04/16 01:47:26 djm Exp $ */
+/* $OpenBSD: ssh-rsa.c,v 1.42 2010/07/13 11:52:06 djm Exp $ */
/*
* Copyright (c) 2000, 2003 Markus Friedl <markus@openbsd.org>
*
@@ -27,6 +27,7 @@
#include "buffer.h"
#include "key.h"
#include "compat.h"
+#include "misc.h"
#include "ssh.h"
static int openssh_RSA_verify(int, u_char *, u_int, u_char *, u_int, RSA *);
@@ -246,11 +247,11 @@ openssh_RSA_verify(int type, u_char *hash, u_int hashlen,
error("bad decrypted len: %d != %d + %d", len, hlen, oidlen);
goto done;
}
- if (memcmp(decrypted, oid, oidlen) != 0) {
+ if (timing_safe_cmp(decrypted, oid, oidlen) != 0) {
error("oid mismatch");
goto done;
}
- if (memcmp(decrypted + oidlen, hash, hlen) != 0) {
+ if (timing_safe_cmp(decrypted + oidlen, hash, hlen) != 0) {
error("hash mismatch");
goto done;
}