Missing header file ts_local.h in install location.

Matt Caswell matt at openssl.org
Fri Jun 28 15:53:52 UTC 2024



On 28/06/2024 16:29, BENTLEY Thom via openssl-users wrote:
> Thanks.  Yes, I saw that they became opaque.
> The code I’m building works fine with 1.1.1w but we need to move to 
> 3.0.8 at least.
> Here are the errors I see.
> 
> dcmdsig:
> 16:34:48:290 
> 19>C:\repos\mmi-director-dcmtk-3.6.8\dcmtk-3.6.8\dcmsign\libsrc\sitstamp.cc(1342,5): error C2027: use of undefined type 'TS_verify_ctx'
> 16:34:48:290 
> 19>C:\repos\mmi-director-dcmtk-3.6.8\openssl-3.0.8\include\openssl\ts.h(405,16):
> 16:34:48:290 19>see declaration of 'TS_verify_ctx'


It looks to me like DCMTK needs updating to use OpenSSL 3.x

This particular error occurs because line 1342 of sitstamp.cc looks like 
this:

     TS_VERIFY_CTS_set_certs(ctx, NULL);

Earlier on in that file we see this:

#ifndef HAVE_OPENSSL_PROTOTYPE_TS_VERIFY_CTS_SET_CERTS
#define TS_VERIFY_CTS_set_certs(x,y) ((x)->certs = (y))
#endif

So if HAVE_OPENSSL_PROTOTYPE_TS_VERIFY_CTS_SET_CERTS isn't defined then 
it will attempt to look inside the TS_VERIFY_CTX structure - which is 
not allowed from 1.1.1 onwards because it is opaque.

My guess is the setting of 
HAVE_OPENSSL_PROTOTYPE_TS_VERIFY_CTS_SET_CERTS is going wrong with 
OpenSSL 3.X

It seems to get defined by Cmake/dcmtkPrepare.cmake:

   CHECK_FUNCTIONWITHHEADER_EXISTS("TS_VERIFY_CTS_set_certs(0,0)" 
"openssl/ts.h" HAVE_OPENSSL_PROTOTYPE_TS_VERIFY_CTS_SET_CERTS)

Indeed that function header does *not* exist in 3.x because it is 
instead a macro:

# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define TS_VERIFY_CTS_set_certs(ctx, cert) 
TS_VERIFY_CTX_set_certs(ctx,cert)
# endif

In 1.1.1 this was a full C function so the cmake detection would have 
worked correctly there.

Matt



