string GPWriter::constructRandomStr() { int randomDevice = ::open("/dev/urandom", O_RDONLY); char randomData[32]; size_t randomDataLen = 0; S3_CHECK_OR_DIE(randomDevice >= 0, S3RuntimeError, "failed to generate random number"); while (randomDataLen < sizeof(randomData)) { ssize_t result = ::read(randomDevice, randomData + randomDataLen, sizeof(randomData) - randomDataLen); if (result < 0) { break; } randomDataLen += result; } ::close(randomDevice); char out_hash_hex[SHA256_DIGEST_STRING_LENGTH]; sha256_hex(randomData, 32, out_hash_hex); return out_hash_hex + SHA256_DIGEST_STRING_LENGTH - 8 - 1; }
TEST(Utils, sha256) { char hash_str[65] = {0}; EXPECT_TRUE(sha256_hex(TEST_STRING, hash_str)); EXPECT_STREQ("d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592", hash_str); }