samplecode/psi/SMCClient/worker/sha256.cpp (30 lines of code) (raw):

#include "sha256.h" Sha256::Sha256() { sample_status_t sample_ret = SAMPLE_SUCCESS; // Verify the report_data in the Quote matches the expected value. // The first 32 bytes of report_data are SHA256 HASH of {ga|gb|vk}. // The second 32 bytes of report_data are set to zero. sample_ret = sample_sha256_init(&sha_handle); if (sample_ret != SAMPLE_SUCCESS) { Log("Error, init hash failed", log::error); } } Sha256::~Sha256() { sample_sha256_close(sha_handle); sha_handle = NULL; } int Sha256::update(uint8_t* data, uint32_t size) { sample_status_t sample_ret = SAMPLE_SUCCESS; sample_ret = sample_sha256_update(data, size, sha_handle); if (sample_ret != SAMPLE_SUCCESS) { Log("Error, udpate hash failed", log::error); return -1; } return 0; } int Sha256::hash(sample_sha256_hash_t* report_data) { sample_status_t sample_ret = SAMPLE_SUCCESS; sample_ret = sample_sha256_get_hash(sha_handle, report_data); if (sample_ret != SAMPLE_SUCCESS) { Log("Error, Get hash failed", log::error); return -1; } return 0; }