diff options
author | Andrew Arnott <andrewarnott@gmail.com> | 2013-03-01 21:26:10 -0800 |
---|---|---|
committer | Andrew Arnott <andrewarnott@gmail.com> | 2013-03-01 21:26:10 -0800 |
commit | 74b6b4efd2be2680e3067f716829b0c9385ceebe (patch) | |
tree | 5f241db63080c6547d9cc635b0bf36dd587b5354 /samples/OAuth2ProtectedWebApi/Code/MemoryCryptoKeyStore.cs | |
parent | 798fa1c5f55058eb241f257d15e2dd630eb3d4fd (diff) | |
download | DotNetOpenAuth-74b6b4efd2be2680e3067f716829b0c9385ceebe.zip DotNetOpenAuth-74b6b4efd2be2680e3067f716829b0c9385ceebe.tar.gz DotNetOpenAuth-74b6b4efd2be2680e3067f716829b0c9385ceebe.tar.bz2 |
Adds a WebAPI sample that is its own authorization server and resource server.
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 |