//
#if NET_2_0
+using System.ComponentModel;
using System.Configuration.Provider;
using System.Web.Configuration;
using System.Security.Cryptography;
{
public abstract class MembershipProvider : ProviderBase
{
+ static readonly object validatingPasswordEvent = new object ();
+
+ EventHandlerList events = new EventHandlerList ();
+ public event MembershipValidatePasswordEventHandler ValidatingPassword {
+ add { events.AddHandler (validatingPasswordEvent, value); }
+ remove { events.RemoveHandler (validatingPasswordEvent, value); }
+ }
+
protected MembershipProvider ()
{
}
protected virtual void OnValidatingPassword (ValidatePasswordEventArgs args)
{
- if (ValidatingPassword != null)
- ValidatingPassword (this, args);
+ MembershipValidatePasswordEventHandler eh = events [validatingPasswordEvent] as MembershipValidatePasswordEventHandler;
+ if (eh != null)
+ eh (this, args);
}
SymmetricAlgorithm GetAlg (out byte [] decryptionKey)
else
throw new ProviderException (String.Format ("Unsupported decryption attribute '{0}' in <machineKey> configuration section", alg_type));
- decryptionKey = section.DecryptionKey192Bits;
+ decryptionKey = MachineKeySectionUtils.DecryptionKey192Bits (section);
return alg;
}
byte [] decryptionKey;
byte [] iv = new byte [SALT_BYTES];
- Array.Copy (password, 0, iv, 0, SALT_BYTES);
- Array.Clear (password, 0, SALT_BYTES);
+ Array.Copy (password, 0, iv, 0, Math.Min(password.Length, SALT_BYTES));
using (SymmetricAlgorithm alg = GetAlg (out decryptionKey)) {
using (ICryptoTransform encryptor = alg.CreateEncryptor (decryptionKey, iv)) {
}
}
}
-
- public event MembershipValidatePasswordEventHandler ValidatingPassword;
}
}
#endif
+