Example #1
0
        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);
        }
Example #2
0
        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);
        }