Skip to content

OpenSSL constifying interfaces and removing direct access from ASN1_STRING types #5237

@seektechnz

Description

@seektechnz

Describe the bug
OpenSSL has changed its interfaces. Most X509 pointers are now const and ASN1_STRING types cannot have direct member access.

To Reproduce
Build Poco with OpenSSL built from latest git source.

Expected behavior
Building with no type mismatch errors.

Logs

C:\Users\build\externals\poco\Crypto\src\PKCS12Container.cpp(131,19): error C2440: 'reinterpret_cast': cannot convert from 'const unsigned char *' to 'char *' [C:\Users\build\externals\poco\output\x64\Crypto\Crypto.vcxproj]
     C:\Users\build\externals\poco\Crypto\src\PKCS12Container.cpp(131,19):
     Conversion loses qualifiers

C:\Users\build\externals\poco\Crypto\src\X509Certificate.cpp(226,16): error C2664: 'std::string Poco::Crypto::_X509_NAME_oneline_utf8(X509_NAME *)': cannot convert argument 1
from 'const X509_NAME *' to 'X509_NAME *' [C:\Users\build\externals\poco\output\x64\Crypto\Crypto.vcxproj]
     C:\Users\build\externals\poco\Crypto\src\X509Certificate.cpp(226,60):
     Conversion loses qualifiers
     C:\Users\build\externals\poco\Crypto\src\X509Certificate.cpp(212,13):
     see declaration of 'Poco::Crypto::_X509_NAME_oneline_utf8'
     C:\Users\build\externals\poco\Crypto\src\X509Certificate.cpp(226,16):
     while trying to match the argument list '(const X509_NAME *)'

C:\Users\build\externals\poco\Crypto\src\X509Certificate.cpp(227,17): error C2664: 'std::string Poco::Crypto::_X509_NAME_oneline_utf8(X509_NAME *)': cannot convert argument 1
from 'const X509_NAME *' to 'X509_NAME *' [C:\Users\build\externals\poco\output\x64\Crypto\Crypto.vcxproj]
     C:\Users\build\externals\poco\Crypto\src\X509Certificate.cpp(227,62):
     Conversion loses qualifiers
     C:\Users\build\externals\poco\Crypto\src\X509Certificate.cpp(212,13):
     see declaration of 'Poco::Crypto::_X509_NAME_oneline_utf8'
     C:\Users\build\externals\poco\Crypto\src\X509Certificate.cpp(227,17):
     while trying to match the argument list '(const X509_NAME *)'

C:\Users\build\externals\poco\Crypto\src\X509Certificate.cpp(250,24): error C2440: 'initializing': cannot convert from 'const X509_NAME *' to 'X509_NAME *' [C:\Users\build\externals\poco\output\x64\Crypto\Crypto.vcxproj]
     C:\Users\build\externals\poco\Crypto\src\X509Certificate.cpp(250,24):
     Conversion loses qualifiers

C:\Users\build\externals\poco\Crypto\src\X509Certificate.cpp(262,22): error C2440: 'initializing': cannot convert from 'const X509_NAME *' to 'X509_NAME *' [C:\Users\build\externals\poco\output\x64\Crypto\Crypto.vcxproj]
     C:\Users\build\externals\poco\Crypto\src\X509Certificate.cpp(262,22):
     Conversion loses qualifiers

C:\Users\build\externals\poco\Crypto\src\X509Certificate.cpp(300,47): error C2027: use of undefined type 'asn1_string_st' [C:\Users\build\externals\p
oco\output\x64\Crypto\Crypto.vcxproj]
     C:\Users\build\externals\openssl\build\x64\OpenSSL\include\openssl\types.h(57,16):
     see declaration of 'asn1_string_st'

C:\Users\build\externals\poco\Crypto\src\X509Certificate.cpp(302,6): error C2027: use of undefined type 'asn1_string_st' [C:\Users\build\externals\po
co\output\x64\Crypto\Crypto.vcxproj]
     C:\Users\build\externals\openssl\build\x64\OpenSSL\include\openssl\types.h(57,16):
     see declaration of 'asn1_string_st'

C:\Users\build\externals\poco\Crypto\src\X509Certificate.cpp(306,11): error C2027: use of undefined type 'asn1_string_st' [C:\Users\build\externals\p
oco\output\x64\Crypto\Crypto.vcxproj]
     C:\Users\build\externals\openssl\build\x64\OpenSSL\include\openssl\types.h(57,16):
     see declaration of 'asn1_string_st'

C:\Users\build\externals\poco\Crypto\src\X509Certificate.cpp(320,47): error C2027: use of undefined type 'asn1_string_st' [C:\Users\build\externals\p
oco\output\x64\Crypto\Crypto.vcxproj]
     C:\Users\build\externals\openssl\build\x64\OpenSSL\include\openssl\types.h(57,16):
     see declaration of 'asn1_string_st'

C:\Users\build\externals\poco\Crypto\src\X509Certificate.cpp(322,6): error C2027: use of undefined type 'asn1_string_st' [C:\Users\build\externals\po
co\output\x64\Crypto\Crypto.vcxproj]
     C:\Users\build\externals\openssl\build\x64\OpenSSL\include\openssl\types.h(57,16):
     see declaration of 'asn1_string_st'

C:\Users\build\externals\poco\Crypto\src\X509Certificate.cpp(326,11): error C2027: use of undefined type 'asn1_string_st' [C:\Users\build\externals\p
oco\output\x64\Crypto\Crypto.vcxproj]
     C:\Users\build\externals\openssl\build\x64\OpenSSL\include\openssl\types.h(57,16):
     see declaration of 'asn1_string_st'

Please add relevant environment information:

  • Windows 11 or Ubuntu 24.04 with MSVC or Clang 20
  • Git HEAD
  • OpenSSL Git HEAD

Additional context
openssl/openssl#29117
greghudson/krb5@eb59fe8
openssl/openssl@c0f82d9

I hope to have a PR to update the interfaces in POCO soon.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions