public async Task <ActionResult> ShowSecret(string clientId, string hash) { var model = new ShowSecretViewModel() { ClientId = clientId, Hash = hash, OpenSecret = "hidden for now" }; return(View(model)); }
public async Task <ActionResult> ShowOpenSecret(string clientId, string hash, string passCode, string openSecret) { var model = new ShowSecretViewModel() { ClientId = clientId, Hash = hash, OpenSecret = openSecret, PassCode = passCode }; return(View(model)); }
public IActionResult ShowSecret(string id) { var vm = new ShowSecretViewModel(); string data = this.redis.StringGet(id); if (data != null) { RedisModel model = JsonConvert.DeserializeObject <RedisModel>(data); vm.HasPassphrase = model.HasPassphrase; } return(this.View(vm)); }
public IActionResult ShowSecretConfirmed(string id) { string data = this.redis.StringGet(id); if (data == null) { return(this.View(new ShowSecretViewModel { DoesntExist = true, })); } RedisModel model = JsonConvert.DeserializeObject <RedisModel>(data); var vm = new ShowSecretViewModel { HasPassphrase = model.HasPassphrase, }; try { Microsoft.Extensions.Primitives.StringValues passphrase = this.Request.Form["passphrase"]; string secret = this.cryptoService.DecryptData(model.EncryptedData, passphrase); // always delete before showing to prevent it from being seen twice this.redis.KeyDelete(id); vm.Secret = secret; return(this.View(vm)); } catch (Exception) { if (model.HasPassphrase) { vm.DidError = true; return(this.View("ShowSecret", vm)); } else { throw; } } }
public async Task <ActionResult> ShowSecret(ShowSecretViewModel model) { if (!ModelState.IsValid) { return(View(model)); } var adminStore = new IdentityServer3AdminStore(); ProtectedSecretQueryValues queryValues = new ProtectedSecretQueryValues() { ClientId = model.ClientId, Value = model.Hash }; var record = await adminStore.FindSecretProtectedValue(queryValues); var myCrypto = new TripleDesEncryption(model.PassCode); model.OpenSecret = myCrypto.Decrypt(record.ProtectedValue); return(RedirectToAction("ShowOpenSecret", new { clientId = model.ClientId, hash = model.Hash, openSecret = model.OpenSecret, passCode = model.PassCode })); }