/// <summary> /// Illustrate recovery using a not-normal-"consumer mode" recovery agent. /// </summary> /// <param name="tokenClient">SDK client</param> /// <param name="alias">Alias of member to recover</param> /// <returns>the recovered member</returns> public Tokenio.Member RecoverWithComplexRule( TokenClient tokenClient, Alias alias) { var memberId = tokenClient.GetMemberId(alias).Result; var cryptoEngine = new TokenCryptoEngine(memberId, new InMemoryKeyStore()); var newKey = cryptoEngine.GenerateKey(Privileged); var verificationId = tokenClient.BeginRecovery(alias).Result; var authorization = tokenClient.CreateRecoveryAuthorization(memberId, newKey).Result; var agentSignature = GetRecoveryAgentSignature(authorization); var mro = new MemberRecoveryOperation { AgentSignature = agentSignature, Authorization = authorization }; var recoveredMember = tokenClient.CompleteRecovery( memberId, new List <MemberRecoveryOperation> { mro }, newKey, cryptoEngine).Result; recoveredMember.VerifyAlias(verificationId, "1thru6").Wait(); return(recoveredMember); }