Swiftgram/TelegramCore/SecureIdValueAccessContext.swift
Peter Iakovlev 152a139727 no message
2018-03-28 15:01:20 +04:00

29 lines
866 B
Swift

import Foundation
public struct SecureIdValueAccessContext: Equatable {
let secret: Data
let hash: Int64
public static func ==(lhs: SecureIdValueAccessContext, rhs: SecureIdValueAccessContext) -> Bool {
if lhs.secret != rhs.secret {
return false
}
if lhs.hash != rhs.hash {
return false
}
return true
}
}
public func generateSecureIdValueAccessContext() -> SecureIdValueAccessContext? {
guard let secret = generateSecureSecretData() else {
return nil
}
let secretHashData = sha512Digest(secret)
var secretHash: Int64 = 0
secretHashData.withUnsafeBytes { (bytes: UnsafePointer<Int8>) -> Void in
memcpy(&secretHash, bytes.advanced(by: secretHashData.count - 8), 8)
}
return SecureIdValueAccessContext(secret: secret, hash: secretHash)
}