Imported Upstream version 3.6.0

Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
This commit is contained in:
Jo Shields
2014-08-13 10:39:27 +01:00
commit a575963da9
50588 changed files with 8155799 additions and 0 deletions

View File

@@ -0,0 +1,4 @@
SOURCES=test.cs SqlMembershipProvider.cs
test.exe: $(SOURCES)
gmcs -d:NET_2_0 -out:test.exe $(SOURCES) -r:System.Web.dll -r:System.Data.dll -r:System.Configuration.dll

View File

@@ -0,0 +1,84 @@
using System.Security.Cryptography;
using System.Text;
using System;
public class foo {
static byte ToHexValue (char c, bool high)
{
byte v;
if (c >= '0' && c <= '9')
v = (byte) (c - '0');
else if (c >= 'a' && c <= 'f')
v = (byte) (c - 'a' + 10);
else if (c >= 'A' && c <= 'F')
v = (byte) (c - 'A' + 10);
else
throw new ArgumentException ("Invalid hex character");
if (high)
v <<= 4;
return v;
}
internal static byte [] GetBytes (string key, int len)
{
byte [] result = new byte [len / 2];
for (int i = 0; i < len; i += 2)
result [i / 2] = (byte) (ToHexValue (key [i], true) + ToHexValue (key [i + 1], false));
return result;
}
static void decrypt () {
string ans = "NVG3kJkWiFzKHh2UAEDiaY4kvYYUk+z4gEdlv2rZudA=";
string key = "1E14FC86752772F5DB58B99764D0168106D336563D77CCBA";
string salt = "xXsrnq4n1jebmRiC/Ty46g==";
byte[] key_bytes = GetBytes (key, key.Length);
byte[] ans_bytes = Convert.FromBase64String (ans);
byte[] salt_bytes = Convert.FromBase64String (salt);
Console.WriteLine ("encrypted = {0} long, salt = {1} long", ans_bytes.Length, salt_bytes.Length);
SymmetricAlgorithm alg = Rijndael.Create ();
ICryptoTransform decryptor = alg.CreateDecryptor (key_bytes, salt_bytes);
byte[] rv = decryptor.TransformFinalBlock (ans_bytes, 0, ans_bytes.Length);
Console.WriteLine ("decryption result = {0}", Convert.ToBase64String (rv));
Console.WriteLine (Encoding.Unicode.GetString (rv));
}
static void encrypt () {
string ans = "green";
string key = "1E14FC86752772F5DB58B99764D0168106D336563D77CCBA";
string salt = "xXsrnq4n1jebmRiC/Ty46g==";
byte[] key_bytes = GetBytes (key, key.Length);
byte[] ans_bytes = Encoding.Unicode.GetBytes (ans);
byte[] salt_bytes = Convert.FromBase64String (salt);
byte[] buf = new byte[ans_bytes.Length + salt_bytes.Length];
/*Array.Copy (salt_bytes, 0, buf, 0, salt_bytes.Length);*/
Array.Copy (ans_bytes, 0, buf, salt_bytes.Length, ans_bytes.Length);
Console.WriteLine ("before encryption {0}", Convert.ToBase64String (buf));
SymmetricAlgorithm alg = Rijndael.Create ();
ICryptoTransform encryptor = alg.CreateEncryptor (key_bytes, salt_bytes);
Console.WriteLine (Convert.ToBase64String (encryptor.TransformFinalBlock (buf, 0, buf.Length)));
}
public static void Main (string[] args) {
decrypt();
encrypt();
}
}

View File

