Back to OIM Explorer

QER.Customizer/QER.Customizer/QERPasswordQueryAndAnswer.cs

Decompiler Source FileQER.Customizer.QERPasswordQueryAndAnswerDecompiled Source

1 extracted method/event/call references in QERPasswordQueryAndAnswer.

Source: F:\Claude\.tmp\oim-decompiled-full\0991_One_Identity_Manager_QER.Customizer.dll\QER.Customizer\QERPasswordQueryAndAnswer.cs

Source size: 22.612 characters

Interpretation

  • Decompiled source file. Use method/event registrations and call-site extraction to connect back to DialogMethod, QBMEvent, and API layers.

Relations

  • Method registration: Unlock at line 439

Typed Edges

  • No typed edges extracted for this source.

References

  • No direct source references extracted.

Referenced By

  • No direct source references extracted.

C# source-derived context

Generated by pattern extraction from the decompiled C# source and decompile index. This is factual source evidence, not inferred behavior.

reads entity values references DB/Dialog objects

Summary: classes QERPasswordQueryAndAnswer, _003C_003Ec__DisplayClass3_0; methods _003C_CheckUniquePasswordAnswer_003Eb__0, _003C_CheckUniquePasswordAnswer_003Eb__1, MoveNext, SetStateMachine, OnSavingAsync, _CheckUniquePasswordAnswer; references ESet, Person, QERPasswordQueryAndAnswer; markers reads entity values, references DB/Dialog objects

Classes

QERPasswordQueryAndAnswer _003C_003Ec__DisplayClass3_0

DB/Dialog object references

OIM key/entity markers

UID_Person UID_QERPasswordQueryAndAnswer

API/entity calls

GetValue IsDeleted User PutValueAsync Config From Source

Registrations / handlers

None extracted.

Complete Source

