public async Task <int> InsertOrReplaceAsync(OTPGenerator input) { var data = new OTPGeneratorInner(input); var secret = Encrypt(data.Secret, out var iv); data.DbEncryptedSecret = Convert.ToBase64String(secret); data.DbEncryptedSecretIV = Convert.ToBase64String(iv); await ConnectionMutex.WaitAsync(); var connection = await GetConnectionAsync(); var result = await connection.InsertOrReplaceAsync(data); ConnectionMutex.Release(); return(result); }
public async Task <List <OTPGenerator> > GetAllAsync() { await ConnectionMutex.WaitAsync(); var connection = await GetConnectionAsync(); var items = await connection.Table <OTPGeneratorInner>().ToListAsync(); foreach (var i in items) { var secret = Convert.FromBase64String(i.DbEncryptedSecret); var iv = Convert.FromBase64String(i.DbEncryptedSecretIV); i.Secret = Decrypt(secret, iv); } var output = items.OrderBy(d => d.Label).ThenBy(d => d.Issuer).Cast <OTPGenerator>().ToList(); ConnectionMutex.Release(); return(output); }