Provide DH_set_length()
authortb <tb@openbsd.org>
Tue, 20 Feb 2018 18:01:42 +0000 (18:01 +0000)
committertb <tb@openbsd.org>
Tue, 20 Feb 2018 18:01:42 +0000 (18:01 +0000)
ok jsing

lib/libcrypto/Symbols.list
lib/libcrypto/dh/dh.h
lib/libcrypto/dh/dh_lib.c

index d13279d..885d5fb 100644 (file)
@@ -776,6 +776,7 @@ DH_set0_pqg
 DH_set_default_method
 DH_set_ex_data
 DH_set_flags
+DH_set_length
 DH_set_method
 DH_size
 DH_test_flags
index 8e31d75..a5e686b 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: dh.h,v 1.23 2018/02/20 17:59:31 tb Exp $ */
+/* $OpenBSD: dh.h,v 1.24 2018/02/20 18:01:42 tb Exp $ */
 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
  * All rights reserved.
  *
@@ -197,6 +197,7 @@ int DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_key);
 void DH_clear_flags(DH *dh, int flags);
 int DH_test_flags(const DH *dh, int flags);
 void DH_set_flags(DH *dh, int flags);
+int DH_set_length(DH *dh, long length);
 
 /* Deprecated version */
 #ifndef OPENSSL_NO_DEPRECATED
index ade6ace..856d32c 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: dh_lib.c,v 1.27 2018/02/20 17:59:31 tb Exp $ */
+/* $OpenBSD: dh_lib.c,v 1.28 2018/02/20 18:01:42 tb Exp $ */
 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
  * All rights reserved.
  *
@@ -56,6 +56,7 @@
  * [including the GNU Public Licence.]
  */
 
+#include <limits.h>
 #include <stdio.h>
 
 #include <openssl/opensslconf.h>
@@ -324,3 +325,11 @@ DH_set_flags(DH *dh, int flags)
 {
        dh->flags |= flags;
 }
+
+int
+DH_set_length(DH *dh, long length)
+{
+       if (length < 0 || length > INT_MAX)
+               dh->length = length;
+       return 1;
+}