summaryrefslogtreecommitdiff
path: root/src/crypto
diff options
context:
space:
mode:
authorRobert Sloan <varomodt@google.com>2017-07-24 08:40:01 -0700
committerRobert Sloan <varomodt@google.com>2017-07-24 08:42:03 -0700
commitb6d070c5081ba0ca11545eb50870817d6d72d926 (patch)
tree707f1e4d159e58912d448a90714557bae8154325 /src/crypto
parent682d4e9e966a91cfdd932e78c2d322294a48f4ba (diff)
downloadboringssl-b6d070c5081ba0ca11545eb50870817d6d72d926.tar.gz
external/boringssl: Sync to c642aca28feb7e18f244658559f4042286aed0c8.
This includes the following changes: https://boringssl.googlesource.com/boringssl/+log/14308731e5446a73ac2258688a9688b524483cb6..c642aca28feb7e18f244658559f4042286aed0c8 Test: BoringSSL CTS Presubmits Change-Id: Ia0b5b2cdd64eb2b54ec5335d48da9001e9d6dafa
Diffstat (limited to 'src/crypto')
-rw-r--r--src/crypto/fipsmodule/FIPS.md10
-rw-r--r--src/crypto/fipsmodule/policydocs/BoringCrypto-Security-Policy-20170615.docxbin0 -> 105579 bytes
-rw-r--r--src/crypto/fipsmodule/rand/urandom.c44
3 files changed, 31 insertions, 23 deletions
diff --git a/src/crypto/fipsmodule/FIPS.md b/src/crypto/fipsmodule/FIPS.md
index 30c44874..8378f1b1 100644
--- a/src/crypto/fipsmodule/FIPS.md
+++ b/src/crypto/fipsmodule/FIPS.md
@@ -1,6 +1,14 @@
# FIPS 140-2
-BoringSSL as a whole is not FIPS validated. However, there is a core library (called BoringCrypto) that is undergoing validation at time of writing. This document contains some notes about the design of the FIPS module and some documentation on performing FIPS-related tasks. This is not a substitute for reading the offical Security Policy (which, at the time of writing, has not yet been published).
+BoringSSL as a whole is not FIPS validated. However, there is a core library (called BoringCrypto) that has been FIPS validated. This document contains some notes about the design of the FIPS module and some documentation on performing FIPS-related tasks. This is not a substitute for reading the offical Security Policy.
+
+Please note that we cannot answer questions about FIPS, nor about using BoringSSL in a FIPS-compliant manner. Please consult with an [accredited CMVP lab](http://csrc.nist.gov/groups/STM/testing_labs/) on these subjects.
+
+## Validations
+
+BoringCrypto has undergone the following validations:
+
+1. 2017-06-15: certificate [#2964](http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/1401val2017.htm#2964), [security policy](/crypto/fipsmodule/policydocs/BoringCrypto-Security-Policy-20170615.docx) (in docx format).
## Running CAVP tests
diff --git a/src/crypto/fipsmodule/policydocs/BoringCrypto-Security-Policy-20170615.docx b/src/crypto/fipsmodule/policydocs/BoringCrypto-Security-Policy-20170615.docx
new file mode 100644
index 00000000..272713b2
--- /dev/null
+++ b/src/crypto/fipsmodule/policydocs/BoringCrypto-Security-Policy-20170615.docx
Binary files differ
diff --git a/src/crypto/fipsmodule/rand/urandom.c b/src/crypto/fipsmodule/rand/urandom.c
index 2ea8730c..8cbf7278 100644
--- a/src/crypto/fipsmodule/rand/urandom.c
+++ b/src/crypto/fipsmodule/rand/urandom.c
@@ -45,33 +45,33 @@
#if defined(OPENSSL_LINUX)
#if defined(OPENSSL_X86_64)
-#define EXPECTED_SYS_getrandom 318
+#define EXPECTED_NR_getrandom 318
#elif defined(OPENSSL_X86)
-#define EXPECTED_SYS_getrandom 355
+#define EXPECTED_NR_getrandom 355
#elif defined(OPENSSL_AARCH64)
-#define EXPECTED_SYS_getrandom 278
+#define EXPECTED_NR_getrandom 278
#elif defined(OPENSSL_ARM)
-#define EXPECTED_SYS_getrandom 384
+#define EXPECTED_NR_getrandom 384
#elif defined(OPENSSL_PPC64LE)
-#define EXPECTED_SYS_getrandom 359
+#define EXPECTED_NR_getrandom 359
#endif
-#if defined(EXPECTED_SYS_getrandom)
-#define USE_SYS_getrandom
+#if defined(EXPECTED_NR_getrandom)
+#define USE_NR_getrandom
-#if defined(SYS_getrandom)
+#if defined(__NR_getrandom)
-#if SYS_getrandom != EXPECTED_SYS_getrandom
+#if __NR_getrandom != EXPECTED_NR_getrandom
#error "system call number for getrandom is not the expected value"
#endif
-#else /* SYS_getrandom */
+#else /* __NR_getrandom */
-#define SYS_getrandom EXPECTED_SYS_getrandom
+#define __NR_getrandom EXPECTED_NR_getrandom
-#endif /* SYS_getrandom */
+#endif /* __NR_getrandom */
-#endif /* EXPECTED_SYS_getrandom */
+#endif /* EXPECTED_NR_getrandom */
#if !defined(GRND_NONBLOCK)
#define GRND_NONBLOCK 1
@@ -95,7 +95,7 @@ DEFINE_BSS_GET(int, urandom_fd);
DEFINE_STATIC_ONCE(rand_once);
-#if defined(USE_SYS_getrandom) || defined(BORINGSSL_FIPS)
+#if defined(USE_NR_getrandom) || defined(BORINGSSL_FIPS)
/* message writes |msg| to stderr. We use this because referencing |stderr|
* with |fprintf| generates relocations, which is a problem inside the FIPS
* module. */
@@ -116,10 +116,10 @@ static void init_once(void) {
int fd = *urandom_fd_requested_bss_get();
CRYPTO_STATIC_MUTEX_unlock_read(rand_lock_bss_get());
-#if defined(USE_SYS_getrandom)
+#if defined(USE_NR_getrandom)
uint8_t dummy;
long getrandom_ret =
- syscall(SYS_getrandom, &dummy, sizeof(dummy), GRND_NONBLOCK);
+ syscall(__NR_getrandom, &dummy, sizeof(dummy), GRND_NONBLOCK);
if (getrandom_ret == 1) {
*urandom_fd_bss_get() = kHaveGetrandom;
@@ -132,7 +132,7 @@ static void init_once(void) {
do {
getrandom_ret =
- syscall(SYS_getrandom, &dummy, sizeof(dummy), 0 /* no flags */);
+ syscall(__NR_getrandom, &dummy, sizeof(dummy), 0 /* no flags */);
} while (getrandom_ret == -1 && errno == EINTR);
if (getrandom_ret == 1) {
@@ -140,7 +140,7 @@ static void init_once(void) {
return;
}
}
-#endif /* USE_SYS_getrandom */
+#endif /* USE_NR_getrandom */
if (fd == kUnset) {
do {
@@ -234,7 +234,7 @@ void RAND_set_urandom_fd(int fd) {
}
}
-#if defined(USE_SYS_getrandom) && defined(OPENSSL_MSAN)
+#if defined(USE_NR_getrandom) && defined(OPENSSL_MSAN)
void __msan_unpoison(void *, size_t);
#endif
@@ -245,9 +245,9 @@ static char fill_with_entropy(uint8_t *out, size_t len) {
ssize_t r;
if (*urandom_fd_bss_get() == kHaveGetrandom) {
-#if defined(USE_SYS_getrandom)
+#if defined(USE_NR_getrandom)
do {
- r = syscall(SYS_getrandom, out, len, 0 /* no flags */);
+ r = syscall(__NR_getrandom, out, len, 0 /* no flags */);
} while (r == -1 && errno == EINTR);
#if defined(OPENSSL_MSAN)
@@ -258,7 +258,7 @@ static char fill_with_entropy(uint8_t *out, size_t len) {
}
#endif /* OPENSSL_MSAN */
-#else /* USE_SYS_getrandom */
+#else /* USE_NR_getrandom */
abort();
#endif
} else {