1 /* 2 * Copyright (c) 2021 - 2023, 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 Nordic Semiconductor ASA 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 35 #ifndef NRF_802154_SECURITY_WRITER_H__ 36 #define NRF_802154_SECURITY_WRITER_H__ 37 38 #include <stdint.h> 39 #include <stdbool.h> 40 41 #include "nrf_802154_types_internal.h" 42 43 /** 44 * @brief Transmission setup hook for the security writer module. 45 * 46 * This hook parses the frame to check availability of the key identified by the frame's security 47 * header and injects a frame counter associated with the key. If the frame's security level is 48 * zero, then no processing occurs. 49 * 50 * If this function detects a malformed frame, the higher layer is notified of transmission 51 * failure. A frame is considered malformed if requested key is invalid. 52 * 53 * @param[in] p_frame Pointer to the buffer that contains the PHR and PSDU 54 * of the transmitted frame. 55 * @param[in] p_params Pointer to the transmission parameters. 56 * @param[in] notify_function Function to be called to notify transmission failure. 57 * 58 * @retval false Frame security header was not processed successfully. 59 * @retval true Frame security header was processed successfully. 60 */ 61 bool nrf_802154_security_writer_tx_setup( 62 uint8_t * p_frame, 63 nrf_802154_transmit_params_t * p_params, 64 nrf_802154_transmit_failed_notification_t notify_function); 65 66 /** 67 * @brief TX started hook for the security writer module. 68 * 69 * Depending on whether @ref nrf_802154_security_writer_tx_setup has injected a frame counter 70 * into the transmitted frame, this hook marks the frame counter as updated. 71 * 72 * @param[in] p_frame Pointer to the buffer that contains the PHR and PSDU of the transmitted frame. 73 * 74 * @retval true Always succeeds. 75 */ 76 bool nrf_802154_security_writer_tx_started_hook(uint8_t * p_frame); 77 78 #endif // NRF_802154_SECURITY_WRITER_H__ 79