OPENSSL库RSA-OAEP测试向量使用及PKCS_TESTVECT宏识别失败问题问询
问题根因
PKCS_TESTVECT是OpenSSL库源码的内部私有宏,仅在编译OpenSSL库本身时生效。你给业务代码myproject.c加的-DPKCS_TESTVECT编译参数作用范围仅限你自己的代码文件,既不会修改已编译完成的OpenSSL库的逻辑,也无法访问OpenSSL内部未对外暴露的静态测试向量变量。
可行解决方法
- 方案1:直接复制
crypto/rsa/rsa_oaep.c中被PKCS_TESTVECT宏包裹的测试向量代码到你自己的项目中使用,无需调整现有编译配置。 - 方案2:若必须从OpenSSL库侧调用测试向量,需执行以下操作:
- 下载对应版本的OpenSSL源码
- 编译OpenSSL时向构建系统传入
-DPKCS_TESTVECT编译参数,同时修改rsa_oaep.c代码新增对外导出测试向量的公开接口 - 将你的项目重新链接到你自行编译修改后的OpenSSL库
- 注意:OpenSSL公开头文件中未声明该宏及对应的测试向量变量,仅在业务代码中定义该宏无任何实际作用。
内容的提问来源于stack exchange,提问作者Martin Janitor
相关产品推荐
相关产品推荐

