Only report attestation failure if we *received* the attestion.

per Jeff
pull/1/head
Michael Kirk 7 years ago
parent c4550ebc90
commit 5edf2e426e

@ -4,6 +4,11 @@
NS_ASSUME_NONNULL_BEGIN
extern NSErrorDomain const ContactDiscoveryServiceErrorDomain;
typedef NS_ERROR_ENUM(ContactDiscoveryServiceErrorDomain, ContactDiscoveryServiceError){
ContactDiscoveryServiceErrorAttestationFailed = 100,
};
@class ECKeyPair;
@class OWSAES256Key;

@ -8,6 +8,7 @@
#import "Cryptography.h"
#import "NSData+OWS.h"
#import "NSDate+OWS.h"
#import "NSError+MessageSending.h"
#import "OWSError.h"
#import "OWSRequestFactory.h"
#import "TSNetworkManager.h"
@ -16,6 +17,8 @@
NS_ASSUME_NONNULL_BEGIN
NSErrorDomain const ContactDiscoveryServiceErrorDomain = @"SignalServiceKit.ContactDiscoveryService";
@interface RemoteAttestationAuth ()
@property (nonatomic) NSString *username;
@ -357,7 +360,10 @@ NS_ASSUME_NONNULL_BEGIN
auth:auth];
if (!attestation) {
NSError *error = OWSErrorMakeUnableToProcessServerResponseError();
NSError *error = [NSError errorWithDomain:ContactDiscoveryServiceErrorDomain
code:ContactDiscoveryServiceErrorAttestationFailed
userInfo:nil];
error.isRetryable = NO;
failureHandler(error);
return;
}
@ -366,8 +372,6 @@ NS_ASSUME_NONNULL_BEGIN
});
}
failure:^(NSURLSessionDataTask *task, NSError *error) {
NSHTTPURLResponse *response = (NSHTTPURLResponse *)task.response;
OWSLogVerbose(@"remote attestation failure: %lu", (unsigned long)response.statusCode);
failureHandler(error);
}];
}

@ -139,7 +139,6 @@ class LegacyContactDiscoveryBatchOperation: OWSOperation {
enum ContactDiscoveryError: Error {
case parseError(description: String)
case assertionError(description: String)
case attestationError(underlyingError: Error)
case clientError(underlyingError: Error)
case serverError(underlyingError: Error)
}
@ -234,13 +233,7 @@ class CDSBatchOperation: OWSOperation {
contactDiscoveryService.performRemoteAttestation(success: { (remoteAttestation: RemoteAttestation) in
self.makeContactDiscoveryRequest(remoteAttestation: remoteAttestation)
},
failure: self.attestationFailure)
}
private func attestationFailure(error: Error) {
let attestationError: NSError = ContactDiscoveryError.attestationError(underlyingError: error) as NSError
attestationError.isRetryable = false
self.reportError(attestationError)
failure: self.reportError)
}
private func makeContactDiscoveryRequest(remoteAttestation: RemoteAttestation) {
@ -462,7 +455,7 @@ class CDSFeedbackOperation: OWSOperation {
case ContactDiscoveryError.serverError, ContactDiscoveryError.clientError:
// Server already has this information, no need submit feedback
self.reportSuccess()
case ContactDiscoveryError.attestationError:
case ContactDiscoveryServiceError.attestationFailed:
self.makeRequest(result: .attestationError)
default:
self.makeRequest(result: .unexpectedError)

Loading…
Cancel
Save