コード例 #1
0
ファイル: crypto_hash.c プロジェクト: shannon-alan/lk
void
hash_find(unsigned char *addr, unsigned int size, unsigned char *digest,
	  unsigned char auth_alg)
{
	crypto_result_type ret_val = CRYPTO_SHA_ERR_NONE;
	crypto_engine_type platform_ce_type = board_ce_type();

	if (auth_alg == CRYPTO_AUTH_ALG_SHA1) {
		if(platform_ce_type == CRYPTO_ENGINE_TYPE_SW)
			/* Hardware CE is not present , use software hashing */
			digest = SHA1(addr, size, digest);
		else if (platform_ce_type == CRYPTO_ENGINE_TYPE_HW)
			ret_val = crypto_sha1(addr, size, digest);
		else
			ret_val = CRYPTO_SHA_ERR_FAIL;
	} else if (auth_alg == CRYPTO_AUTH_ALG_SHA256) {
		if(platform_ce_type == CRYPTO_ENGINE_TYPE_SW)
			/* Hardware CE is not present , use software hashing */
			digest = SHA256(addr, size, digest);
		else if (platform_ce_type == CRYPTO_ENGINE_TYPE_HW)
			ret_val = crypto_sha256(addr, size, digest);
		else
		ret_val = CRYPTO_SHA_ERR_FAIL;
	}
	else
		ret_val = CRYPTO_SHA_ERR_FAIL;

	if (ret_val != CRYPTO_SHA_ERR_NONE) {
		dprintf(CRITICAL, "crypto_sha256 returns error %d\n", ret_val);
	}
}
コード例 #2
0
void
hash_find(unsigned char *addr, unsigned int size, unsigned char *digest,
	  unsigned char auth_alg)
{
	crypto_result_type ret_val = CRYPTO_SHA_ERR_NONE;

	if (auth_alg == 1) {
#ifdef NO_CRYPTO_ENG
		/* Hardware CE is not present , use software hashing */
		digest = SHA1(addr, size, digest);
#else
		ret_val = crypto_sha1(addr, size, digest);
#endif
	} else if (auth_alg == 2) {
#ifdef NO_CRYPTO_ENG
		/* Hardware CE is not present , use software hashing */
		digest = SHA256(addr, size, digest);
#else
		ret_val = crypto_sha256(addr, size, digest);
#endif
	}

	if (ret_val != CRYPTO_SHA_ERR_NONE) {
		dprintf(CRITICAL, "crypto_sha256 returns error %d\n", ret_val);
	}
}