From 4bbbad3d793a2fd18e9a04c03ca720ef99faf2f1 Mon Sep 17 00:00:00 2001 From: Qinghao Shi Date: Fri, 27 Sep 2019 15:58:28 +0100 Subject: [PATCH 1/4] FASTMODEL: add simulated TRNG implementation to fastmodel --- .../TARGET_ARM_FM/TARGET_FVP_MPS2/objects.h | 4 ++ .../TARGET_ARM_FM/TARGET_FVP_MPS2/trng_api.c | 56 +++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 targets/TARGET_ARM_FM/TARGET_FVP_MPS2/trng_api.c diff --git a/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/objects.h b/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/objects.h index c85d29317b..ef09fd7f0b 100644 --- a/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/objects.h +++ b/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/objects.h @@ -78,6 +78,10 @@ struct flash_s { uint8_t not_used; }; +struct trng_s { + uint8_t not_used; +}; + #include "gpio_object.h" #ifdef __cplusplus diff --git a/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/trng_api.c b/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/trng_api.c new file mode 100644 index 0000000000..b31a26d242 --- /dev/null +++ b/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/trng_api.c @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2017-2019 ARM Limited + * 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 "trng_api.h" +#include "device.h" +#include + + + +void trng_init(trng_t *obj) +{ + srand(0); + (void)obj; +} + + +void trng_free(trng_t *obj) +{ + (void)obj; +} + +/** Get random data from TRNG peripheral + * + * @param obj The TRNG object + * @param output The pointer to an output array + * @param length The size of output data, to avoid buffer overwrite + * @param output_length The length of generated data + * @return 0 success, -1 fail + */ +int trng_get_bytes(trng_t *obj, uint8_t *output, size_t length, size_t *output_length) +{ + (void)obj; + (void)output; + + for (int i = 0; i < length; ++i) { + output[i] = rand() % 256; + } + *output_length = length; + + return 0; + +} From a3f82738dded65d19b90cc150dd9a44651eb93ed Mon Sep 17 00:00:00 2001 From: Qinghao Shi Date: Fri, 27 Sep 2019 15:59:42 +0100 Subject: [PATCH 2/4] FASTMODEL: enable PSA tests for fastmodel --- targets/targets.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/targets/targets.json b/targets/targets.json index 1a30ec1040..1883fbcf25 100644 --- a/targets/targets.json +++ b/targets/targets.json @@ -8609,7 +8609,7 @@ "ARM_FM": { "inherits": ["Target"], "public": false, - "extra_labels": ["ARM_FM"] + "extra_labels": ["ARM_FM","PSA"] }, "FVP_MPS2": { "inherits": ["ARM_FM"], @@ -8633,6 +8633,7 @@ "SPI", "SPISLAVE", "TSC", + "TRNG", "USTICKER" ], "release_versions": ["5"], From 5089d9de87a715c30a120d69e5fb7004dfab7392 Mon Sep 17 00:00:00 2001 From: Qinghao Shi Date: Mon, 30 Sep 2019 16:30:51 +0100 Subject: [PATCH 3/4] FASTMODEL: update trng based on comments --- targets/TARGET_ARM_FM/TARGET_FVP_MPS2/trng_api.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/trng_api.c b/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/trng_api.c index b31a26d242..51ae4c3d25 100644 --- a/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/trng_api.c +++ b/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/trng_api.c @@ -44,7 +44,6 @@ void trng_free(trng_t *obj) int trng_get_bytes(trng_t *obj, uint8_t *output, size_t length, size_t *output_length) { (void)obj; - (void)output; for (int i = 0; i < length; ++i) { output[i] = rand() % 256; @@ -52,5 +51,4 @@ int trng_get_bytes(trng_t *obj, uint8_t *output, size_t length, size_t *output_l *output_length = length; return 0; - } From bdff628a6c92c925565030330c633aeb24947d3b Mon Sep 17 00:00:00 2001 From: Qinghao Shi Date: Mon, 30 Sep 2019 16:43:44 +0100 Subject: [PATCH 4/4] FASTMODEL: add a comment for TRNG simulation --- targets/TARGET_ARM_FM/TARGET_FVP_MPS2/trng_api.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/trng_api.c b/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/trng_api.c index 51ae4c3d25..ef2e278cbe 100644 --- a/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/trng_api.c +++ b/targets/TARGET_ARM_FM/TARGET_FVP_MPS2/trng_api.c @@ -19,7 +19,9 @@ #include "device.h" #include - +/** NOTE: FastModel are software models not contain any TRNG peripheral + * So C library srand() and rand() are used to simulate TRNG device + */ void trng_init(trng_t *obj) {