You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
298 lines
12 KiB
298 lines
12 KiB
|
|
import Foundation
|
|
|
|
class FullViewController: UIViewController, TransKeyViewDelegate
|
|
{
|
|
var mQwertyTransKeyView : TransKeyView!
|
|
var mNumberTransKeyView : TransKeyView!
|
|
|
|
var secureKey : NSData!
|
|
var numberCipherString : String!
|
|
var qwertyCipherString : String!
|
|
|
|
var isTranskeyShowing : Bool!
|
|
var isShowQwerty : Bool! = true
|
|
var isShowNumber : Bool!
|
|
|
|
var controller : UIViewController!
|
|
|
|
@IBOutlet var qwertyBtn : UIButton!
|
|
@IBOutlet var numberBtn : UIButton!
|
|
|
|
// @IBOutlet var _qwertyCipherLabel : UITextView?
|
|
// @IBOutlet var _qwertyPlainLabel : UITextView?
|
|
// @IBOutlet var _numberCipherLabel : UITextView?
|
|
// @IBOutlet var _numberPlainLabel : UITextView?
|
|
//
|
|
|
|
override func viewDidDisappear(_ animated: Bool) {
|
|
super.viewDidDisappear(animated)
|
|
NSLog("fullview viewDidDisappear");
|
|
|
|
if mQwertyTransKeyView != nil{
|
|
mQwertyTransKeyView.mTK_ClearDelegateSubviews()
|
|
}
|
|
|
|
if mNumberTransKeyView != nil{
|
|
mNumberTransKeyView.mTK_ClearDelegateSubviews()
|
|
}
|
|
|
|
if isTranskeyShowing == false{
|
|
mQwertyTransKeyView.delegate = nil;
|
|
mNumberTransKeyView.delegate = nil;
|
|
}
|
|
}
|
|
override func viewWillAppear(_ animated: Bool) {
|
|
super.viewWillAppear(animated)
|
|
NSLog("fullview viewWillApper")
|
|
}
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
NSLog("fullview viewDidLoad");
|
|
|
|
let imageNormal = UIImage(named: "btn_sel.png")
|
|
|
|
// self.qwertyBtn.setBackgroundImage(imageNormal?.stretchableImage(withLeftCapWidth: 7, topCapHeight: 0), for: UIControlState.normal)
|
|
// self.numberBtn.setBackgroundImage(imageNormal?.stretchableImage(withLeftCapWidth: 7, topCapHeight: 0), for: UIControlState.normal)
|
|
|
|
isShowNumber = false
|
|
isShowQwerty = true
|
|
isTranskeyShowing = false
|
|
|
|
// Do any additional setup after loading the view.
|
|
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()
|
|
|
|
self.showQwertyTranskeyAction()
|
|
}
|
|
|
|
override var prefersStatusBarHidden: Bool {
|
|
return false
|
|
}
|
|
|
|
func setQwertyTranskey(){
|
|
mQwertyTransKeyView = TransKeyView()
|
|
mQwertyTransKeyView.mTK_Init(self)
|
|
mQwertyTransKeyView.delegate = self
|
|
mQwertyTransKeyView.mTK_MakeSecureKey()
|
|
mQwertyTransKeyView.mTK_Supported(byDeviceOrientation: SupportedByDevicePortrait)
|
|
mQwertyTransKeyView.mTK_LicenseCheck("license_mtranskey")
|
|
}
|
|
|
|
func setNumberTranskey(){
|
|
mNumberTransKeyView = TransKeyView()
|
|
mNumberTransKeyView.mTK_Init(self)
|
|
mNumberTransKeyView.delegate = self
|
|
mNumberTransKeyView.mTK_MakeSecureKey()
|
|
mNumberTransKeyView.mTK_Supported(byDeviceOrientation: SupportedByDevicePortrait)
|
|
mNumberTransKeyView.mTK_LicenseCheck("license_mtranskey")
|
|
}
|
|
|
|
// 입력완료
|
|
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))!
|
|
|
|
let encryptedText = String(format:"Qwerty Cipher Text : %@", qwertyCipherString)
|
|
let plainText = String(format:"Qwerty Plain Text : %@", qwertyPlainString!)
|
|
print(encryptedText)
|
|
print(plainText)
|
|
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))!
|
|
|
|
// _numberCipherLabel.text = String(format:"Number Cipher Text : %@", numberCipherString)
|
|
// _numberPlainLabel.text = 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");
|
|
|
|
}
|
|
|
|
|
|
|
|
func covertPBKDFData(hexStr : String){
|
|
// let chars = (hexStr as NSString).UTF8String
|
|
// var chars = String(bytes: hexStr.utf8, encoding: NSUTF8StringEncoding)
|
|
// var i = 0, len = hexStr.length
|
|
//
|
|
// var data : NSMutableData!
|
|
// var byteChars : Array<String>
|
|
// var wholeByte : CUnsignedLong
|
|
//
|
|
// while i < len{
|
|
// byteChars[0] = chars[i++];
|
|
// byteChars[1] = chars[i++];
|
|
// wholeByte = Int(byteChars, radix:16)
|
|
//
|
|
// }
|
|
}
|
|
//
|
|
// override func prefersStatusBarHidden() -> Bool {
|
|
// return true
|
|
// }
|
|
|
|
|
|
@IBAction 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!#>)
|
|
|
|
|
|
// setQwertyTranskey()
|
|
|
|
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)
|
|
}
|
|
|
|
|
|
}
|
|
|
|
@IBAction 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_Korean.rawValue))
|
|
|
|
|
|
self.present(mNumberTransKeyView, animated: true, completion: nil)
|
|
}
|
|
|
|
}
|
|
|
|
func TransKeyDidBeginEditing(transKey: TransKey!) {
|
|
NSLog("fullview TransKeyDidBeginEditing")
|
|
}
|
|
|
|
func TransKeyDidEndEditing(transKey: TransKey!) {
|
|
NSLog("fullview TransKeyDidEndEditing")
|
|
}
|
|
|
|
func TransKeyInputKey(keytype: NSInteger) {
|
|
NSLog("fullview TransKeyInputKey")
|
|
}
|
|
|
|
func TransKeyShouldInternalReturn(transKey:TransKey, btnType type:NSInteger)->Bool {
|
|
NSLog("fullview TransKeyShouldInternalReturn")
|
|
return true
|
|
}
|
|
|
|
func TransKeyShouldReturn(transKey: TransKey!)->Bool {
|
|
NSLog("fullview TransKeyShouldReturn")
|
|
return true
|
|
}
|
|
|
|
override func didReceiveMemoryWarning() {
|
|
super.didReceiveMemoryWarning()
|
|
NSLog("fullview viewReceiveMemorywarning");
|
|
// Dispose of any resources that can be recreated.
|
|
}
|
|
}
|