Libssl does not support SHA512/256 natively, but these hashes can be calculated using the following code:
#include <openssl/sha.h> int main() { unsigned char hash[32]; SHA512_CTX libssl_sha512; unsigned char *data="Test data"; int datalen=strlen(data); // Init a SHA512 hash structure SHA512_Init(&libssl_sha512); // Modify the initial hash structure with the correct magic numbers for SHA512/256 libssl_sha512.h[0]=0x22312194FC2BF72C; libssl_sha512.h[1]=0x9F555FA3C84C64C2; libssl_sha512.h[2]=0x2393B86B6F53B151; libssl_sha512.h[3]=0x963877195940EABD; libssl_sha512.h[4]=0x96283EE2A88EFFE3; libssl_sha512.h[5]=0xBE5E1E2553863992; libssl_sha512.h[6]=0x2B0199FC2C85B8AA; libssl_sha512.h[7]=0x0EB72DDC81C52CA2; // Send data to the hash function in pieces. Repeat as needed SHA512_Update(&libssl_sha512, data, datalen); // Generate the hash of the data sent in the previous step and save it in the hash variable SHA512_Final(hash, &libssl_sha512); }
The above generated the correct hash for the blank string.