Fixed macOS build

This commit is contained in:
Peter 2018-08-14 14:42:02 +03:00
parent 01ed96e839
commit e38551b534
3 changed files with 27 additions and 13 deletions

View File

@ -517,7 +517,6 @@ func passwordUpdateKDF(password: String, derivation: TwoStepPasswordDerivation)
let nextSalt2 = salt2 let nextSalt2 = salt2
var g = Data(count: 4) var g = Data(count: 4)
g.withUnsafeMutableBytes { (bytes: UnsafeMutablePointer<Int8>) -> Void in g.withUnsafeMutableBytes { (bytes: UnsafeMutablePointer<Int8>) -> Void in
var gValue = gValue var gValue = gValue
@ -529,13 +528,13 @@ func passwordUpdateKDF(password: String, derivation: TwoStepPasswordDerivation)
}) })
} }
let pbkdfInnerData = sha256Digest(salt2 + sha256Digest(salt1 + passwordData + salt1) + salt2) let pbkdfInnerData = sha256Digest(nextSalt2 + sha256Digest(nextSalt1 + passwordData + nextSalt1) + nextSalt2)
guard let pbkdfResult = MTPBKDF2(pbkdfInnerData, salt1, iterations) else { guard let pbkdfResult = MTPBKDF2(pbkdfInnerData, nextSalt1, iterations) else {
return nil return nil
} }
let x = sha256Digest(salt2 + pbkdfResult + salt2) let x = sha256Digest(nextSalt2 + pbkdfResult + nextSalt2)
let gx = MTExp(g, x, p)! let gx = MTExp(g, x, p)!
@ -611,7 +610,6 @@ func passwordKDF(password: String, derivation: TwoStepPasswordDerivation, srpSes
let A = paddedToLength(what: MTExp(g, a, p)!, to: p) let A = paddedToLength(what: MTExp(g, a, p)!, to: p)
let u = sha256Digest(A + B) let u = sha256Digest(A + B)
// x = sha256(salt2 + pbkdf2(sha256(salt2 + sha256(salt1 + password + salt1) + salt2), salt1, 100000, sha512) + salt2)
let pbkdfInnerData = sha256Digest(salt2 + sha256Digest(salt1 + passwordData + salt1) + salt2) let pbkdfInnerData = sha256Digest(salt2 + sha256Digest(salt1 + passwordData + salt1) + salt2)
guard let pbkdfResult = MTPBKDF2(pbkdfInnerData, salt1, iterations) else { guard let pbkdfResult = MTPBKDF2(pbkdfInnerData, salt1, iterations) else {

View File

@ -35,7 +35,12 @@ static void PrintReachabilityFlags(SCNetworkReachabilityFlags flags, const char*
#if kShouldPrintReachabilityFlags #if kShouldPrintReachabilityFlags
NSLog(@"Reachability Flag Status: %c%c %c%c%c%c%c%c%c %s\n", NSLog(@"Reachability Flag Status: %c%c %c%c%c%c%c%c%c %s\n",
(flags & kSCNetworkReachabilityFlagsIsWWAN) ? 'W' : '-', #if TARGET_OS_IPHONE
(flags & kSCNetworkReachabilityFlagsIsWWAN) ? 'W' : '-'
#else
'-'
#endif
,
(flags & kSCNetworkReachabilityFlagsReachable) ? 'R' : '-', (flags & kSCNetworkReachabilityFlagsReachable) ? 'R' : '-',
(flags & kSCNetworkReachabilityFlagsTransientConnection) ? 't' : '-', (flags & kSCNetworkReachabilityFlagsTransientConnection) ? 't' : '-',
@ -306,6 +311,7 @@ static void ReachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReach
} }
} }
#if TARGET_OS_IPHONE
if ((flags & kSCNetworkReachabilityFlagsIsWWAN) == kSCNetworkReachabilityFlagsIsWWAN) if ((flags & kSCNetworkReachabilityFlagsIsWWAN) == kSCNetworkReachabilityFlagsIsWWAN)
{ {
/* /*
@ -313,6 +319,7 @@ static void ReachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReach
*/ */
returnValue = ReachableViaWWAN; returnValue = ReachableViaWWAN;
} }
#endif
return returnValue; return returnValue;
} }

View File

