public void CacheKeyForDB(string databasePath, CompositeKey keys) { Contract.Requires(!string.IsNullOrEmpty(databasePath)); Contract.Requires(keys != null); Contract.Requires(WinHello.IsAvailable()); var validPeriod = KeePassWinHelloExt.Host.CustomConfig.GetULong(CfgValidPeriod, VALID_DEFAULT); lock (_unlockCache) { _unlockCache[databasePath] = new WinHelloData { ValidUntil = validPeriod == VALID_UNLIMITED ? DateTime.MaxValue : DateTime.Now.AddSeconds(validPeriod), ComposedKey = Encrypt(keys), }; } }
private bool TryGetCachedKey(string databasePath, out WinHelloData data) { lock (_unlockCache) return(_unlockCache.TryGetValue(databasePath, out data)); }