|
|
@ -46,6 +46,22 @@ class SendMoneyVerificationViewController: UITableViewController { |
|
|
|
var url: String? |
|
|
|
|
|
|
|
|
|
|
|
// MARK: Keyoboard Properties |
|
|
|
|
|
|
|
var mQwertyTransKeyView : TransKeyView! |
|
|
|
var mNumberTransKeyView : TransKeyView! |
|
|
|
|
|
|
|
var secureKey : NSData! |
|
|
|
var numberCipherString : String! |
|
|
|
var qwertyCipherString : String! |
|
|
|
|
|
|
|
var isTranskeyShowing : Bool! |
|
|
|
var isShowQwerty : Bool! |
|
|
|
var isShowNumber : Bool! |
|
|
|
|
|
|
|
var encryptedText: String! |
|
|
|
var encryptedNumber: String! |
|
|
|
|
|
|
|
// MARK: Properties |
|
|
|
|
|
|
|
var presenter: SendMoneyVerificationModuleInterface? |
|
|
@ -68,6 +84,7 @@ class SendMoneyVerificationViewController: UITableViewController { |
|
|
|
override func viewDidLoad() { |
|
|
|
super.viewDidLoad() |
|
|
|
self.setup() |
|
|
|
self.keyboardSetup() |
|
|
|
} |
|
|
|
|
|
|
|
override func viewWillAppear(_ animated: Bool) { |
|
|
@ -77,6 +94,22 @@ class SendMoneyVerificationViewController: UITableViewController { |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
override func viewDidDisappear(_ animated: Bool) { |
|
|
|
super.viewDidDisappear(animated) |
|
|
|
if mQwertyTransKeyView != nil{ |
|
|
|
mQwertyTransKeyView.mTK_ClearDelegateSubviews() |
|
|
|
} |
|
|
|
|
|
|
|
if mNumberTransKeyView != nil{ |
|
|
|
mNumberTransKeyView.mTK_ClearDelegateSubviews() |
|
|
|
} |
|
|
|
|
|
|
|
if isTranskeyShowing == false{ |
|
|
|
mQwertyTransKeyView.delegate = nil; |
|
|
|
mNumberTransKeyView.delegate = nil; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// MARK: IBActions |
|
|
|
// @IBOutlet weak var usewUserAgreement: UIButton! |
|
|
|
@IBAction func showUserAgreement(_ sender: UIButton) { |
|
|
@ -110,6 +143,39 @@ class SendMoneyVerificationViewController: UITableViewController { |
|
|
|
, for: .normal) |
|
|
|
} |
|
|
|
|
|
|
|
private func keyboardSetup() { |
|
|
|
isShowNumber = false |
|
|
|
isShowQwerty = false |
|
|
|
isTranskeyShowing = false |
|
|
|
let iv: Array<String> = ["M", "o", "b", "i", "l", "e", "T", "r" , "a", "n", "s", "K", "e", "y", "1", "0"] |
|
|
|
|
|
|
|
secureKey = NSData(bytes: iv, length: 16) |
|
|
|
|
|
|
|
NSLog("securekey : %@", secureKey) |
|
|
|
// securekey : <d689e80d 01000000 01000000 00000000> |
|
|
|
// real securekey : <4d6f6269 6c655472 616e734b 65793130> |
|
|
|
setQwertyTranskey() |
|
|
|
setNumberTranskey() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
private func setQwertyTranskey(){ |
|
|
|
mQwertyTransKeyView = TransKeyView() |
|
|
|
mQwertyTransKeyView.mTK_Init(self) |
|
|
|
mQwertyTransKeyView.delegate = self |
|
|
|
mQwertyTransKeyView.mTK_SetSecureKey(secureKey as Data!) |
|
|
|
mQwertyTransKeyView.mTK_Supported(byDeviceOrientation: SupportedByDevicePortraitAndLandscape) |
|
|
|
mQwertyTransKeyView.mTK_LicenseCheck("license_mtranskey") |
|
|
|
} |
|
|
|
|
|
|
|
private func setNumberTranskey(){ |
|
|
|
mNumberTransKeyView = TransKeyView() |
|
|
|
mNumberTransKeyView.mTK_Init(self) |
|
|
|
mNumberTransKeyView.delegate = self |
|
|
|
mNumberTransKeyView.mTK_SetSecureKey(secureKey as Data!) |
|
|
|
mNumberTransKeyView.mTK_Supported(byDeviceOrientation: SupportedByDevicePortraitAndLandscape) |
|
|
|
mNumberTransKeyView.mTK_LicenseCheck("license_mtranskey") |
|
|
|
} |
|
|
|
|
|
|
|
private func populateRecieversInformations() { |
|
|
|
self.fullNameLabel.text = self.reciepient?.getFullName() |
|
|
@ -129,37 +195,125 @@ class SendMoneyVerificationViewController: UITableViewController { |
|
|
|
|
|
|
|
|
|
|
|
func askPassword() { |
|
|
|
let alertController = UIAlertController(title: "Enter your login password", message: "", preferredStyle: .alert) |
|
|
|
|
|
|
|
alertController.addTextField { (textField : UITextField!) -> Void in |
|
|
|
textField.placeholder = "Enter password" |
|
|
|
textField.isSecureTextEntry = true |
|
|
|
textField.tag = 51 |
|
|
|
// textField.delegate = self |
|
|
|
if let _ = self.requestModel?.autoDebitAccount?.kftcLogId { |
|
|
|
showNumberTranskeyAction() |
|
|
|
return |
|
|
|
} |
|
|
|
showQwertyTranskeyAction() |
|
|
|
// let alertController = UIAlertController(title: "Enter your login password", message: "", preferredStyle: .alert) |
|
|
|
// |
|
|
|
// alertController.addTextField { (textField : UITextField!) -> Void in |
|
|
|
// textField.placeholder = "Enter password" |
|
|
|
// textField.isSecureTextEntry = true |
|
|
|
// textField.tag = 51 |
|
|
|
//// textField.delegate = self |
|
|
|
// } |
|
|
|
// |
|
|
|
// let confirmAction = UIAlertAction(title: "Confirm", style: .default, handler: { |
|
|
|
// alert -> Void in |
|
|
|
// let passwordTextField = alertController.textFields![0] as UITextField |
|
|
|
// if passwordTextField.text! != "" { |
|
|
|
// self.password = passwordTextField.text! |
|
|
|
// } else { |
|
|
|
// self.alert(message: "Password was missing") |
|
|
|
// } |
|
|
|
// }) |
|
|
|
// |
|
|
|
// let cancelAction = UIAlertAction(title: "Cancel", style: .destructive, handler: { |
|
|
|
// (action : UIAlertAction!) -> Void in |
|
|
|
// }) |
|
|
|
// |
|
|
|
// cancelAction.setValue(UIColor.black, forKey: "titleTextColor") |
|
|
|
// confirmAction.setValue(UIColor(hex:0xEC1C24), forKey: "titleTextColor") |
|
|
|
// |
|
|
|
// alertController.addAction(cancelAction) |
|
|
|
// alertController.addAction(confirmAction) |
|
|
|
// |
|
|
|
// self.present(alertController, animated: true, completion: nil) |
|
|
|
} |
|
|
|
|
|
|
|
// start keyboard |
|
|
|
private func showQwertyTranskeyAction(){ |
|
|
|
// let pbkdfKey = "acc4af609fad57f1cd870a5d94092a24be5fd974" |
|
|
|
//// let salts = { 1, 6, 0, 7, 4, 4, 4, 4, 8, 8, 7, 1, 4, 3, 3, 3, 3, 3, 3, 3} |
|
|
|
// var PBKDF2_SALT : NSData! |
|
|
|
// let PBKDF2_IT = 512; |
|
|
|
|
|
|
|
// mQwertyTransKeyView.mTK_SetPBKDF_RandKey(<#T##randkey: NSData!##NSData!#>) |
|
|
|
|
|
|
|
let confirmAction = UIAlertAction(title: "Confirm", style: .default, handler: { |
|
|
|
alert -> Void in |
|
|
|
let passwordTextField = alertController.textFields![0] as UITextField |
|
|
|
if passwordTextField.text! != "" { |
|
|
|
self.password = passwordTextField.text! |
|
|
|
} else { |
|
|
|
self.alert(message: "Password was missing") |
|
|
|
} |
|
|
|
}) |
|
|
|
|
|
|
|
let cancelAction = UIAlertAction(title: "Cancel", style: .destructive, handler: { |
|
|
|
(action : UIAlertAction!) -> Void in |
|
|
|
}) |
|
|
|
// setQwertyTranskey() |
|
|
|
|
|
|
|
cancelAction.setValue(UIColor.black, forKey: "titleTextColor") |
|
|
|
confirmAction.setValue(UIColor(hex:0xEC1C24), forKey: "titleTextColor") |
|
|
|
if mQwertyTransKeyView.isBeingPresented == false { |
|
|
|
isShowQwerty = true |
|
|
|
isTranskeyShowing = true |
|
|
|
|
|
|
|
let hintStr = String(format:"%d자리 이상 입력해주세요.", 0) |
|
|
|
let font = UIFont(name: "Arial", size: 15) |
|
|
|
|
|
|
|
mQwertyTransKeyView.mTK_SetHint(hintStr, font: font) |
|
|
|
mQwertyTransKeyView.mTK_ShowMessageIfMaxLength("16자리 입력이 초과되었습니다.") |
|
|
|
mQwertyTransKeyView.mTK_UseCursor(true) |
|
|
|
mQwertyTransKeyView.mTK_UseAllDeleteButton(true) |
|
|
|
mQwertyTransKeyView.mTK_UseNavigationBar(true) |
|
|
|
mQwertyTransKeyView.mTK_UseVoiceOver(true) |
|
|
|
mQwertyTransKeyView.mTK_setHideInputPasswordDelay(3) |
|
|
|
mQwertyTransKeyView.mTK_SetControlCenter(false) |
|
|
|
mQwertyTransKeyView.mTK_setIgnoreStatusbar(false) |
|
|
|
mQwertyTransKeyView.mTK_Supported(byDeviceOrientation: SupportedByDevicePortraitAndLandscape) |
|
|
|
|
|
|
|
mQwertyTransKeyView.setKeyboardType(self, |
|
|
|
keypadType: 0, |
|
|
|
mTK_inputType: 2, |
|
|
|
mTK_inputTitle: "입력", |
|
|
|
mTK_cryptType: 0, |
|
|
|
mTK_maxLength: 100, |
|
|
|
mTK_minLength: 0, |
|
|
|
mTK_keypadUpper: false, |
|
|
|
mTK_languageType: 0) |
|
|
|
mQwertyTransKeyView.mTK_EnableSamekeyInputDataEncrypt(false) |
|
|
|
mQwertyTransKeyView.mTK_SetUseBalloonImageButton(true) |
|
|
|
|
|
|
|
self.present(mQwertyTransKeyView, animated: true, completion: nil) |
|
|
|
} |
|
|
|
|
|
|
|
alertController.addAction(cancelAction) |
|
|
|
alertController.addAction(confirmAction) |
|
|
|
|
|
|
|
self.present(alertController, animated: true, completion: nil) |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func showNumberTranskeyAction(){ |
|
|
|
// setNumberTranskey() |
|
|
|
|
|
|
|
if mNumberTransKeyView.isBeingPresented == false{ |
|
|
|
|
|
|
|
isShowNumber = true |
|
|
|
isTranskeyShowing = true |
|
|
|
mNumberTransKeyView.mTK_SetHint("password", font:UIFont(name:"Arial", size: 15.0)) |
|
|
|
mNumberTransKeyView.mTK_ShowMessageIfMinLength("0자리 이상 입력해주세요.") |
|
|
|
mNumberTransKeyView.mTK_ShowMessageIfMaxLength("16자리 입력이 초과되었습니다.") |
|
|
|
mNumberTransKeyView.mTK_UseVoiceOver(false) |
|
|
|
mNumberTransKeyView.mTK_setIgnoreStatusbar(false) |
|
|
|
mNumberTransKeyView.mTK_SetControlCenter(false) |
|
|
|
mNumberTransKeyView.mTK_UseAllDeleteButton(false) |
|
|
|
|
|
|
|
mNumberTransKeyView.mTK_Supported(byDeviceOrientation: SupportedByDevicePortraitAndLandscape) |
|
|
|
mNumberTransKeyView.setKeyboardType(self, |
|
|
|
keypadType: TransKeyKeypadTypeText, |
|
|
|
mTK_inputType: 2, |
|
|
|
mTK_inputTitle: "숫자입력", |
|
|
|
mTK_cryptType: 0, |
|
|
|
mTK_maxLength: 16, |
|
|
|
mTK_minLength: 0, |
|
|
|
mTK_keypadUpper: false, |
|
|
|
mTK_languageType: Int(mTK_Language_English.rawValue)) |
|
|
|
|
|
|
|
|
|
|
|
self.present(mNumberTransKeyView, animated: true, completion: nil) |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
// MARK: SendMoneyVerificationViewInterface |
|
|
@ -196,3 +350,70 @@ extension SendMoneyVerificationViewController { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extension SendMoneyVerificationViewController: TransKeyViewDelegate { |
|
|
|
func secureInputFinish(_ type: Int) { |
|
|
|
NSLog("secureInputFinish Btn Type : %d", type) |
|
|
|
NSLog("secureInputFinish"); |
|
|
|
var targetView : TransKeyView! |
|
|
|
|
|
|
|
NSLog("qwerty : " + isShowQwerty.description + " number : " + isShowNumber.description) |
|
|
|
if isShowQwerty == true{ |
|
|
|
var qwertyPlainData:[CChar] = [CChar](repeating: 0, count: 256) |
|
|
|
let qkey = mQwertyTransKeyView.mTK_GetSecureKey() |
|
|
|
qwertyCipherString = mQwertyTransKeyView.mTK_GetCipherDataExWithPadding() |
|
|
|
|
|
|
|
NSLog("qwertyCipherString : " + qwertyCipherString) |
|
|
|
|
|
|
|
mQwertyTransKeyView.mTK_GetPlainDataExWithPadding(withKey: qkey, |
|
|
|
cipherString: qwertyCipherString, |
|
|
|
plainString: &qwertyPlainData, |
|
|
|
length: 256) |
|
|
|
|
|
|
|
let qwertyPlainString = String(validatingUTF8:qwertyPlainData) |
|
|
|
// let qwertyPlainString = String(UTF8String: UnsafePointer<CChar>(qwertyPlainData))! |
|
|
|
|
|
|
|
self.encryptedText = String(format:"Qwerty Cipher Text : %@", qwertyCipherString) |
|
|
|
self.encryptedNumber = String(format:"Qwerty Plain Text : %@", qwertyPlainString!) |
|
|
|
targetView = mQwertyTransKeyView |
|
|
|
// self.mQwertyTransKeyView.dismissViewControllerAnimated(true, completion: nil) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if isShowNumber == true{ |
|
|
|
|
|
|
|
var numberPlainData:[CChar] = [CChar](repeating: 0, count: 256) |
|
|
|
let nkey = mNumberTransKeyView.mTK_GetSecureKey() |
|
|
|
numberCipherString = mNumberTransKeyView.mTK_GetCipherDataExWithPadding() |
|
|
|
|
|
|
|
mNumberTransKeyView.mTK_GetPlainDataExWithPadding(withKey: nkey, |
|
|
|
cipherString: numberCipherString, |
|
|
|
plainString: &numberPlainData, |
|
|
|
length: 256) |
|
|
|
|
|
|
|
let numberPlainString = String(validatingUTF8:numberPlainData) |
|
|
|
// let numberPlainString = String(UTF8String: UnsafePointer<CChar>(numberPlainData))! |
|
|
|
|
|
|
|
self.encryptedText = String(format:"Number Cipher Text : %@", numberCipherString) |
|
|
|
self.encryptedNumber = String(format:"Number Plain Text : %@", numberPlainString!) |
|
|
|
|
|
|
|
targetView = mNumberTransKeyView |
|
|
|
// self.mNumberTransKeyView.dismissViewControllerAnimated(true, completion: nil) |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
isShowQwerty = false |
|
|
|
isShowNumber = false |
|
|
|
isTranskeyShowing = false |
|
|
|
|
|
|
|
targetView.dismiss(animated: true, completion: nil) |
|
|
|
NSLog("before dismiss call"); |
|
|
|
|
|
|
|
// dispatch_after(5, dispatch_get_main_queue()) { |
|
|
|
// self.dismissView() |
|
|
|
// } |
|
|
|
|
|
|
|
// NSTimer.scheduledTimerWithTimeInterval(0.2, target: self, selector: "dismissView", userInfo: nil, repeats: false) |
|
|
|
NSLog("after dismiss call"); |
|
|
|
|
|
|
|
} |
|
|
|
} |