1e71b7053SJung-uk Kim /* 2e71b7053SJung-uk Kim * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. 3e71b7053SJung-uk Kim * 4*b077aed3SPierre Pronchery * Licensed under the Apache License 2.0 (the "License"). You may not use 5e71b7053SJung-uk Kim * this file except in compliance with the License. You can obtain a copy 6e71b7053SJung-uk Kim * in the file LICENSE in the source distribution or at 7e71b7053SJung-uk Kim * https://www.openssl.org/source/license.html 8e71b7053SJung-uk Kim */ 9e71b7053SJung-uk Kim 10*b077aed3SPierre Pronchery #ifndef OPENSSL_BUFFER_H 11*b077aed3SPierre Pronchery # define OPENSSL_BUFFER_H 12*b077aed3SPierre Pronchery # pragma once 13e71b7053SJung-uk Kim 14*b077aed3SPierre Pronchery # include <openssl/macros.h> 15*b077aed3SPierre Pronchery # ifndef OPENSSL_NO_DEPRECATED_3_0 16*b077aed3SPierre Pronchery # define HEADER_BUFFER_H 17*b077aed3SPierre Pronchery # endif 18*b077aed3SPierre Pronchery 19*b077aed3SPierre Pronchery # include <openssl/types.h> 20*b077aed3SPierre Pronchery # ifndef OPENSSL_CRYPTO_H 21e71b7053SJung-uk Kim # include <openssl/crypto.h> 22e71b7053SJung-uk Kim # endif 23e71b7053SJung-uk Kim # include <openssl/buffererr.h> 24e71b7053SJung-uk Kim 25e71b7053SJung-uk Kim 26e71b7053SJung-uk Kim #ifdef __cplusplus 27e71b7053SJung-uk Kim extern "C" { 28e71b7053SJung-uk Kim #endif 29e71b7053SJung-uk Kim 30e71b7053SJung-uk Kim # include <stddef.h> 31e71b7053SJung-uk Kim # include <sys/types.h> 32e71b7053SJung-uk Kim 33*b077aed3SPierre Pronchery # ifndef OPENSSL_NO_DEPRECATED_3_0 34e71b7053SJung-uk Kim # define BUF_strdup(s) OPENSSL_strdup(s) 35e71b7053SJung-uk Kim # define BUF_strndup(s, size) OPENSSL_strndup(s, size) 36e71b7053SJung-uk Kim # define BUF_memdup(data, size) OPENSSL_memdup(data, size) 37e71b7053SJung-uk Kim # define BUF_strlcpy(dst, src, size) OPENSSL_strlcpy(dst, src, size) 38e71b7053SJung-uk Kim # define BUF_strlcat(dst, src, size) OPENSSL_strlcat(dst, src, size) 39e71b7053SJung-uk Kim # define BUF_strnlen(str, maxlen) OPENSSL_strnlen(str, maxlen) 40*b077aed3SPierre Pronchery # endif 41e71b7053SJung-uk Kim 42e71b7053SJung-uk Kim struct buf_mem_st { 43e71b7053SJung-uk Kim size_t length; /* current number of bytes */ 44e71b7053SJung-uk Kim char *data; 45e71b7053SJung-uk Kim size_t max; /* size of buffer */ 46e71b7053SJung-uk Kim unsigned long flags; 47e71b7053SJung-uk Kim }; 48e71b7053SJung-uk Kim 49e71b7053SJung-uk Kim # define BUF_MEM_FLAG_SECURE 0x01 50e71b7053SJung-uk Kim 51e71b7053SJung-uk Kim BUF_MEM *BUF_MEM_new(void); 52e71b7053SJung-uk Kim BUF_MEM *BUF_MEM_new_ex(unsigned long flags); 53e71b7053SJung-uk Kim void BUF_MEM_free(BUF_MEM *a); 54e71b7053SJung-uk Kim size_t BUF_MEM_grow(BUF_MEM *str, size_t len); 55e71b7053SJung-uk Kim size_t BUF_MEM_grow_clean(BUF_MEM *str, size_t len); 56e71b7053SJung-uk Kim void BUF_reverse(unsigned char *out, const unsigned char *in, size_t siz); 57e71b7053SJung-uk Kim 58e71b7053SJung-uk Kim 59e71b7053SJung-uk Kim # ifdef __cplusplus 60e71b7053SJung-uk Kim } 61e71b7053SJung-uk Kim # endif 62e71b7053SJung-uk Kim #endif 63