diff --git a/identity-server/src/EntityFramework.Storage/Stores/SigningKeyStore.cs b/identity-server/src/EntityFramework.Storage/Stores/SigningKeyStore.cs index 318d7a6cd..fcb5016eb 100644 --- a/identity-server/src/EntityFramework.Storage/Stores/SigningKeyStore.cs +++ b/identity-server/src/EntityFramework.Storage/Stores/SigningKeyStore.cs @@ -52,14 +52,15 @@ public class SigningKeyStore : ISigningKeyStore /// /// Loads all keys from store. /// + /// /// - public async Task> LoadKeysAsync() + public async Task> LoadKeysAsync(CT ct) { using var activity = Tracing.StoreActivitySource.StartActivity("SigningKeyStore.LoadKeys"); var entities = await Context.Keys.Where(x => x.Use == Use) .AsNoTracking() - .ToArrayAsync(CancellationTokenProvider.CancellationToken); + .ToArrayAsync(ct); return entities.Select(key => new SerializedKey { Id = key.Id, @@ -76,8 +77,9 @@ public class SigningKeyStore : ISigningKeyStore /// Persists new key in store. /// /// + /// /// - public async Task StoreKeyAsync(SerializedKey key) + public async Task StoreKeyAsync(SerializedKey key, CT ct) { using var activity = Tracing.StoreActivitySource.StartActivity("SigningKeyStore.StoreKey"); @@ -93,26 +95,27 @@ public class SigningKeyStore : ISigningKeyStore IsX509Certificate = key.IsX509Certificate }; Context.Keys.Add(entity); - await Context.SaveChangesAsync(CancellationTokenProvider.CancellationToken); + await Context.SaveChangesAsync(ct); } /// /// Deletes key from storage. /// /// + /// /// - public async Task DeleteKeyAsync(string id) + public async Task DeleteKeyAsync(string id, CT ct) { using var activity = Tracing.StoreActivitySource.StartActivity("SigningKeyStore.DeleteKey"); var item = await Context.Keys.Where(x => x.Use == Use && x.Id == id) - .FirstOrDefaultAsync(CancellationTokenProvider.CancellationToken); + .FirstOrDefaultAsync(ct); if (item != null) { try { Context.Keys.Remove(item); - await Context.SaveChangesAsync(CancellationTokenProvider.CancellationToken); + await Context.SaveChangesAsync(ct); } catch (DbUpdateConcurrencyException ex) { diff --git a/identity-server/src/IdentityServer/Services/Default/KeyManagement/FileSystemKeyStore.cs b/identity-server/src/IdentityServer/Services/Default/KeyManagement/FileSystemKeyStore.cs index 3aff2c332..d9edea1ed 100644 --- a/identity-server/src/IdentityServer/Services/Default/KeyManagement/FileSystemKeyStore.cs +++ b/identity-server/src/IdentityServer/Services/Default/KeyManagement/FileSystemKeyStore.cs @@ -44,8 +44,9 @@ public class FileSystemKeyStore : ISigningKeyStore /// /// Returns all the keys in storage. /// + /// /// - public async Task> LoadKeysAsync() + public async Task> LoadKeysAsync(CT ct) { var list = new List(); @@ -62,7 +63,7 @@ public class FileSystemKeyStore : ISigningKeyStore { using (var reader = new StreamReader(file.OpenRead())) { - var json = await reader.ReadToEndAsync(); + var json = await reader.ReadToEndAsync(ct); var item = KeySerializer.Deserialize(json); list.Add(item); } @@ -80,8 +81,9 @@ public class FileSystemKeyStore : ISigningKeyStore /// Persists new key in storage. /// /// + /// /// - public async Task StoreKeyAsync(SerializedKey key) + public async Task StoreKeyAsync(SerializedKey key, CT ct) { if (!_directory.Exists) { @@ -91,15 +93,16 @@ public class FileSystemKeyStore : ISigningKeyStore var json = KeySerializer.Serialize(key); var path = Path.Combine(_directory.FullName, KeyFilePrefix + key.Id + KeyFileExtension); - await File.WriteAllTextAsync(path, json, Encoding.UTF8); + await File.WriteAllTextAsync(path, json, Encoding.UTF8, ct); } /// /// Deletes key from storage. /// /// + /// /// - public Task DeleteKeyAsync(string id) + public Task DeleteKeyAsync(string id, CT ct) { var path = Path.Combine(_directory.FullName, KeyFilePrefix + id + KeyFileExtension); try diff --git a/identity-server/src/IdentityServer/Services/Default/KeyManagement/KeyManager.cs b/identity-server/src/IdentityServer/Services/Default/KeyManagement/KeyManager.cs index 85afdc91c..eee182d4a 100644 --- a/identity-server/src/IdentityServer/Services/Default/KeyManagement/KeyManager.cs +++ b/identity-server/src/IdentityServer/Services/Default/KeyManagement/KeyManager.cs @@ -66,7 +66,7 @@ public class KeyManager : IKeyManager _logger.LogTrace("Getting the current key."); - var (_, currentKeys) = await GetAllKeysInternalAsync(); + var (_, currentKeys) = await GetAllKeysInternalAsync(default); if (_logger.IsEnabled(LogLevel.Debug)) { @@ -89,20 +89,20 @@ public class KeyManager : IKeyManager _logger.LogTrace("Getting all the keys."); - var (keys, _) = await GetAllKeysInternalAsync(); + var (keys, _) = await GetAllKeysInternalAsync(default); return keys; } - internal async Task<(IEnumerable allKeys, IEnumerable signingKeys)> GetAllKeysInternalAsync() + internal async Task<(IEnumerable allKeys, IEnumerable signingKeys)> GetAllKeysInternalAsync(CT ct = default) { var cached = true; var keys = await GetAllKeysFromCacheAsync(); if (!keys.Any()) { cached = false; - keys = await GetAllKeysFromStoreAsync(); + keys = await GetAllKeysFromStoreAsync(ct: ct); } // ensure we have all of our active signing keys @@ -154,7 +154,7 @@ public class KeyManager : IKeyManager if (!signingKeysSuccess || rotationRequired) { // still need to do the work, but check if another server did the work already - keys = await GetAllKeysFromStoreAsync(); + keys = await GetAllKeysFromStoreAsync(ct: ct); if (!signingKeysSuccess) { @@ -177,7 +177,7 @@ public class KeyManager : IKeyManager } // now we know we need to create new keys - (keys, signingKeys) = await CreateNewKeysAndAddToCacheAsync(); + (keys, signingKeys) = await CreateNewKeysAndAddToCacheAsync(ct); } else { @@ -265,7 +265,7 @@ public class KeyManager : IKeyManager return false; } - internal async Task CreateAndStoreNewKeyAsync(SigningAlgorithmOptions alg) + internal async Task CreateAndStoreNewKeyAsync(SigningAlgorithmOptions alg, CT ct = default) { _logger.LogTrace("Creating new key."); @@ -300,7 +300,7 @@ public class KeyManager : IKeyManager } var key = _protector.Protect(container); - await _store.StoreKeyAsync(key); + await _store.StoreKeyAsync(key, ct); _logger.LogDebug("Created and stored new key with kid {kid}.", container.Id); @@ -340,7 +340,7 @@ public class KeyManager : IKeyManager return result; } - internal async Task> FilterAndDeleteRetiredKeysAsync(IEnumerable keys) + internal async Task> FilterAndDeleteRetiredKeysAsync(IEnumerable keys, CT ct = default) { var retired = keys .Where(x => @@ -365,7 +365,7 @@ public class KeyManager : IKeyManager { _logger.LogDebug("Deleting retired keys from store: {kids}", ids.Aggregate((x, y) => $"{x},{y}")); } - await DeleteKeysAsync(ids); + await DeleteKeysAsync(ids, ct); } } @@ -373,7 +373,7 @@ public class KeyManager : IKeyManager return result; } - internal async Task DeleteKeysAsync(IEnumerable keys) + internal async Task DeleteKeysAsync(IEnumerable keys, CT ct = default) { if (keys == null || !keys.Any()) { @@ -382,7 +382,7 @@ public class KeyManager : IKeyManager foreach (var key in keys) { - await _store.DeleteKeyAsync(key); + await _store.DeleteKeyAsync(key, ct); } } @@ -428,15 +428,15 @@ public class KeyManager : IKeyManager } } - internal async Task> GetAllKeysFromStoreAsync(bool cache = true) + internal async Task> GetAllKeysFromStoreAsync(bool cache = true, CT ct = default) { _logger.LogTrace("Loading keys from store."); - var protectedKeys = await _store.LoadKeysAsync(); + var protectedKeys = await _store.LoadKeysAsync(ct); if (protectedKeys != null && protectedKeys.Any()) { // retired keys are those that are beyond inclusion, thus we act as if they don't exist. - protectedKeys = await FilterAndDeleteRetiredKeysAsync(protectedKeys); + protectedKeys = await FilterAndDeleteRetiredKeysAsync(protectedKeys, ct); var keys = protectedKeys.Select(x => { @@ -505,14 +505,14 @@ public class KeyManager : IKeyManager - internal async Task<(IEnumerable allKeys, IEnumerable activeKeys)> CreateNewKeysAndAddToCacheAsync() + internal async Task<(IEnumerable allKeys, IEnumerable activeKeys)> CreateNewKeysAndAddToCacheAsync(CT ct = default) { var keys = new List(); keys.AddRange(await _cache.GetKeysAsync() ?? Enumerable.Empty()); foreach (var alg in _options.KeyManagement.SigningAlgorithms) { - var newKey = await CreateAndStoreNewKeyAsync(alg); + var newKey = await CreateAndStoreNewKeyAsync(alg, ct); keys.Add(newKey); } @@ -527,7 +527,7 @@ public class KeyManager : IKeyManager if (_options.KeyManagement.InitializationSynchronizationDelay > TimeSpan.Zero) { _logger.LogTrace("All keys are new; delaying before reloading keys from store by InitializationSynchronizationDelay for {InitializationSynchronizationDelay}.", _options.KeyManagement.InitializationSynchronizationDelay); - await Task.Delay(_options.KeyManagement.InitializationSynchronizationDelay); + await Task.Delay(_options.KeyManagement.InitializationSynchronizationDelay, ct); } else { @@ -535,7 +535,7 @@ public class KeyManager : IKeyManager } // reload in case other new keys were recently created - keys = new List(await GetAllKeysFromStoreAsync(false)); + keys = new List(await GetAllKeysFromStoreAsync(false, ct)); } // explicitly cache here since we didn't when we loaded above diff --git a/identity-server/src/Storage/Stores/ISigningKeyStore.cs b/identity-server/src/Storage/Stores/ISigningKeyStore.cs index 1a1107194..156d58921 100644 --- a/identity-server/src/Storage/Stores/ISigningKeyStore.cs +++ b/identity-server/src/Storage/Stores/ISigningKeyStore.cs @@ -16,20 +16,23 @@ public interface ISigningKeyStore /// /// Returns all the keys in storage. /// + /// /// - Task> LoadKeysAsync(); + Task> LoadKeysAsync(CT ct); /// /// Persists new key in storage. /// /// + /// /// - Task StoreKeyAsync(SerializedKey key); + Task StoreKeyAsync(SerializedKey key, CT ct); /// /// Deletes key from storage. /// /// + /// /// - Task DeleteKeyAsync(string id); + Task DeleteKeyAsync(string id, CT ct); } diff --git a/identity-server/test/IdentityServer.UnitTests/Services/Default/KeyManagement/KeyManagerTests.cs b/identity-server/test/IdentityServer.UnitTests/Services/Default/KeyManagement/KeyManagerTests.cs index 0c9f32893..42df89ed4 100644 --- a/identity-server/test/IdentityServer.UnitTests/Services/Default/KeyManagement/KeyManagerTests.cs +++ b/identity-server/test/IdentityServer.UnitTests/Services/Default/KeyManagement/KeyManagerTests.cs @@ -18,6 +18,8 @@ public class KeyManagerTests { private KeyManager _subject; + private readonly CT _ct = TestContext.Current.CancellationToken; + private SigningAlgorithmOptions _rsaOptions = new SigningAlgorithmOptions("RS256"); private IdentityServerOptions _options = new IdentityServerOptions(); @@ -131,7 +133,7 @@ public class KeyManagerTests { var id = CreateAndStoreKey(_options.KeyManagement.PropagationTime.Add(TimeSpan.FromHours(1))); - var (allKeys, signgingKeys) = await _subject.GetAllKeysInternalAsync(); + var (allKeys, signgingKeys) = await _subject.GetAllKeysInternalAsync(_ct); var key = signgingKeys.Single(); key.Id.ShouldBe(id); @@ -142,7 +144,7 @@ public class KeyManagerTests { var id = CreateAndStoreKey(TimeSpan.FromSeconds(5)); - var (allKeys, signgingKeys) = await _subject.GetAllKeysInternalAsync(); + var (allKeys, signgingKeys) = await _subject.GetAllKeysInternalAsync(_ct); var key = signgingKeys.Single(); @@ -156,7 +158,7 @@ public class KeyManagerTests { var id = CreateAndStoreKey(-TimeSpan.FromSeconds(5)); - var (allKeys, signgingKeys) = await _subject.GetAllKeysInternalAsync(); + var (allKeys, signgingKeys) = await _subject.GetAllKeysInternalAsync(_ct); var key = signgingKeys.Single(); @@ -168,7 +170,7 @@ public class KeyManagerTests [Fact] public async Task GetAllKeysInternalAsync_when_no_keys_should_create_key() { - var (allKeys, signgingKeys) = await _subject.GetAllKeysInternalAsync(); + var (allKeys, signgingKeys) = await _subject.GetAllKeysInternalAsync(_ct); var key = signgingKeys.Single(); @@ -182,7 +184,7 @@ public class KeyManagerTests { _mockKeyStore.Keys = null; - var (keys, key) = await _subject.GetAllKeysInternalAsync(); + var (keys, key) = await _subject.GetAllKeysInternalAsync(_ct); keys.ShouldNotBeEmpty(); } @@ -192,7 +194,7 @@ public class KeyManagerTests { var id = CreateAndStoreKey(_options.KeyManagement.RotationInterval.Add(TimeSpan.FromSeconds(5))); - var (allKeys, signgingKeys) = await _subject.GetAllKeysInternalAsync(); + var (allKeys, signgingKeys) = await _subject.GetAllKeysInternalAsync(_ct); var key = signgingKeys.Single(); @@ -207,7 +209,7 @@ public class KeyManagerTests var id1 = CreateCacheAndStoreKey(_options.KeyManagement.RotationInterval.Add(TimeSpan.FromSeconds(5))); var id2 = CreateAndStoreKey(); - var (allKeys, signgingKeys) = await _subject.GetAllKeysInternalAsync(); + var (allKeys, signgingKeys) = await _subject.GetAllKeysInternalAsync(_ct); var key = signgingKeys.Single(); @@ -223,7 +225,7 @@ public class KeyManagerTests var key3 = CreateAndStoreKey(-TimeSpan.FromSeconds(5)); var key4 = CreateAndStoreKey(_options.KeyManagement.RotationInterval.Add(TimeSpan.FromSeconds(5))); - var (allKeys, signgingKeys) = await _subject.GetAllKeysInternalAsync(); + var (allKeys, signgingKeys) = await _subject.GetAllKeysInternalAsync(_ct); var key = signgingKeys.Single(); @@ -238,7 +240,7 @@ public class KeyManagerTests var key1 = CreateAndStoreKey(_options.KeyManagement.RotationInterval.Subtract(TimeSpan.FromSeconds(10))); var key2 = CreateAndStoreKey(-TimeSpan.FromSeconds(5)); - var (allKeys, signgingKeys) = await _subject.GetAllKeysInternalAsync(); + var (allKeys, signgingKeys) = await _subject.GetAllKeysInternalAsync(_ct); var key = signgingKeys.Single(); @@ -256,7 +258,7 @@ public class KeyManagerTests var key4 = CreateAndStoreKey(_options.KeyManagement.RotationInterval.Add(TimeSpan.FromSeconds(5))); var key5 = CreateAndStoreKey(_options.KeyManagement.KeyRetirementAge.Add(TimeSpan.FromSeconds(5))); - var (allKeys, signgingKeys) = await _subject.GetAllKeysInternalAsync(); + var (allKeys, signgingKeys) = await _subject.GetAllKeysInternalAsync(_ct); allKeys.Select(x => x.Id).ShouldBe([key1, key2, key3, key4]); } @@ -272,7 +274,7 @@ public class KeyManagerTests var key4 = CreateAndStoreKey(_options.KeyManagement.RotationInterval.Add(TimeSpan.FromSeconds(5))); var key5 = CreateAndStoreKey(_options.KeyManagement.KeyRetirementAge.Add(TimeSpan.FromSeconds(5))); - var (allKeys, signgingKeys) = await _subject.GetAllKeysInternalAsync(); + var (allKeys, signgingKeys) = await _subject.GetAllKeysInternalAsync(_ct); allKeys.Select(x => x.Id).ShouldBe([key1, key2, key3, key4]); } @@ -282,7 +284,7 @@ public class KeyManagerTests { var key = CreateAndStoreKey(); - var (allKeys, signgingKeys) = await _subject.GetAllKeysInternalAsync(); + var (allKeys, signgingKeys) = await _subject.GetAllKeysInternalAsync(_ct); allKeys.Count().ShouldBe(1); allKeys.Single().Id.ShouldBe(key); @@ -300,7 +302,7 @@ public class KeyManagerTests key }; - var (allKeys, signgingKeys) = await _subject.GetAllKeysInternalAsync(); + var (allKeys, signgingKeys) = await _subject.GetAllKeysInternalAsync(_ct); allKeys.Count().ShouldBe(1); allKeys.Single().Id.ShouldBe(key.Id); @@ -312,7 +314,7 @@ public class KeyManagerTests { var key1 = CreateAndStoreKey(_options.KeyManagement.RotationInterval.Subtract(TimeSpan.FromSeconds(1))); - var (allKeys, signgingKeys) = await _subject.GetAllKeysInternalAsync(); + var (allKeys, signgingKeys) = await _subject.GetAllKeysInternalAsync(_ct); var key = signgingKeys.Single(); @@ -327,7 +329,7 @@ public class KeyManagerTests var key1 = CreateCacheAndStoreKey(_options.KeyManagement.RotationInterval.Subtract(TimeSpan.FromSeconds(1))); var key2 = CreateAndStoreKey(); - var (allKeys, signgingKeys) = await _subject.GetAllKeysInternalAsync(); + var (allKeys, signgingKeys) = await _subject.GetAllKeysInternalAsync(_ct); _mockKeyStore.Keys.Count.ShouldBe(2); } @@ -337,7 +339,7 @@ public class KeyManagerTests { var key1 = CreateAndStoreKey(_options.KeyManagement.RotationInterval.Subtract(_options.KeyManagement.PropagationTime.Add(TimeSpan.FromSeconds(1)))); - var (allKeys, signgingKeys) = await _subject.GetAllKeysInternalAsync(); + var (allKeys, signgingKeys) = await _subject.GetAllKeysInternalAsync(_ct); var key = signgingKeys.Single(); @@ -477,7 +479,7 @@ public class KeyManagerTests var key5 = CreateSerializedKey(_options.KeyManagement.PropagationTime); var key6 = CreateSerializedKey(_options.KeyManagement.PropagationTime.Subtract(TimeSpan.FromSeconds(1))); - var result = await _subject.FilterAndDeleteRetiredKeysAsync([key1, key2, key3, key4, key5, key6]); + var result = await _subject.FilterAndDeleteRetiredKeysAsync([key1, key2, key3, key4, key5, key6], _ct); result.Select(x => x.Id).ShouldBe([key3.Id, key4.Id, key5.Id, key6.Id]); } @@ -585,7 +587,7 @@ public class KeyManagerTests { var key = CreateAndStoreKey(); - var keys = await _subject.GetAllKeysFromStoreAsync(); + var keys = await _subject.GetAllKeysFromStoreAsync(ct: _ct); keys.ShouldNotBeNull(); keys.Single().Id.ShouldBe(key); @@ -601,7 +603,7 @@ public class KeyManagerTests var key4 = CreateAndStoreKey(_options.KeyManagement.RotationInterval.Add(TimeSpan.FromSeconds(1))); var key5 = CreateAndStoreKey(_options.KeyManagement.KeyRetirementAge.Add(TimeSpan.FromSeconds(5))); - var keys = await _subject.GetAllKeysFromStoreAsync(); + var keys = await _subject.GetAllKeysFromStoreAsync(ct: _ct); keys.Select(x => x.Id).ShouldBe([key1, key2, key3, key4]); } @@ -615,12 +617,12 @@ public class KeyManagerTests var key4 = CreateAndStoreKey(_options.KeyManagement.RotationInterval.Add(TimeSpan.FromSeconds(1))); var key5 = CreateAndStoreKeyThatCannotBeUnprotected(_options.KeyManagement.KeyRetirementAge.Add(TimeSpan.FromSeconds(5))); - var keys = await _subject.GetAllKeysFromStoreAsync(); + var keys = await _subject.GetAllKeysFromStoreAsync(ct: _ct); keys.Select(x => x.Id).ShouldBe([key1, key2, key3, key4]); _mockKeyStore.DeleteWasCalled.ShouldBeTrue(); - var keysInStore = await _mockKeyStore.LoadKeysAsync(); + var keysInStore = await _mockKeyStore.LoadKeysAsync(_ct); keysInStore.Select(x => x.Id).ShouldBe([key1, key2, key3, key4]); } @@ -630,7 +632,7 @@ public class KeyManagerTests var key1 = CreateAndStoreKey(TimeSpan.FromSeconds(10)); _mockKeyStore.Keys.Add(null); - var keys = await _subject.GetAllKeysFromStoreAsync(); + var keys = await _subject.GetAllKeysFromStoreAsync(ct: _ct); keys.Select(x => x.Id).ShouldBe([key1]); } @@ -640,7 +642,7 @@ public class KeyManagerTests [Fact] public async Task CreateNewKeyAndAddToCacheAsync_when_no_keys_should_store_and_return_new_key() { - var (allKeys, signingKeys) = await _subject.CreateNewKeysAndAddToCacheAsync(); + var (allKeys, signingKeys) = await _subject.CreateNewKeysAndAddToCacheAsync(_ct); var key = signingKeys.Single(); _mockKeyStore.Keys.Single().Id.ShouldBe(key.Id); } @@ -650,7 +652,7 @@ public class KeyManagerTests { var key1 = CreateCacheAndStoreKey(_options.KeyManagement.PropagationTime.Add(TimeSpan.FromSeconds(1))); - var (allKeys, signingKeys) = await _subject.CreateNewKeysAndAddToCacheAsync(); + var (allKeys, signingKeys) = await _subject.CreateNewKeysAndAddToCacheAsync(_ct); var key = signingKeys.Single(); allKeys.Count().ShouldBe(2); @@ -664,7 +666,7 @@ public class KeyManagerTests { var key1 = CreateCacheAndStoreKey(); - var (allKeys, signingKeys) = await _subject.CreateNewKeysAndAddToCacheAsync(); + var (allKeys, signingKeys) = await _subject.CreateNewKeysAndAddToCacheAsync(_ct); allKeys.Select(x => x.Id).ShouldBe(_mockKeyStore.Keys.Select(x => x.Id)); } @@ -678,7 +680,7 @@ public class KeyManagerTests var sw = new Stopwatch(); sw.Start(); - var (allKeys, signingKeys) = await _subject.CreateNewKeysAndAddToCacheAsync(); + var (allKeys, signingKeys) = await _subject.CreateNewKeysAndAddToCacheAsync(_ct); sw.Stop(); sw.Elapsed.ShouldBeGreaterThanOrEqualTo(_options.KeyManagement.InitializationSynchronizationDelay); @@ -695,7 +697,7 @@ public class KeyManagerTests var sw = new Stopwatch(); sw.Start(); - var (allKeys, signingKeys) = await _subject.CreateNewKeysAndAddToCacheAsync(); + var (allKeys, signingKeys) = await _subject.CreateNewKeysAndAddToCacheAsync(_ct); sw.Stop(); sw.Elapsed.ShouldBeLessThan(_options.KeyManagement.InitializationSynchronizationDelay); @@ -925,7 +927,7 @@ public class KeyManagerTests [Fact] public async Task CreateAndStoreNewKeyAsync_should_create_and_store_and_return_key() { - var result = await _subject.CreateAndStoreNewKeyAsync(_rsaOptions); + var result = await _subject.CreateAndStoreNewKeyAsync(_rsaOptions, _ct); _mockKeyProtector.ProtectWasCalled.ShouldBeTrue(); _mockKeyStore.Keys.Count.ShouldBe(1); diff --git a/identity-server/test/IdentityServer.UnitTests/Services/Default/KeyManagement/MockSigningKeyStore.cs b/identity-server/test/IdentityServer.UnitTests/Services/Default/KeyManagement/MockSigningKeyStore.cs index 9f5d2effb..b6a649fbe 100644 --- a/identity-server/test/IdentityServer.UnitTests/Services/Default/KeyManagement/MockSigningKeyStore.cs +++ b/identity-server/test/IdentityServer.UnitTests/Services/Default/KeyManagement/MockSigningKeyStore.cs @@ -13,7 +13,7 @@ internal class MockSigningKeyStore : ISigningKeyStore public bool LoadKeysAsyncWasCalled { get; set; } public bool DeleteWasCalled { get; set; } - public Task DeleteKeyAsync(string id) + public Task DeleteKeyAsync(string id, CT ct) { DeleteWasCalled = true; if (Keys != null) @@ -23,13 +23,13 @@ internal class MockSigningKeyStore : ISigningKeyStore return Task.CompletedTask; } - public Task> LoadKeysAsync() + public Task> LoadKeysAsync(CT ct) { LoadKeysAsyncWasCalled = true; return Task.FromResult>(Keys); } - public Task StoreKeyAsync(SerializedKey key) + public Task StoreKeyAsync(SerializedKey key, CT ct) { if (Keys == null) {