1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00

sys/psa_crypto: add test for double initialization

This commit is contained in:
Mikolai Gütschow 2023-10-17 17:17:33 +02:00
parent 14b608cb23
commit 7479728200
No known key found for this signature in database
GPG Key ID: 943E2F37AA659AD5
3 changed files with 98 additions and 0 deletions

View File

@ -0,0 +1,14 @@
include ../Makefile.sys_common
USEMODULE += embunit
USEMODULE += psa_crypto
# FIXME: currently only needed for build to succeed
USEMODULE += psa_cipher
USEMODULE += psa_cipher_aes_128_cbc
USEMODULE += psa_asymmetric
USEMODULE += psa_asymmetric_ecc_ed25519
include $(RIOTBASE)/Makefile.include

View File

@ -0,0 +1,70 @@
/*
* Copyright (C) 2023 TU Dresden
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @ingroup tests
* @{
*
* @file
* @brief Test application for the PSA Cryptography API
*
* @author Mikolai Gütschow <mikolai.guetschow@tu-dresden.de>
*
* @}
*/
#include <stdio.h>
#include "embUnit.h"
#include "psa/crypto.h"
#define TEST_ASSERT_PSA(func_) TEST_ASSERT_MESSAGE(func_ == PSA_SUCCESS, #func_ " failed");
/*
* A second call to psa_crypto_init() should not reset key data.
*/
static void test_init_twice(void)
{
TEST_ASSERT_PSA(psa_crypto_init());
psa_key_id_t key_id = PSA_KEY_ID_NULL;
psa_key_attributes_t key_attr = psa_key_attributes_init();
psa_set_key_algorithm(&key_attr, PSA_ALG_PURE_EDDSA);
psa_set_key_usage_flags(&key_attr, PSA_KEY_USAGE_EXPORT);
psa_set_key_bits(&key_attr, 255);
psa_set_key_type(&key_attr, PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_TWISTED_EDWARDS));
TEST_ASSERT_PSA(psa_generate_key(&key_attr, &key_id));
uint8_t key_data[PSA_EXPORT_PUBLIC_KEY_OUTPUT_SIZE(psa_get_key_type(&key_attr), psa_get_key_bits(&key_attr))];
size_t key_data_len;
TEST_ASSERT_PSA(psa_export_public_key(key_id, key_data, sizeof(key_data), &key_data_len));
TEST_ASSERT_PSA(psa_crypto_init());
TEST_ASSERT_PSA(psa_export_public_key(key_id, key_data, sizeof(key_data), &key_data_len));
}
static Test *tests_psa_crypto(void)
{
EMB_UNIT_TESTFIXTURES(fixtures) {
new_TestFixture(test_init_twice),
};
EMB_UNIT_TESTCALLER(tests, NULL, NULL, fixtures);
return (Test *)&tests;
}
int main(void)
{
puts("psa_crypto test");
TESTS_START();
TESTS_RUN(tests_psa_crypto());
TESTS_END();
return 0;
}

View File

@ -0,0 +1,14 @@
#!/usr/bin/env python3
# Copyright (C) 2023 TU Dresden
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
import sys
from testrunner import run_check_unittests
if __name__ == "__main__":
sys.exit(run_check_unittests())