public MailModel Decrypt(MailModel mail, string privateKey) { var dto = mail.Clone(); var password = this.asymmetricCryptoService.Decrypt(mail.Password, privateKey); var(key, iv) = this.symmetricCryptoService.GenerateKeyByPassword(password); this.ForEachString(mail, dto, x => this.symmetricCryptoService.Decrypt(x, key, iv)); return(dto); }
public MailModel EncryptWithNewPassword(MailModel mail, string publicKey) { var dto = mail.Clone(); var password = Guid.NewGuid().ToString(); // HACK: Use better password generator var(key, iv) = this.symmetricCryptoService.GenerateKeyByPassword(password); this.ForEachString(mail, dto, x => this.symmetricCryptoService.Encrypt(x, key, iv)); dto.Password = this.asymmetricCryptoService.Encrypt(password, publicKey); return(dto); }