C#556 lines
1using System;2using System.Collections;3using System.Collections.Generic;4using System.Diagnostics;5using System.Linq;6using System.Runtime.CompilerServices;7using System.Runtime.InteropServices;8using System.Security;9using System.Threading;10using System.Threading.Tasks;11using VI.Base;12using VI.Base.Encryption;13using VI.DB;14using VI.DB.Entities;1516namespace QER.Customizer;1718public class QERPasswordQueryAndAnswer : StateBasedEntityLogic19{20	[CompilerGenerated]21	private sealed class _003C_003Ec__DisplayClass3_022	{23		public string uidPerson;2425		public string uidQERPasswordQueryAndAnswer;2627		internal ExpressionClause _003C_CheckUniquePasswordAnswer_003Eb__0(IExpressionContext c)28		{29			return c.Column("UID_Person") == uidPerson && c.Column("IsLocked") == false;30		}3132		internal ExpressionClause _003C_CheckUniquePasswordAnswer_003Eb__1(IExpressionContext c)33		{34			return c.Column("UID_QERPasswordQueryAndAnswer") != uidQERPasswordQueryAndAnswer;35		}36	}3738	[StructLayout((LayoutKind)3)]39	[CompilerGenerated]40	private struct _003COnSavingAsync_003Ed__2 : IAsyncStateMachine41	{42		public int _003C_003E1__state;4344		public AsyncTaskMethodBuilder<Diff> _003C_003Et__builder;4546		public IEntity entity;4748		public QERPasswordQueryAndAnswer _003C_003E4__this;4950		public LogicReadWriteParameters parameters;5152		public CancellationToken cancellationToken;5354		private ConfiguredTaskAwaiter _003C_003Eu__1;5556		private ConfiguredTaskAwaiter<Diff> _003C_003Eu__2;5758		private void MoveNext()59		{60			//IL_0081: Unknown result type (might be due to invalid IL or missing references)61			//IL_0086: Unknown result type (might be due to invalid IL or missing references)62			//IL_008e: Unknown result type (might be due to invalid IL or missing references)63			//IL_00fb: Unknown result type (might be due to invalid IL or missing references)64			//IL_0100: Unknown result type (might be due to invalid IL or missing references)65			//IL_0108: Unknown result type (might be due to invalid IL or missing references)66			//IL_00b2: Unknown result type (might be due to invalid IL or missing references)67			//IL_00bd: Unknown result type (might be due to invalid IL or missing references)68			//IL_00c2: Unknown result type (might be due to invalid IL or missing references)69			//IL_00c6: Unknown result type (might be due to invalid IL or missing references)70			//IL_00cb: Unknown result type (might be due to invalid IL or missing references)71			//IL_0038: Unknown result type (might be due to invalid IL or missing references)72			//IL_0043: Unknown result type (might be due to invalid IL or missing references)73			//IL_0048: Unknown result type (might be due to invalid IL or missing references)74			//IL_004c: Unknown result type (might be due to invalid IL or missing references)75			//IL_0051: Unknown result type (might be due to invalid IL or missing references)76			//IL_00e0: Unknown result type (might be due to invalid IL or missing references)77			//IL_00e2: Unknown result type (might be due to invalid IL or missing references)78			//IL_0066: Unknown result type (might be due to invalid IL or missing references)79			//IL_0068: Unknown result type (might be due to invalid IL or missing references)80			int num = _003C_003E1__state;81			QERPasswordQueryAndAnswer qERPasswordQueryAndAnswer = _003C_003E4__this;82			Diff result;83			try84			{85				ConfiguredTaskAwaiter<Diff> val;86				ConfiguredTaskAwaiter val3;87				if (num != 0)88				{89					if (num == 1)90					{91						val = _003C_003Eu__2;92						_003C_003Eu__2 = default(ConfiguredTaskAwaiter<Diff>);93						num = (_003C_003E1__state = -1);94						goto IL_0117;95					}96					if (entity.IsDeleted())97					{98						goto IL_00a4;99					}100					ConfiguredTaskAwaitable val2 = qERPasswordQueryAndAnswer._CheckUniquePasswordAnswer(parameters.Session, entity, cancellationToken).ConfigureAwait(false);101					val3 = ((ConfiguredTaskAwaitable)(ref val2)).GetAwaiter();102					if (!((ConfiguredTaskAwaiter)(ref val3)).IsCompleted)103					{104						num = (_003C_003E1__state = 0);105						_003C_003Eu__1 = val3;106						_003C_003Et__builder.AwaitUnsafeOnCompleted<ConfiguredTaskAwaiter, _003COnSavingAsync_003Ed__2>(ref val3, ref this);107						return;108					}109				}110				else111				{112					val3 = _003C_003Eu__1;113					_003C_003Eu__1 = default(ConfiguredTaskAwaiter);114					num = (_003C_003E1__state = -1);115				}116				((ConfiguredTaskAwaiter)(ref val3)).GetResult();117				goto IL_00a4;118				IL_0117:119				Diff diff = val.GetResult();120				if (entity.Columns["PasswordAnswer"].IsDifferent)121				{122					diff = new Diff(diff.Data, Enumerable.Concat<DiffOperation>((System.Collections.Generic.IEnumerable<DiffOperation>)diff, (System.Collections.Generic.IEnumerable<DiffOperation>)new global::_003C_003Ez__ReadOnlyArray<DiffOperation>(new DiffOperation[2]123					{124						new DiffOperation125						{126							Type = DiffOperationType.Value,127							Name = "IsLocked",128							Value = false129						},130						new DiffOperation131						{132							Type = DiffOperationType.Value,133							Name = "BadAnswerAttempts",134							Value = 0135						}136					})));137				}138				result = diff;139				goto end_IL_000e;140				IL_00a4:141				val = ((StateBasedEntityLogic)qERPasswordQueryAndAnswer).OnSavingAsync(entity, parameters, cancellationToken).ConfigureAwait(false).GetAwaiter();142				if (!val.IsCompleted)143				{144					num = (_003C_003E1__state = 1);145					_003C_003Eu__2 = val;146					_003C_003Et__builder.AwaitUnsafeOnCompleted<ConfiguredTaskAwaiter<Diff>, _003COnSavingAsync_003Ed__2>(ref val, ref this);147					return;148				}149				goto IL_0117;150				end_IL_000e:;151			}152			catch (System.Exception exception)153			{154				_003C_003E1__state = -2;155				_003C_003Et__builder.SetException(exception);156				return;157			}158			_003C_003E1__state = -2;159			_003C_003Et__builder.SetResult(result);160		}161162		[DebuggerHidden]163		private void SetStateMachine(IAsyncStateMachine stateMachine)164		{165			_003C_003Et__builder.SetStateMachine(stateMachine);166		}167	}168169	[StructLayout((LayoutKind)3)]170	[CompilerGenerated]171	private struct _003CUnlock_003Ed__7 : IAsyncStateMachine172	{173		public int _003C_003E1__state;174175		public AsyncTaskMethodBuilder _003C_003Et__builder;176177		public IEntity entity;178179		public ISession session;180181		public CancellationToken ct;182183		private ConfiguredValueTaskAwaiter<ApplyResult> _003C_003Eu__1;184185		private void MoveNext()186		{187			//IL_00be: Unknown result type (might be due to invalid IL or missing references)188			//IL_00c3: Unknown result type (might be due to invalid IL or missing references)189			//IL_00ca: Unknown result type (might be due to invalid IL or missing references)190			//IL_00f3: Unknown result type (might be due to invalid IL or missing references)191			//IL_0101: Unknown result type (might be due to invalid IL or missing references)192			//IL_0106: Unknown result type (might be due to invalid IL or missing references)193			//IL_0109: Unknown result type (might be due to invalid IL or missing references)194			//IL_010e: Unknown result type (might be due to invalid IL or missing references)195			//IL_0139: Unknown result type (might be due to invalid IL or missing references)196			//IL_013e: Unknown result type (might be due to invalid IL or missing references)197			//IL_0145: Unknown result type (might be due to invalid IL or missing references)198			//IL_0122: Unknown result type (might be due to invalid IL or missing references)199			//IL_0123: Unknown result type (might be due to invalid IL or missing references)200			//IL_0075: Unknown result type (might be due to invalid IL or missing references)201			//IL_0083: Unknown result type (might be due to invalid IL or missing references)202			//IL_0088: Unknown result type (might be due to invalid IL or missing references)203			//IL_008b: Unknown result type (might be due to invalid IL or missing references)204			//IL_0090: Unknown result type (might be due to invalid IL or missing references)205			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)206			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)207			int num = _003C_003E1__state;208			try209			{210				ConfiguredValueTaskAwaiter<ApplyResult> val;211				if (num != 0)212				{213					if (num == 1)214					{215						val = _003C_003Eu__1;216						_003C_003Eu__1 = default(ConfiguredValueTaskAwaiter<ApplyResult>);217						num = (_003C_003E1__state = -1);218						goto IL_0154;219					}220					if (!string.Equals(entity.Columns["UID_Person"].GetValue<string>(), session.User().Uid) && !session.User().IsAdministrativeAccount)221					{222						throw new ViException(2133433, ExceptionRelevance.EndUser);223					}224					val = entity.PutValueAsync("IsLocked", false, ct).ConfigureAwait(false).GetAwaiter();225					if (!val.IsCompleted)226					{227						num = (_003C_003E1__state = 0);228						_003C_003Eu__1 = val;229						((AsyncTaskMethodBuilder)(ref _003C_003Et__builder)).AwaitUnsafeOnCompleted<ConfiguredValueTaskAwaiter<ApplyResult>, _003CUnlock_003Ed__7>(ref val, ref this);230						return;231					}232				}233				else234				{235					val = _003C_003Eu__1;236					_003C_003Eu__1 = default(ConfiguredValueTaskAwaiter<ApplyResult>);237					num = (_003C_003E1__state = -1);238				}239				val.GetResult();240				val = entity.PutValueAsync("BadAnswerAttempts", 0, ct).ConfigureAwait(false).GetAwaiter();241				if (!val.IsCompleted)242				{243					num = (_003C_003E1__state = 1);244					_003C_003Eu__1 = val;245					((AsyncTaskMethodBuilder)(ref _003C_003Et__builder)).AwaitUnsafeOnCompleted<ConfiguredValueTaskAwaiter<ApplyResult>, _003CUnlock_003Ed__7>(ref val, ref this);246					return;247				}248				goto IL_0154;249				IL_0154:250				val.GetResult();251			}252			catch (System.Exception exception)253			{254				_003C_003E1__state = -2;255				((AsyncTaskMethodBuilder)(ref _003C_003Et__builder)).SetException(exception);256				return;257			}258			_003C_003E1__state = -2;259			((AsyncTaskMethodBuilder)(ref _003C_003Et__builder)).SetResult();260		}261262		[DebuggerHidden]263		private void SetStateMachine(IAsyncStateMachine stateMachine)264		{265			((AsyncTaskMethodBuilder)(ref _003C_003Et__builder)).SetStateMachine(stateMachine);266		}267	}268269	[StructLayout((LayoutKind)3)]270	[CompilerGenerated]271	private struct _003C_CheckUniquePasswordAnswer_003Ed__3 : IAsyncStateMachine272	{273		public int _003C_003E1__state;274275		public AsyncTaskMethodBuilder _003C_003Et__builder;276277		public IEntity entity;278279		public QERPasswordQueryAndAnswer _003C_003E4__this;280281		public ISession session;282283		public CancellationToken ct;284285		private _003C_003Ec__DisplayClass3_0 _003C_003E8__1;286287		private ConfiguredTaskAwaiter<string> _003C_003Eu__1;288289		private ConfiguredTaskAwaiter<IEntityCollection> _003C_003Eu__2;290291		private void MoveNext()292		{293			//IL_00bd: Unknown result type (might be due to invalid IL or missing references)294			//IL_00c2: Unknown result type (might be due to invalid IL or missing references)295			//IL_00ca: Unknown result type (might be due to invalid IL or missing references)296			//IL_01fe: Unknown result type (might be due to invalid IL or missing references)297			//IL_0203: Unknown result type (might be due to invalid IL or missing references)298			//IL_020b: Unknown result type (might be due to invalid IL or missing references)299			//IL_0074: Unknown result type (might be due to invalid IL or missing references)300			//IL_007f: Unknown result type (might be due to invalid IL or missing references)301			//IL_0084: Unknown result type (might be due to invalid IL or missing references)302			//IL_0088: Unknown result type (might be due to invalid IL or missing references)303			//IL_008d: Unknown result type (might be due to invalid IL or missing references)304			//IL_00a2: Unknown result type (might be due to invalid IL or missing references)305			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)306			//IL_01b5: Unknown result type (might be due to invalid IL or missing references)307			//IL_01c0: Unknown result type (might be due to invalid IL or missing references)308			//IL_01c5: Unknown result type (might be due to invalid IL or missing references)309			//IL_01c9: Unknown result type (might be due to invalid IL or missing references)310			//IL_01ce: Unknown result type (might be due to invalid IL or missing references)311			//IL_01e3: Unknown result type (might be due to invalid IL or missing references)312			//IL_01e5: Unknown result type (might be due to invalid IL or missing references)313			int num = _003C_003E1__state;314			QERPasswordQueryAndAnswer qERPasswordQueryAndAnswer = _003C_003E4__this;315			try316			{317				ConfiguredTaskAwaiter<string> val;318				if (num == 0)319				{320					val = _003C_003Eu__1;321					_003C_003Eu__1 = default(ConfiguredTaskAwaiter<string>);322					num = (_003C_003E1__state = -1);323					goto IL_00d9;324				}325				ConfiguredTaskAwaiter<IEntityCollection> val2;326				if (num == 1)327				{328					val2 = _003C_003Eu__2;329					_003C_003Eu__2 = default(ConfiguredTaskAwaiter<IEntityCollection>);330					num = (_003C_003E1__state = -1);331					goto IL_021a;332				}333				_003C_003E8__1 = new _003C_003Ec__DisplayClass3_0();334				if (entity.Columns.ChangedAny("UID_Person", "PasswordAnswer", "PasswordQuery") && qERPasswordQueryAndAnswer._passwordAnswer != null)335				{336					val = session.Config().GetConfigParmAsync("QER\\Person\\PasswordResetAuthenticator\\QueryAnswerDefinitions", ct).ConfigureAwait(false)337						.GetAwaiter();338					if (!val.IsCompleted)339					{340						num = (_003C_003E1__state = 0);341						_003C_003Eu__1 = val;342						((AsyncTaskMethodBuilder)(ref _003C_003Et__builder)).AwaitUnsafeOnCompleted<ConfiguredTaskAwaiter<string>, _003C_CheckUniquePasswordAnswer_003Ed__3>(ref val, ref this);343						return;344					}345					goto IL_00d9;346				}347				goto end_IL_000e;348				IL_00d9:349				int num2 = default(int);350				if (int.TryParse(val.GetResult(), ref num2) && num2 >= 2)351				{352					_003C_003E8__1.uidPerson = entity.Columns["UID_Person"].GetValue<string>();353					if (!string.IsNullOrEmpty(_003C_003E8__1.uidPerson))354					{355						ISelect obj = from c in Query.From("QERPasswordQueryAndAnswer")356							where c.Column("UID_Person") == _003C_003E8__1.uidPerson && c.Column("IsLocked") == false357							select c;358						_003C_003E8__1.uidQERPasswordQueryAndAnswer = entity.Columns["UID_QERPasswordQueryAndAnswer"].GetValue<string>();359						if (entity.IsLoaded)360						{361							obj = obj.Where((IExpressionContext c) => c.Column("UID_QERPasswordQueryAndAnswer") != _003C_003E8__1.uidQERPasswordQueryAndAnswer);362						}363						Query query = obj.SelectAll();364						val2 = session.Source().GetCollectionAsync(query, EntityCollectionLoadType.Default, ct).ConfigureAwait(false)365							.GetAwaiter();366						if (!val2.IsCompleted)367						{368							num = (_003C_003E1__state = 1);369							_003C_003Eu__2 = val2;370							((AsyncTaskMethodBuilder)(ref _003C_003Et__builder)).AwaitUnsafeOnCompleted<ConfiguredTaskAwaiter<IEntityCollection>, _003C_CheckUniquePasswordAnswer_003Ed__3>(ref val2, ref this);371							return;372						}373						goto IL_021a;374					}375				}376				goto end_IL_000e;377				IL_021a:378				IEntityCollection result = val2.GetResult();379				string value = entity.Columns["PasswordQuery"].GetValue<string>();380				if (!HashFunction.IsHashed(qERPasswordQueryAndAnswer._passwordAnswer))381				{382					List<string> val3 = new List<string>();383					System.Collections.Generic.IEnumerator<IEntity> enumerator = ((System.Collections.Generic.IEnumerable<IEntity>)result).GetEnumerator();384					try385					{386						while (((System.Collections.IEnumerator)enumerator).MoveNext())387						{388							IEntity current = enumerator.Current;389							string value2 = current.Columns["PasswordQuery"].GetValue<string>();390							string value3 = current.Columns["PasswordAnswer"].GetValue<string>();391							if (string.Equals(value, value2, (StringComparison)5))392							{393								throw new ViException(2133444, ExceptionRelevance.EndUser, value);394							}395							if (HashFunction.IsHashed(value3))396							{397								val3.Add(value3);398							}399						}400					}401					finally402					{403						if (num < 0)404						{405							((System.IDisposable)enumerator)?.Dispose();406						}407					}408					if (HashFunction.Verify(qERPasswordQueryAndAnswer._passwordAnswer, (System.Collections.Generic.IEnumerable<string>)val3))409					{410						throw new ViException(2133445, ExceptionRelevance.EndUser);411					}412				}413				end_IL_000e:;414			}415			catch (System.Exception exception)416			{417				_003C_003E1__state = -2;418				_003C_003E8__1 = null;419				((AsyncTaskMethodBuilder)(ref _003C_003Et__builder)).SetException(exception);420				return;421			}422			_003C_003E1__state = -2;423			_003C_003E8__1 = null;424			((AsyncTaskMethodBuilder)(ref _003C_003Et__builder)).SetResult();425		}426427		[DebuggerHidden]428		private void SetStateMachine(IAsyncStateMachine stateMachine)429		{430			((AsyncTaskMethodBuilder)(ref _003C_003Et__builder)).SetStateMachine(stateMachine);431		}432	}433434	private SecureString? _passwordAnswer;435436	public QERPasswordQueryAndAnswer()437	{438		Format("PasswordAnswer").As<string, string>(_FormatPasswordAnswer);439		RegisterMethod("Unlock").As(Unlock).Enabled().From("IsLocked")440			.As<bool>((Func<bool, bool>)((bool isLocked) => isLocked))441			.Description("Method_QERPasswordQueryAndAnswer_Unlock")442			.NeedsSaving();443	}444445	[AsyncStateMachine(typeof(_003COnSavingAsync_003Ed__2))]446	public override async System.Threading.Tasks.Task<Diff> OnSavingAsync(IEntity entity, LogicReadWriteParameters parameters, CancellationToken cancellationToken)447	{448		//IL_0002: Unknown result type (might be due to invalid IL or missing references)449		//IL_0007: Unknown result type (might be due to invalid IL or missing references)450		//IL_0026: Unknown result type (might be due to invalid IL or missing references)451		//IL_0027: Unknown result type (might be due to invalid IL or missing references)452		if (!entity.IsDeleted())453		{454			await _CheckUniquePasswordAnswer(parameters.Session, entity, cancellationToken).ConfigureAwait(false);455		}456		Diff diff = await base.OnSavingAsync(entity, parameters, cancellationToken).ConfigureAwait(false);457		if (entity.Columns["PasswordAnswer"].IsDifferent)458		{459			diff = new Diff(diff.Data, Enumerable.Concat<DiffOperation>((System.Collections.Generic.IEnumerable<DiffOperation>)diff, (System.Collections.Generic.IEnumerable<DiffOperation>)new global::_003C_003Ez__ReadOnlyArray<DiffOperation>(new DiffOperation[2]460			{461				new DiffOperation462				{463					Type = DiffOperationType.Value,464					Name = "IsLocked",465					Value = false466				},467				new DiffOperation468				{469					Type = DiffOperationType.Value,470					Name = "BadAnswerAttempts",471					Value = 0472				}473			})));474		}475		return diff;476	}477478	[AsyncStateMachine(typeof(_003C_CheckUniquePasswordAnswer_003Ed__3))]479	private System.Threading.Tasks.Task _CheckUniquePasswordAnswer(ISession session, IEntity entity, CancellationToken ct)480	{481		//IL_0002: Unknown result type (might be due to invalid IL or missing references)482		//IL_0007: Unknown result type (might be due to invalid IL or missing references)483		//IL_0026: Unknown result type (might be due to invalid IL or missing references)484		//IL_0027: Unknown result type (might be due to invalid IL or missing references)485		_003C_CheckUniquePasswordAnswer_003Ed__3 _003C_CheckUniquePasswordAnswer_003Ed__ = default(_003C_CheckUniquePasswordAnswer_003Ed__3);486		_003C_CheckUniquePasswordAnswer_003Ed__._003C_003Et__builder = AsyncTaskMethodBuilder.Create();487		_003C_CheckUniquePasswordAnswer_003Ed__._003C_003E4__this = this;488		_003C_CheckUniquePasswordAnswer_003Ed__.session = session;489		_003C_CheckUniquePasswordAnswer_003Ed__.entity = entity;490		_003C_CheckUniquePasswordAnswer_003Ed__.ct = ct;491		_003C_CheckUniquePasswordAnswer_003Ed__._003C_003E1__state = -1;492		((AsyncTaskMethodBuilder)(ref _003C_CheckUniquePasswordAnswer_003Ed__._003C_003Et__builder)).Start<_003C_CheckUniquePasswordAnswer_003Ed__3>(ref _003C_CheckUniquePasswordAnswer_003Ed__);493		return ((AsyncTaskMethodBuilder)(ref _003C_CheckUniquePasswordAnswer_003Ed__._003C_003Et__builder)).Task;494	}495496	public override System.Threading.Tasks.Task OnSavedAsync(IEntity entity, LogicReadWriteParameters parameters, CancellationToken cancellationToken)497	{498		//IL_0009: Unknown result type (might be due to invalid IL or missing references)499		_DisposePasswordAnswer();500		return base.OnSavedAsync(entity, parameters, cancellationToken);501	}502503	public override System.Threading.Tasks.Task<Diff> OnDiscardedAsync(IEntity entity, LogicReadOnlyParameters parameters, CancellationToken cancellationToken)504	{505		//IL_0009: Unknown result type (might be due to invalid IL or missing references)506		_DisposePasswordAnswer();507		return base.OnDiscardedAsync(entity, parameters, cancellationToken);508	}509510	private void _DisposePasswordAnswer()511	{512		SecureString? passwordAnswer = _passwordAnswer;513		if (passwordAnswer != null)514		{515			passwordAnswer.Dispose();516		}517		_passwordAnswer = null;518	}519520	[AsyncStateMachine(typeof(_003CUnlock_003Ed__7))]521	private System.Threading.Tasks.Task Unlock(ISession session, IEntity entity, CancellationToken ct)522	{523		//IL_0002: Unknown result type (might be due to invalid IL or missing references)524		//IL_0007: Unknown result type (might be due to invalid IL or missing references)525		//IL_001e: Unknown result type (might be due to invalid IL or missing references)526		//IL_001f: Unknown result type (might be due to invalid IL or missing references)527		_003CUnlock_003Ed__7 _003CUnlock_003Ed__ = default(_003CUnlock_003Ed__7);528		_003CUnlock_003Ed__._003C_003Et__builder = AsyncTaskMethodBuilder.Create();529		_003CUnlock_003Ed__.session = session;530		_003CUnlock_003Ed__.entity = entity;531		_003CUnlock_003Ed__.ct = ct;532		_003CUnlock_003Ed__._003C_003E1__state = -1;533		((AsyncTaskMethodBuilder)(ref _003CUnlock_003Ed__._003C_003Et__builder)).Start<_003CUnlock_003Ed__7>(ref _003CUnlock_003Ed__);534		return ((AsyncTaskMethodBuilder)(ref _003CUnlock_003Ed__._003C_003Et__builder)).Task;535	}536537	private string _FormatPasswordAnswer(string strPasswordAnswer)538	{539		if (string.IsNullOrEmpty(strPasswordAnswer))540		{541			strPasswordAnswer = string.Empty;542		}543		SecureString? passwordAnswer = _passwordAnswer;544		if (passwordAnswer != null)545		{546			passwordAnswer.Dispose();547		}548		_passwordAnswer = strPasswordAnswer.ToSecure();549		if (HashFunction.IsHashed(strPasswordAnswer))550		{551			return strPasswordAnswer;552		}553		return HashFunction.Default.Hash(strPasswordAnswer);554	}555}556