Skip to content

Compilation of azure-security-attestation fails using -std=c++20 #6697

@lordgamez

Description

@lordgamez

Describe the bug
I tried building the Azure SDK on Windows where the -std=c++14 flag was overriden by -std=c++20 and it failed to build.

It seems that there are two versions of the make_openssl_unique function in the sdk/attestation/azure-security-attestation/src/private/crypto/openssl/openssl_helpers.hpp file, one for the c++14 and one for the c++17 standard. It depends on the __cpp_nontype_template_parameter_auto feature flag which version is used.

Unfortunately the implementation of the c++17 version would require specifying the template argument in the make_openssl_unique calls to deduce the parameter type. It should be used like this make_openssl_unique<BIO_new,>(BIO_s_mem()), but instead it is used this way in the codebase that causes the error: make_openssl_unique(BIO_new, BIO_s_mem()). According to godbolt as well it should not work: https://godbolt.org/z/5YqddjfPx

Build error log

2025-08-12T13:10:09.7858331Z FAILED: [code=2] _deps/asdkext-build/sdk/attestation/azure-security-attestation/CMakeFiles/azure-security-attestation.dir/src/private/crypto/openssl/opensslcert.cpp.obj 
2025-08-12T13:10:09.7869674Z sccache C:\PROGRA~1\MICROS~2\2022\ENTERP~1\VC\Tools\MSVC\1444~1.352\bin\Hostx64\x64\cl.exe  /nologo /TP -DAZ_RTTI -DBUILD_CURL_HTTP_TRANSPORT_ADAPTER -DCURL_STATICLIB -DMINIFI_USE_REAL_ODBC_TEST_DRIVER -DNOMINMAX -DWIN32_LEAN_AND_MEAN -D_CRT_SECURE_NO_WARNINGS -D_azure_BUILDING_SDK -IC:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\inc -external:IC:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\core\azure-core\inc -external:IC:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\thirdparty\curl-install\include -external:IC:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\thirdparty\zlib-install\include -external:IC:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\thirdparty\openssl-install\include -external:W0 /DWIN32 /D_WINDOWS /EHsc /permissive- /O2 /Ob2 /DNDEBUG -std:c++14 -MD /W3 /utf-8 /bigobj /MP /diagnostics:caret /MD /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /std:c++latest /permissive- /W4 /wd5031 /wd4668 /wd4820 /wd4255 /wd4710 /Zc:__cplusplus /showIncludes /Fo_deps\asdkext-build\sdk\attestation\azure-security-attestation\CMakeFiles\azure-security-attestation.dir\src\private\crypto\openssl\opensslcert.cpp.obj /Fd_deps\asdkext-build\sdk\attestation\azure-security-attestation\CMakeFiles\azure-security-attestation.dir\azure-security-attestation.pdb /FS -c C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp
2025-08-12T13:10:09.7890878Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\openssl_helpers.hpp(50,15): error C2187: syntax error: 'remove_pointer_t' was unexpected here
2025-08-12T13:10:09.7895185Z     using T = remove_pointer_t<decltype(raw)>; // no need to request T when we can see
2025-08-12T13:10:09.7954828Z               ^
2025-08-12T13:10:09.7970225Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.hpp(80,23): error C2672: 'make_openssl_unique': no matching overloaded function found
2025-08-12T13:10:09.8020038Z       openssl_bio bio(make_openssl_unique(BIO_new, BIO_s_mem()));
2025-08-12T13:10:09.8102530Z                       ^
2025-08-12T13:10:09.8315192Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\openssl_helpers.hpp(45,53): note: could be 'auto Azure::Security::Attestation::_detail::make_openssl_unique(Args ...)'
2025-08-12T13:10:09.8449624Z   template <auto OpensslApi, typename... Args> auto make_openssl_unique(Args&&... args)
2025-08-12T13:10:09.8664680Z                                                     ^
2025-08-12T13:10:09.8699256Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.hpp(80,23): note: 'auto Azure::Security::Attestation::_detail::make_openssl_unique(Args ...)': could not deduce template argument for 'OpensslApi'
2025-08-12T13:10:09.8830604Z       openssl_bio bio(make_openssl_unique(BIO_new, BIO_s_mem()));
2025-08-12T13:10:09.9025803Z                       ^
2025-08-12T13:10:09.9027275Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.hpp(135,17): error C2672: 'make_openssl_unique': no matching overloaded function found
2025-08-12T13:10:09.9138406Z       auto hash(make_openssl_unique(EVP_MD_CTX_new));
2025-08-12T13:10:09.9181060Z                 ^
2025-08-12T13:10:09.9352864Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\openssl_helpers.hpp(45,53): note: could be 'auto Azure::Security::Attestation::_detail::make_openssl_unique(Args ...)'
2025-08-12T13:10:09.9411227Z   template <auto OpensslApi, typename... Args> auto make_openssl_unique(Args&&... args)
2025-08-12T13:10:09.9511087Z                                                     ^
2025-08-12T13:10:09.9691454Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.hpp(135,17): note: 'auto Azure::Security::Attestation::_detail::make_openssl_unique(Args ...)': could not deduce template argument for 'OpensslApi'
2025-08-12T13:10:09.9730670Z       auto hash(make_openssl_unique(EVP_MD_CTX_new));
2025-08-12T13:10:09.9869709Z                 ^
2025-08-12T13:10:10.0149623Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.hpp(135,16): error C2119: 'hash': the type for 'auto' cannot be deduced from an empty initializer
2025-08-12T13:10:10.0203596Z       auto hash(make_openssl_unique(EVP_MD_CTX_new));
2025-08-12T13:10:10.0370829Z                ^
2025-08-12T13:10:10.0488039Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(43,14): error C2672: 'make_openssl_unique': no matching overloaded function found
2025-08-12T13:10:10.0510958Z     auto bio(make_openssl_unique(
2025-08-12T13:10:10.0624266Z              ^
2025-08-12T13:10:10.0803067Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\openssl_helpers.hpp(45,53): note: could be 'auto Azure::Security::Attestation::_detail::make_openssl_unique(Args ...)'
2025-08-12T13:10:10.0841289Z   template <auto OpensslApi, typename... Args> auto make_openssl_unique(Args&&... args)
2025-08-12T13:10:10.0983452Z                                                     ^
2025-08-12T13:10:10.1216211Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(43,14): note: 'auto Azure::Security::Attestation::_detail::make_openssl_unique(Args ...)': could not deduce template argument for 'OpensslApi'
2025-08-12T13:10:10.1252807Z     auto bio(make_openssl_unique(
2025-08-12T13:10:10.1307331Z              ^
2025-08-12T13:10:10.1539639Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(43,13): error C2119: 'bio': the type for 'auto' cannot be deduced from an empty initializer
2025-08-12T13:10:10.1576831Z     auto bio(make_openssl_unique(
2025-08-12T13:10:10.1597960Z             ^
2025-08-12T13:10:10.1701273Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(58,14): error C2672: 'make_openssl_unique': no matching overloaded function found
2025-08-12T13:10:10.1875088Z     auto bio(make_openssl_unique(BIO_new, BIO_s_mem()));
2025-08-12T13:10:10.1955841Z              ^
2025-08-12T13:10:10.1974250Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\openssl_helpers.hpp(45,53): note: could be 'auto Azure::Security::Attestation::_detail::make_openssl_unique(Args ...)'
2025-08-12T13:10:10.2122924Z   template <auto OpensslApi, typename... Args> auto make_openssl_unique(Args&&... args)
2025-08-12T13:10:10.2196244Z                                                     ^
2025-08-12T13:10:10.2278682Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(58,14): note: 'auto Azure::Security::Attestation::_detail::make_openssl_unique(Args ...)': could not deduce template argument for 'OpensslApi'
2025-08-12T13:10:10.2301164Z     auto bio(make_openssl_unique(BIO_new, BIO_s_mem()));
2025-08-12T13:10:10.2447092Z              ^
2025-08-12T13:10:10.2528961Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(58,13): error C2119: 'bio': the type for 'auto' cannot be deduced from an empty initializer
2025-08-12T13:10:10.2647605Z     auto bio(make_openssl_unique(BIO_new, BIO_s_mem()));
2025-08-12T13:10:10.2667050Z             ^
2025-08-12T13:10:10.2847991Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(76,20): error C2672: 'make_openssl_unique': no matching overloaded function found
2025-08-12T13:10:10.3264920Z     auto base64bio(make_openssl_unique(BIO_new, BIO_f_base64()));
2025-08-12T13:10:10.3313403Z                    ^
2025-08-12T13:10:10.3504912Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\openssl_helpers.hpp(45,53): note: could be 'auto Azure::Security::Attestation::_detail::make_openssl_unique(Args ...)'
2025-08-12T13:10:10.3640621Z   template <auto OpensslApi, typename... Args> auto make_openssl_unique(Args&&... args)
2025-08-12T13:10:10.3666825Z                                                     ^
2025-08-12T13:10:10.3779235Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(76,20): note: 'auto Azure::Security::Attestation::_detail::make_openssl_unique(Args ...)': could not deduce template argument for 'OpensslApi'
2025-08-12T13:10:10.3954044Z     auto base64bio(make_openssl_unique(BIO_new, BIO_f_base64()));
2025-08-12T13:10:10.3982528Z                    ^
2025-08-12T13:10:10.4003469Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(76,19): error C2119: 'base64bio': the type for 'auto' cannot be deduced from an empty initializer
2025-08-12T13:10:10.4118648Z     auto base64bio(make_openssl_unique(BIO_new, BIO_f_base64()));
2025-08-12T13:10:10.4298275Z                   ^
2025-08-12T13:10:10.4321673Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(80,14): error C2672: 'make_openssl_unique': no matching overloaded function found
2025-08-12T13:10:10.4454582Z     auto bio(make_openssl_unique(BIO_new, BIO_s_mem()));
2025-08-12T13:10:10.4538205Z              ^
2025-08-12T13:10:10.4651945Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\openssl_helpers.hpp(45,53): note: could be 'auto Azure::Security::Attestation::_detail::make_openssl_unique(Args ...)'
2025-08-12T13:10:10.4656377Z   template <auto OpensslApi, typename... Args> auto make_openssl_unique(Args&&... args)
2025-08-12T13:10:10.4793205Z                                                     ^
2025-08-12T13:10:10.4872245Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(80,14): note: 'auto Azure::Security::Attestation::_detail::make_openssl_unique(Args ...)': could not deduce template argument for 'OpensslApi'
2025-08-12T13:10:10.4971692Z     auto bio(make_openssl_unique(BIO_new, BIO_s_mem()));
2025-08-12T13:10:10.5050211Z              ^
2025-08-12T13:10:10.5154308Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(80,13): error C2119: 'bio': the type for 'auto' cannot be deduced from an empty initializer
2025-08-12T13:10:10.5212501Z     auto bio(make_openssl_unique(BIO_new, BIO_s_mem()));
2025-08-12T13:10:10.5291127Z             ^
2025-08-12T13:10:10.5401366Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(84,5): error C2660: 'BIO_push': function does not take 1 arguments
2025-08-12T13:10:10.5515733Z     BIO_push(base64bio.get(), bio.release());
2025-08-12T13:10:10.5539205Z     ^
2025-08-12T13:10:10.5704609Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\thirdparty\openssl-install\include\openssl/bio.h(756,6): note: see declaration of 'BIO_push'
2025-08-12T13:10:10.5764484Z BIO *BIO_push(BIO *b, BIO *append);
2025-08-12T13:10:10.5765701Z      ^
2025-08-12T13:10:10.5825274Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(84,5): note: while trying to match the argument list '()'
2025-08-12T13:10:10.5845665Z     BIO_push(base64bio.get(), bio.release());
2025-08-12T13:10:10.5849456Z     ^
2025-08-12T13:10:10.5890888Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(135,35): error C2672: 'make_openssl_unique': no matching overloaded function found
2025-08-12T13:10:10.5968739Z     openssl_x509_name returnValue(make_openssl_unique(X509_NAME_new));
2025-08-12T13:10:10.5992909Z                                   ^
2025-08-12T13:10:10.6035815Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\openssl_helpers.hpp(45,53): note: could be 'auto Azure::Security::Attestation::_detail::make_openssl_unique(Args ...)'
2025-08-12T13:10:10.6038693Z   template <auto OpensslApi, typename... Args> auto make_openssl_unique(Args&&... args)
2025-08-12T13:10:10.6039817Z                                                     ^
2025-08-12T13:10:10.6066357Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(135,35): note: 'auto Azure::Security::Attestation::_detail::make_openssl_unique(Args ...)': could not deduce template argument for 'OpensslApi'
2025-08-12T13:10:10.6147220Z     openssl_x509_name returnValue(make_openssl_unique(X509_NAME_new));
2025-08-12T13:10:10.6148581Z                                   ^
2025-08-12T13:10:10.6151619Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(224,12): error C2672: 'make_openssl_unique': no matching overloaded function found
2025-08-12T13:10:10.6170143Z     return make_openssl_unique(X509V3_EXT_conf_nid, nullptr, &context, nid, nidValue.c_str());
2025-08-12T13:10:10.6172318Z            ^
2025-08-12T13:10:10.6174830Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\openssl_helpers.hpp(45,53): note: could be 'auto Azure::Security::Attestation::_detail::make_openssl_unique(Args ...)'
2025-08-12T13:10:10.6184519Z   template <auto OpensslApi, typename... Args> auto make_openssl_unique(Args&&... args)
2025-08-12T13:10:10.6252477Z                                                     ^
2025-08-12T13:10:10.6302845Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(224,12): note: 'auto Azure::Security::Attestation::_detail::make_openssl_unique(Args ...)': could not deduce template argument for 'OpensslApi'
2025-08-12T13:10:10.6305596Z     return make_openssl_unique(X509V3_EXT_conf_nid, nullptr, &context, nid, nidValue.c_str());
2025-08-12T13:10:10.6369791Z            ^
2025-08-12T13:10:10.6394947Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(250,30): error C2672: 'make_openssl_unique': no matching overloaded function found
2025-08-12T13:10:10.6422140Z     openssl_x509 certificate(make_openssl_unique(X509_new));
2025-08-12T13:10:10.6519565Z                              ^
2025-08-12T13:10:10.6551866Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\openssl_helpers.hpp(45,53): note: could be 'auto Azure::Security::Attestation::_detail::make_openssl_unique(Args ...)'
2025-08-12T13:10:10.6558593Z   template <auto OpensslApi, typename... Args> auto make_openssl_unique(Args&&... args)
2025-08-12T13:10:10.6579204Z                                                     ^
2025-08-12T13:10:10.6613028Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(250,30): note: 'auto Azure::Security::Attestation::_detail::make_openssl_unique(Args ...)': could not deduce template argument for 'OpensslApi'
2025-08-12T13:10:10.6638593Z     openssl_x509 certificate(make_openssl_unique(X509_new));
2025-08-12T13:10:10.6643517Z                              ^
2025-08-12T13:10:10.6755925Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(303,25): error C2672: 'make_openssl_unique': no matching overloaded function found
2025-08-12T13:10:10.6772216Z       auto serialNumber(make_openssl_unique(ASN1_INTEGER_new));
2025-08-12T13:10:10.6781261Z                         ^
2025-08-12T13:10:10.6810332Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\openssl_helpers.hpp(45,53): note: could be 'auto Azure::Security::Attestation::_detail::make_openssl_unique(Args ...)'
2025-08-12T13:10:10.6836752Z   template <auto OpensslApi, typename... Args> auto make_openssl_unique(Args&&... args)
2025-08-12T13:10:10.6838126Z                                                     ^
2025-08-12T13:10:10.6865312Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(303,25): note: 'auto Azure::Security::Attestation::_detail::make_openssl_unique(Args ...)': could not deduce template argument for 'OpensslApi'
2025-08-12T13:10:10.6918359Z       auto serialNumber(make_openssl_unique(ASN1_INTEGER_new));
2025-08-12T13:10:10.6919941Z                         ^
2025-08-12T13:10:10.6980706Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(303,24): error C2119: 'serialNumber': the type for 'auto' cannot be deduced from an empty initializer
2025-08-12T13:10:10.7005206Z       auto serialNumber(make_openssl_unique(ASN1_INTEGER_new));
2025-08-12T13:10:10.7006612Z                        ^
2025-08-12T13:10:10.7008319Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(308,11): error C2660: 'X509_set_serialNumber': function does not take 1 arguments
2025-08-12T13:10:10.7010293Z       if (X509_set_serialNumber(certificate.get(), serialNumber.get()) != 1)
2025-08-12T13:10:10.7011073Z           ^
2025-08-12T13:10:10.7013668Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\thirdparty\openssl-install\include\openssl/x509.h(841,5): note: see declaration of 'X509_set_serialNumber'
2025-08-12T13:10:10.7068644Z int X509_set_serialNumber(X509 *x, ASN1_INTEGER *serial);
2025-08-12T13:10:10.7093339Z     ^
2025-08-12T13:10:10.7119773Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(308,11): note: while trying to match the argument list '(x509_st *)'
2025-08-12T13:10:10.7174548Z       if (X509_set_serialNumber(certificate.get(), serialNumber.get()) != 1)
2025-08-12T13:10:10.7191962Z           ^
2025-08-12T13:10:10.7199591Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(328,11): error C2672: 'make_openssl_unique': no matching overloaded function found
2025-08-12T13:10:10.7261520Z           make_openssl_unique(ASN1_TIME_adj, nullptr, currentTime, 0, 0));
2025-08-12T13:10:10.7292058Z           ^
2025-08-12T13:10:10.7302742Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\openssl_helpers.hpp(45,53): note: could be 'auto Azure::Security::Attestation::_detail::make_openssl_unique(Args ...)'
2025-08-12T13:10:10.7369423Z   template <auto OpensslApi, typename... Args> auto make_openssl_unique(Args&&... args)
2025-08-12T13:10:10.7400421Z                                                     ^
2025-08-12T13:10:10.7421886Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(328,11): note: 'auto Azure::Security::Attestation::_detail::make_openssl_unique(Args ...)': could not deduce template argument for 'OpensslApi'
2025-08-12T13:10:10.7492547Z           make_openssl_unique(ASN1_TIME_adj, nullptr, currentTime, 0, 0));
2025-08-12T13:10:10.7493493Z           ^
2025-08-12T13:10:10.7575536Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(339,11): error C2672: 'make_openssl_unique': no matching overloaded function found
2025-08-12T13:10:10.7582280Z           make_openssl_unique(ASN1_TIME_adj, nullptr, expirationTime, 0, 0));
2025-08-12T13:10:10.7583658Z           ^
2025-08-12T13:10:10.7595261Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\openssl_helpers.hpp(45,53): note: could be 'auto Azure::Security::Attestation::_detail::make_openssl_unique(Args ...)'
2025-08-12T13:10:10.7614881Z   template <auto OpensslApi, typename... Args> auto make_openssl_unique(Args&&... args)
2025-08-12T13:10:10.7621706Z                                                     ^
2025-08-12T13:10:10.7711560Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(339,11): note: 'auto Azure::Security::Attestation::_detail::make_openssl_unique(Args ...)': could not deduce template argument for 'OpensslApi'
2025-08-12T13:10:10.7956847Z           make_openssl_unique(ASN1_TIME_adj, nullptr, expirationTime, 0, 0));
2025-08-12T13:10:10.8162608Z           ^
2025-08-12T13:10:10.8415890Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(360,22): error C2672: 'make_openssl_unique': no matching overloaded function found
2025-08-12T13:10:10.8642035Z       auto extension(make_openssl_unique(X509_EXTENSION_new));
2025-08-12T13:10:10.8790823Z                      ^
2025-08-12T13:10:10.8990420Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\openssl_helpers.hpp(45,53): note: could be 'auto Azure::Security::Attestation::_detail::make_openssl_unique(Args ...)'
2025-08-12T13:10:10.9128192Z   template <auto OpensslApi, typename... Args> auto make_openssl_unique(Args&&... args)
2025-08-12T13:10:10.9333135Z                                                     ^
2025-08-12T13:10:10.9469295Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(360,22): note: 'auto Azure::Security::Attestation::_detail::make_openssl_unique(Args ...)': could not deduce template argument for 'OpensslApi'
2025-08-12T13:10:10.9682803Z       auto extension(make_openssl_unique(X509_EXTENSION_new));
2025-08-12T13:10:10.9780785Z                      ^
2025-08-12T13:10:10.9899568Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(360,21): error C2119: 'extension': the type for 'auto' cannot be deduced from an empty initializer
2025-08-12T13:10:11.0159289Z       auto extension(make_openssl_unique(X509_EXTENSION_new));
2025-08-12T13:10:11.0230705Z                     ^
2025-08-12T13:10:11.0513176Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(371,11): error C2660: 'X509_add_ext': function does not take 2 arguments
2025-08-12T13:10:11.0558744Z       if (X509_add_ext(certificate.get(), extension.get(), -1) != 1)
2025-08-12T13:10:11.0833984Z           ^
2025-08-12T13:10:11.0885097Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\thirdparty\openssl-install\include\openssl/x509.h(1095,5): note: see declaration of 'X509_add_ext'
2025-08-12T13:10:11.1183446Z int X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc);
2025-08-12T13:10:11.1208036Z     ^
2025-08-12T13:10:11.1521601Z C:\a\nifi-minifi-cpp\nifi-minifi-cpp\build\_deps\asdkext-src\sdk\attestation\azure-security-attestation\src\private\crypto\openssl\opensslcert.cpp(371,11): note: while trying to match the argument list '(x509_st *, int)'
2025-08-12T13:10:11.1658917Z       if (X509_add_ext(certificate.get(), extension.get(), -1) != 1)
2025-08-12T13:10:11.1879346Z           ^
2025-08-12T13:10:11.1977818Z cl : Command line warning D9025 : overriding '/std:c++14' with '/std:c++latest'
2025-08-12T13:10:11.2198690Z cl : Command line warning D9025 : overriding '/W3' with '/W4'

To Reproduce
Steps to reproduce the behavior: build with /std:c++20 instead of the default c++14

Expected behavior
Should build successfully with c++17 and above

Setup (please complete the following information):

  • OS: Windows Server 2025
  • IDE : Visual Studio Enterprise 2022 17.14.36327.8, MSVC 19.44.35213.0, MSVC runtime 14.44.35211
  • Version of the Library used: azure-identity_1.13.0

Information Checklist
Kindly make sure that you have added all the following information above and checkoff the required fields otherwise we will treat the issuer as an incomplete report

  • Bug Description Added
  • Repro Steps Added
  • Setup information Added

Metadata

Metadata

Assignees

No one assigned

    Labels

    customer-reportedIssues that are reported by GitHub users external to the Azure organization.needs-triageWorkflow: This is a new issue that needs to be triaged to the appropriate team.questionThe issue doesn't require a change to the product in order to be resolved. Most issues start as that

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions