Где определяется SHA256_Update () в openssl / crypto? - PullRequest
4 голосов
/ 27 марта 2012

Я знаю, что SHA256_Update () реализован в libcrypto под openssl, но простой 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

Во всех этих случаях вызывается функция, но не ее определение. Тем не менее, если я сделаю «nm libcrypto.so | grep SHA256_Update», запись может быть найдена.

Weird ...

Кто-нибудь может пролить немного света здесь?

1 Ответ

7 голосов
/ 27 марта 2012

md32_common.h - это «шаблон бедняги» для C. Он определяет структуру общей функции обновления для любого хеш-алгоритма. Каждый алгоритм предоставляет имя для этой общей структуры.

Итак, в md32_common.h вы найдете это:

int HASH_UPDATE (HASH_CTX *c, const void *data_, size_t len)

А в sha / sha256.c вы найдете:

#define HASH_UPDATE             SHA256_Update

Чтобы при включении md32_common.h была определена функция SHA256_Update.

В начале md32_common.h вы найдете более полное объяснение с примером.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...