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