private void ClearCore() { _logger.TraceEvent(TraceEventType.Information, /*id*/ 0, "Clearing adal cache"); bool cacheFileExists = File.Exists(CacheFilePath); _logger.TraceEvent(TraceEventType.Information, /*id*/ 0, $"ReadDataCore Cache file exists '{cacheFileExists}'"); TryProcessFile(() => { _logger.TraceEvent(TraceEventType.Information, /*id*/ 0, "Before deleting the cache file"); try { File.Delete(CacheFilePath); } catch (Exception e) { _logger.TraceEvent(TraceEventType.Error, /*id*/ 0, $"Problem deleting the cache file '{e}'"); } WriteVersionFile(); _logger.TraceEvent(TraceEventType.Information, /*id*/ 0, $"After deleting the cache file. Last write time is '{_lastVersionToken}'"); }); if (SharedUtilities.IsMacPlatform()) { _logger.TraceEvent(TraceEventType.Information, /*id*/ 0, "Before delete mac keychain"); MacKeyChain.DeleteKey( CreationProperties.MacKeyChainServiceName, CreationProperties.MacKeyChainAccountName); _logger.TraceEvent(TraceEventType.Information, /*id*/ 0, "After delete mac keychain"); } else if (SharedUtilities.IsLinuxPlatform()) { _logger.TraceEvent(TraceEventType.Information, /*id*/ 0, $"Before deletring secret from linux keyring"); IntPtr error = IntPtr.Zero; Libsecret.secret_password_clear_sync( schema: GetLibsecretSchema(), cancellable: IntPtr.Zero, error: out error, attribute1Type: CreationProperties.KeyringAttribute1.Key, attribute1Value: CreationProperties.KeyringAttribute1.Value, attribute2Type: CreationProperties.KeyringAttribute2.Key, attribute2Value: CreationProperties.KeyringAttribute2.Value, end: IntPtr.Zero); if (error != IntPtr.Zero) { try { GError err = (GError)Marshal.PtrToStructure(error, typeof(GError)); _logger.TraceEvent(TraceEventType.Error, /*id*/ 0, $"An error was encountered while clearing secret from keyring in the {nameof(AdalCacheStorage)} domain:'{err.Domain}' code:'{err.Code}' message:'{err.Message}'"); } catch (Exception e) { _logger.TraceEvent(TraceEventType.Error, /*id*/ 0, $"An exception was encountered while processing libsecret error information during clearing secret in the {nameof(AdalCacheStorage)} ex:'{e}'"); } } _logger.TraceEvent(TraceEventType.Information, /*id*/ 0, "After deleting secret from linux keyring"); } else if (!SharedUtilities.IsWindowsPlatform()) { _logger.TraceEvent(TraceEventType.Information, /*id*/ 0, "Not supported platform"); throw new PlatformNotSupportedException(); } }