1a8e1175bSopenharmony_ci/* 2a8e1175bSopenharmony_ci * Test driver for PAKE driver entry points. 3a8e1175bSopenharmony_ci */ 4a8e1175bSopenharmony_ci/* Copyright The Mbed TLS Contributors 5a8e1175bSopenharmony_ci * SPDX-License-Identifier: Apache-2.0 6a8e1175bSopenharmony_ci * 7a8e1175bSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); you may 8a8e1175bSopenharmony_ci * not use this file except in compliance with the License. 9a8e1175bSopenharmony_ci * You may obtain a copy of the License at 10a8e1175bSopenharmony_ci * 11a8e1175bSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 12a8e1175bSopenharmony_ci * 13a8e1175bSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 14a8e1175bSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 15a8e1175bSopenharmony_ci * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16a8e1175bSopenharmony_ci * See the License for the specific language governing permissions and 17a8e1175bSopenharmony_ci * limitations under the License. 18a8e1175bSopenharmony_ci */ 19a8e1175bSopenharmony_ci 20a8e1175bSopenharmony_ci#ifndef PSA_CRYPTO_TEST_DRIVERS_PAKE_H 21a8e1175bSopenharmony_ci#define PSA_CRYPTO_TEST_DRIVERS_PAKE_H 22a8e1175bSopenharmony_ci 23a8e1175bSopenharmony_ci#include "mbedtls/build_info.h" 24a8e1175bSopenharmony_ci 25a8e1175bSopenharmony_ci#if defined(PSA_CRYPTO_DRIVER_TEST) 26a8e1175bSopenharmony_ci#include <psa/crypto_driver_common.h> 27a8e1175bSopenharmony_ci 28a8e1175bSopenharmony_citypedef struct { 29a8e1175bSopenharmony_ci /* If not PSA_SUCCESS, return this error code instead of processing the 30a8e1175bSopenharmony_ci * function call. */ 31a8e1175bSopenharmony_ci psa_status_t forced_status; 32a8e1175bSopenharmony_ci /* PAKE driver setup is executed on the first call to 33a8e1175bSopenharmony_ci pake_output/pake_input (added to distinguish forced statuses). */ 34a8e1175bSopenharmony_ci psa_status_t forced_setup_status; 35a8e1175bSopenharmony_ci /* Count the amount of times PAKE driver functions are called. */ 36a8e1175bSopenharmony_ci struct { 37a8e1175bSopenharmony_ci unsigned long total; 38a8e1175bSopenharmony_ci unsigned long setup; 39a8e1175bSopenharmony_ci unsigned long input; 40a8e1175bSopenharmony_ci unsigned long output; 41a8e1175bSopenharmony_ci unsigned long implicit_key; 42a8e1175bSopenharmony_ci unsigned long abort; 43a8e1175bSopenharmony_ci } hits; 44a8e1175bSopenharmony_ci /* Status returned by the last PAKE driver function call. */ 45a8e1175bSopenharmony_ci psa_status_t driver_status; 46a8e1175bSopenharmony_ci /* Output returned by pake_output */ 47a8e1175bSopenharmony_ci void *forced_output; 48a8e1175bSopenharmony_ci size_t forced_output_length; 49a8e1175bSopenharmony_ci} mbedtls_test_driver_pake_hooks_t; 50a8e1175bSopenharmony_ci 51a8e1175bSopenharmony_ci#define MBEDTLS_TEST_DRIVER_PAKE_INIT { PSA_SUCCESS, PSA_SUCCESS, { 0, 0, 0, 0, 0, 0 }, PSA_SUCCESS, \ 52a8e1175bSopenharmony_ci NULL, 0 } 53a8e1175bSopenharmony_cistatic inline mbedtls_test_driver_pake_hooks_t 54a8e1175bSopenharmony_cimbedtls_test_driver_pake_hooks_init(void) 55a8e1175bSopenharmony_ci{ 56a8e1175bSopenharmony_ci const mbedtls_test_driver_pake_hooks_t v = MBEDTLS_TEST_DRIVER_PAKE_INIT; 57a8e1175bSopenharmony_ci return v; 58a8e1175bSopenharmony_ci} 59a8e1175bSopenharmony_ci 60a8e1175bSopenharmony_ciextern mbedtls_test_driver_pake_hooks_t mbedtls_test_driver_pake_hooks; 61a8e1175bSopenharmony_ci 62a8e1175bSopenharmony_cipsa_status_t mbedtls_test_transparent_pake_setup( 63a8e1175bSopenharmony_ci mbedtls_transparent_test_driver_pake_operation_t *operation, 64a8e1175bSopenharmony_ci const psa_crypto_driver_pake_inputs_t *inputs); 65a8e1175bSopenharmony_ci 66a8e1175bSopenharmony_cipsa_status_t mbedtls_test_transparent_pake_output( 67a8e1175bSopenharmony_ci mbedtls_transparent_test_driver_pake_operation_t *operation, 68a8e1175bSopenharmony_ci psa_crypto_driver_pake_step_t step, 69a8e1175bSopenharmony_ci uint8_t *output, 70a8e1175bSopenharmony_ci size_t output_size, 71a8e1175bSopenharmony_ci size_t *output_length); 72a8e1175bSopenharmony_ci 73a8e1175bSopenharmony_cipsa_status_t mbedtls_test_transparent_pake_input( 74a8e1175bSopenharmony_ci mbedtls_transparent_test_driver_pake_operation_t *operation, 75a8e1175bSopenharmony_ci psa_crypto_driver_pake_step_t step, 76a8e1175bSopenharmony_ci const uint8_t *input, 77a8e1175bSopenharmony_ci size_t input_length); 78a8e1175bSopenharmony_ci 79a8e1175bSopenharmony_cipsa_status_t mbedtls_test_transparent_pake_get_implicit_key( 80a8e1175bSopenharmony_ci mbedtls_transparent_test_driver_pake_operation_t *operation, 81a8e1175bSopenharmony_ci uint8_t *output, size_t output_size, size_t *output_length); 82a8e1175bSopenharmony_ci 83a8e1175bSopenharmony_cipsa_status_t mbedtls_test_transparent_pake_abort( 84a8e1175bSopenharmony_ci mbedtls_transparent_test_driver_pake_operation_t *operation); 85a8e1175bSopenharmony_ci 86a8e1175bSopenharmony_ci#endif /* PSA_CRYPTO_DRIVER_TEST */ 87a8e1175bSopenharmony_ci#endif /* PSA_CRYPTO_TEST_DRIVERS_PAKE_H */ 88