Browse Source

Change OPENSSL_hexstr2buf_ex() & OPENSSL_buf2hexstr_ex() to pass the separator

Reviewed-by: Tomas Mraz <tmraz@fedoraproject.org>
(Merged from https://github.com/openssl/openssl/pull/13294)
master
Shane Lontis 2 years ago
parent
commit
abdd3fa04f
5 changed files with 18 additions and 11 deletions
  1. +5
    -4
      crypto/o_str.c
  2. +1
    -1
      crypto/params_from_text.c
  3. +6
    -2
      doc/man3/OPENSSL_hexchar2int.pod
  4. +3
    -2
      include/openssl/crypto.h.in
  5. +3
    -2
      test/hexstr_test.c

+ 5
- 4
crypto/o_str.c View File

@ -176,9 +176,9 @@ static int hexstr2buf_sep(unsigned char *buf, size_t buf_n, size_t *buflen,
* Given a string of hex digits convert to a buffer
*/
int OPENSSL_hexstr2buf_ex(unsigned char *buf, size_t buf_n, size_t *buflen,
const char *str)
const char *str, const char sep)
{
return hexstr2buf_sep(buf, buf_n, buflen, str, DEFAULT_SEPARATOR);
return hexstr2buf_sep(buf, buf_n, buflen, str, sep);
}
unsigned char *openssl_hexstr2buf_sep(const char *str, long *buflen,
@ -249,9 +249,10 @@ static int buf2hexstr_sep(char *str, size_t str_n, size_t *strlen,
}
int OPENSSL_buf2hexstr_ex(char *str, size_t str_n, size_t *strlen,
const unsigned char *buf, size_t buflen)
const unsigned char *buf, size_t buflen,
const char sep)
{
return buf2hexstr_sep(str, str_n, strlen, buf, buflen, DEFAULT_SEPARATOR);
return buf2hexstr_sep(str, str_n, strlen, buf, buflen, sep);
}
char *openssl_buf2hexstr_sep(const unsigned char *buf, long buflen, char sep)


+ 1
- 1
crypto/params_from_text.c View File

@ -145,7 +145,7 @@ static int construct_from_text(OSSL_PARAM *to, const OSSL_PARAM *paramdef,
if (ishex) {
size_t l = 0;
if (!OPENSSL_hexstr2buf_ex(buf, buf_n, &l, value))
if (!OPENSSL_hexstr2buf_ex(buf, buf_n, &l, value, ':'))
return 0;
} else {
memcpy(buf, value, buf_n);


+ 6
- 2
doc/man3/OPENSSL_hexchar2int.pod View File

@ -13,10 +13,10 @@ OPENSSL_buf2hexstr_ex, OPENSSL_buf2hexstr
int OPENSSL_hexchar2int(unsigned char c);
int OPENSSL_hexstr2buf_ex(unsigned char *buf, size_t buf_n, long *buflen,
const char *str);
const char *str, const char sep);
unsigned char *OPENSSL_hexstr2buf(const char *str, long *len);
int OPENSSL_buf2hexstr_ex(char *str, size_t str_n, size_t *strlen,
const unsigned char *buf, long buflen);
const unsigned char *buf, long buflen, const char sep);
char *OPENSSL_buf2hexstr(const unsigned char *buf, long buflen);
=head1 DESCRIPTION
@ -26,6 +26,8 @@ equivalent.
OPENSSL_hexstr2buf_ex() decodes the hex string B<str> and places the
resulting string of bytes in the given I<buf>.
The character I<sep> is the separator between the bytes, which is normally ':',
Setting this to '\0' means that there is no seperator.
I<buf_n> gives the size of the buffer.
If I<buflen> is not NULL, it is filled in with the result length.
To find out how large the result will be, call this function with NULL
@ -41,6 +43,8 @@ released by calling OPENSSL_free().
OPENSSL_buf2hexstr_ex() encodes the contents of the given I<buf> with
length I<buflen> and places the resulting hexadecimal character string
in the given I<str>.
The character I<sep> is the separator between the bytes, which is normally ':',
Setting this to '\0' means that there is no seperator.
I<str_n> gives the size of the of the string buffer.
If I<strlen> is not NULL, it is filled in with the result length.
To find out how large the result will be, call this function with NULL


+ 3
- 2
include/openssl/crypto.h.in View File

@ -123,10 +123,11 @@ size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz);
size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz);
size_t OPENSSL_strnlen(const char *str, size_t maxlen);
int OPENSSL_buf2hexstr_ex(char *str, size_t str_n, size_t *strlen,
const unsigned char *buf, size_t buflen);
const unsigned char *buf, size_t buflen,
const char sep);
char *OPENSSL_buf2hexstr(const unsigned char *buf, long buflen);
int OPENSSL_hexstr2buf_ex(unsigned char *buf, size_t buf_n, size_t *buflen,
const char *str);
const char *str, const char sep);
unsigned char *OPENSSL_hexstr2buf(const char *str, long *buflen);
int OPENSSL_hexchar2int(unsigned char c);


+ 3
- 2
test/hexstr_test.c View File

@ -118,9 +118,10 @@ static int test_hexstr_ex_to_from(int test_index)
unsigned char buf[64];
struct testdata *test = &tbl_testdata[test_index];
return TEST_true(OPENSSL_hexstr2buf_ex(buf, sizeof(buf), &len, test->in))
return TEST_true(OPENSSL_hexstr2buf_ex(buf, sizeof(buf), &len, test->in, ':'))
&& TEST_mem_eq(buf, len, test->expected, test->expected_len)
&& TEST_true(OPENSSL_buf2hexstr_ex(out, sizeof(out), NULL, buf, len))
&& TEST_true(OPENSSL_buf2hexstr_ex(out, sizeof(out), NULL, buf, len,
':'))
&& TEST_str_eq(out, test->in);
}


Loading…
Cancel
Save