Qia*_* Xu 4 openssl cryptography
我知道SHA256_Update()是在openssl下的libcrypto中实现的,但是,一个简单的grep找不到它的定义:
$ ack SHA256_Update
fips/fips_standalone_sha1.c
76: SHA256_Update(md_ctx,key,len);
87: SHA256_Update(md_ctx,pad,SHA256_CBLOCK);
92: SHA256_Update(o_ctx,pad,SHA256_CBLOCK);
100: SHA256_Update(o_ctx,buf,sizeof buf);
154: SHA256_Update(&md_ctx,buf,l);
evp/m_sha1.c
114: { return SHA256_Update(ctx->md_data,data,count); }
sha/sha256.c
58: SHA256_Update(&c,d,n);
71: SHA256_Update(&c,d,n);
78:{ return SHA256_Update (c,data,len); }
116:#define HASH_UPDATE SHA256_Update
Run Code Online (Sandbox Code Playgroud)
所有这些实例都是函数被调用的地方,但不是它的定义.但是,如果我执行"nm libcrypto.so | grep SHA256_Update",则可以找到该条目.
奇怪的...
有人可以在这里说清楚吗?
md32_common.h是C的"穷人模板".它定义了任何哈希算法的通用更新函数的结构.每个算法都提供此常规结构的名称.
所以在md32_common.h中你会发现:
int HASH_UPDATE (HASH_CTX *c, const void *data_, size_t len)
Run Code Online (Sandbox Code Playgroud)
在sha/sha256.c中你会发现:
#define HASH_UPDATE SHA256_Update
Run Code Online (Sandbox Code Playgroud)
因此,当包含md32_common.h时,您将获得定义的SHA256_Update函数.
在md32_common.h的开头,您将通过示例找到更完整的解释.
| 归档时间: |
|
| 查看次数: |
3279 次 |
| 最近记录: |