psa_crypto_invasive.h 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /**
  2. * \file psa_crypto_invasive.h
  3. *
  4. * \brief PSA cryptography module: invasive interfaces for test only.
  5. *
  6. * The interfaces in this file are intended for testing purposes only.
  7. * They MUST NOT be made available to clients over IPC in integrations
  8. * with isolation, and they SHOULD NOT be made available in library
  9. * integrations except when building the library for testing.
  10. */
  11. /*
  12. * Copyright The Mbed TLS Contributors
  13. * SPDX-License-Identifier: Apache-2.0
  14. *
  15. * Licensed under the Apache License, Version 2.0 (the "License"); you may
  16. * not use this file except in compliance with the License.
  17. * You may obtain a copy of the License at
  18. *
  19. * http://www.apache.org/licenses/LICENSE-2.0
  20. *
  21. * Unless required by applicable law or agreed to in writing, software
  22. * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  23. * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  24. * See the License for the specific language governing permissions and
  25. * limitations under the License.
  26. */
  27. #ifndef PSA_CRYPTO_INVASIVE_H
  28. #define PSA_CRYPTO_INVASIVE_H
  29. #if defined(MBEDTLS_CONFIG_FILE)
  30. #include MBEDTLS_CONFIG_FILE
  31. #else
  32. #include "mbedtls/config.h"
  33. #endif
  34. #include "psa/crypto.h"
  35. #include "common.h"
  36. #include "mbedtls/entropy.h"
  37. #if !defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG)
  38. /** \brief Configure entropy sources.
  39. *
  40. * This function may only be called before a call to psa_crypto_init(),
  41. * or after a call to mbedtls_psa_crypto_free() and before any
  42. * subsequent call to psa_crypto_init().
  43. *
  44. * This function is only intended for test purposes. The functionality
  45. * it provides is also useful for system integrators, but
  46. * system integrators should configure entropy drivers instead of
  47. * breaking through to the Mbed TLS API.
  48. *
  49. * \param entropy_init Function to initialize the entropy context
  50. * and set up the desired entropy sources.
  51. * It is called by psa_crypto_init().
  52. * By default this is mbedtls_entropy_init().
  53. * This function cannot report failures directly.
  54. * To indicate a failure, set the entropy context
  55. * to a state where mbedtls_entropy_func() will
  56. * return an error.
  57. * \param entropy_free Function to free the entropy context
  58. * and associated resources.
  59. * It is called by mbedtls_psa_crypto_free().
  60. * By default this is mbedtls_entropy_free().
  61. *
  62. * \retval #PSA_SUCCESS
  63. * Success.
  64. * \retval #PSA_ERROR_NOT_PERMITTED
  65. * The caller does not have the permission to configure
  66. * entropy sources.
  67. * \retval #PSA_ERROR_BAD_STATE
  68. * The library has already been initialized.
  69. */
  70. psa_status_t mbedtls_psa_crypto_configure_entropy_sources(
  71. void (* entropy_init )( mbedtls_entropy_context *ctx ),
  72. void (* entropy_free )( mbedtls_entropy_context *ctx ) );
  73. #endif /* !defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) */
  74. #if defined(MBEDTLS_TEST_HOOKS) && defined(MBEDTLS_PSA_CRYPTO_C)
  75. psa_status_t psa_mac_key_can_do(
  76. psa_algorithm_t algorithm,
  77. psa_key_type_t key_type );
  78. #endif /* MBEDTLS_TEST_HOOKS && MBEDTLS_PSA_CRYPTO_C */
  79. #endif /* PSA_CRYPTO_INVASIVE_H */