| /** |
| * \file psa_crypto_core_common.h |
| * |
| * \brief Utility macros for internal use in the PSA cryptography core. |
| */ |
| /* |
| * Copyright The Mbed TLS Contributors |
| * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later |
| */ |
| |
| #ifndef PSA_CRYPTO_CORE_COMMON_H |
| #define PSA_CRYPTO_CORE_COMMON_H |
| |
| /** Return an offset into a buffer. |
| * |
| * This is just the addition of an offset to a pointer, except that this |
| * function also accepts an offset of 0 into a buffer whose pointer is null. |
| * (`p + n` has undefined behavior when `p` is null, even when `n == 0`. |
| * A null pointer is a valid buffer pointer when the size is 0, for example |
| * as the result of `malloc(0)` on some platforms.) |
| * |
| * \param p Pointer to a buffer of at least n bytes. |
| * This may be \p NULL if \p n is zero. |
| * \param n An offset in bytes. |
| * \return Pointer to offset \p n in the buffer \p p. |
| * Note that this is only a valid pointer if the size of the |
| * buffer is at least \p n + 1. |
| */ |
| static inline unsigned char *psa_crypto_buffer_offset( |
| unsigned char *p, size_t n) |
| { |
| return p == NULL ? NULL : p + n; |
| } |
| |
| /** Return an offset into a read-only buffer. |
| * |
| * Similar to mbedtls_buffer_offset(), but for const pointers. |
| * |
| * \param p Pointer to a buffer of at least n bytes. |
| * This may be \p NULL if \p n is zero. |
| * \param n An offset in bytes. |
| * \return Pointer to offset \p n in the buffer \p p. |
| * Note that this is only a valid pointer if the size of the |
| * buffer is at least \p n + 1. |
| */ |
| static inline const unsigned char *psa_crypto_buffer_offset_const( |
| const unsigned char *p, size_t n) |
| { |
| return p == NULL ? NULL : p + n; |
| } |
| |
| #endif /* PSA_CRYPTO_CORE_COMMON_H */ |