diff options
Diffstat (limited to 'samples/OAuth2ProtectedWebApi/Code/MemoryCryptoKeyStore.cs')
-rw-r--r-- | samples/OAuth2ProtectedWebApi/Code/MemoryCryptoKeyStore.cs | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/samples/OAuth2ProtectedWebApi/Code/MemoryCryptoKeyStore.cs b/samples/OAuth2ProtectedWebApi/Code/MemoryCryptoKeyStore.cs new file mode 100644 index 0000000..2bed4fd --- /dev/null +++ b/samples/OAuth2ProtectedWebApi/Code/MemoryCryptoKeyStore.cs @@ -0,0 +1,54 @@ +namespace OAuth2ProtectedWebApi.Code { + using System; + using System.Collections.Generic; + using System.Linq; + using System.Web; + + using DotNetOpenAuth.Messaging.Bindings; + + internal class MemoryCryptoKeyStore : ICryptoKeyStore { + private Dictionary<string, Dictionary<string, CryptoKey>> keys = new Dictionary<string, Dictionary<string, CryptoKey>>(); + + private MemoryCryptoKeyStore() { + } + + internal static ICryptoKeyStore Instance = new MemoryCryptoKeyStore(); + + public CryptoKey GetKey(string bucket, string handle) { + Dictionary<string, CryptoKey> keyBucket; + if (this.keys.TryGetValue(bucket, out keyBucket)) { + CryptoKey key; + if (keyBucket.TryGetValue(handle, out key)) { + return key; + } + } + + return null; + } + + public IEnumerable<KeyValuePair<string, CryptoKey>> GetKeys(string bucket) { + Dictionary<string, CryptoKey> keyBucket; + if (this.keys.TryGetValue(bucket, out keyBucket)) { + foreach (var cryptoKey in keyBucket) { + yield return cryptoKey; + } + } + } + + public void StoreKey(string bucket, string handle, CryptoKey key) { + Dictionary<string, CryptoKey> keyBucket; + if (!this.keys.TryGetValue(bucket, out keyBucket)) { + keyBucket = this.keys[bucket] = new Dictionary<string, CryptoKey>(); + } + + keyBucket[handle] = key; + } + + public void RemoveKey(string bucket, string handle) { + Dictionary<string, CryptoKey> keyBucket; + if (this.keys.TryGetValue(bucket, out keyBucket)) { + keyBucket.Remove(handle); + } + } + } +}
\ No newline at end of file |