diff --git a/crypto/buffer/buffer.c b/crypto/buffer/buffer.c index 3bf03c7ef..a7fe5ba54 100644 --- a/crypto/buffer/buffer.c +++ b/crypto/buffer/buffer.c @@ -219,3 +219,26 @@ size_t BUF_strlcat(char *dst, const char *src, size_t size) l++; return l + BUF_strlcpy(dst, src, size); } + +void BUF_reverse(unsigned char *out, unsigned char *in, size_t size) + { + size_t i; + if (in) + { + out += size - 1; + for (i = 0; i < size; i++) + *in++ = *out--; + } + else + { + unsigned char *q; + char c; + q = out + size - 1; + for (i = 0; i < size/2; i++) + { + c = *q; + *q-- = *out; + *out++ = c; + } + } + } diff --git a/crypto/buffer/buffer.h b/crypto/buffer/buffer.h index 1db960745..f7acca56e 100644 --- a/crypto/buffer/buffer.h +++ b/crypto/buffer/buffer.h @@ -88,6 +88,7 @@ int BUF_MEM_grow_clean(BUF_MEM *str, int len); char * BUF_strdup(const char *str); char * BUF_strndup(const char *str, size_t siz); void * BUF_memdup(const void *data, size_t siz); +void BUF_reverse(unsigned char *out, unsigned char *in, size_t siz); /* safe string functions */ size_t BUF_strlcpy(char *dst,const char *src,size_t siz);