diff options
author | Andrew Arnott <andrewarnott@gmail.com> | 2013-03-01 21:33:22 -0800 |
---|---|---|
committer | Andrew Arnott <andrewarnott@gmail.com> | 2013-03-01 21:33:22 -0800 |
commit | d4d806fbcc1c7cdc86ec8234c5792bbaf667d5a8 (patch) | |
tree | 93004acbee42d003dc38674fc50826d0d440583b /samples/OAuth2ProtectedWebApi/Code/MemoryCryptoKeyStore.cs | |
parent | 6204dcf07f31b78478bc1ddb55a6ca9027617b67 (diff) | |
parent | 74b6b4efd2be2680e3067f716829b0c9385ceebe (diff) | |
download | DotNetOpenAuth-d4d806fbcc1c7cdc86ec8234c5792bbaf667d5a8.zip DotNetOpenAuth-d4d806fbcc1c7cdc86ec8234c5792bbaf667d5a8.tar.gz DotNetOpenAuth-d4d806fbcc1c7cdc86ec8234c5792bbaf667d5a8.tar.bz2 |
Merge branch 'httpclient' into OAuthSimple
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 |