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
https://github.com/mguessan/davmail/pull/98 I merely extended it to support the UserSMIMECertificate field in addition to the MSExchangeCertificate field.
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.
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 https://github.com/mguessan/davmail/pull/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.