From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 6C9254E3BB for ; Wed, 9 Jul 2025 13:37:04 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id E8F9A68F70B; Wed, 9 Jul 2025 16:36:54 +0300 (EEST) Received: from mail-pf1-f173.google.com (mail-pf1-f173.google.com [209.85.210.173]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 4638768F6C9 for ; Wed, 9 Jul 2025 16:36:53 +0300 (EEST) Received: by mail-pf1-f173.google.com with SMTP id d2e1a72fcca58-7494999de5cso3464745b3a.3 for ; Wed, 09 Jul 2025 06:36:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752068211; x=1752673011; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XfVmEL3Y0U3yrO+3dK6Pkk1Un8gdy5vpWjbyDPtDjv8=; b=dj6qaWebKf5PmurDNn8PZotuN+V5I58B++W4MaFJqr36V9ijBnIUwg1ta2BgfM3ywu UZyCiJCcfeOyfPh8KHNyTfM3GBMSodjPHcfsbKhVGmmCwlWQ4L/xwLG0ko1gsawFzUUL yDmUrnIUmIdHduuG07Nt1wVFjmzTdFz4qUF4IiMay9xrf4HjX2lvDrnylm2JNB0VS7dY k3YcuRH6uuHGFssXk9N/U4S7JZ/D3OEyghuZcTNiDLLzjWWoPwg1hBNs32d94LdRHH6L ZQYgQx4LYOLMZfmgMlCPQfGw+RfpekBBac5hm15GPolbNhLLoUm7uWm/ydz4IcUN4P7R yuMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752068211; x=1752673011; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XfVmEL3Y0U3yrO+3dK6Pkk1Un8gdy5vpWjbyDPtDjv8=; b=FYgIw/psVZQXywSO2rRvPcTduZKwvOKK6+1SX6sKSx9IBgqeYAtGc8iuq6SLtZDfVZ /rG9oYkaeSSO2kchsasYIbcfWndLtOpoLW5Pf6Xixci5YLBO+5/59sdy6VUlEnX1iJaX qZ4T2Ik7UtBKqRic2C1hgW6Yp7nZX9pyv5QFehM2fb2g76FfWThFZTWaOytvV+n7b1oV 1+qsez7Hm6D73gb/Vv22PG6pcDh4AY3iI62nyuC/m3bh0WWH6Br+fGe3NzsUcR4egNT4 HDyskd6QulCi0iClbYgePbtmvbe9M72tHPuhUfSa5ETQ5EJT+uNnQPWeLvDpFwBmnUJr 7aAA== X-Gm-Message-State: AOJu0YzgHwYkFXdllJHVaKhL7IdxNtOpDq3VMUO3uwun1ZqY9BktwfUB i3zs+qCESDu8z22Uqp2yE1BaLp6dZQ2JueaNmPj4aqZaQiyLzPyDV9wflz2pH+cg X-Gm-Gg: ASbGnctK5aFW08ps4pp081hREFwDjMdQnXqiqZB3vSpxtRdEEqbB3Vk2lYwtlvBCoe8 YLju2f8NHsgx+oWOOAdheh0tr7zDDJdQZb1JAoQOAzVMMZ003h+d+J5IJQkSUf7NF0qkcpMiRN7 2Db/+EEOPcSApvx5U0LKuzjrMM58KPqKLqWSp9piPx10vaUdN7Pw9QpsgyJ9aN1wEYrtIJMtrrK APwu+eT5KMhy141c9219VZunkpyEux6V2XHxxbxNkgvrppiMxAUZRBIhW6QHplFDn82BJEUXW9Z k4HAAB7W27xoHzK/raDGdmBIC9u9oeA+IENVvHKUcWJogl5Ek9qnQQNyJ0XsH8+jU21w32c+wSr tNXw7R90= X-Google-Smtp-Source: AGHT+IHLWWOlfVrTPenhfPEjjjH7hQseoZOwvbOphU6t+yuXWvga+M3jtHuQb4tGcbbjCgOqkBS9Gg== X-Received: by 2002:a05:6a00:3d4e:b0:74c:3547:7f0c with SMTP id d2e1a72fcca58-74ea6411284mr4530386b3a.3.1752068210671; Wed, 09 Jul 2025 06:36:50 -0700 (PDT) Received: from localhost.localdomain ([111.31.252.39]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-74ce429b526sm14366340b3a.118.2025.07.09.06.36.48 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 09 Jul 2025 06:36:50 -0700 (PDT) From: Jack Lau X-Google-Original-From: Jack Lau To: ffmpeg-devel@ffmpeg.org Date: Wed, 9 Jul 2025 21:36:26 +0800 Message-ID: <20250709133635.22936-2-jacklau1222@qq.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250709133635.22936-1-jacklau1222@qq.com> References: <20250709133635.22936-1-jacklau1222@qq.com> MIME-Version: 1.0 X-Unsent: 1 Subject: [FFmpeg-devel] [PATCH 1/4] avformat/tls_openssl: add record trace function X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Jack Lau Content-Type: multipart/mixed; boundary="===============6628076028451542377==" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: --===============6628076028451542377== Content-Type: text/plain; charset=y Content-Transfer-Encoding: 8bit Signed-off-by: Jack Lau --- libavformat/tls_openssl.c | 51 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/libavformat/tls_openssl.c b/libavformat/tls_openssl.c index 2a01fb387d..8639ac9758 100644 --- a/libavformat/tls_openssl.c +++ b/libavformat/tls_openssl.c @@ -20,6 +20,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/intreadwrite.h" #include "libavutil/mem.h" #include "network.h" #include "os_support.h" @@ -559,6 +560,48 @@ static int tls_close(URLContext *h) return 0; } +/* + * Trace a single TLS/DTLS record. + * + * See RFC 5246 Section 6.2.1, RFC 6347 Section 4.1 + * + * @param data Raw record (network byte‑order). + * @param length Size of @data in bytes. + * @param incoming Non‑zero when the packet was received, zero when sent. + */ +static void openssl_state_trace(uint8_t *data, int length, int incoming) +{ + uint8_t content_type = 0; /* TLS/DTLS ContentType */ + uint16_t record_length = 0; /* Length field from header */ + uint8_t handshake_type = 0; /* First byte of Handshake msg */ + int is_dtls = 0; + + /* ContentType is always the very first byte */ + if (length >= 1) + content_type = AV_RB8(&data[0]); + if (length >= 3 && data[1] == DTLS1_VERSION_MAJOR) + is_dtls = 1; + /* TLS header is 5 bytes, DTLS header is 13 bytes */ + if (length >= 13 && is_dtls) + record_length = AV_RB16(&data[11]); + else if (length >= 5 && !is_dtls) + record_length = AV_RB16(&data[3]); + /* + * HandshakeType values (TLS 1.0–1.2, DTLS 1.0/1.2) + * See RFC 5246 Section 7.4, RFC 6347 Section 4.2 + * + * Only present when ContentType == handshake(22) + */ + if (content_type == 22) { + int hs_off = is_dtls ? 13 : 5; + if (length > hs_off) + handshake_type = AV_RB8(&data[hs_off]); + } + + av_log(NULL, AV_LOG_TRACE ,"TLS: Trace %s, len=%u, cnt=%u, size=%u, hs=%u\n", + (incoming? "RECV":"SEND"), length, content_type, record_length, handshake_type); +} + static int url_bio_create(BIO *b) { BIO_set_init(b, 1); @@ -576,8 +619,10 @@ static int url_bio_bread(BIO *b, char *buf, int len) { TLSContext *c = BIO_get_data(b); int ret = ffurl_read(c->tls_shared.is_dtls ? c->tls_shared.udp : c->tls_shared.tcp, buf, len); - if (ret >= 0) + if (ret >= 0) { + openssl_state_trace((uint8_t*)buf, ret, 1); return ret; + } BIO_clear_retry_flags(b); if (ret == AVERROR_EXIT) return 0; @@ -592,8 +637,10 @@ static int url_bio_bwrite(BIO *b, const char *buf, int len) { TLSContext *c = BIO_get_data(b); int ret = ffurl_write(c->tls_shared.is_dtls ? c->tls_shared.udp : c->tls_shared.tcp, buf, len); - if (ret >= 0) + if (ret >= 0) { + openssl_state_trace((uint8_t*)buf, ret, 0); return ret; + } BIO_clear_retry_flags(b); if (ret == AVERROR_EXIT) return 0; -- 2.49.0 --===============6628076028451542377== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". --===============6628076028451542377==--