Exemple #1
0
        public async Task <IKeychainAdapter> Load(UriString host)
        {
            KeychainAdapter keychainAdapter  = FindOrCreateAdapter(host);
            var             cachedConnection = connectionCache[host];

            logger.Trace($@"Loading KeychainAdapter Host:""{host}"" Cached Username:""{cachedConnection.Username}""");

            var keychainItem = await credentialManager.Load(host);

            if (keychainItem == null)
            {
                logger.Warning("Cannot load host from Credential Manager; removing from cache");
                await Clear(host, false);
            }
            else
            {
                if (keychainItem.Username != cachedConnection.Username)
                {
                    logger.Warning("Keychain Username: {0} does not match; Hopefully it works", keychainItem.Username);
                }

                logger.Trace("Loaded from Credential Manager Host:\"{0}\" Username:\"{1}\"", keychainItem.Host, keychainItem.Username);

                keychainAdapter.Set(keychainItem);
            }

            return(keychainAdapter);
        }
Exemple #2
0
        private KeychainAdapter FindOrCreateAdapter(UriString host)
        {
            KeychainAdapter value;

            if (!keychainAdapters.TryGetValue(host, out value))
            {
                value = new KeychainAdapter();
                keychainAdapters.Add(host, value);
            }
            return(value);
        }