quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

psa_crypto_core_common.h (1770B)


      1 /**
      2  * \file psa_crypto_core_common.h
      3  *
      4  * \brief Utility macros for internal use in the PSA cryptography core.
      5  */
      6 /*
      7  *  Copyright The Mbed TLS Contributors
      8  *  SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
      9  */
     10 
     11 #ifndef PSA_CRYPTO_CORE_COMMON_H
     12 #define PSA_CRYPTO_CORE_COMMON_H
     13 
     14 /** Return an offset into a buffer.
     15  *
     16  * This is just the addition of an offset to a pointer, except that this
     17  * function also accepts an offset of 0 into a buffer whose pointer is null.
     18  * (`p + n` has undefined behavior when `p` is null, even when `n == 0`.
     19  * A null pointer is a valid buffer pointer when the size is 0, for example
     20  * as the result of `malloc(0)` on some platforms.)
     21  *
     22  * \param p     Pointer to a buffer of at least n bytes.
     23  *              This may be \p NULL if \p n is zero.
     24  * \param n     An offset in bytes.
     25  * \return      Pointer to offset \p n in the buffer \p p.
     26  *              Note that this is only a valid pointer if the size of the
     27  *              buffer is at least \p n + 1.
     28  */
     29 static inline unsigned char *psa_crypto_buffer_offset(
     30     unsigned char *p, size_t n)
     31 {
     32     return p == NULL ? NULL : p + n;
     33 }
     34 
     35 /** Return an offset into a read-only buffer.
     36  *
     37  * Similar to mbedtls_buffer_offset(), but for const pointers.
     38  *
     39  * \param p     Pointer to a buffer of at least n bytes.
     40  *              This may be \p NULL if \p n is zero.
     41  * \param n     An offset in bytes.
     42  * \return      Pointer to offset \p n in the buffer \p p.
     43  *              Note that this is only a valid pointer if the size of the
     44  *              buffer is at least \p n + 1.
     45  */
     46 static inline const unsigned char *psa_crypto_buffer_offset_const(
     47     const unsigned char *p, size_t n)
     48 {
     49     return p == NULL ? NULL : p + n;
     50 }
     51 
     52 #endif /* PSA_CRYPTO_CORE_COMMON_H */