diff options
author | Adam Langley <agl@google.com> | 2015-09-24 22:57:25 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-09-24 22:57:25 +0000 |
commit | 3781a60670f92c3c6fca860cb4589495cefa2e56 (patch) | |
tree | dd743d9d64af3145fe96b8d5fc2f3427544794bd /src/crypto/rand/hwrand.c | |
parent | 4ca36931e543512682d75e8e6d923144261dfd4d (diff) | |
parent | 1e4884f615b20946411a74e41eb9c6aa65e2d5f3 (diff) | |
download | external_boringssl-3781a60670f92c3c6fca860cb4589495cefa2e56.zip external_boringssl-3781a60670f92c3c6fca860cb4589495cefa2e56.tar.gz external_boringssl-3781a60670f92c3c6fca860cb4589495cefa2e56.tar.bz2 |
am 1e4884f6: external/boringssl: sync with upstream.
* commit '1e4884f615b20946411a74e41eb9c6aa65e2d5f3':
external/boringssl: sync with upstream.
Diffstat (limited to 'src/crypto/rand/hwrand.c')
-rw-r--r-- | src/crypto/rand/hwrand.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/src/crypto/rand/hwrand.c b/src/crypto/rand/hwrand.c index 5f81f09..f0bbccd 100644 --- a/src/crypto/rand/hwrand.c +++ b/src/crypto/rand/hwrand.c @@ -15,23 +15,28 @@ #include <openssl/rand.h> #include <assert.h> -#include <stdlib.h> #include <string.h> #include <openssl/cpu.h> +#include "internal.h" -#if defined(OPENSSL_X86_64) && !defined(OPENSSL_NO_ASM) -int CRYPTO_have_hwrand(void) { - return (OPENSSL_ia32cap_P[1] & (1u << 30)) != 0; -} +#if defined(OPENSSL_X86_64) && !defined(OPENSSL_NO_ASM) /* These functions are defined in asm/rdrand-x86_64.pl */ extern int CRYPTO_rdrand(uint8_t out[8]); extern int CRYPTO_rdrand_multiple8_buf(uint8_t *buf, size_t len); +static int have_rdrand(void) { + return (OPENSSL_ia32cap_P[1] & (1u << 30)) != 0; +} + int CRYPTO_hwrand(uint8_t *buf, size_t len) { + if (!have_rdrand()) { + return 0; + } + const size_t len_multiple8 = len & ~7; if (!CRYPTO_rdrand_multiple8_buf(buf, len_multiple8)) { return 0; @@ -53,12 +58,8 @@ int CRYPTO_hwrand(uint8_t *buf, size_t len) { #else -int CRYPTO_have_hwrand(void) { +int CRYPTO_hwrand(uint8_t *buf, size_t len) { return 0; } -void CRYPTO_hwrand(uint8_t *buf, size_t len) { - abort(); -} - #endif |