Search code examples
c++opensslconan

OpenSSL 3.0.0 include files difference official release conan vs github


I'm building an app for both Windows, Linux and Android in c++. As with many third party dependencies, the windows and linux binaries are to be found on conan (which I use for dep management) but Android is not. This is usually not a big issue, building one extra library from source. However for OpenSSL I have the suspicion that the 3.0.0 release on the official conan center registry differs from the official 3.0.0 source released on github.

A very simple diff suffices:

diff /path/to/.conan/data/openssl/3.0.0/_/_/package/<hash>/include/openssl
     /path/to/Downloads/openssl-openssl-3.0.0/include/openssl

Only  in /path/to/.conan/data/openssl/3.0.0/_/_/package/<hash>/include/openssl/: asn1.h
Only in /path/to/Downloads/openssl-openssl-3.0.0/include/openssl/: asn1.h.inOnly in /path/to/.conan/data/openssl/3.0.0/_/_/package/<hash>/include/openssl/: asn1t.h
Only in /path/to/Downloads/openssl-openssl-3.0.0/include/openssl/: asn1t.h.in
Only in path/to/.conan/data/openssl/3.0.0/_/_/package/<hash>/include/openssl/: bio.h
Only in /path/to/Downloads/openssl-openssl-3.0.0/include/openssl/: bio.h.in
Only in /path/to/.conan/data/openssl/3.0.0/_/_/package/<hash>/include/openssl/: cmp.h
Only in /path/to/Downloads/openssl-openssl-3.0.0/include/openssl/: cmp.h.in
diff /path/to/.conan/data/openssl/3.0.0/_/_/package/<hash>/include/openssl/cmperr.h /path/to/Downloads/openssl-openssl-3.0.0/ds/openssl-openssl-3.0.0-beta1/openssl-openssl-3.0.0-beta1/include/openssl/cmperr.h
64d63
< #  define CMP_R_MISSING_CERTID                             165
105d103
< #  define CMP_R_WRONG_CERTID                               189
Only in /path/to/.conan/data/openssl/3.0.0/_/_/package/<hash>/include/openssl/: cms.h
Only in /path/to/Downloads/openssl-openssl-3.0.0/include/openssl/: cms.h.in
Only in /path/to/.conan/data/openssl/3.0.0/_/_/package/<hash>/include/openssl/: conf.h
Only in /path/to/Downloads/openssl-openssl-3.0.0/include/openssl/: conf.h.inOnly in /path/to/.conan/data/openssl/3.0.0/_/_/package/<hash>/include/openssl/: configuration.h
...

Should be equal, right? It's not. What version of OpenSSL is uploaded to conan? How do I get the matching Android version? Or do I have to go through the trouble of building for Windows and Linux as well?


Solution

  • For the version you are downloading it looks like it is 3.0.0-beta1, while ConanCenter packages 3.0.0. Indeed, the beta version doesn't define CMP_R_MISSING_CERTID while the released one does. Maybe it is just a version mismatch? The diff is huge https://github.com/openssl/openssl/compare/openssl-3.0.0-beta1...openssl-3.0.0 and it contains those changes your report in cmperr.h file.