1 /* 2 * Copyright (c) 2025, Nordic Semiconductor ASA 3 * All rights reserved. 4 * 5 * SPDX-License-Identifier: BSD-3-Clause 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions are met: 9 * 10 * 1. Redistributions of source code must retain the above copyright notice, this 11 * list of conditions and the following disclaimer. 12 * 13 * 2. Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in the 15 * documentation and/or other materials provided with the distribution. 16 * 17 * 3. Neither the name of the copyright holder nor the names of its 18 * contributors may be used to endorse or promote products derived from this 19 * software without specific prior written permission. 20 * 21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 25 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 31 * POSSIBILITY OF SUCH DAMAGE. 32 */ 33 34 #ifndef NRFX_CRACEN_H 35 #define NRFX_CRACEN_H 36 37 #include <nrfx.h> 38 39 #ifdef __cplusplus 40 extern "C" { 41 #endif 42 43 /** 44 * @defgroup nrfx_cracen CRACEN driver 45 * @{ 46 * @ingroup nrf_cracen 47 * @brief Cryptographic accelerator engine (CRACEN) peripheral driver 48 */ 49 50 /** 51 * @brief Function for initializing the CRACEN CTR_DRBG random generator. 52 * 53 * @note This initialization is relatively slow and power consuming. 54 * 55 * @note This function assumes exclusive access to the CRACEN TRNG and CryptoMaster, and may 56 * not be used while any other component is using those peripherals. 57 * 58 * @retval NRFX_SUCCESS Initialization was successful. 59 * @retval NRFX_ERROR_INTERNAL Unexpected error. 60 * @retval NRFX_ERROR_ALREADY If it was was already initialized. 61 */ 62 nrfx_err_t nrfx_cracen_ctr_drbg_init(void); 63 64 /** @brief Function for uninitializing the CRACEN CTR_DRBG random generator. */ 65 void nrfx_cracen_ctr_drbg_uninit(void); 66 67 /** 68 * @brief Function for filling the specified /p p_buf buffer with /p size bytes of random data. 69 * 70 * @note This function assumes exclusive access to the CRACEN TRNG and CryptoMaster, and may 71 * not be used while any other component is using those peripherals. 72 * 73 * @param[out] p_buf Buffer into which to copy \p size bytes of entropy. 74 * @param[in] size Number of bytes to copy. 75 * 76 * @retval NRFX_SUCCESS Success. 77 * @retval NRFX_ERROR_INVALID_PARAM Invalid inputs. 78 * @retval NRFX_ERROR_INTERNAL Unexpected error. 79 */ 80 nrfx_err_t nrfx_cracen_ctr_drbg_random_get(uint8_t * p_buf, size_t size); 81 82 /** @} */ 83 84 #ifdef __cplusplus 85 } 86 #endif 87 88 #endif /* NRFX_CRACEN_H */ 89