如何跨平台使用Poco C++库的FIPS模式?

How to use Poco C++ library's FIPS mode cross-platform?

我们正在评估用于我们产品的 Poco C++ 库。我们需要我们的软件符合 FIPS,并在 Windows、Linux 和 OSX 平台上工作。 Poco C++ 似乎具有 Poco::Crypto::OpenSSLInitializer::enableFIPSMode 方法文档中的 FIPS 模式。但是文档太短了。如果我打开它的 H 文件,我只能看到这条评论:

Enable or disable FIPS mode. If FIPS is not available, this method doesn't do anything.

根据这些信息,我不清楚如何使用 Poco 的 FIPS 模式。即,

  1. 它是否适用于所有支持的平台?
  2. 是否需要为此定义任何编译时宏?例如,我可以在 Poco 的 H 文件中找到 OPENSSL_FIPS 的宏检查。我需要在构建时定义它吗?
  3. 启用 Poco 的 FIPS 模式应该使用什么版本的 OpenSSL?我们需要调用任何 OpenSSL 函数来为 FIPS 模式初始化它吗?

我在哪里可以找到有关此的足够信息?

所有问题都与 openssl 相关,因为 POCO 只是一个包装器,将 openssl 调用委托给 openssl 库。

  1. 这取决于您使用的 openssl 版本
  2. OPENSSL_FIPS 是一个 openssl 宏 - 它在编译时由 openssl 定义或未定义;如果未启用,则在运行时不支持;检查您的 opensslconf.h 是否已启用
  3. 一个 openssl 版本能够并启用 FIPS,如 2. 中所述;查阅相应 platform/release
  4. 的 openssl 文档