Skip to content

Commit a4d8437

Browse files
committed
IOS-8934 Add additional attestation on backup card linking
1 parent f986f41 commit a4d8437

File tree

1 file changed

+21
-5
lines changed

1 file changed

+21
-5
lines changed

TangemSdk/TangemSdk/Operations/Backup/StartBackupCardLinkingTask.swift

+21-5
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ final class StartBackupCardLinkingTask: CardSessionRunnable {
2323
private let primaryCard: PrimaryCard
2424
private let addedBackupCards: [String]
2525
private let skipCompatibilityChecks: Bool
26-
private var linkingCommand: StartBackupCardLinkingCommand? = nil
2726

2827
init(primaryCard: PrimaryCard, addedBackupCards: [String], skipCompatibilityChecks: Bool = false) {
2928
self.primaryCard = primaryCard
@@ -93,19 +92,36 @@ final class StartBackupCardLinkingTask: CardSessionRunnable {
9392
}
9493
}
9594

96-
linkingCommand = StartBackupCardLinkingCommand(primaryCardLinkingKey: primaryCard.linkingKey)
97-
linkingCommand!.run(in: session) { result in
95+
let linkingCommand = StartBackupCardLinkingCommand(primaryCardLinkingKey: primaryCard.linkingKey)
96+
linkingCommand.run(in: session) { result in
9897
switch result {
9998
case .success(let backupCard):
10099
guard let card = session.environment.card else {
101100
completion(.failure(.missingPreflightRead))
102101
return
103102
}
104-
105-
completion(.success(.init(backupCard: backupCard, card: card)))
103+
104+
let response = StartBackupCardLinkingTaskResponse(backupCard: backupCard, card: card)
105+
self.runAttestation(session, response: response, completion: completion)
106+
case .failure(let error):
107+
completion(.failure(error))
108+
}
109+
110+
withExtendedLifetime(linkingCommand) {}
111+
}
112+
}
113+
114+
private func runAttestation(_ session: CardSession, response: StartBackupCardLinkingTaskResponse, completion: @escaping CompletionResult<StartBackupCardLinkingTaskResponse>) {
115+
let attestationTask = AttestationTask(mode: session.environment.config.attestationMode)
116+
attestationTask.run(in: session) { result in
117+
switch result {
118+
case .success:
119+
completion(.success(response))
106120
case .failure(let error):
107121
completion(.failure(error))
108122
}
123+
124+
withExtendedLifetime(attestationTask) {}
109125
}
110126
}
111127

0 commit comments

Comments
 (0)