Unexport <openssl/service_indicator.h>
This only ever contained functions used for internal tests. I avoided
deleting the header for now just to reduce some churn, but ideally we'd
remove it.
Change-Id: I9e6b770569f890bcc5ad88ec734330e9f50b4372
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/79367
Auto-Submit: David Benjamin <davidben@google.com>
Commit-Queue: David Benjamin <davidben@google.com>
Commit-Queue: Adam Langley <agl@google.com>
Reviewed-by: Adam Langley <agl@google.com>
diff --git a/crypto/fipsmodule/service_indicator/internal.h b/crypto/fipsmodule/service_indicator/internal.h
index 5b69172..8495138 100644
--- a/crypto/fipsmodule/service_indicator/internal.h
+++ b/crypto/fipsmodule/service_indicator/internal.h
@@ -16,7 +16,26 @@
#define OPENSSL_HEADER_CRYPTO_FIPSMODULE_SERVICE_INDICATOR_INTERNAL_H
#include <openssl/base.h>
-#include <openssl/service_indicator.h>
+
+
+// FIPS_service_indicator_before_call and |FIPS_service_indicator_after_call|
+// both currently return the same local thread counter which is slowly
+// incremented whenever approved services are called. The
+// |CALL_SERVICE_AND_CHECK_APPROVED| macro is strongly recommended over calling
+// these functions directly.
+//
+// |FIPS_service_indicator_before_call| is intended to be called immediately
+// before an approved service, while |FIPS_service_indicator_after_call| should
+// be called immediately after. If the values returned from these two functions
+// are not equal, this means that the service called inbetween is deemed to be
+// approved. If the values are still the same, this means the counter has not
+// been incremented, and the service called is not approved for FIPS.
+//
+// In non-FIPS builds, |FIPS_service_indicator_before_call| always returns zero
+// and |FIPS_service_indicator_after_call| always returns one. Thus calls always
+// appear to be approved. This is intended to simplify testing.
+OPENSSL_EXPORT uint64_t FIPS_service_indicator_before_call(void);
+OPENSSL_EXPORT uint64_t FIPS_service_indicator_after_call(void);
#if defined(BORINGSSL_FIPS)
diff --git a/crypto/fipsmodule/service_indicator/service_indicator.cc.inc b/crypto/fipsmodule/service_indicator/service_indicator.cc.inc
index a979d04..8b77013 100644
--- a/crypto/fipsmodule/service_indicator/service_indicator.cc.inc
+++ b/crypto/fipsmodule/service_indicator/service_indicator.cc.inc
@@ -17,7 +17,6 @@
#include <openssl/ec_key.h>
#include <openssl/err.h>
#include <openssl/evp.h>
-#include <openssl/service_indicator.h>
#include "../../evp/internal.h"
#include "../../internal.h"
diff --git a/crypto/fipsmodule/service_indicator/service_indicator_test.cc b/crypto/fipsmodule/service_indicator/service_indicator_test.cc
index e969b0b..c91b11b 100644
--- a/crypto/fipsmodule/service_indicator/service_indicator_test.cc
+++ b/crypto/fipsmodule/service_indicator/service_indicator_test.cc
@@ -32,7 +32,6 @@
#include <openssl/md5.h>
#include <openssl/rand.h> // TODO(bbe): only for RAND_bytes call below, replace with BCM call
#include <openssl/rsa.h>
-#include <openssl/service_indicator.h>
#include "../../test/abi_test.h"
#include "../../test/test_util.h"
@@ -40,11 +39,48 @@
#include "../bn/internal.h"
#include "../rand/internal.h"
#include "../tls/internal.h"
+#include "internal.h"
namespace {
-using bssl::FIPSStatus;
+// CALL_SERVICE_AND_CHECK_APPROVED runs |func| and sets |approved| to one of the
+// |FIPSStatus*| values, above, depending on whether |func| invoked an
+// approved service. The result of |func| becomes the result of this macro.
+#define CALL_SERVICE_AND_CHECK_APPROVED(approved, func) \
+ [&] { \
+ FIPSIndicatorHelper fips_indicator_helper(&approved); \
+ return func; \
+ }()
+
+enum class FIPSStatus {
+ NOT_APPROVED = 0,
+ APPROVED = 1,
+};
+
+// FIPSIndicatorHelper records whether the service indicator counter advanced
+// during its lifetime.
+class FIPSIndicatorHelper {
+ public:
+ FIPSIndicatorHelper(FIPSStatus *result)
+ : result_(result), before_(FIPS_service_indicator_before_call()) {
+ *result_ = FIPSStatus::NOT_APPROVED;
+ }
+
+ ~FIPSIndicatorHelper() {
+ uint64_t after = FIPS_service_indicator_after_call();
+ if (after != before_) {
+ *result_ = FIPSStatus::APPROVED;
+ }
+ }
+
+ FIPSIndicatorHelper(const FIPSIndicatorHelper&) = delete;
+ FIPSIndicatorHelper &operator=(const FIPSIndicatorHelper &) = delete;
+
+ private:
+ FIPSStatus *const result_;
+ const uint64_t before_;
+};
static const uint8_t kAESKey[16] = {'A', 'W', 'S', '-', 'L', 'C', 'C', 'r',
'y', 'p', 't', 'o', ' ', 'K', 'e', 'y'};
diff --git a/include/openssl/service_indicator.h b/include/openssl/service_indicator.h
index f866b40..460c749 100644
--- a/include/openssl/service_indicator.h
+++ b/include/openssl/service_indicator.h
@@ -12,85 +12,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#ifndef OPENSSL_HEADER_SERVICE_INDICATOR_H
-#define OPENSSL_HEADER_SERVICE_INDICATOR_H
-
-#include <openssl/base.h> // IWYU pragma: export
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-// FIPS_service_indicator_before_call and |FIPS_service_indicator_after_call|
-// both currently return the same local thread counter which is slowly
-// incremented whenever approved services are called. The
-// |CALL_SERVICE_AND_CHECK_APPROVED| macro is strongly recommended over calling
-// these functions directly.
+// This empty header is provided in order to make compiling against older code
+// easier. Some bindings libraries depended on every header that was present in
+// an older version of library.
//
-// |FIPS_service_indicator_before_call| is intended to be called immediately
-// before an approved service, while |FIPS_service_indicator_after_call| should
-// be called immediately after. If the values returned from these two functions
-// are not equal, this means that the service called inbetween is deemed to be
-// approved. If the values are still the same, this means the counter has not
-// been incremented, and the service called is not approved for FIPS.
-//
-// In non-FIPS builds, |FIPS_service_indicator_before_call| always returns zero
-// and |FIPS_service_indicator_after_call| always returns one. Thus calls always
-// appear to be approved. This is intended to simplify testing.
-OPENSSL_EXPORT uint64_t FIPS_service_indicator_before_call(void);
-OPENSSL_EXPORT uint64_t FIPS_service_indicator_after_call(void);
-
-#if defined(__cplusplus)
-}
-
-#if !defined(BORINGSSL_NO_CXX)
-
-extern "C++" {
-
-// CALL_SERVICE_AND_CHECK_APPROVED runs |func| and sets |approved| to one of the
-// |FIPSStatus*| values, above, depending on whether |func| invoked an
-// approved service. The result of |func| becomes the result of this macro.
-#define CALL_SERVICE_AND_CHECK_APPROVED(approved, func) \
- [&] { \
- bssl::FIPSIndicatorHelper fips_indicator_helper(&approved); \
- return func; \
- }()
-
-BSSL_NAMESPACE_BEGIN
-
-enum class FIPSStatus {
- NOT_APPROVED = 0,
- APPROVED = 1,
-};
-
-// FIPSIndicatorHelper records whether the service indicator counter advanced
-// during its lifetime.
-class FIPSIndicatorHelper {
- public:
- FIPSIndicatorHelper(FIPSStatus *result)
- : result_(result), before_(FIPS_service_indicator_before_call()) {
- *result_ = FIPSStatus::NOT_APPROVED;
- }
-
- ~FIPSIndicatorHelper() {
- uint64_t after = FIPS_service_indicator_after_call();
- if (after != before_) {
- *result_ = FIPSStatus::APPROVED;
- }
- }
-
- FIPSIndicatorHelper(const FIPSIndicatorHelper&) = delete;
- FIPSIndicatorHelper &operator=(const FIPSIndicatorHelper &) = delete;
-
- private:
- FIPSStatus *const result_;
- const uint64_t before_;
-};
-
-BSSL_NAMESPACE_END
-} // extern "C++"
-
-#endif // !BORINGSSL_NO_CXX
-#endif // __cplusplus
-
-#endif // OPENSSL_HEADER_SERVICE_INDICATOR_H
+// TODO(davidben): Remove this header from downstream code and remove the file.