azure-sdk-for-cpp/sdk
Theodore Tsirpanis b7afe2faf1
[identity] Remove OpenSSL dependency on Windows. (#4747)
* Add dependency to WIL in azure-identity-cpp when on WIndows.

* Use Win32 APIs to get the thumbprint and private key of a certificate.

* Don't use `out_param_ptr` in `GetPrivateKey`.

`NCRYPT_KEY_HANDLE` is not a pointer but a uintptr and using `out_param_ptr` with it causes compiler errors.

* Use Win32 APIs to sign messages with a private key.

* Remove the OpenSSL dependency from azure-identity-cpp on Windows.

We can't remove it from the root vcpkg.json that gets used for development, because an attestation example uses OpenSSL for certificate code.

* Update the changelog.

* Fix compile errors.

We can't use WIL in the public headers; we will use instead the same approach with the OpenSSL handles.

* Fix more compile errors.

* Use `AZ_PLATFORM_WINDOWS`.

* clang-format

* Update cspell.json

* Update CHANGELOG.md

* Update cspell.json

* Update cspell.json

* Attempt to make spell checker happy with minimum changes

* Ignore `CMakeUserPresets.json`.

* Move to the BCrypt APIs in anticipation of the rewrite.

* Use Windows APIs to read the certificate and the private key in PEM format.

* Move decoding the PEM string to its own function.

* Remove redundant error messages from some checks.

WIL does not recommend them if they do not provide additional information, and it already captures the source location.

* Support opening raw RSA and ECC private keys.

* Stop using pseudo-handles.

They are not supported in Windows Server 2012 R2, which is still supported.

* Fix CI.

* Refactor the ClientCertificateCredential tests and test more certificates.

Thanks to googletest's parameterized tests, duplicate code was eliminated and we test twelve cases with only two test methods.

* Improve code sharing across OpenSSL and CNG.

* Fix error checks when signing.

* Remove ECC certificate support.

Turns out Microsoft identity platform itself does not support them.

* Replace `#ifdef` with `#if defined`.

* Move some CryptoAPI-related terms to a `cspell.json` file local to `azure-identity`.

* Exclude the root `cspell.json` file from gitignore.

* Clean-up `cspell.json`.

* Fix linked libraries of `azure-identity`.
We don't use ncrypt anymore.

* Move `platform.hpp` to `client_certificate_credential.cpp`.

* Clean-up `UniquePrivateKey` and reduce mentions of `pkey`.

---------

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
2023-08-28 10:55:49 -07:00
..
attestation Clean up version requirements (#4814) 2023-07-20 16:03:57 -07:00
core Address gcc13 compilation issue (#4857) 2023-08-22 13:49:35 -07:00
eventhubs Post-release updates (#4871) 2023-08-17 09:52:54 -07:00
identity [identity] Remove OpenSSL dependency on Windows. (#4747) 2023-08-28 10:55:49 -07:00
keyvault Address gcc13 compilation issue (#4857) 2023-08-22 13:49:35 -07:00
storage Storage/Update Queue API Version (#4903) 2023-08-23 09:31:16 +08:00
template Clean up version requirements (#4814) 2023-07-20 16:03:57 -07:00