summaryrefslogtreecommitdiffstats
path: root/samples/OAuth2ProtectedWebApi/Code/MemoryCryptoKeyStore.cs
diff options
context:
space:
mode:
Diffstat (limited to 'samples/OAuth2ProtectedWebApi/Code/MemoryCryptoKeyStore.cs')
-rw-r--r--samples/OAuth2ProtectedWebApi/Code/MemoryCryptoKeyStore.cs54
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