@ -103,17 +103,26 @@ public func updateTwoStepVerificationPassword(network: Network, currentPassword:
|> mapError { _ -> UpdateTwoStepVerificationPasswordError in |> mapError { _ -> UpdateTwoStepVerificationPasswordError in
return .generic return .generic
} }
|> mapToSignal { authData -> Signal<(TwoStepAuthData, TwoStepVerificationSecureSecret?), UpdateTwoStepVerificationPasswordError> in |> mapToSignal { authData -> Signal<TwoStepVerificationSecureSecret?, UpdateTwoStepVerificationPasswordError> in
if let _ = authData.currentPasswordDerivation { if let _ = authData.currentPasswordDerivation {
return requestTwoStepVerifiationSettings(network: network, password: currentPassword ?? "") return requestTwoStepVerifiationSettings(network: network, password: currentPassword ?? "")
|> mapError { _ -> UpdateTwoStepVerificationPasswordError in |> mapError { _ -> UpdateTwoStepVerificationPasswordError in
return .generic return .generic
} }
|> map { settings in |> map { settings in
return (authData, settings.secureSecret) return settings.secureSecret
} }
} else { } else {
return .single((authData, nil)) return .single(nil)
}
}
|> mapToSignal { secureSecret -> Signal<(TwoStepAuthData, TwoStepVerificationSecureSecret?), UpdateTwoStepVerificationPasswordError> in
return twoStepAuthData(network)
|> mapError { _ -> UpdateTwoStepVerificationPasswordError in
return .generic
}
|> map { authData -> (TwoStepAuthData, TwoStepVerificationSecureSecret?) in
return (authData, secureSecret)
} }
} }
|> mapToSignal { authData, secureSecret -> Signal<UpdateTwoStepVerificationPasswordResult, UpdateTwoStepVerificationPasswordError> in |> mapToSignal { authData, secureSecret -> Signal<UpdateTwoStepVerificationPasswordResult, UpdateTwoStepVerificationPasswordError> in
@ -171,16 +180,16 @@ public func updateTwoStepVerificationPassword(network: Network, currentPassword:
updatedSecureSettings = .secureSecretSettings(secureAlgo: updatedSecureSecret.derivation.apiAlgo, secureSecret: Buffer(data: updatedSecureSecret.data), secureSecretId: updatedSecureSecret.id) updatedSecureSettings = .secureSecretSettings(secureAlgo: updatedSecureSecret.derivation.apiAlgo, secureSecret: Buffer(data: updatedSecureSecret.data), secureSecretId: updatedSecureSecret.id)
} }
return network.request(Api.functions.account.updatePasswordSettings(password: .inputCheckPasswordEmpty, newSettings: Api.account.PasswordInputSettings.passwordInputSettings(flags: flags, newAlgo: updatedPasswordDerivation.apiAlgo, newPasswordHash: Buffer(data: updatedPasswordHash), hint: hint, email: email, newSecureSettings: updatedSecureSettings)), automaticFloodWait: false) return network.request(Api.functions.account.updatePasswordSettings(password: checkPassword, newSettings: Api.account.PasswordInputSettings.passwordInputSettings(flags: flags, newAlgo: updatedPasswordDerivation.apiAlgo, newPasswordHash: Buffer(data: updatedPasswordHash), hint: hint, email: email, newSecureSettings: updatedSecureSettings)), automaticFloodWait: false)
|> map { _ -> UpdateTwoStepVerificationPasswordResult in |> map { _ -> UpdateTwoStepVerificationPasswordResult in
return .password(password: password, pendingEmailPattern: nil) return .password(password: password, pendingEmailPattern: nil)
} }
|> `catch` { error -> Signal<UpdateTwoStepVerificationPasswordResult, MTRpcError> in |> `catch` { error -> Signal<UpdateTwoStepVerificationPasswordResult, MTRpcError> in
if error.errorDescription == "EMAIL_UNCONFIRMED" { if error.errorDescription == "EMAIL_UNCONFIRMED" {
return twoStepAuthData(network) return twoStepAuthData(network)
|> map { result -> UpdateTwoStepVerificationPasswordResult in |> map { result -> UpdateTwoStepVerificationPasswordResult in
return .password(password: password, pendingEmailPattern: result.unconfirmedEmailPattern) return .password(password: password, pendingEmailPattern: result.unconfirmedEmailPattern)
} }
} else { } else {
return .fail(error) return .fail(error)
} }