no message

This commit is contained in:
overtake 2018-08-28 12:48:40 +03:00
parent 95c47f013c
commit 844392f644
2 changed files with 12 additions and 6 deletions

View File

@ -160,15 +160,15 @@ public enum SecureIdAccessError {
case secretPasswordMismatch case secretPasswordMismatch
} }
public func accessSecureId(network: Network, password: String) -> Signal<SecureIdAccessContext, SecureIdAccessError> { public func accessSecureId(network: Network, password: String) -> Signal<(context: SecureIdAccessContext, settings: TwoStepVerificationSettings), SecureIdAccessError> {
return requestTwoStepVerifiationSettings(network: network, password: password) return requestTwoStepVerifiationSettings(network: network, password: password)
|> mapError { error -> SecureIdAccessError in |> mapError { error -> SecureIdAccessError in
return .passwordError(error) return .passwordError(error)
} }
|> mapToSignal { settings -> Signal<SecureIdAccessContext, SecureIdAccessError> in |> mapToSignal { settings -> Signal<(context: SecureIdAccessContext, settings: TwoStepVerificationSettings), SecureIdAccessError> in
if let secureSecret = settings.secureSecret { if let secureSecret = settings.secureSecret {
if let decryptedSecret = decryptedSecureSecret(encryptedSecretData: secureSecret.data, password: password, derivation: secureSecret.derivation, id: secureSecret.id) { if let decryptedSecret = decryptedSecureSecret(encryptedSecretData: secureSecret.data, password: password, derivation: secureSecret.derivation, id: secureSecret.id) {
return .single(SecureIdAccessContext(secret: decryptedSecret, id: secureSecret.id)) return .single((SecureIdAccessContext(secret: decryptedSecret, id: secureSecret.id), settings))
} else { } else {
return .fail(.secretPasswordMismatch) return .fail(.secretPasswordMismatch)
} }
@ -183,7 +183,7 @@ public func accessSecureId(network: Network, password: String) -> Signal<SecureI
secretHashData.withUnsafeBytes { (bytes: UnsafePointer<Int8>) -> Void in secretHashData.withUnsafeBytes { (bytes: UnsafePointer<Int8>) -> Void in
memcpy(&secretId, bytes, 8) memcpy(&secretId, bytes, 8)
} }
return SecureIdAccessContext(secret: decryptedSecret, id: secretId) return (SecureIdAccessContext(secret: decryptedSecret, id: secretId), settings)
} }
} }
} }

View File

@ -61,8 +61,14 @@ public func requestTwoStepVerifiationSettings(network: Network, password: String
} }
return network.request(Api.functions.account.getPasswordSettings(password: .inputCheckPasswordSRP(srpId: kdfResult.id, A: Buffer(data: kdfResult.A), M1: Buffer(data: kdfResult.M1))), automaticFloodWait: false) return network.request(Api.functions.account.getPasswordSettings(password: .inputCheckPasswordSRP(srpId: kdfResult.id, A: Buffer(data: kdfResult.A), M1: Buffer(data: kdfResult.M1))), automaticFloodWait: false)
|> mapError { _ -> AuthorizationPasswordVerificationError in |> mapError { error -> AuthorizationPasswordVerificationError in
return .generic if error.errorDescription.hasPrefix("FLOOD_WAIT") {
return .limitExceeded
} else if error.errorDescription == "PASSWORD_HASH_INVALID" {
return .invalidPassword
} else {
return .generic
}
} }
|> mapToSignal { result -> Signal<TwoStepVerificationSettings, AuthorizationPasswordVerificationError> in |> mapToSignal { result -> Signal<TwoStepVerificationSettings, AuthorizationPasswordVerificationError> in
switch result { switch result {