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

  1. import Foundation
  2. class FullViewController: UIViewController, TransKeyViewDelegate
  3. {
  4. var mQwertyTransKeyView : TransKeyView!
  5. var mNumberTransKeyView : TransKeyView!
  6. var secureKey : NSData!
  7. var numberCipherString : String!
  8. var qwertyCipherString : String!
  9. var isTranskeyShowing : Bool!
  10. var isShowQwerty : Bool! = true
  11. var isShowNumber : Bool!
  12. var controller : UIViewController!
  13. @IBOutlet var qwertyBtn : UIButton!
  14. @IBOutlet var numberBtn : UIButton!
  15. // @IBOutlet var _qwertyCipherLabel : UITextView?
  16. // @IBOutlet var _qwertyPlainLabel : UITextView?
  17. // @IBOutlet var _numberCipherLabel : UITextView?
  18. // @IBOutlet var _numberPlainLabel : UITextView?
  19. //
  20. override func viewDidDisappear(_ animated: Bool) {
  21. super.viewDidDisappear(animated)
  22. NSLog("fullview viewDidDisappear");
  23. if mQwertyTransKeyView != nil{
  24. mQwertyTransKeyView.mTK_ClearDelegateSubviews()
  25. }
  26. if mNumberTransKeyView != nil{
  27. mNumberTransKeyView.mTK_ClearDelegateSubviews()
  28. }
  29. if isTranskeyShowing == false{
  30. mQwertyTransKeyView.delegate = nil;
  31. mNumberTransKeyView.delegate = nil;
  32. }
  33. }
  34. override func viewWillAppear(_ animated: Bool) {
  35. super.viewWillAppear(animated)
  36. NSLog("fullview viewWillApper")
  37. }
  38. override func viewDidLoad() {
  39. super.viewDidLoad()
  40. NSLog("fullview viewDidLoad");
  41. let imageNormal = UIImage(named: "btn_sel.png")
  42. // self.qwertyBtn.setBackgroundImage(imageNormal?.stretchableImage(withLeftCapWidth: 7, topCapHeight: 0), for: UIControlState.normal)
  43. // self.numberBtn.setBackgroundImage(imageNormal?.stretchableImage(withLeftCapWidth: 7, topCapHeight: 0), for: UIControlState.normal)
  44. isShowNumber = false
  45. isShowQwerty = true
  46. isTranskeyShowing = false
  47. // Do any additional setup after loading the view.
  48. let iv: Array<String> = ["M", "o", "b", "i", "l", "e", "T", "r" , "a", "n", "s", "K", "e", "y", "1", "0"]
  49. secureKey = NSData(bytes: iv, length: 16)
  50. NSLog("securekey : %@", secureKey)
  51. // securekey : <d689e80d 01000000 01000000 00000000>
  52. // real securekey : <4d6f6269 6c655472 616e734b 65793130>
  53. setQwertyTranskey()
  54. setNumberTranskey()
  55. self.showQwertyTranskeyAction()
  56. }
  57. override var prefersStatusBarHidden: Bool {
  58. return false
  59. }
  60. func setQwertyTranskey(){
  61. mQwertyTransKeyView = TransKeyView()
  62. mQwertyTransKeyView.mTK_Init(self)
  63. mQwertyTransKeyView.delegate = self
  64. mQwertyTransKeyView.mTK_MakeSecureKey()
  65. mQwertyTransKeyView.mTK_Supported(byDeviceOrientation: SupportedByDevicePortrait)
  66. mQwertyTransKeyView.mTK_LicenseCheck("license_mtranskey")
  67. }
  68. func setNumberTranskey(){
  69. mNumberTransKeyView = TransKeyView()
  70. mNumberTransKeyView.mTK_Init(self)
  71. mNumberTransKeyView.delegate = self
  72. mNumberTransKeyView.mTK_MakeSecureKey()
  73. mNumberTransKeyView.mTK_Supported(byDeviceOrientation: SupportedByDevicePortrait)
  74. mNumberTransKeyView.mTK_LicenseCheck("license_mtranskey")
  75. }
  76. //
  77. func secureInputFinish(_ type: Int) {
  78. NSLog("secureInputFinish Btn Type : %d", type)
  79. NSLog("secureInputFinish");
  80. var targetView : TransKeyView!
  81. NSLog("qwerty : " + isShowQwerty.description + " number : " + isShowNumber.description)
  82. if isShowQwerty == true{
  83. var qwertyPlainData:[CChar] = [CChar](repeating: 0, count: 256)
  84. let qkey = mQwertyTransKeyView.mTK_GetSecureKey()
  85. qwertyCipherString = mQwertyTransKeyView.mTK_GetCipherDataExWithPadding()
  86. NSLog("qwertyCipherString : " + qwertyCipherString)
  87. mQwertyTransKeyView.mTK_GetPlainDataExWithPadding(withKey: qkey,
  88. cipherString: qwertyCipherString,
  89. plainString: &qwertyPlainData,
  90. length: 256)
  91. let qwertyPlainString = String(validatingUTF8:qwertyPlainData)
  92. // let qwertyPlainString = String(UTF8String: UnsafePointer<CChar>(qwertyPlainData))!
  93. let encryptedText = String(format:"Qwerty Cipher Text : %@", qwertyCipherString)
  94. let plainText = String(format:"Qwerty Plain Text : %@", qwertyPlainString!)
  95. print(encryptedText)
  96. print(plainText)
  97. targetView = mQwertyTransKeyView
  98. // self.mQwertyTransKeyView.dismissViewControllerAnimated(true, completion: nil)
  99. }
  100. if isShowNumber == true{
  101. var numberPlainData:[CChar] = [CChar](repeating: 0, count: 256)
  102. let nkey = mNumberTransKeyView.mTK_GetSecureKey()
  103. numberCipherString = mNumberTransKeyView.mTK_GetCipherDataExWithPadding()
  104. mNumberTransKeyView.mTK_GetPlainDataExWithPadding(withKey: nkey,
  105. cipherString: numberCipherString,
  106. plainString: &numberPlainData,
  107. length: 256)
  108. let numberPlainString = String(validatingUTF8:numberPlainData)
  109. // let numberPlainString = String(UTF8String: UnsafePointer<CChar>(numberPlainData))!
  110. // _numberCipherLabel.text = String(format:"Number Cipher Text : %@", numberCipherString)
  111. // _numberPlainLabel.text = String(format:"Number Plain Text : %@", numberPlainString!)
  112. targetView = mNumberTransKeyView
  113. // self.mNumberTransKeyView.dismissViewControllerAnimated(true, completion: nil)
  114. }
  115. isShowQwerty = false
  116. isShowNumber = false
  117. isTranskeyShowing = false
  118. targetView.dismiss(animated: true, completion: nil)
  119. NSLog("before dismiss call");
  120. // dispatch_after(5, dispatch_get_main_queue()) {
  121. // self.dismissView()
  122. // }
  123. // NSTimer.scheduledTimerWithTimeInterval(0.2, target: self, selector: "dismissView", userInfo: nil, repeats: false)
  124. NSLog("after dismiss call");
  125. }
  126. func covertPBKDFData(hexStr : String){
  127. // let chars = (hexStr as NSString).UTF8String
  128. // var chars = String(bytes: hexStr.utf8, encoding: NSUTF8StringEncoding)
  129. // var i = 0, len = hexStr.length
  130. //
  131. // var data : NSMutableData!
  132. // var byteChars : Array<String>
  133. // var wholeByte : CUnsignedLong
  134. //
  135. // while i < len{
  136. // byteChars[0] = chars[i++];
  137. // byteChars[1] = chars[i++];
  138. // wholeByte = Int(byteChars, radix:16)
  139. //
  140. // }
  141. }
  142. //
  143. // override func prefersStatusBarHidden() -> Bool {
  144. // return true
  145. // }
  146. @IBAction func showQwertyTranskeyAction(){
  147. // let pbkdfKey = "acc4af609fad57f1cd870a5d94092a24be5fd974"
  148. //// let salts = { 1, 6, 0, 7, 4, 4, 4, 4, 8, 8, 7, 1, 4, 3, 3, 3, 3, 3, 3, 3}
  149. // var PBKDF2_SALT : NSData!
  150. // let PBKDF2_IT = 512;
  151. // mQwertyTransKeyView.mTK_SetPBKDF_RandKey(<#T##randkey: NSData!##NSData!#>)
  152. // setQwertyTranskey()
  153. if mQwertyTransKeyView.isBeingPresented == false {
  154. isShowQwerty = true
  155. isTranskeyShowing = true
  156. let hintStr = String(format:"%d자리 이상 입력해주세요.", 0)
  157. let font = UIFont(name: "Arial", size: 15)
  158. mQwertyTransKeyView.mTK_SetHint(hintStr, font: font)
  159. mQwertyTransKeyView.mTK_ShowMessageIfMaxLength("16자리 입력이 초과되었습니다.")
  160. mQwertyTransKeyView.mTK_UseCursor(true)
  161. mQwertyTransKeyView.mTK_UseAllDeleteButton(true)
  162. mQwertyTransKeyView.mTK_UseNavigationBar(true)
  163. mQwertyTransKeyView.mTK_UseVoiceOver(true)
  164. mQwertyTransKeyView.mTK_setHideInputPasswordDelay(3)
  165. mQwertyTransKeyView.mTK_SetControlCenter(false)
  166. mQwertyTransKeyView.mTK_setIgnoreStatusbar(false)
  167. mQwertyTransKeyView.mTK_Supported(byDeviceOrientation: SupportedByDevicePortraitAndLandscape)
  168. mQwertyTransKeyView.setKeyboardType(self,
  169. keypadType: 0,
  170. mTK_inputType: 2,
  171. mTK_inputTitle: "입력",
  172. mTK_cryptType: 0,
  173. mTK_maxLength: 100,
  174. mTK_minLength: 0,
  175. mTK_keypadUpper: false,
  176. mTK_languageType: 0)
  177. mQwertyTransKeyView.mTK_EnableSamekeyInputDataEncrypt(false)
  178. mQwertyTransKeyView.mTK_SetUseBalloonImageButton(true)
  179. self.present(mQwertyTransKeyView, animated: true, completion: nil)
  180. }
  181. }
  182. @IBAction func showNumberTranskeyAction(){
  183. // setNumberTranskey()
  184. if mNumberTransKeyView.isBeingPresented == false{
  185. isShowNumber = true
  186. isTranskeyShowing = true
  187. mNumberTransKeyView.mTK_SetHint("password", font:UIFont(name:"Arial", size: 15.0))
  188. mNumberTransKeyView.mTK_ShowMessageIfMinLength("0자리 이상 입력해주세요.")
  189. mNumberTransKeyView.mTK_ShowMessageIfMaxLength("16자리 입력이 초과되었습니다.")
  190. mNumberTransKeyView.mTK_UseVoiceOver(false)
  191. mNumberTransKeyView.mTK_setIgnoreStatusbar(false)
  192. mNumberTransKeyView.mTK_SetControlCenter(false)
  193. mNumberTransKeyView.mTK_UseAllDeleteButton(false)
  194. mNumberTransKeyView.mTK_Supported(byDeviceOrientation: SupportedByDevicePortraitAndLandscape)
  195. mNumberTransKeyView.setKeyboardType(self,
  196. keypadType: TransKeyKeypadTypeText,
  197. mTK_inputType: 2,
  198. mTK_inputTitle: "숫자입력",
  199. mTK_cryptType: 0,
  200. mTK_maxLength: 16,
  201. mTK_minLength: 0,
  202. mTK_keypadUpper: false,
  203. mTK_languageType: Int(mTK_Language_Korean.rawValue))
  204. self.present(mNumberTransKeyView, animated: true, completion: nil)
  205. }
  206. }
  207. func TransKeyDidBeginEditing(transKey: TransKey!) {
  208. NSLog("fullview TransKeyDidBeginEditing")
  209. }
  210. func TransKeyDidEndEditing(transKey: TransKey!) {
  211. NSLog("fullview TransKeyDidEndEditing")
  212. }
  213. func TransKeyInputKey(keytype: NSInteger) {
  214. NSLog("fullview TransKeyInputKey")
  215. }
  216. func TransKeyShouldInternalReturn(transKey:TransKey, btnType type:NSInteger)->Bool {
  217. NSLog("fullview TransKeyShouldInternalReturn")
  218. return true
  219. }
  220. func TransKeyShouldReturn(transKey: TransKey!)->Bool {
  221. NSLog("fullview TransKeyShouldReturn")
  222. return true
  223. }
  224. override func didReceiveMemoryWarning() {
  225. super.didReceiveMemoryWarning()
  226. NSLog("fullview viewReceiveMemorywarning");
  227. // Dispose of any resources that can be recreated.
  228. }
  229. }