Hi, I am a newbie to openssl and have run into what is probably a stupid question. I am using openssl-1.0.0c.
So here it goes. I wanted to look at how openssl implemented the following functions which are defined in the openssl crypto library in openssl/crytpo/sha.h: int SHA1_Init(SHA_CTX *c); int SHA1_Update(SHA_CTX *c, const void *data, size_t len); int SHA1_Final(unsigned char *md, SHA_CTX *c); unsigned char *SHA1(const unsigned char *d, size_t n, unsigned char *md); In file sha1.c I only see the function implementation for SHA1 which is a wrapper function that invokes SHA1_init, SHA1_Update, and SHA1_Final. I was expecting to see the implementations for all four of these functions in file sha1_one.c. But I only see the implementation for the wrapper function SHA1 in that file. Where are these functions suppose to be implemented? [u...@centos sha]$ pwd /home/user/OPENSSLTEST/openssl-1.0.0c/crypto/sha [u...@centos sha]$ grep SHA1_Final * sha1.c: SHA1_Final(&(md[0]),&c); sha1_one.c: SHA1_Final(md,&c); sha.h:int SHA1_Final(unsigned char *md, SHA_CTX *c); sha_locl.h:# define HASH_FINAL SHA1_Final For instance above I see calls to SHA1_Final; but I don't see the actual implementation of that function. By comparison for the SHA512 case I do see all of the following functions in sha512.c in this same directory: SHA512_Init. SHA512_Update, SHA512_Final, and of course the wrapper function SHA512 implementations can all be found in sha512.c. For example: [u...@centos sha]$ grep SHA512_Final * *sha512.c:int SHA512_Final (unsigned char *md, SHA512_CTX *c)* sha512.c:{ return SHA512_Final (md,c); } sha512.c: SHA512_Final(md,&c); sha512.c: SHA512_Final(md,&c); sha.h:int SHA512_Final(unsigned char *md, SHA512_CTX *c); I don't understand how this works obviously. Any information would be appreciated. I want to use this in an embedded application. I also noticed macros in sha_locl.h for SHA. Is this where the SHA1 functions are implemented? Thanks, Stan Joyner