diff options
Diffstat (limited to 'projecttemplates/RelyingPartyLogic/OAuthResourceServer.cs')
-rw-r--r-- | projecttemplates/RelyingPartyLogic/OAuthResourceServer.cs | 31 |
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); + } + } +} |