]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
ssl: factorize and improved hex conversion code
authorFdaSilvaYY <fdasilvayy@gmail.com>
Thu, 1 Aug 2024 20:51:25 +0000 (22:51 +0200)
committerTomas Mraz <tomas@openssl.org>
Wed, 7 Aug 2024 17:25:10 +0000 (19:25 +0200)
Add inline qualifier to avoid exporting a function for one unique use

Reviewed-by: Tom Cosgrove <tom.cosgrove@arm.com>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/24968)

include/internal/to_hex.h [new file with mode: 0644]
ssl/ssl_lib.c

diff --git a/include/internal/to_hex.h b/include/internal/to_hex.h
new file mode 100644 (file)
index 0000000..e37e9f0
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2024 The OpenSSL Project Authors. All Rights Reserved.
+ *
+ * Licensed under the Apache License 2.0 (the "License").  You may not use
+ * this file except in compliance with the License.  You can obtain a copy
+ * in the file LICENSE in the source distribution or at
+ * https://www.openssl.org/source/license.html
+ */
+
+#ifndef OSSL_INTERNAL_TO_HEX_H
+# define OSSL_INTERNAL_TO_HEX_H
+# pragma once
+
+static ossl_inline size_t to_hex(char *buf, uint8_t n, const char hexdig[17])
+{
+    *buf++ = hexdig[(n >> 4) & 0xf];
+    *buf = hexdig[n & 0xf];
+    return 2;
+}
+
+static ossl_inline size_t ossl_to_lowerhex(char *buf, uint8_t n)
+{
+    static const char hexdig[] = "0123456789abcdef";
+
+    return to_hex(buf, n, hexdig);
+}
+#endif
index 96ec86a00aa9639389740e03fefd00db98f026b9..ba9fcec55c80bbc98767081c29100561e816bcdb 100644 (file)
@@ -26,6 +26,7 @@
 #include "internal/nelem.h"
 #include "internal/refcount.h"
 #include "internal/ktls.h"
+#include "internal/to_hex.h"
 #include "quic/quic_local.h"
 
 static int ssl_undefined_function_3(SSL_CONNECTION *sc, unsigned char *r,
@@ -6747,10 +6748,8 @@ static int nss_keylog_int(const char *prefix,
                           const uint8_t *parameter_2,
                           size_t parameter_2_len)
 {
-    static const char hexdig[] = "0123456789abcdef";
     char *out = NULL;
     char *cursor = NULL;
-    const uint8_t *p;
     size_t out_len = 0, i, prefix_len;
     SSL_CTX *sctx = SSL_CONNECTION_GET_CTX(sc);
 
@@ -6774,16 +6773,12 @@ static int nss_keylog_int(const char *prefix,
     cursor += prefix_len;
     *cursor++ = ' ';
 
-    for (i = 0, p = parameter_1; i < parameter_1_len; i++, ++p) {
-        *cursor++ = hexdig[(*p >> 4) & 0xf];
-        *cursor++ = hexdig[*p & 0xf];
-    }
+    for (i = 0; i < parameter_1_len; ++i)
+        cursor += ossl_to_lowerhex(cursor, parameter_1[i]);
     *cursor++ = ' ';
 
-    for (i = 0, p = parameter_2; i < parameter_2_len; i++, ++p) {
-        *cursor++ = hexdig[(*p >> 4) & 0xf];
-        *cursor++ = hexdig[*p & 0xf];
-    }
+    for (i = 0; i < parameter_2_len; ++i)
+        cursor += ossl_to_lowerhex(cursor, parameter_2[i]);
     *cursor = '\0';
 
     sctx->keylog_callback(SSL_CONNECTION_GET_SSL(sc), (const char *)out);