Add support for retrieving user certificates #353
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
It's possible to add a public S/MIME certificate for a user to the GAL. These are used when a user wants to encrypt a mail to another user, or validate their signature. The public certificate of the recipient is required. Being able to look them up rather than engage in a manual or offline synchornisation process makes this easier, as well as fetching updated certificates when they're changed.
The bulk of this work was done by @krutelp in
#98 I merely extended it to support the UserSMIMECertificate field in addition to the MSExchangeCertificate field.
These are both part of the EWS Contact:
https://learn.microsoft.com/en-us/dotnet/api/microsoft.exchange.webservices.data.contact?view=exchange-ews-api
I tried to do it without using ContactDataShape.AllProperties but like @krutelp couldn't find a method that would return the certificates.
I extended the ignored tags based on what was returned by our Microsoft365 instance, but not all of the fields listed under the Contact type above.
I slightly modified the original PR to use Dos line endings in ResolveNamesMethod.java so exact changes could be observed instead of the entire file being changed.
I also added the keys to the contact in ExchangeSession.java as KEY1 and KEY2.
Finally, I undid the small changes in LdapConnection.java to the isMatch() methods to have them take an ExchangeSession.Contact and put them back to Map<String, String>. This was mostly done to limit the changes in the patch to those necessary.