mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-25 06:19:56 +00:00

Now that we have a framework for the SMCCC TRNG interface, and the existing Juno entropy code has been prepared, add the few remaining bits to implement this interface for the Juno Trusted Entropy Source. We retire the existing Juno specific RNG interface, and use the generic one for the stack canary generation. Change-Id: Ib6a6e5568cb8e0059d71740e2d18d6817b07127d Signed-off-by: Andre Przywara <andre.przywara@arm.com>
27 lines
572 B
C
27 lines
572 B
C
/*
|
|
* Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#include <arch_helpers.h>
|
|
#include <common/debug.h>
|
|
#include <lib/utils.h>
|
|
#include <plat/common/plat_trng.h>
|
|
#include <platform_def.h>
|
|
|
|
u_register_t plat_get_stack_protector_canary(void)
|
|
{
|
|
uint64_t entropy;
|
|
|
|
if (!plat_get_entropy(&entropy)) {
|
|
ERROR("Not enough entropy to initialize canary value\n");
|
|
panic();
|
|
}
|
|
|
|
if (sizeof(entropy) == sizeof(u_register_t)) {
|
|
return entropy;
|
|
}
|
|
|
|
return (entropy & 0xffffffffULL) ^ (entropy >> 32);
|
|
}
|