> On Jun 5, 2025, at 19:20, Martin Storsjö <mar...@martin.st> wrote:
> 
> On Thu, 5 Jun 2025, Jack Lau wrote:
> 
>>> On Jun 5, 2025, at 15:02, Martin Storsjö <mar...@martin.st> wrote:
>>> On Thu, 5 Jun 2025, Jack Lau via ffmpeg-devel wrote:
>>>> fix the missing data structure pkey in the tls_context
>>>> Signed-off-by: Jack Lau <jacklau1...@qq.com>
>>>> ---
>>>> libavformat/tls_openssl.c | 30 +++++++++++++++++-------------
>>>> 1 file changed, 17 insertions(+), 13 deletions(-)
>>> Thanks, this does fix the build break. However, I don't quite understand 
>>> the fix...
>>>> diff --git a/libavformat/tls_openssl.c b/libavformat/tls_openssl.c
>>>> index b589d5d90a..bddeee9af8 100644
>>>> --- a/libavformat/tls_openssl.c
>>>> +++ b/libavformat/tls_openssl.c
>>>> @@ -467,6 +467,7 @@ typedef struct TLSContext {
>>>>   TLSShared tls_shared;
>>>>   SSL_CTX *ctx;
>>>>   SSL *ssl;
>>>> +    EVP_PKEY *pkey;
>>>> #if OPENSSL_VERSION_NUMBER >= 0x1010000fL
>>>>   BIO_METHOD* url_bio_method;
>>>> #endif
>>> As far as I can see, nothing ever sets this new field, it is only used in a 
>>> couple of places?
>> Thanks for the review.
>> 
>> The previous build error occurred because I forgot to properly set the 
>> EC_KEY when using OpenSSL versions earlier than 3.0.
>> 
>> In the current WHIP implementation, I initialize the key and certificate 
>> (either by reading from file or generating them) before the DTLS handshake, 
>> since the SDP requires fingerprints. The WHIP layer then passes the key and 
>> certificate content as strings into the DTLS context.
>> 
>> This fix ensures that the EVP_PKEY is loaded into the tls_context when DTLS 
>> starts. For OpenSSL versions below 1.0.2, we need to call 
>> SSL_CTX_set_tmp_ecdh, which requires an EC_KEY. So, i extract the EC_KEY 
>> from the EVP_PKEY.
>> 
>> I hope that explanation was clear—please feel free to reach out if you have 
>> any further questions.
> 
> No that didn't answer my question.
> 
> As far as I can see, nothing sets the context variable p->pkey. It is used in 
> openssl_init_ca_key_cert and later in dtls_start. But nothing ever sets 
> p->key, so it will be NULL everywhere.
> 
> Did you test this code with openssl 1.0.2 (which those codepaths are for)?
> 
> It looks to me like this maybe should have an assignment in 
> openssl_init_ca_key_cert, setting "p->key = pkey;" maybe?
Thanks for your reminder! 
I’ve sent the patch v2 that fix this issue.

And I tested the major openssl versions (1.0.1, 1.0.2, 1.1.0, 3.0, latest) and 
it works well.

> 
> // Martin
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org <mailto:ffmpeg-devel@ffmpeg.org>
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-requ...@ffmpeg.org <mailto:ffmpeg-devel-requ...@ffmpeg.org> with 
> subject "unsubscribe”.
Thanks
Jack



_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to