blob: 8bfeb9b52a648e8668ee4992d959cd9b19939c95 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Timers;
using System.Windows.Threading;
namespace TwoStepsAuthenticatorTestApp
{
public class ViewModel : INotifyPropertyChanged
{
private string key;
public string Key
{
get
{
return key;
}
set
{
if (key != value)
{
key = value;
RaisePropertyChanged("Key");
}
}
}
private string code;
public string Code
{
get
{
return code;
}
set
{
if (code != value)
{
code = value;
RaisePropertyChanged("Code");
GetCode();
}
}
}
private int count;
public int Count
{
get
{
return count;
}
set
{
if (count != value)
{
count = value;
if (count < 0)
{
count = 30;
GetCode();
}
RaisePropertyChanged("Count");
}
}
}
DispatcherTimer timer;
public ViewModel()
{
var authenticator = new TwoStepsAuthenticator.Authenticator();
this.Key = authenticator.GenerateKey();
timer = new DispatcherTimer(TimeSpan.FromSeconds(1), DispatcherPriority.Normal, timerCallback, App.Current.Dispatcher);
timer.Start();
}
private void timerCallback(object sender, EventArgs e)
{
Count--;
}
public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
internal void GetCode()
{
var auth = new TwoStepsAuthenticator.Authenticator();
Code = auth.GetCode(this.Key);
auth.CheckCode(key, Code);
}
}
}
|