Skip to main content

c_hash.c

/****************************************************************************************
* c_hash.c
*
* Note: See Tricryption Engine SDK for details on how to set the project environment.
*
*****************************************************************************************/

#include <stdio.h>
#include <string.h>
#include "teagent_c.h"

void PrintError(const char * msg)
{
char szErr[1024];
uint32_t nLength = 1024;
uint32_t nCode = GetLastTEError(szErr, &nLength);
printf("%s Code = 0x%x, Message = %s\n", msg, nCode, szErr);
}


int main()
{
char szData[] = "This is a test string";
char szSalt[] = "this is our secret";
char szHashed[64]; /* >= 45: performHash v2 (SHA-256) emits 44 base64 chars + NUL */
unsigned long length;
TE_RETCODE ret;

/* Initialize the TE environment */
TEEnvInit();

printf("Source Data: %s\n", szData);
printf("Salt : %s\n", szSalt);

/* Hash data */
length = sizeof(szHashed); /* set buffer size for hashed value */
ret = Hash(szData, strlen(szData), szHashed, &length, szSalt, strlen(szSalt));

if(ret)
{
PrintError("Hash error:");
}
else
{
printf("Return value = %d\n", ret);
printf("Length of hash value = %d\n", length);
if(sizeof(szHashed) > length) {
szHashed[length] = '\0'; /* terminate hashed value at the right position */
printf("Hashed value : %s\n", szHashed);
}
}

/* Uninitialize the TE environment */
TEEnvClose();

return 0;
}


/*
Source Data: This is a test string
Salt : this is our secret
Return value = 0
Length of hash value = 44
Hashed value : 28WTruCr5vQ7tO0rDZVPfs0X78wk3ZHC0o+NKz9K7x8=
Press any key to continue
*/