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