diff --git a/targets/TARGET_NXP/TARGET_MCUXpresso_MCUS/TARGET_IMX/trng_api.c b/targets/TARGET_NXP/TARGET_MCUXpresso_MCUS/TARGET_IMX/trng_api.c new file mode 100644 index 0000000000..f82ae026e7 --- /dev/null +++ b/targets/TARGET_NXP/TARGET_MCUXpresso_MCUS/TARGET_IMX/trng_api.c @@ -0,0 +1,49 @@ +/* + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include +#include "cmsis.h" +#include "fsl_trng.h" +#include "trng_api.h" + +void trng_init(trng_t *obj) +{ + (void)obj; + trng_config_t trngConfig; + TRNG_GetDefaultConfig(&trngConfig); + TRNG_Init(TRNG, &trngConfig); +} + +void trng_free(trng_t *obj) +{ + (void)obj; + TRNG_Deinit(TRNG); +} + +int trng_get_bytes(trng_t *obj, uint8_t *output, size_t length, size_t *output_length) +{ + (void)obj; + + if(TRNG_GetRandomData(TRNG, output, length) != kStatus_Success) { + return -1; + } + *output_length = length; + + return 0; +} diff --git a/targets/targets.json b/targets/targets.json index 4393807897..61649dd4e1 100644 --- a/targets/targets.json +++ b/targets/targets.json @@ -1955,7 +1955,8 @@ "SERIAL", "SPI", "SPISLAVE", - "STDIO_MESSAGES" + "STDIO_MESSAGES", + "TRNG" ], "release_versions": ["2", "5"], "features": ["LWIP"],