summaryrefslogtreecommitdiffstats
path: root/projecttemplates/RelyingPartyLogic/OAuthResourceServer.cs
diff options
context:
space:
mode:
Diffstat (limited to 'projecttemplates/RelyingPartyLogic/OAuthResourceServer.cs')
-rw-r--r--projecttemplates/RelyingPartyLogic/OAuthResourceServer.cs31
1 files changed, 31 insertions, 0 deletions
diff --git a/projecttemplates/RelyingPartyLogic/OAuthResourceServer.cs b/projecttemplates/RelyingPartyLogic/OAuthResourceServer.cs
new file mode 100644
index 0000000..d935d56
--- /dev/null
+++ b/projecttemplates/RelyingPartyLogic/OAuthResourceServer.cs
@@ -0,0 +1,31 @@
+namespace RelyingPartyLogic {
+ using System;
+ using System.Collections.Generic;
+ using System.Linq;
+ using System.Text;
+ using System.Security.Cryptography;
+
+ public static class OAuthResourceServer {
+ private static readonly RSAParameters ResourceServerKeyPair = CreateRSAKey();
+
+ internal static RSACryptoServiceProvider CreateRSA() {
+ var rsa = new RSACryptoServiceProvider();
+ rsa.ImportParameters(ResourceServerKeyPair);
+ return rsa;
+ }
+
+ /// <summary>
+ /// Creates the RSA key used by all the crypto service provider instances we create.
+ /// </summary>
+ /// <returns>RSA data that includes the private key.</returns>
+ private static RSAParameters CreateRSAKey() {
+ // As we generate a new random key, we need to set the UseMachineKeyStore flag so that this doesn't
+ // crash on IIS. For more information:
+ // http://social.msdn.microsoft.com/Forums/en-US/clr/thread/7ea48fd0-8d6b-43ed-b272-1a0249ae490f?prof=required
+ var cspParameters = new CspParameters();
+ cspParameters.Flags = CspProviderFlags.UseArchivableKey | CspProviderFlags.UseMachineKeyStore;
+ var asymmetricKey = new RSACryptoServiceProvider(cspParameters);
+ return asymmetricKey.ExportParameters(true);
+ }
+ }
+}