--- /dev/null
+/*
+ * 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
#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,
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);
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);