> 
> dcmpstat:
> 16:36:48:689 
> 34>C:\repos\mmi-director-dcmtk-3.6.8\openssl-3.0.8\include\openssl\types.h(104,30): error C2371: 'EVP_MD_CTX': redefinition; different basic types
> 16:36:48:753 34>(compiling source file 
> '../../../dcmtk-3.6.8/dcmpstat/libsrc/dvsighdl.cc')
> 16:36:48:753 
> 34>C:\repos\mmi-director-dcmtk-3.6.8\dcmtk-3.6.8\dcmsign\include\dcmtk\dcmsign\simdmac.h(39,30):
> 16:36:48:753 34>see declaration of 'EVP_MD_CTX'
> 
> dcmtls:
> 16:35:16:392 
> 26>C:\repos\mmi-director-dcmtk-3.6.8\dcmtk-3.6.8\dcmtls\libsrc\tlsciphr.cc(238,32): error C2027: use of undefined type 'ssl_ctx_st'
> 16:35:16:392 
> 26>C:\repos\mmi-director-dcmtk-3.6.8\dcmtk-3.6.8\dcmtls\include\dcmtk\dcmtls\tlslayer.h(37,8):
> 16:35:16:392 26>see declaration of 'ssl_ctx_st'
> 
> **
> 
> **
> 
> *Thom Bentley *| Senior Software Engineer |Medidata, a Dassault Systèmes 
> company <http://www.mdsol.com/>
> 
> *From:*Tomas Mraz <tomas at openssl.org>
> *Sent:* Friday, June 28, 2024 10:15 AM
> *To:* BENTLEY Thom <Thom.BENTLEY at 3ds.com>; openssl-users at openssl.org
> *Subject:* Re: Missing header file ts_local.h in install location.
> 
> TS_VERIFY_CTX is an opaque structure since version 1. 1. 0. You may not 
> access its members directly. To set them you need to use the various 
> TS_VERIFY_CTX_set* functions. If there are any particular accessors 
> missing, please report that as a
> 
> TS_VERIFY_CTX is an opaque structure since version 1.1.0. You may not
> 
> access its members directly. To set them you need to use the various
> 
> TS_VERIFY_CTX_set* functions.
> 
> If there are any particular accessors missing, please report that as a
> 
> bug to 
> https://urldefense.com/v3/__https://github.com/openssl/openssl__;!!FbCVDoc3r24SyHFW!8NySO-tJ589YiMdFNLtEu_6Hc7knvKgfTOXGkAFWjfEMxLaE5oRe3igKb4JOdd9HiiJ8sLVdiV6SYZo$ <https://urldefense.com/v3/__https:/github.com/openssl/openssl__;!!FbCVDoc3r24SyHFW!8NySO-tJ589YiMdFNLtEu_6Hc7knvKgfTOXGkAFWjfEMxLaE5oRe3igKb4JOdd9HiiJ8sLVdiV6SYZo$>[github[.]com]
> 
> Tomas Mraz, OpenSSL
> 
> On Fri, 2024-06-28 at 14:09 +0000, BENTLEY Thom via openssl-users
> 
> wrote:
> 
>> 
> 
>> 
> 
>> 
> 
>> Hi All, 
> 
>>  
> 
>> I build and installed version 3.0.8 on Windows with Visual Studio
> 
>> using the instructions provided.
> 
>> I copied the bin, include, and lib directories to a location that
> 
>> would be found by the CMake for the
> 
>> DCMTK toolkit version 3.6.8.
> 
>> When I attempt to build the DCMTK toolkit, I see that the ts.h value
> 
>> can’t find the definition ofTS_verify_ctx.
> 
>> That’s because of the missing ts_local.h as far as I can see.
> 
>>  
> 
>> Is there something I missed in the build of the libraries and the
> 
>> install package?
> 
>> Thank.
> 
>>  
> 
>> 
> 
>> 
> 
>>  
> 
>>  
> 
>> Thom Bentley| Senior Software Engineer |
> 
>> Medidata, a Dassault Systèmes company
> 
>>  
> 
>> This email and any attachments are intended solely for the use of the
> 
>> individual or entity to whom it is addressed and may be confidential
> 
>> and/or privileged.
> 
>> If you are not one of the named recipients or have received this
> 
>> email in error,
> 
>> (i) you should not read, disclose, or copy it,
> 
>> (ii) please notify sender of your receipt by reply email and delete
> 
>> this email and all attachments,
> 
>> (iii) Dassault Systèmes does not accept or assume any liability or
> 
>> responsibility for any use of or reliance on this email.
> 
>> 
> 
>> Please be informed that your personal data are processed according to
> 
>> our data privacy policy as described on our website. Should you have
> 
>> any questions related to personal data protection, please contact 3DS
> 
>> Data Protection Officerhttps://www.3ds.com/privacy-policy/contact/
> 
>> 
> 
>> 
> 
> -- 
> 
> Tomáš Mráz, OpenSSL
> 
> This email and any attachments are intended solely for the use of the 
> individual or entity to whom it is addressed and may be confidential 
> and/or privileged.
> 
> If you are not one of the named recipients or have received this email 
> in error,
> 
> (i) you should not read, disclose, or copy it,
> 
> (ii) please notify sender of your receipt by reply email and delete this 
> email and all attachments,
> 
> (iii) Dassault Systèmes does not accept or assume any liability or 
> responsibility for any use of or reliance on this email.
> 
> 
> Please be informed that your personal data are processed according to 
> our data privacy policy as described on our website. Should you have any 
> questions related to personal data protection, please contact 3DS Data 
> Protection Officer https://www.3ds.com/privacy-policy/contact/ 
> <https://www.3ds.com/privacy-policy/contact/>
> 
> 


More information about the openssl-users mailing list