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));
 }