summaryrefslogtreecommitdiffstats
path: root/lib/libssl/src
diff options
context:
space:
mode:
authormiod <miod@openbsd.org>2015-09-13 10:02:49 +0000
committermiod <miod@openbsd.org>2015-09-13 10:02:49 +0000
commitf7e3f7bf3271f1ecb1801257bc19b5f637ec20d5 (patch)
tree19398b9497a629d7d570587d902e4b415aa7ef39 /lib/libssl/src
parentreplace hand rolled reference counting with refcnts. (diff)
downloadwireguard-openbsd-f7e3f7bf3271f1ecb1801257bc19b5f637ec20d5.tar.xz
wireguard-openbsd-f7e3f7bf3271f1ecb1801257bc19b5f637ec20d5.zip
Add a new interface, OPENSSL_cpu_caps(), to return the currently running
cpu's specific hardware capabilities users of libcrypto might be interested in, as an integer value. This deprecates the existing OPENSSL_ia32cap() macro and the OPENSSL_ia32cap_loc() function (which returns the pointer so that you can mess with stuff you shouldn't mess with). Interpreting the value returned by OPENSSL_cpu_caps() is, of course, machine-dependent. Minor version bump for libcrypto. ok beck@ jsing@
Diffstat (limited to 'lib/libssl/src')
-rw-r--r--lib/libssl/src/crypto/cryptlib.c14
-rw-r--r--lib/libssl/src/crypto/crypto.h5
2 files changed, 17 insertions, 2 deletions
diff --git a/lib/libssl/src/crypto/cryptlib.c b/lib/libssl/src/crypto/cryptlib.c
index 896e3d39cfc..fff59f2dfd2 100644
--- a/lib/libssl/src/crypto/cryptlib.c
+++ b/lib/libssl/src/crypto/cryptlib.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cryptlib.c,v 1.35 2015/06/27 22:42:02 doug Exp $ */
+/* $OpenBSD: cryptlib.c,v 1.36 2015/09/13 10:02:49 miod Exp $ */
/* ====================================================================
* Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved.
*
@@ -641,6 +641,12 @@ OPENSSL_ia32cap_loc(void)
return (unsigned long *)OPENSSL_ia32cap_P;
}
+uint64_t
+OPENSSL_cpu_caps(void)
+{
+ return *(uint64_t *)OPENSSL_ia32cap_P;
+}
+
#if defined(OPENSSL_CPUID_OBJ) && !defined(OPENSSL_NO_ASM) && !defined(I386_ONLY)
#define OPENSSL_CPUID_SETUP
typedef unsigned long long IA32CAP;
@@ -673,6 +679,12 @@ OPENSSL_ia32cap_loc(void)
{
return NULL;
}
+
+uint64_t
+OPENSSL_cpu_caps(void)
+{
+ return 0;
+}
#endif
#if !defined(OPENSSL_CPUID_SETUP) && !defined(OPENSSL_CPUID_OBJ)
diff --git a/lib/libssl/src/crypto/crypto.h b/lib/libssl/src/crypto/crypto.h
index 612b390f276..f53b858d197 100644
--- a/lib/libssl/src/crypto/crypto.h
+++ b/lib/libssl/src/crypto/crypto.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: crypto.h,v 1.37 2015/09/10 16:35:15 jsing Exp $ */
+/* $OpenBSD: crypto.h,v 1.38 2015/09/13 10:02:49 miod Exp $ */
/* ====================================================================
* Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved.
*
@@ -496,6 +496,9 @@ void OpenSSLDie(const char *file, int line, const char *assertion);
unsigned long *OPENSSL_ia32cap_loc(void);
#define OPENSSL_ia32cap (*(OPENSSL_ia32cap_loc()))
+
+uint64_t OPENSSL_cpu_caps(void);
+
int OPENSSL_isservice(void);
void OPENSSL_init(void);