OpenSSL源码中SHA1_Init()的实现在哪里?

当编译openssl时遇到“undefined reference to `SHA1_Init'”错误,通过源码搜索未找到实现。经线索提示,SHA1_Init在sha_locl.h中定义为HASH_INIT。通过nm命令和预处理发现,实际定义在预处理后的crypto/sha/sha1dgst.c中,涉及宏展开和fips_md_init_ctx(SHA1, SHA)。解决方法包括使用nm命令定位和对.c文件进行预处理。" 101422620,8669460,Java环境下IntelliJ IDEA验证码图片生成与显示问题解决方案,"['开发工具', 'Java', '运维']
摘要由CSDN通过智能技术生成

事情起源于想基于openssl的源码编译自己写的一个调用API的简单程序,结果在m_sha1.c:init()函数中报“undefined reference to `SHA1_Init'”的错误(并不是所有openssl源码的文件都添加到我的项目中了,我的想法是尽量只使用我的自己写的程序所必需的文件),我立即在源码中搜索SHA1_Init()函数的实现,结果根本找不到。附带说一下,我使用的源码分析工具是微软的Visual Studio Express 2013 for Windows Desktop和Linux下的find命令(主要是“find . -name '*.c" -exec grep 'pattern' /dev/null '{}' \+”命令——*.c可以修改为其他类型文件)。通过这两种方式,只能找到SHA1_Init()的声明,实现却是死活找不着。没办法只好网上搜索一下,还好,也找到两个线索,分别是这么说的:

线索1 -- 

SHA1_Init is indeed defined in sha_locl.h as HASH_INIT, whereas
SHA1_Update and SHA1_Final are defined in md32_common.h (under crypto
folder) as HASH_UPDATE and HASH_FINAL respectively.


线索2 --

>     Many OpenSSL functions are implemented in non-traditional manners,
>     such as
>     via macro's, assembly language, etc.
>
>     If you are on a Unix/Linux platform, using something like "nm -o
>     li

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值