Skip to content

Commit 13da2da

Browse files
authored
Log TokenGenerationErrors (#37)
1 parent 8e11a78 commit 13da2da

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

Sources/UID2/UID2Client.swift

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,15 @@ internal final class UID2Client: Sendable {
9090
appName: String
9191
) async throws -> RefreshAPIPackage {
9292
// Parse server key and generate our keys
93-
let (symmetricKey, publicKey) = try cryptoUtil.parseKey(serverPublicKey)
93+
let (symmetricKey, publicKey): (SymmetricKey, P256.KeyAgreement.PublicKey)
94+
do {
95+
(symmetricKey, publicKey) = try cryptoUtil.parseKey(serverPublicKey)
96+
} catch let error as TokenGenerationError {
97+
if case .configuration(let message) = error {
98+
os_log("Configuration error: %@", log: log, type: .error, message ?? "<none>")
99+
}
100+
throw error
101+
}
94102
let payload = ClientGeneratePayload(identity)
95103
let authenticatedDataPayload = AuthenticatedData(appName: appName)
96104

@@ -116,18 +124,23 @@ internal final class UID2Client: Sendable {
116124
let (data, response) = try await execute(request)
117125
let decoder = JSONDecoder.apiDecoder()
118126
guard response.statusCode == 200 else {
127+
let statusCode = response.statusCode
128+
let responseText = String(data: data, encoding: .utf8) ?? "<none>"
129+
os_log("Request failure (%d) %@", log: log, type: .error, statusCode, responseText)
119130
throw TokenGenerationError.requestFailure(
120-
httpStatusCode: response.statusCode,
121-
response: String(data: data, encoding: .utf8)
131+
httpStatusCode: statusCode,
132+
response: responseText
122133
)
123134
}
124135
guard let decryptedData = DataEnvelope.decrypt(data, key: symmetricKey) else {
136+
os_log("Decryption failure", log: log, type: .error)
125137
throw TokenGenerationError.decryptionFailure
126138
}
127139

128140
guard
129141
let tokenResponse = try? decoder.decode(RefreshTokenResponse.self, from: decryptedData),
130142
let refreshAPIPackage = tokenResponse.toRefreshAPIPackage() else {
143+
os_log("Invalid response", log: log, type: .error)
131144
throw TokenGenerationError.invalidResponse
132145
}
133146

0 commit comments

Comments
 (0)