diff --git a/OneTimePasswordExample/Base.lproj/Main.storyboard b/OneTimePasswordExample/Base.lproj/Main.storyboard index 9455976..4ed1ae6 100644 --- a/OneTimePasswordExample/Base.lproj/Main.storyboard +++ b/OneTimePasswordExample/Base.lproj/Main.storyboard @@ -12,7 +12,7 @@ - + @@ -35,7 +35,7 @@ - + @@ -53,6 +53,7 @@ + @@ -60,16 +61,25 @@ - + - + - + + @@ -105,11 +115,11 @@ - + - + diff --git a/OneTimePasswordExample/SettingController.m b/OneTimePasswordExample/SettingController.m index aa89580..312497b 100644 --- a/OneTimePasswordExample/SettingController.m +++ b/OneTimePasswordExample/SettingController.m @@ -7,13 +7,14 @@ #import "SettingController.h" #import "SettingsTableViewCell.h" +#import "ViewController.h" #pragma mark - Settings item typedef NS_ENUM(UInt8, SettingsItem) { - SettingsItem1, - SettingsItem2, - SettingsItme3, + AlgorithmItem, + DigitsItem, + PeriodItme, }; extern SettingsItem SettingsItemUnknown; @@ -27,17 +28,19 @@ @interface SettingController () @property (nonatomic) UIPickerView *pickerView; -@property (nonatomic) NSArray *test1Patterns; -@property (nonatomic) NSArray *test2Patterns; -@property (nonatomic) NSArray *test3Patterns; +@property (nonatomic) NSArray *algorithmPatterns; +@property (nonatomic) NSArray *digitsPatterns; +@property (nonatomic) NSArray *periodPatterns; -@property (nonatomic) NSString *test1; -@property (nonatomic) NSString *test2; -@property (nonatomic) NSString *test3; +@property (nonatomic) NSString *algorithm; +@property (nonatomic) NSString *digits; +@property (nonatomic) NSString *period; @end -@implementation SettingController +@implementation SettingController { + NSIndexPath * pickerIndexPath; +} - (void)viewDidLoad { [super viewDidLoad]; @@ -48,13 +51,13 @@ - (void)viewDidLoad { self.pickerView.delegate = self; [self.view addSubview: self.pickerView]; - self.test1Patterns = @[@"1", @"2", @"3"]; - self.test2Patterns = @[@"4", @"5", @"6"]; - self.test3Patterns = @[@"7", @"8", @"9"]; + self.algorithmPatterns = @[@"SHA1", @"SHA256", @"SHA512"]; + self.digitsPatterns = @[@"4", @"5", @"6", @"7", @"8", @"9", @"10"]; + self.periodPatterns = @[@"30", @"60"]; - self.test1 = self.test1Patterns[0]; - self.test2 = self.test2Patterns[0]; - self.test3 = self.test3Patterns[0]; + self.algorithm = self.algorithmPatterns[0]; + self.digits = self.digitsPatterns[0]; + self.period = self.periodPatterns[0]; } #pragma mark - Table view data source @@ -72,16 +75,16 @@ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(N switch (indexPath.row) { case 0: - cell.titleLabel.text = @"TEST1"; - cell.valueLabel.text = self.test1; + cell.titleLabel.text = @"アルゴリズム"; + cell.valueLabel.text = self.algorithm; break; case 1: - cell.titleLabel.text = @"TEST2"; - cell.valueLabel.text = self.test2; + cell.titleLabel.text = @"OTP桁数"; + cell.valueLabel.text = self.digits; break; case 2: - cell.titleLabel.text = @"TEST3"; - cell.valueLabel.text = self.test3; + cell.titleLabel.text = @"タイムステップ数"; + cell.valueLabel.text = self.period; break; } @@ -91,9 +94,9 @@ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(N #pragma mark - Table view delegate - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + self.settingsItem = indexPath.row; [self.pickerView selectRow:0 inComponent:0 animated:true]; [self.pickerView reloadAllComponents]; - self.settingsItem = indexPath.row; } #pragma mark - Picker view data source @@ -103,19 +106,28 @@ - (NSInteger)numberOfComponentsInPickerView:(nonnull UIPickerView *)pickerView { } - (NSInteger)pickerView:(nonnull UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { - return 3; + switch (self.settingsItem) { + case AlgorithmItem: + return self.algorithmPatterns.count; + case DigitsItem: + return self.digitsPatterns.count; + case PeriodItme: + return self.periodPatterns.count; + default: + return 0; + } } #pragma mark - Picker view delegate - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { switch (self.settingsItem) { - case SettingsItem1: - return self.test1Patterns[row]; - case SettingsItem2: - return self.test2Patterns[row]; - case SettingsItme3: - return self.test3Patterns[row]; + case AlgorithmItem: + return self.algorithmPatterns[row]; + case DigitsItem: + return self.digitsPatterns[row]; + case PeriodItme: + return self.periodPatterns[row]; } return @""; @@ -123,18 +135,26 @@ - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row f - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { switch (self.settingsItem) { - case SettingsItem1: - self.test1 = self.test1Patterns[row]; + case AlgorithmItem: + self.algorithm = self.algorithmPatterns[row]; break; - case SettingsItem2: - self.test2 = self.test2Patterns[row]; + case DigitsItem: + self.digits = self.digitsPatterns[row]; break; - case SettingsItme3: - self.test3 = self.test3Patterns[row]; + case PeriodItme: + self.period = self.periodPatterns[row]; break; } [self.tableView reloadData]; } +-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender +{ + ViewController *viewController = segue.destinationViewController; + viewController.algorithm = self.algorithm; + viewController.digits = self.digits; + viewController.period = self.period; +} + @end diff --git a/OneTimePasswordExample/ViewController.h b/OneTimePasswordExample/ViewController.h index 3cfd969..a1792da 100644 --- a/OneTimePasswordExample/ViewController.h +++ b/OneTimePasswordExample/ViewController.h @@ -8,7 +8,9 @@ #import @interface ViewController : UIViewController - +@property (nonatomic) NSString *algorithm; +@property (nonatomic) NSString *digits; +@property (nonatomic) NSString *period; @end diff --git a/OneTimePasswordExample/ViewController.m b/OneTimePasswordExample/ViewController.m index 3dbfaaa..69b256e 100644 --- a/OneTimePasswordExample/ViewController.m +++ b/OneTimePasswordExample/ViewController.m @@ -7,6 +7,7 @@ #import "ViewController.h" #import "OneTimePassword.h" +#import "SettingController.h" #import #import @@ -16,20 +17,20 @@ @interface ViewController () @property (weak, nonatomic) IBOutlet UILabel *oneTimePasswordLabel; @property (weak, nonatomic) IBOutlet UAProgressView *oneTimePasswordProgressView; - @property (nonatomic, assign) CGFloat localProgress; - +@property (nonatomic) float scheduledTimerWithTimeInterval; @end @implementation ViewController + - (void)viewDidLoad { [super viewDidLoad]; [self initOneTimePasswordToken]; [self initOneTimePasswordView]; - [NSTimer scheduledTimerWithTimeInterval:0.03 target:self selector:@selector(updateOneTimePasswordView:) userInfo:nil repeats:YES]; + [NSTimer scheduledTimerWithTimeInterval:self.scheduledTimerWithTimeInterval target:self selector:@selector(updateOneTimePasswordView:) userInfo:nil repeats:YES]; } - (void)initOneTimePasswordToken { @@ -39,7 +40,21 @@ - (void)initOneTimePasswordToken { NSData *secretData = [NSData dataWithBase32String:secretString]; - self.token = [OTPToken tokenWithType:OTPTokenTypeTimer secret:secretData name:name issuer:issuer ]; + self.token = [OTPToken tokenWithType:OTPTokenTypeTimer secret:secretData name:name issuer:issuer]; + self.scheduledTimerWithTimeInterval = 0.03f; + if (_algorithm != nil) { + NSArray *OTPAlgorithmStrings = @[@"SHA1", @"SHA256", @"SHA512"]; + self.token.algorithm = [OTPAlgorithmStrings indexOfObject:_algorithm]; + } + if (_digits != nil) { + self.token.digits = [_digits intValue]; + } + if (_period != nil) { + self.token.period = [_period intValue]; + if([_period isEqualToString:@"60"]) { + self.scheduledTimerWithTimeInterval = 0.06f; + } + } } - (void)initOneTimePasswordView { @@ -64,6 +79,7 @@ - (void)updateOneTimePasswordView:(NSTimer *)timer { _localProgress = newProgress; [self.oneTimePasswordProgressView setProgress:_localProgress animated:NO]; + } @end