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