From 12350069f382f5c9604542a187f5f13cdc426704 Mon Sep 17 00:00:00 2001 From: miod <> Date: Sun, 13 Sep 2015 10:02:49 +0000 Subject: 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@ --- src/lib/libcrypto/cryptlib.c | 14 +++++++++++++- src/lib/libcrypto/crypto.h | 5 ++++- src/lib/libcrypto/crypto/shlib_version | 2 +- src/lib/libcrypto/shlib_version | 2 +- src/lib/libssl/src/crypto/cryptlib.c | 14 +++++++++++++- src/lib/libssl/src/crypto/crypto.h | 5 ++++- 6 files changed, 36 insertions(+), 6 deletions(-) (limited to 'src/lib') diff --git a/src/lib/libcrypto/cryptlib.c b/src/lib/libcrypto/cryptlib.c index 896e3d39cf..fff59f2dfd 100644 --- a/src/lib/libcrypto/cryptlib.c +++ b/src/lib/libcrypto/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/src/lib/libcrypto/crypto.h b/src/lib/libcrypto/crypto.h index 612b390f27..f53b858d19 100644 --- a/src/lib/libcrypto/crypto.h +++ b/src/lib/libcrypto/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); diff --git a/src/lib/libcrypto/crypto/shlib_version b/src/lib/libcrypto/crypto/shlib_version index db69fac89e..7d59659df1 100644 --- a/src/lib/libcrypto/crypto/shlib_version +++ b/src/lib/libcrypto/crypto/shlib_version @@ -1,3 +1,3 @@ # Don't forget to give libssl and libtls the same type of bump! major=35 -minor=0 +minor=1 diff --git a/src/lib/libcrypto/shlib_version b/src/lib/libcrypto/shlib_version index db69fac89e..7d59659df1 100644 --- a/src/lib/libcrypto/shlib_version +++ b/src/lib/libcrypto/shlib_version @@ -1,3 +1,3 @@ # Don't forget to give libssl and libtls the same type of bump! major=35 -minor=0 +minor=1 diff --git a/src/lib/libssl/src/crypto/cryptlib.c b/src/lib/libssl/src/crypto/cryptlib.c index 896e3d39cf..fff59f2dfd 100644 --- a/src/lib/libssl/src/crypto/cryptlib.c +++ b/src/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/src/lib/libssl/src/crypto/crypto.h b/src/lib/libssl/src/crypto/crypto.h index 612b390f27..f53b858d19 100644 --- a/src/lib/libssl/src/crypto/crypto.h +++ b/src/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); -- cgit v1.2.3-55-g6feb