From 16e6348b7e3b5017de03bd5a9d6d24a344ccc5d6 Mon Sep 17 00:00:00 2001 From: Peter Date: Wed, 11 Apr 2018 22:13:47 +0400 Subject: [PATCH] no message --- TelegramCore/AccessSecureId.swift | 6 ++-- .../ChangePeerNotificationSettings.swift | 16 +++++---- TelegramCore/GrantSecureIdAccess.swift | 33 +++++++++--------- TelegramCore/RequestSecureIdForm.swift | 34 +++++++++---------- TelegramCore/SecureIdAddressValue.swift | 18 +++++----- .../SecureIdDriversLicenseValue.swift | 13 ++----- TelegramCore/SecureIdIDCardValue.swift | 13 ++----- TelegramCore/SecureIdPassportValue.swift | 13 ++----- .../SecureIdPersonalDetailsValue.swift | 4 +-- TelegramCore/SecureIdValue.swift | 8 +++-- 10 files changed, 69 insertions(+), 89 deletions(-) diff --git a/TelegramCore/AccessSecureId.swift b/TelegramCore/AccessSecureId.swift index d2e62804b0..0cf4f4239b 100644 --- a/TelegramCore/AccessSecureId.swift +++ b/TelegramCore/AccessSecureId.swift @@ -99,7 +99,7 @@ func decryptedSecureSecret(encryptedSecretData: Data, password: String, salt: Da let secretHashData = sha256Digest(decryptedSecret) var secretId: Int64 = 0 secretHashData.withUnsafeBytes { (bytes: UnsafePointer) -> Void in - memcpy(&secretId, bytes.advanced(by: secretHashData.count - 8), 8) + memcpy(&secretId, bytes, 8) } if secretId != id { @@ -113,7 +113,7 @@ func encryptedSecureSecret(secretData: Data, password: String, inputSalt: Data) let secretHashData = sha256Digest(secretData) var secretId: Int64 = 0 secretHashData.withUnsafeBytes { (bytes: UnsafePointer) -> Void in - memcpy(&secretId, bytes.advanced(by: secretHashData.count - 8), 8) + memcpy(&secretId, bytes, 8) } guard let passwordData = password.data(using: .utf8) else { @@ -247,7 +247,7 @@ public func accessSecureId(network: Network, password: String) -> Signal) -> Void in - memcpy(&secretId, bytes.advanced(by: secretHashData.count - 8), 8) + memcpy(&secretId, bytes, 8) } return SecureIdAccessContext(secret: decryptedSecret, id: secretId) } diff --git a/TelegramCore/ChangePeerNotificationSettings.swift b/TelegramCore/ChangePeerNotificationSettings.swift index d5a797894d..86c5b66d91 100644 --- a/TelegramCore/ChangePeerNotificationSettings.swift +++ b/TelegramCore/ChangePeerNotificationSettings.swift @@ -53,15 +53,19 @@ public func updatePeerMuteSetting(account: Account, peerId: PeerId, muteInterval let muteState: PeerMuteState if let muteInterval = muteInterval { - let absoluteUntil: Int32 - if muteInterval == Int32.max { - absoluteUntil = Int32.max + if muteInterval == 0 { + muteState = .unmuted } else { - absoluteUntil = Int32(Date().timeIntervalSince1970) + muteInterval + let absoluteUntil: Int32 + if muteInterval == Int32.max { + absoluteUntil = Int32.max + } else { + absoluteUntil = Int32(Date().timeIntervalSince1970) + muteInterval + } + muteState = .muted(until: absoluteUntil) } - muteState = .muted(until: absoluteUntil) } else { - muteState = .unmuted + muteState = .default } let updatedSettings = previousSettings.withUpdatedMuteState(muteState) diff --git a/TelegramCore/GrantSecureIdAccess.swift b/TelegramCore/GrantSecureIdAccess.swift index 29e800ff96..bb54fe86a5 100644 --- a/TelegramCore/GrantSecureIdAccess.swift +++ b/TelegramCore/GrantSecureIdAccess.swift @@ -91,30 +91,31 @@ private func credentialsValueTypeName(value: SecureIdValue) -> String { private func generateCredentials(values: [SecureIdValueWithContext], opaquePayload: Data) -> Data? { var secureData: [String: Any] = [:] for value in values { + var valueDict: [String: Any] = [:] if let encryptedMetadata = value.encryptedMetadata { - var valueDict: [String: Any] = [:] - valueDict["data"] = [ "data_hash": encryptedMetadata.valueDataHash.base64EncodedString(), "secret": encryptedMetadata.decryptedSecret.base64EncodedString() ] as [String: Any] + } - if !encryptedMetadata.files.isEmpty { - valueDict["files"] = encryptedMetadata.files.map { file -> [String: Any] in - return [ - "file_hash": file.hash.base64EncodedString(), - "secret": file.secret.base64EncodedString() - ] - } - } - - if let selfie = encryptedMetadata.selfie { - valueDict["selfie"] = [ - "file_hash": selfie.hash.base64EncodedString(), - "secret": selfie.secret.base64EncodedString() - ] as [String: Any] + if !value.files.isEmpty { + valueDict["files"] = value.files.map { file -> [String: Any] in + return [ + "file_hash": file.hash.base64EncodedString(), + "secret": file.secret.base64EncodedString() + ] } + } + if let selfie = value.selfie { + valueDict["selfie"] = [ + "file_hash": selfie.hash.base64EncodedString(), + "secret": selfie.secret.base64EncodedString() + ] as [String: Any] + } + + if !valueDict.isEmpty { secureData[credentialsValueTypeName(value: value.value)] = valueDict } } diff --git a/TelegramCore/RequestSecureIdForm.swift b/TelegramCore/RequestSecureIdForm.swift index a5727f26ea..dc1fe0e91a 100644 --- a/TelegramCore/RequestSecureIdForm.swift +++ b/TelegramCore/RequestSecureIdForm.swift @@ -58,6 +58,8 @@ func parseSecureValue(context: SecureIdAccessContext, value: Api.SecureValue) -> let decryptedData: Data? let encryptedMetadata: SecureIdEncryptedValueMetadata? + var parsedFileMetadata: [SecureIdEncryptedValueFileMetadata] = [] + var parsedSelfieMetadata: SecureIdEncryptedValueFileMetadata? if let data = data { let (encryptedData, decryptedHash, encryptedSecret) = parseSecureData(data) guard let valueContext = decryptedSecureValueAccessContext(context: context, encryptedSecret: encryptedSecret, decryptedDataHash: decryptedHash) else { @@ -68,26 +70,24 @@ func parseSecureValue(context: SecureIdAccessContext, value: Api.SecureValue) -> if decryptedData == nil { return nil } - var parsedFileMetadata: [SecureIdEncryptedValueFileMetadata] = [] - for file in parsedFileReferences { - guard let fileSecret = decryptedSecureIdFileSecret(context: context, fileHash: file.fileHash, encryptedSecret: file.encryptedSecret) else { - return nil - } - parsedFileMetadata.append(SecureIdEncryptedValueFileMetadata(hash: file.fileHash, secret: fileSecret)) - } - var parsedSelfieMetadata: SecureIdEncryptedValueFileMetadata? - if let parsedSelfie = selfie.flatMap(SecureIdFileReference.init) { - guard let fileSecret = decryptedSecureIdFileSecret(context: context, fileHash: parsedSelfie.fileHash, encryptedSecret: parsedSelfie.encryptedSecret) else { - return nil - } - - parsedSelfieMetadata = SecureIdEncryptedValueFileMetadata(hash: parsedSelfie.fileHash, secret: fileSecret) - } - encryptedMetadata = SecureIdEncryptedValueMetadata(valueDataHash: decryptedHash, decryptedSecret: valueContext.secret, files: parsedFileMetadata, selfie: parsedSelfieMetadata) + encryptedMetadata = SecureIdEncryptedValueMetadata(valueDataHash: decryptedHash, decryptedSecret: valueContext.secret) } else { decryptedData = nil encryptedMetadata = nil } + for file in parsedFileReferences { + guard let fileSecret = decryptedSecureIdFileSecret(context: context, fileHash: file.fileHash, encryptedSecret: file.encryptedSecret) else { + return nil + } + parsedFileMetadata.append(SecureIdEncryptedValueFileMetadata(hash: file.fileHash, secret: fileSecret)) + } + if let parsedSelfie = selfie.flatMap(SecureIdFileReference.init) { + guard let fileSecret = decryptedSecureIdFileSecret(context: context, fileHash: parsedSelfie.fileHash, encryptedSecret: parsedSelfie.encryptedSecret) else { + return nil + } + + parsedSelfieMetadata = SecureIdEncryptedValueFileMetadata(hash: parsedSelfie.fileHash, secret: fileSecret) + } let value: SecureIdValue @@ -169,7 +169,7 @@ func parseSecureValue(context: SecureIdAccessContext, value: Api.SecureValue) -> } } - return ParsedSecureValue(valueWithContext: SecureIdValueWithContext(value: value, encryptedMetadata: encryptedMetadata, opaqueHash: hash.makeData())) + return ParsedSecureValue(valueWithContext: SecureIdValueWithContext(value: value, files: parsedFileMetadata, selfie: parsedSelfieMetadata, encryptedMetadata: encryptedMetadata, opaqueHash: hash.makeData())) } } diff --git a/TelegramCore/SecureIdAddressValue.swift b/TelegramCore/SecureIdAddressValue.swift index e08c9adcea..59d5890b7d 100644 --- a/TelegramCore/SecureIdAddressValue.swift +++ b/TelegramCore/SecureIdAddressValue.swift @@ -4,15 +4,15 @@ public struct SecureIdAddressValue: Equatable { public var street1: String public var street2: String public var city: String - public var region: String + public var state: String public var countryCode: String public var postcode: String - public init(street1: String, street2: String, city: String, region: String, countryCode: String, postcode: String) { + public init(street1: String, street2: String, city: String, state: String, countryCode: String, postcode: String) { self.street1 = street1 self.street2 = street2 self.city = city - self.region = region + self.state = state self.countryCode = countryCode self.postcode = postcode } @@ -27,7 +27,7 @@ public struct SecureIdAddressValue: Equatable { if lhs.city != rhs.city { return false } - if lhs.region != rhs.region { + if lhs.state != rhs.state { return false } if lhs.countryCode != rhs.countryCode { @@ -49,17 +49,17 @@ extension SecureIdAddressValue { guard let city = dict["city"] as? String else { return nil } - guard let region = dict["region"] as? String else { + guard let state = dict["state"] as? String else { return nil } - guard let countryCode = dict["country_iso2"] as? String else { + guard let countryCode = dict["country_code"] as? String else { return nil } guard let postcode = dict["post_code"] as? String else { return nil } - self.init(street1: street1, street2: street2, city: city, region: region, countryCode: countryCode, postcode: postcode) + self.init(street1: street1, street2: street2, city: city, state: state, countryCode: countryCode, postcode: postcode) } func serialize() -> ([String: Any], [SecureIdVerificationDocumentReference]) { @@ -69,8 +69,8 @@ extension SecureIdAddressValue { dict["street_line2"] = self.street2 } dict["city"] = self.city - dict["region"] = self.region - dict["country_iso2"] = self.countryCode + dict["state"] = self.state + dict["country_code"] = self.countryCode dict["post_code"] = self.postcode return (dict, []) diff --git a/TelegramCore/SecureIdDriversLicenseValue.swift b/TelegramCore/SecureIdDriversLicenseValue.swift index 9d8ae8caf9..6fe1a1b48d 100644 --- a/TelegramCore/SecureIdDriversLicenseValue.swift +++ b/TelegramCore/SecureIdDriversLicenseValue.swift @@ -2,14 +2,12 @@ import Foundation public struct SecureIdDriversLicenseValue: Equatable { public var identifier: String - public var issueDate: SecureIdDate public var expiryDate: SecureIdDate? public var verificationDocuments: [SecureIdVerificationDocumentReference] public var selfieDocument: SecureIdVerificationDocumentReference? - public init(identifier: String, issueDate: SecureIdDate, expiryDate: SecureIdDate?, verificationDocuments: [SecureIdVerificationDocumentReference], selfieDocument: SecureIdVerificationDocumentReference?) { + public init(identifier: String, expiryDate: SecureIdDate?, verificationDocuments: [SecureIdVerificationDocumentReference], selfieDocument: SecureIdVerificationDocumentReference?) { self.identifier = identifier - self.issueDate = issueDate self.expiryDate = expiryDate self.verificationDocuments = verificationDocuments self.selfieDocument = selfieDocument @@ -19,9 +17,6 @@ public struct SecureIdDriversLicenseValue: Equatable { if lhs.identifier != rhs.identifier { return false } - if lhs.issueDate != rhs.issueDate { - return false - } if lhs.expiryDate != rhs.expiryDate { return false } @@ -40,20 +35,16 @@ extension SecureIdDriversLicenseValue { guard let identifier = dict["document_no"] as? String else { return nil } - guard let issueDate = (dict["issue_date"] as? String).flatMap(SecureIdDate.init) else { - return nil - } let expiryDate = (dict["expiry_date"] as? String).flatMap(SecureIdDate.init) let verificationDocuments: [SecureIdVerificationDocumentReference] = fileReferences - self.init(identifier: identifier, issueDate: issueDate, expiryDate: expiryDate, verificationDocuments: verificationDocuments, selfieDocument: selfieDocument) + self.init(identifier: identifier, expiryDate: expiryDate, verificationDocuments: verificationDocuments, selfieDocument: selfieDocument) } func serialize() -> ([String: Any], [SecureIdVerificationDocumentReference], SecureIdVerificationDocumentReference?) { var dict: [String: Any] = [:] dict["document_no"] = self.identifier - dict["issue_date"] = self.issueDate.serialize() if let expiryDate = self.expiryDate { dict["expiry_date"] = expiryDate.serialize() } diff --git a/TelegramCore/SecureIdIDCardValue.swift b/TelegramCore/SecureIdIDCardValue.swift index 1ae908c14b..bde237a36c 100644 --- a/TelegramCore/SecureIdIDCardValue.swift +++ b/TelegramCore/SecureIdIDCardValue.swift @@ -2,14 +2,12 @@ import Foundation public struct SecureIdIDCardValue: Equatable { public var identifier: String - public var issueDate: SecureIdDate public var expiryDate: SecureIdDate? public var verificationDocuments: [SecureIdVerificationDocumentReference] public var selfieDocument: SecureIdVerificationDocumentReference? - public init(identifier: String, issueDate: SecureIdDate, expiryDate: SecureIdDate?, verificationDocuments: [SecureIdVerificationDocumentReference], selfieDocument: SecureIdVerificationDocumentReference?) { + public init(identifier: String, expiryDate: SecureIdDate?, verificationDocuments: [SecureIdVerificationDocumentReference], selfieDocument: SecureIdVerificationDocumentReference?) { self.identifier = identifier - self.issueDate = issueDate self.expiryDate = expiryDate self.verificationDocuments = verificationDocuments self.selfieDocument = selfieDocument @@ -19,9 +17,6 @@ public struct SecureIdIDCardValue: Equatable { if lhs.identifier != rhs.identifier { return false } - if lhs.issueDate != rhs.issueDate { - return false - } if lhs.expiryDate != rhs.expiryDate { return false } @@ -40,20 +35,16 @@ extension SecureIdIDCardValue { guard let identifier = dict["document_no"] as? String else { return nil } - guard let issueDate = (dict["issue_date"] as? String).flatMap(SecureIdDate.init) else { - return nil - } let expiryDate = (dict["expiry_date"] as? String).flatMap(SecureIdDate.init) let verificationDocuments: [SecureIdVerificationDocumentReference] = fileReferences - self.init(identifier: identifier, issueDate: issueDate, expiryDate: expiryDate, verificationDocuments: verificationDocuments, selfieDocument: selfieDocument) + self.init(identifier: identifier, expiryDate: expiryDate, verificationDocuments: verificationDocuments, selfieDocument: selfieDocument) } func serialize() -> ([String: Any], [SecureIdVerificationDocumentReference], SecureIdVerificationDocumentReference?) { var dict: [String: Any] = [:] dict["document_no"] = self.identifier - dict["issue_date"] = self.issueDate.serialize() if let expiryDate = self.expiryDate { dict["expiry_date"] = expiryDate.serialize() } diff --git a/TelegramCore/SecureIdPassportValue.swift b/TelegramCore/SecureIdPassportValue.swift index 5cd3d80e59..f0a308d12b 100644 --- a/TelegramCore/SecureIdPassportValue.swift +++ b/TelegramCore/SecureIdPassportValue.swift @@ -2,14 +2,12 @@ import Foundation public struct SecureIdPassportValue: Equatable { public var identifier: String - public var issueDate: SecureIdDate public var expiryDate: SecureIdDate? public var verificationDocuments: [SecureIdVerificationDocumentReference] public var selfieDocument: SecureIdVerificationDocumentReference? - public init(identifier: String, issueDate: SecureIdDate, expiryDate: SecureIdDate?, verificationDocuments: [SecureIdVerificationDocumentReference], selfieDocument: SecureIdVerificationDocumentReference?) { + public init(identifier: String, expiryDate: SecureIdDate?, verificationDocuments: [SecureIdVerificationDocumentReference], selfieDocument: SecureIdVerificationDocumentReference?) { self.identifier = identifier - self.issueDate = issueDate self.expiryDate = expiryDate self.verificationDocuments = verificationDocuments self.selfieDocument = selfieDocument @@ -19,9 +17,6 @@ public struct SecureIdPassportValue: Equatable { if lhs.identifier != rhs.identifier { return false } - if lhs.issueDate != rhs.issueDate { - return false - } if lhs.expiryDate != rhs.expiryDate { return false } @@ -40,20 +35,16 @@ extension SecureIdPassportValue { guard let identifier = dict["document_no"] as? String else { return nil } - guard let issueDate = (dict["issue_date"] as? String).flatMap(SecureIdDate.init) else { - return nil - } let expiryDate = (dict["expiry_date"] as? String).flatMap(SecureIdDate.init) let verificationDocuments: [SecureIdVerificationDocumentReference] = fileReferences - self.init(identifier: identifier, issueDate: issueDate, expiryDate: expiryDate, verificationDocuments: verificationDocuments, selfieDocument: selfieDocument) + self.init(identifier: identifier, expiryDate: expiryDate, verificationDocuments: verificationDocuments, selfieDocument: selfieDocument) } func serialize() -> ([String: Any], [SecureIdVerificationDocumentReference], SecureIdVerificationDocumentReference?) { var dict: [String: Any] = [:] dict["document_no"] = self.identifier - dict["issue_date"] = self.issueDate.serialize() if let expiryDate = self.expiryDate { dict["expiry_date"] = expiryDate.serialize() } diff --git a/TelegramCore/SecureIdPersonalDetailsValue.swift b/TelegramCore/SecureIdPersonalDetailsValue.swift index 025aa993a0..fd02931be5 100644 --- a/TelegramCore/SecureIdPersonalDetailsValue.swift +++ b/TelegramCore/SecureIdPersonalDetailsValue.swift @@ -49,7 +49,7 @@ extension SecureIdPersonalDetailsValue { guard let gender = (dict["gender"] as? String).flatMap(SecureIdGender.init) else { return nil } - guard let countryCode = dict["country_iso2"] as? String else { + guard let countryCode = dict["country_code"] as? String else { return nil } @@ -62,7 +62,7 @@ extension SecureIdPersonalDetailsValue { dict["last_name"] = self.lastName dict["birth_date"] = self.birthdate.serialize() dict["gender"] = self.gender.serialize() - dict["country_iso2"] = self.countryCode + dict["country_code"] = self.countryCode return (dict, []) } diff --git a/TelegramCore/SecureIdValue.swift b/TelegramCore/SecureIdValue.swift index 54376935a2..06faeab746 100644 --- a/TelegramCore/SecureIdValue.swift +++ b/TelegramCore/SecureIdValue.swift @@ -120,17 +120,19 @@ struct SecureIdEncryptedValueFileMetadata: Equatable { struct SecureIdEncryptedValueMetadata: Equatable { let valueDataHash: Data let decryptedSecret: Data - let files: [SecureIdEncryptedValueFileMetadata] - let selfie: SecureIdEncryptedValueFileMetadata? } public struct SecureIdValueWithContext: Equatable { public let value: SecureIdValue + let files: [SecureIdEncryptedValueFileMetadata] + let selfie: SecureIdEncryptedValueFileMetadata? let encryptedMetadata: SecureIdEncryptedValueMetadata? let opaqueHash: Data - init(value: SecureIdValue, encryptedMetadata: SecureIdEncryptedValueMetadata?, opaqueHash: Data) { + init(value: SecureIdValue, files: [SecureIdEncryptedValueFileMetadata], selfie: SecureIdEncryptedValueFileMetadata?, encryptedMetadata: SecureIdEncryptedValueMetadata?, opaqueHash: Data) { self.value = value + self.files = files + self.selfie = selfie self.encryptedMetadata = encryptedMetadata self.opaqueHash = opaqueHash }