public PasswordMatcher(PBKDF2Password password, SecureString matchPattern, bool leaveOpen)
        {
            _hash = password.Hash;
            _salt = password.Salt;
            _iterations = password.Iterations;

            int length = matchPattern.Length;
            char[] chars = new char[length];
            IntPtr pointer = IntPtr.Zero;

            try
            {
                pointer = Marshal.SecureStringToBSTR(matchPattern);
                Marshal.Copy(pointer, chars, 0, length);
            }
            finally
            {
                if (pointer != IntPtr.Zero)
                {
                    Marshal.ZeroFreeBSTR(pointer);
                }
                if (!leaveOpen)
                {
                    matchPattern.Dispose();
                }
            }

            Buffer.BlockCopy(chars, 0, _matchPattern, 0, chars.Length);
            for (int i = 0; i < chars.Length; i++)
            {
                chars[i] = '0';
            }

            LeaveOpen = leaveOpen;
        }
        public PasswordMatcher(PBKDF2Password password, string matchPattern, bool leaveOpen)
        {
            _hash = password.Hash;
            _salt = password.Salt;
            _iterations = password.Iterations;

            byte[] bytes = new byte[matchPattern.Length * sizeof(char)];
            Buffer.BlockCopy(matchPattern.ToCharArray(), 0, bytes, 0, bytes.Length);
            _matchPattern = bytes;
            LeaveOpen = leaveOpen;
        }
 public PasswordMatcher(PBKDF2Password password, byte[] matchPattern, bool leaveOpen)
 {
     _hash = password.Hash;
     _salt = password.Salt;
     _iterations = password.Iterations;
     _matchPattern = matchPattern;
     LeaveOpen = leaveOpen;
 }
Esempio n. 4
0
        internal bool CreateUser(User user)
        {
            //create Query voor de users
            using (NpgsqlCommand cmd = new NpgsqlCommand())
            {
                PBKDF2Password password = new PBKDF2Password(user.Password);
                //Maak een speciaal geEncrypt Password aan.
                cmd.Connection = _connection;
                _transaction = cmd.Connection.BeginTransaction();

                cmd.CommandText = "INSERT INTO \"user\" (id, first_name, last_name, username, password_hash, password_salt, password_iterations, email_address, date_of_birth, role)"
                    + "VALUES(((SELECT COUNT(id) FROM \"user\")+1), @first_name, @last_name, @username, @password_hash, @password_salt, @password_iterations, @email_address, @date_of_birth, @role)";

                cmd.Parameters.AddWithValue("first_name", user.FirstName);
                cmd.Parameters.AddWithValue("last_name", user.LastName);
                cmd.Parameters.AddWithValue("username", user.Username);
                cmd.Parameters.AddWithValue("password_hash", password.Hash);
                cmd.Parameters.AddWithValue("password_salt", password.Salt);
                cmd.Parameters.AddWithValue("password_iterations", password.Iterations);
                cmd.Parameters.AddWithValue("email_address", user.Email);
                cmd.Parameters.AddWithValue("date_of_birth", user.DateOfBirth);
                cmd.Parameters.AddWithValue("role", (int)user.Role);

                //Parameters
                bool success = parseNonqueryResult(cmd.ExecuteNonQuery());
                if (success)
                {
                    _transaction.Commit();
                    _transaction.Dispose();
                    setAddress(user);
                    return success; //Commit als het sucessvol is
                }
                _transaction.Rollback();
                _transaction.Dispose();
                return success; //Rollback en dispose als het niet lukt
            }
        }