aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crypto/o_str.c9
-rw-r--r--crypto/params_from_text.c2
-rw-r--r--doc/man3/OPENSSL_hexchar2int.pod8
-rw-r--r--include/openssl/crypto.h.in5
-rw-r--r--test/hexstr_test.c5
5 files changed, 18 insertions, 11 deletions
diff --git a/crypto/o_str.c b/crypto/o_str.c
index 933133a05c..142ac4ba44 100644
--- a/crypto/o_str.c
+++ b/crypto/o_str.c
@@ -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)
diff --git a/crypto/params_from_text.c b/crypto/params_from_text.c
index 9f74dc1075..d458d31b2e 100644
--- a/crypto/params_from_text.c
+++ b/crypto/params_from_text.c
@@ -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);
diff --git a/doc/man3/OPENSSL_hexchar2int.pod b/doc/man3/OPENSSL_hexchar2int.pod
index 930b32b61f..bfb3c709ab 100644
--- a/doc/man3/OPENSSL_hexchar2int.pod
+++ b/doc/man3/OPENSSL_hexchar2int.pod
@@ -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
diff --git a/include/openssl/crypto.h.in b/include/openssl/crypto.h.in
index f4f098b72e..0641db3a44 100644
--- a/include/openssl/crypto.h.in
+++ b/include/openssl/crypto.h.in
@@ -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);
diff --git a/test/hexstr_test.c b/test/hexstr_test.c
index c4f13b6d53..c03b58ef03 100644
--- a/test/hexstr_test.c
+++ b/test/hexstr_test.c
@@ -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);
}