Proyectos de Subversion Iphone Microlearning - Inconcert

Rev

Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

//
//  HeaderSecurity.swift
//  twogetskills
//
//  Created by Efrain Yanez Recanatini on 5/6/22.
//

import Foundation
import var CommonCrypto.CC_MD5_DIGEST_LENGTH
import func CommonCrypto.CC_MD5
import typealias CommonCrypto.CC_LONG

class HeaderSecurity
{
    public let created : Int
    public let rand : Int
    public var secret : String = ""
    private var appData = AppData.sharedInstance
    
    
    init()
    {
        
        created = Int(round(Date().timeIntervalSince1970))
        rand = Int.random(in: 0..<8999) + 1000
        
        let md5Data = MD5(string: "\(appData.devicePassword)" + ":" + "\(created)" + ":" + "\(rand)")
        secret =  md5Data.map {
            String(format: "%02hhx", $0)
        
        }.joined()
    }
    
    
    func MD5(string: String) -> Data {
        let length = Int(CC_MD5_DIGEST_LENGTH)
        let messageData = string.data(using:.utf8)!
        var digestData = Data(count: length)

        _ = digestData.withUnsafeMutableBytes { digestBytes -> UInt8 in
        messageData.withUnsafeBytes { messageBytes -> UInt8 in
        if let messageBytesBaseAddress = messageBytes.baseAddress, let digestBytesBlindMemory = digestBytes.bindMemory(to: UInt8.self).baseAddress {
                let messageLength = CC_LONG(messageData.count)
                    CC_MD5(messageBytesBaseAddress, messageLength, digestBytesBlindMemory)
                }
            return 0
            }
        }
        return digestData
    }
}