Modified:
branches/5.2/CHANGES
branches/5.2/MySql.Web/Providers/MySql.Web.csproj
branches/5.2/MySql.Web/Providers/Properties/Resources.resx
branches/5.2/MySql.Web/Providers/Source/MembershipProvider.cs
Log:
- added runtime check for the mono platform to our Membership provider. The mono runtime
as of 1.9.1 did not support the methods needed for hashed passwords (bug #38895)
Modified: branches/5.2/CHANGES
===================================================================
--- branches/5.2/CHANGES 2008-09-05 16:43:27 UTC (rev 1405)
+++ branches/5.2/CHANGES 2008-09-05 20:09:35 UTC (rev 1406)
@@ -5,6 +5,8 @@
different case then an exception would be thrown.
- fixed stored procedure parameter parsing when used inside server explorer. (bug
#39252)
- fixed time data type so that negative values are handled properly (bug #39275)
+- added runtime check for the mono platform to our Membership provider. The mono runtime
+ as of 1.9.1 did not support the methods needed for hashed passwords (bug #38895)
Version 5.2.3 - 8/14/08
- Increased the speed of MySqlDataReader.GetOrdinal dramatically by using a couple
Modified: branches/5.2/MySql.Web/Providers/MySql.Web.csproj
===================================================================
--- branches/5.2/MySql.Web/Providers/MySql.Web.csproj 2008-09-05 16:43:27 UTC (rev 1405)
+++ branches/5.2/MySql.Web/Providers/MySql.Web.csproj 2008-09-05 20:09:35 UTC (rev 1406)
@@ -63,6 +63,7 @@
<Compile Include="Source\ProfileProvider.cs" />
<Compile Include="Source\MembershipProvider.cs" />
<Compile Include="Source\RoleProvider.cs" />
+ <Compile Include="Source\Runtime.cs" />
<Compile Include="Source\SchemaManager.cs" />
</ItemGroup>
<ItemGroup>
Modified: branches/5.2/MySql.Web/Providers/Properties/Resources.resx
===================================================================
--- branches/5.2/MySql.Web/Providers/Properties/Resources.resx 2008-09-05 16:43:27 UTC
(rev 1405)
+++ branches/5.2/MySql.Web/Providers/Properties/Resources.resx 2008-09-05 20:09:35 UTC
(rev 1406)
@@ -238,4 +238,7 @@
<data name="IllegalUserName" xml:space="preserve">
<value>User names must not be null or empty.</value>
</data>
+ <data name="MonoDoesNotSupportHash" xml:space="preserve">
+ <value>The mono runtime did not support hashed passwords. Please use clear or
encrypted passwords.</value>
+ </data>
</root>
\ No newline at end of file
Modified: branches/5.2/MySql.Web/Providers/Source/MembershipProvider.cs
===================================================================
--- branches/5.2/MySql.Web/Providers/Source/MembershipProvider.cs 2008-09-05 16:43:27 UTC
(rev 1405)
+++ branches/5.2/MySql.Web/Providers/Source/MembershipProvider.cs 2008-09-05 20:09:35 UTC
(rev 1406)
@@ -119,6 +119,7 @@
requiresUniqueEmail =
Convert.ToBoolean(GetConfigValue(config["requiresUniqueEmail"], "True"));
writeExceptionsToEventLog =
Convert.ToBoolean(GetConfigValue(config["writeExceptionsToEventLog"], "True"));
string temp_format = config["passwordFormat"];
+
if (temp_format == null)
temp_format = "hashed";
else
@@ -135,8 +136,13 @@
// if the user is asking for the ability to retrieve hashed passwords, then
let
// them know we can't
- if (PasswordFormat == MembershipPasswordFormat.Hashed &&
EnablePasswordRetrieval)
- throw new ProviderException(Resources.CannotRetrieveHashedPasswords);
+ if (PasswordFormat == MembershipPasswordFormat.Hashed)
+ {
+ if (EnablePasswordRetrieval)
+ throw new ProviderException(Resources.CannotRetrieveHashedPasswords);
+ if (Runtime.IsMono)
+ throw new ProviderException(Resources.MonoDoesNotSupportHash);
+ }
ConnectionStringSettings ConnectionStringSettings =
ConfigurationManager.ConnectionStrings[
config["connectionStringName"]];
@@ -561,16 +567,19 @@
@failedPasswordAttemptWindowStart,
@failedPasswordAnswerAttemptCount,
@failedPasswordAnswerAttemptWindowStart)",
connection);
+ Console.WriteLine("point 1");
cmd.Parameters.AddWithValue("@userId", userId);
cmd.Parameters.AddWithValue("@email", email);
cmd.Parameters.AddWithValue("@comment", "");
cmd.Parameters.AddWithValue("@password",
EncodePassword(password, passwordKey, PasswordFormat));
+ Console.WriteLine("point 2");
cmd.Parameters.AddWithValue("@passwordKey", passwordKey);
cmd.Parameters.AddWithValue("@passwordFormat", PasswordFormat);
cmd.Parameters.AddWithValue("@passwordQuestion", passwordQuestion);
cmd.Parameters.AddWithValue("@passwordAnswer",
EncodePassword(passwordAnswer, passwordKey, PasswordFormat));
+ Console.WriteLine("point 3");
cmd.Parameters.AddWithValue("@isApproved", isApproved);
cmd.Parameters.AddWithValue("@lastActivityDate", createDate);
cmd.Parameters.AddWithValue("@lastLoginDate", createDate);
@@ -1230,6 +1239,18 @@
return Convert.ToBase64String(key);
}
+ /// <summary>
+ /// this method is only necessary because early versions of Mono did not support
+ /// the HashAlgorithmType property
+ /// </summary>
+ /// <param name="bytes"></param>
+ /// <returns></returns>
+ private string HashPasswordBytes(byte[] bytes)
+ {
+ HashAlgorithm hash = HashAlgorithm.Create(Membership.HashAlgorithmType);
+ return Convert.ToBase64String(hash.ComputeHash(bytes));
+ }
+
private string EncodePassword(string password, string passwordKey,
MembershipPasswordFormat format)
{
@@ -1250,10 +1271,7 @@
return Convert.ToBase64String(encryptedBytes);
}
else if (format == MembershipPasswordFormat.Hashed)
- {
- HashAlgorithm hash = HashAlgorithm.Create(Membership.HashAlgorithmType);
- return Convert.ToBase64String(hash.ComputeHash(keyedBytes));
- }
+ return HashPasswordBytes(keyedBytes);
else
throw new ProviderException(Resources.UnsupportedPasswordFormat);
}
| Thread |
|---|
| • Connector/NET commit: r1406 - in branches/5.2: . MySql.Web/Providers MySql.Web/Providers/Properties MySql.Web/Providers/Source | rburnett | 5 Sep |