openssl中的SHA1_Init实现在哪里

问题描述 投票:0回答:2

我想在openssl源代码中找到SHA1_Init的实现。

http://osxr.org:8080/openssl/source/crypto/sha/sha1.c#0108

0108     SHA1_Init(&c);

但仅在中找到定义 http://osxr.org:8080/openssl/source/crypto/sha/sha.h#0122

在哪里? 谢谢,

=SG=

openssl sha
2个回答
1
投票

因此

SHA1_Init
sha_locl.h
标头中定义为
HASH_INIT
sha1dgst.c
包括
sha_locl.h
,其中包括
../md32_common.h
,它对
HASH_UPDATE
HASH_TRANFORM
HASH_FINAL
进行扩展,在
SHA1_Init
中定义为
sha.h
。我相信
SHA1_Init
的实际实现最终在这里:http://osxr.org:8080/openssl/source/crypto/sha/sha_locl.h#0125 或在 github 上:https://github .com/openssl/openssl/blob/master/crypto/sha/sha_locl.h#L101.


0
投票

注意:从 Git 2.42(2023 年第 3 季度)开始,您将不再发现使用

SHA1_Init(&c)
:Git 2.42 调整为 OpenSSL 3+,通过使用其 EVP API 弃用了基于其传统 API 的 SHA-1 函数相反。

请参阅“OpenSSL 的 EVP(信封加密)是什么意思?”和“使用 OpenSSL EVP 加密/解密文件”,作者:Amit Kulkarni

请参阅commit bda9c12commit 3e440ea(2023 年 8 月 1 日),作者:Eric Wong (

ele828
)
(由 Junio C Hamano --
gitster
--
合并于 commit 889c94d,2023 年 8 月 09 日)

bda9c12073
:避免 OpenSSL 3+ 中弃用的 SHA-1 函数

签署人:Eric Wong

OpenSSL 3+ 弃用了

SHA1_Init,
SHA1_Update,
SHA1_Final
函数,导致使用“DEVELOPER=1”构建时出现错误。

使用较新的

EVP_*
API 与 OpenSSL 3+(仅),尽管由于堆分配更容易出错且效率较低。

例如,您现在可以使用,而不是直接使用

SHA1_Init(&c)

static inline void openssl_SHA1_Init(struct openssl_SHA1_CTX *ctx)
{
    const EVP_MD *type = EVP_sha1();

    ctx->ectx = EVP_MD_CTX_new();
    if (!ctx->ectx)
        die("EVP_MD_CTX_new: out of memory");

    EVP_DigestInit_ex(ctx->ectx, type, NULL);
}

EVP_DigestInit_ex()
定义于
openssl/openssl
crypto/evp/digest.c

© www.soinside.com 2019 - 2024. All rights reserved.