Swiftgram/TelegramCore/SecureIdValueAccessContext.swift
Peter Iakovlev dc750fee3e no message
2018-03-28 22:33:08 +04:00

34 lines
1020 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 generateSecureIdValueEmptyAccessContext() -> SecureIdValueAccessContext? {
return SecureIdValueAccessContext(secret: Data(), hash: 0)
}
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)
}