Alternative to calculate sha256 to use legacy openssl code

The SHA256_XXX family, declared in /usr/include/openssl/sha.h, is deprecated in OS-X 10.7 and later.

int SHA256_Init(SHA256_CTX *c) DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER; int SHA256_Update(SHA256_CTX *c, const void *data, size_t len) DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER; int SHA256_Final(unsigned char *md, SHA256_CTX *c) DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER; unsigned char *SHA256(const unsigned char *d, size_t n,unsigned char *md) DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER; void SHA256_Transform(SHA256_CTX *c, const unsigned char *data) DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER; 

Although it currently works, I am wondering what an alternative is for later versions of OS X.

+5
source share
2 answers

Common Crypto supports SHA256 and other cryptographic methods and is available for OS X and iOS. Add Security.framework and enable <CommonCrypto/CommonDigest.h> . Common Crypto is the "C" API.

+2
source

Currently, the approved methodology for all digests is carried out through EVP.

https://www.openssl.org/docs/manmaster/crypto/EVP_DigestInit.html#EXAMPLE

Example function for SHA256 (from https://wiki.openssl.org/index.php/EVP_Message_Digests )

 void digest_message(unsigned char *message, unsigned char **digest, unsigned int *digest_len) { EVP_MD_CTX *mdctx; if((mdctx = EVP_MD_CTX_create()) == NULL) handleErrors(); if(1 != EVP_DigestInit_ex(mdctx, EVP_sha256(), NULL)) handleErrors(); if(1 != EVP_DigestUpdate(mdctx, message, strlen(message))) handleErrors(); if((*digest = (unsigned char *)OPENSSL_malloc(EVP_MD_size(EVP_sha256()))) == NULL) handleErrors(); if(1 != EVP_DigestFinal_ex(mdctx, *digest, digest_len)) handleErrors(); EVP_MD_CTX_destroy(mdctx); } 
+3
source

Source: https://habr.com/ru/post/1238258/


All Articles