forked from firebase/firebase-ios-sdk
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add platform detection logic for SecureRandom (firebase#676)
* Add CMake platform detection logic for SecureRandom Now only builds secure_random_arc4random.cc if available. Remove firebase/firestore/base/port.h. Nothing else was in that directory. * Add a SecureRandom implementation that uses OpenSSL This is usable on Linux, Windows, and Android * Properly check return from RAND_bytes
- Loading branch information
Showing
9 changed files
with
161 additions
and
38 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
/* | ||
* Copyright 2018 Google | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
#ifndef FIRESTORE_CORE_SRC_FIREBASE_FIRESTORE_UTIL_CONFIG_H_ | ||
#define FIRESTORE_CORE_SRC_FIREBASE_FIRESTORE_UTIL_CONFIG_H_ | ||
|
||
// This header defines macros for all available platform configuration values. | ||
// When building with CMake, it will substitute the lines marked with | ||
// cmakedefine with values corresponding to the local configuration. | ||
// | ||
// On Apple platforms we support building via CocoaPods without CMake. When | ||
// building this way we can't test the presence of features before building so | ||
// predefine all the platform-support feature macros to their expected values. | ||
|
||
#cmakedefine HAVE_ARC4RANDOM 1 | ||
#if COCOAPODS | ||
# define HAVE_ARC4RANDOM 1 | ||
#endif | ||
|
||
#cmakedefine HAVE_OPENSSL_RAND_H 1 | ||
|
||
#endif // FIRESTORE_CORE_SRC_FIREBASE_FIRESTORE_UTIL_CONFIG_H_ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
46 changes: 46 additions & 0 deletions
46
Firestore/core/src/firebase/firestore/util/secure_random_openssl.cc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
/* | ||
* Copyright 2018 Google | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
#include "Firestore/core/src/firebase/firestore/util/secure_random.h" | ||
|
||
#include "Firestore/core/src/firebase/firestore/util/config.h" | ||
|
||
#if HAVE_OPENSSL_RAND_H | ||
|
||
#include <openssl/err.h> | ||
#include <openssl/rand.h> | ||
|
||
namespace firebase { | ||
namespace firestore { | ||
namespace util { | ||
|
||
SecureRandom::result_type SecureRandom::operator()() { | ||
result_type result; | ||
int rc = RAND_bytes(reinterpret_cast<uint8_t*>(&result), sizeof(result)); | ||
if (rc <= 0) { | ||
// OpenSSL's RAND_bytes can fail if there's not enough entropy. BoringSSL | ||
// won't fail this way. | ||
ERR_print_errors_fp(stderr); | ||
abort(); | ||
} | ||
return result; | ||
} | ||
|
||
} // namespace util | ||
} // namespace firestore | ||
} // namespace firebase | ||
|
||
#endif // HAVE_OPENSSL_RAND_H |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters