“__fips_constseg”在openssl中的含义是什么

时间:2013-08-13 08:07:36

标签: openssl

在openssl C代码中,(aes_core.c,set_key.c,spr.h等)有“__fips_constseg”。

我不知道“__fips_constseg”的意思。

它的作用是什么?是汇编代码吗?

源代码如下:


#include< openssl / crypto.h>

#include“des_locl.h”

OPENSSL_IMPLEMENT_GLOBAL(int,DES_check_key,0)/ *默认为false * /

__ fips_constseg

static const unsigned char odd_parity [256] = {};


1 个答案:

答案 0 :(得分:2)

来自OpenSSL源代码:

crypto/crypto.h

#if defined(OPENSSL_FIPSCANISTER)
# include <openssl/fipssyms.h>
#else
# define __fips_constseg
#endif

fips/fipssyms.h

#if defined(_MSC_VER)
# pragma const_seg("fipsro$b")
# pragma const_seg()
# define __fips_constseg __declspec(allocate("fipsro$b"))
#else
# define __fips_constseg
#endif

因此,__fips_constseg常量仅定义为值,如果

  • OPENSSL_FIPSCANISTER已定义且
  • 使用Microsoft C编译器编译代码(可以通过定义的_MSC_VER常量检测到。)

然后,标有该常量的代码放在名为fipsro$b的常量数据段中(有关详细信息,请参阅allocate说明符上的MSDN documentation)。

如果不满足上述任何条件,则__fips_constseg被定义为空,因此标记有该常量的变量将被放入它们通常所在的数据段中。