diff options
-rw-r--r-- | crypto/o_str.c | 9 | ||||
-rw-r--r-- | crypto/params_from_text.c | 2 | ||||
-rw-r--r-- | doc/man3/OPENSSL_hexchar2int.pod | 8 | ||||
-rw-r--r-- | include/openssl/crypto.h.in | 5 | ||||
-rw-r--r-- | test/hexstr_test.c | 5 |
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); } |