Skip to content

Commit

Permalink
IOS-8934 Add additional attestation on backup card linking
Browse files Browse the repository at this point in the history
  • Loading branch information
tureck1y committed Jan 17, 2025
1 parent f986f41 commit a4d8437
Showing 1 changed file with 21 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ final class StartBackupCardLinkingTask: CardSessionRunnable {
private let primaryCard: PrimaryCard
private let addedBackupCards: [String]
private let skipCompatibilityChecks: Bool
private var linkingCommand: StartBackupCardLinkingCommand? = nil

init(primaryCard: PrimaryCard, addedBackupCards: [String], skipCompatibilityChecks: Bool = false) {
self.primaryCard = primaryCard
Expand Down Expand Up @@ -93,19 +92,36 @@ final class StartBackupCardLinkingTask: CardSessionRunnable {
}
}

linkingCommand = StartBackupCardLinkingCommand(primaryCardLinkingKey: primaryCard.linkingKey)
linkingCommand!.run(in: session) { result in
let linkingCommand = StartBackupCardLinkingCommand(primaryCardLinkingKey: primaryCard.linkingKey)
linkingCommand.run(in: session) { result in
switch result {
case .success(let backupCard):
guard let card = session.environment.card else {
completion(.failure(.missingPreflightRead))
return
}

completion(.success(.init(backupCard: backupCard, card: card)))

let response = StartBackupCardLinkingTaskResponse(backupCard: backupCard, card: card)
self.runAttestation(session, response: response, completion: completion)
case .failure(let error):
completion(.failure(error))
}

withExtendedLifetime(linkingCommand) {}
}
}

private func runAttestation(_ session: CardSession, response: StartBackupCardLinkingTaskResponse, completion: @escaping CompletionResult<StartBackupCardLinkingTaskResponse>) {
let attestationTask = AttestationTask(mode: session.environment.config.attestationMode)
attestationTask.run(in: session) { result in
switch result {
case .success:
completion(.success(response))
case .failure(let error):
completion(.failure(error))
}

withExtendedLifetime(attestationTask) {}
}
}

Expand Down

0 comments on commit a4d8437

Please sign in to comment.