@@ -0,0 +1,202 @@
using System;
using System.Collections;
using System.Collections.Specialized;
using System.Data;
using System.Data.SqlClient;
using System.Data.Common;
using System.Configuration;
using System.Configuration.Provider;
using System.Web.Configuration;
using System.Web.Security;
using System.Security;
using System.Security.Principal;
public class Test {
static void populate_db ()
{
}
static void create_user (string username, string email, string password, string pwdQuestion, string pwdAnswer)
{
MembershipCreateStatus status;
Membership.CreateUser (username, password, email, pwdQuestion, pwdAnswer, true, out status);
Console.WriteLine ("create status: {0}", status);
}
static void generate_password (int length, int numNonAlphNum)
{
Console.WriteLine ("generated password = \"{0}\"", Membership.GeneratePassword (length, numNonAlphNum));
}
static void dump_list (MembershipUserCollection users)
{
Console.WriteLine ("{0} users", users.Count);
foreach (MembershipUser u in users) {
Console.WriteLine ("{0} {1} {2}", u.UserName, u.Email, u.IsLockedOut ? "lockedout" : "notlockedout");
}
}
static void list_all_users ()
{
MembershipUserCollection users = Membership.GetAllUsers();
dump_list (users);
}
static void validate_user (string username, string password)
{
if (Membership.ValidateUser (username, password))
Console.WriteLine ("success.");
else
Console.WriteLine ("failure.");
}
static void unlock_user (string username)
{
if (Membership.Provider.UnlockUser (username))
Console.WriteLine ("success.");
else
Console.WriteLine ("failure.");
}
static void reset_password (string username, string pwdAnswer)
{
string newPassword = Membership.Provider.ResetPassword (username, pwdAnswer);
if (newPassword == null)
Console.WriteLine ("failure.");
else
Console.WriteLine ("success, new password is \"{0}\"", newPassword);
}
static void change_password (string username, string oldPwd, string newPwd)
{
if (Membership.Provider.ChangePassword (username, oldPwd, newPwd))
Console.WriteLine ("success.");
else
Console.WriteLine ("failure.");
}
static void change_question_answer (string username, string pwd, string question, string answer)
{
if (Membership.Provider.ChangePasswordQuestionAndAnswer (username, pwd, question, answer))
Console.WriteLine ("success.");
else
Console.WriteLine ("failure.");
}
static void find_user_by_email (string pattern)
{
MembershipUserCollection users = Membership.FindUsersByEmail (pattern);
dump_list (users);
}
static void find_user_by_name (string pattern)
{
MembershipUserCollection users = Membership.FindUsersByName (pattern);
dump_list (users);
}
static void get_number_of_users_online ()
{
Console.WriteLine ("Number of online users: {0}", Membership.GetNumberOfUsersOnline ());
}
static void get_password (string username, string answer)
{
Console.WriteLine ("password for user {0}: {1}", username, Membership.Provider.GetPassword (username, answer));
}
static void dump_user (string username)
{
Console.WriteLine ("info for user: {0}", username);
MembershipUser user = Membership.GetUser (username, false);
Console.WriteLine ("comment: {0}", user.Comment);
Console.WriteLine ("creation date: {0}", user.CreationDate);
Console.WriteLine ("email: {0}", user.Email);
Console.WriteLine ("isApproved: {0}", user.IsApproved);
Console.WriteLine ("isOnline: {0}", user.IsOnline);
Console.WriteLine ("last activity date: {0}", user.LastActivityDate);
Console.WriteLine ("last login date: {0}", user.LastLoginDate);
Console.WriteLine ("last password changed date: {0}", user.LastPasswordChangedDate);
Console.WriteLine ("last lockout date: {0}", user.LastLockoutDate);
}
static void Usage ()
{
Console.WriteLine ("usage: just look at test.cs...");
}
public static void Main (string[] args) {
if (args.Length == 0) {
Usage ();
return;
}
switch (args[0]) {
case "populate":
populate_db ();
break;
case "createuser":
create_user (args[1], args[2], args[3], args[4], args[5]);
break;
case "listallusers":
list_all_users ();
break;
case "generatepassword":
generate_password (Int32.Parse (args[1]), Int32.Parse (args[2]));
break;
case "validateuser":
validate_user (args[1], args[2]);
break;
case "unlockuser":
unlock_user (args[1]);
break;
case "resetpassword":
reset_password (args[1], args[2]);
break;
case "changepassword":
change_password (args[1], args[2], args[3]);
break;
case "changequestionanswer":
change_question_answer (args[1], args[2], args[3], args[4]);
break;
case "dumpuser":
dump_user (args[1]);
break;
case "findusersbyemail":
find_user_by_email (args[1]);
break;
case "findusersbyname":
find_user_by_name (args[1]);
break;
case "getnumberofusersonline":
get_number_of_users_online ();
break;
case "getpassword":
get_password (args[1], args[2]);
break;
default:
Console.WriteLine ("unknown command {0}", args[0]);
break;
}
}
}
public class ProvPoker : Toshok.Web.Security.SqlMembershipProvider {
protected override byte[] EncryptPassword (byte[] pwd) {
Console.WriteLine ("pwd = ({0})", Convert.ToBase64String (pwd));
byte[] buf = base.EncryptPassword (pwd);
Console.WriteLine ("buf = {0} bytes long ({1})", buf.Length, Convert.ToBase64String (buf));
return buf;
}
protected override byte[] DecryptPassword (byte[] pwd) {
Console.WriteLine ("pwd = ({0})", Convert.ToBase64String (pwd));
byte[] buf = base.DecryptPassword (pwd);
Console.WriteLine ("buf = {0} bytes long ({1})", buf.Length, Convert.ToBase64String (buf));
return buf;
}
}

View File

@@ -0,0 +1,31 @@
<configuration>
<connectionStrings>
<add name="myTestConnectionString" providerName="Mono.Data.SqliteClient" connectionString="URI=file:test-database.db,Version=3" />
<add name="LocalSqlServerDB" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=C:\Documents and Settings\toshok\fresh-test\membership\App_Data\aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" />
</connectionStrings>
<!--type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"-->
<!--type="Toshok.Web.Security.SqlMembershipProvider, test"-->
<system.web>
<membership>
<providers>
<remove name="AspNetSqlMembershipProvider" />
<add name="AspNetSqlMembershipProvider"
type="ProvPoker, test"
connectionStringName="LocalSqlServerDB"
enablePasswordRetrieval="true"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
applicationName="/"
requiresUniqueEmail="false"
minRequiredPasswordLength="1"
minRequiredNonalphanumericCharacters="0"
passwordFormat="Encrypted" />
</providers>
</membership>
<machineKey validationKey='0A6180E2D758BBB69237ADD3E5E8DD19B6AED79E93AA38AB361D79926A1FDB6FF29D44DDDBCB159B9330E4C123F69C13568E1DD25D8FC19E729D8570A429296F' decryptionKey='1E14FC86752772F5DB58B99764D0168106D336563D77CCBA' validation='SHA1'/>
</system.web>
</configuration>