- 论坛徽章:
- 36
|
本帖最后由 Godbach 于 2014-08-08 11:10 编辑
回复 1# mrpre
openssl 里支持多种算法,所以各个算法都会有 Init,他定义各个算法的 Init 方法一般是
alg##_Init() 这样的方式
比如下面的
- #define fips_md_init(alg) fips_md_init_ctx(alg, alg)
- #ifdef OPENSSL_FIPS
- #define fips_md_init_ctx(alg, cx) \
- int alg##_Init(cx##_CTX *c) \
- { \
- if (FIPS_mode()) OpenSSLDie(__FILE__, __LINE__, \
- "Low level API call to digest " #alg " forbidden in FIPS mode!"); \
- return private_##alg##_Init(c); \
- } \
- int private_##alg##_Init(cx##_CTX *c)
- #define fips_cipher_abort(alg) \
- if (FIPS_mode()) OpenSSLDie(__FILE__, __LINE__, \
- "Low level API call to cipher " #alg " forbidden in FIPS mode!")
- #else
- #define fips_md_init_ctx(alg, cx) \
- int alg##_Init(cx##_CTX *c)
- #define fips_cipher_abort(alg) while(0)
- #endif
复制代码 差不多帮你找到了,再看 md5_dgst.c 中的定义- fips_md_init(MD5)
- {
- memset (c,0,sizeof(*c));
- c->A=INIT_DATA_A;
- c->B=INIT_DATA_B;
- c->C=INIT_DATA_C;
- c->D=INIT_DATA_D;
- return 1;
- }
复制代码 替换一下 fips_md_init(MD5) 就出来了 |
|