diff options
author | Andrew Arnott <andrewarnott@gmail.com> | 2011-04-07 06:47:13 -0700 |
---|---|---|
committer | Andrew Arnott <andrewarnott@gmail.com> | 2011-04-07 06:47:13 -0700 |
commit | 843ec327684fe3cee40b790f352c127e90f6de90 (patch) | |
tree | c6e3109161290929d60b365acec9821254dd11aa /samples/OAuthAuthorizationServer/Controllers/OAuthController.cs | |
parent | 619314e1e1d55b4122062f1e6219be335f790fc7 (diff) | |
download | DotNetOpenAuth-843ec327684fe3cee40b790f352c127e90f6de90.zip DotNetOpenAuth-843ec327684fe3cee40b790f352c127e90f6de90.tar.gz DotNetOpenAuth-843ec327684fe3cee40b790f352c127e90f6de90.tar.bz2 |
Fixed non-thread-safe use of RsaCryptoServiceProvider instances.
Diffstat (limited to 'samples/OAuthAuthorizationServer/Controllers/OAuthController.cs')
-rw-r--r-- | samples/OAuthAuthorizationServer/Controllers/OAuthController.cs | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/samples/OAuthAuthorizationServer/Controllers/OAuthController.cs b/samples/OAuthAuthorizationServer/Controllers/OAuthController.cs index fc332d0..b9fbe65 100644 --- a/samples/OAuthAuthorizationServer/Controllers/OAuthController.cs +++ b/samples/OAuthAuthorizationServer/Controllers/OAuthController.cs @@ -37,14 +37,20 @@ /// <summary>
/// The resource server's encryption service provider with private key.
/// </summary>
- private static readonly RSACryptoServiceProvider ResourceServerEncryptionServiceProvider;
+ /// <remarks>
+ /// Since <see cref="RSACryptoServiceProvider"/> are not thread-safe, one must be created for each thread.
+ /// </remarks>
+ [ThreadStatic]
+ private static RSACryptoServiceProvider ResourceServerEncryptionServiceProvider = CreateResourceServerEncryptionServiceProvider();
/// <summary>
- /// Initializes the <see cref="OAuthController"/> class.
+ /// Creates the resource server's encryption service provider with private key.
/// </summary>
- static OAuthController() {
- ResourceServerEncryptionServiceProvider = new RSACryptoServiceProvider();
- ResourceServerEncryptionServiceProvider.ImportParameters(ResourceServerEncryptionPublicKey);
+ /// <returns>An RSA crypto service provider.</returns>
+ private static RSACryptoServiceProvider CreateResourceServerEncryptionServiceProvider() {
+ var resourceServerEncryptionServiceProvider = new RSACryptoServiceProvider();
+ resourceServerEncryptionServiceProvider.ImportParameters(ResourceServerEncryptionPublicKey);
+ return resourceServerEncryptionServiceProvider;
}
/// <summary>
|