]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
upstream commit
authordjm@openbsd.org <djm@openbsd.org>
Thu, 26 Mar 2015 07:00:04 +0000 (07:00 +0000)
committerDamien Miller <djm@mindrot.org>
Fri, 27 Mar 2015 01:02:27 +0000 (12:02 +1100)
ban all-zero curve25519 keys as recommended by latest
 CFRG curves draft; ok markus

kexc25519.c

index b6e6c40108249f4d4ac65d42bc3b7d16a7d58240..8d8cd4a2bae953dde7931dbc7429b84524a3a718 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: kexc25519.c,v 1.8 2015/01/19 20:16:15 markus Exp $ */
+/* $OpenBSD: kexc25519.c,v 1.9 2015/03/26 07:00:04 djm Exp $ */
 /*
  * Copyright (c) 2001, 2013 Markus Friedl.  All rights reserved.
  * Copyright (c) 2010 Damien Miller.  All rights reserved.
@@ -66,6 +66,11 @@ kexc25519_shared_key(const u_char key[CURVE25519_SIZE],
        u_char shared_key[CURVE25519_SIZE];
        int r;
 
+       /* Check for all-zero public key */
+       explicit_bzero(shared_key, CURVE25519_SIZE);
+       if (timingsafe_bcmp(pub, shared_key, CURVE25519_SIZE) == 0)
+               return SSH_ERR_KEY_INVALID_EC_VALUE;
+
        crypto_scalarmult_curve25519(shared_key, key, pub);
 #ifdef DEBUG_KEXECDH
        dump_digest("shared secret", shared_key, CURVE25519_SIZE);