private async Task GetEncryptionKey()

in DeviceBridge/Services/EncryptionService.cs [94:126]


        private async Task<SecretBundle> GetEncryptionKey(Logger logger, string version = null)
        {
            if (version == null && _latestKnownEncryptionKeyVersionId != null && _encryptionKeys.ContainsKey(_latestKnownEncryptionKeyVersionId))
            {
                // Use latest cached version
                SecretBundle cachedValue;
                _encryptionKeys.TryGetValue(_latestKnownEncryptionKeyVersionId, out cachedValue);
                return cachedValue;
            }

            if (version != null && _encryptionKeys.ContainsKey(version))
            {
                // Used cached key
                SecretBundle cachedValue;
                _encryptionKeys.TryGetValue(version, out cachedValue);
                return cachedValue;
            }

            // Get latest version from KV and cache
            var foundKey = await _secretsProvider.GetEncryptionKey(logger, version);

            if (!_encryptionKeys.ContainsKey(foundKey.SecretIdentifier.Version))
            {
                _encryptionKeys.Add(foundKey.SecretIdentifier.Version, foundKey);
            }

            if (version == null)
            {
                _latestKnownEncryptionKeyVersionId = foundKey.SecretIdentifier.Version;
            }

            return foundKey;
        }