From 94292af9529dd2c01231b8fd8389871f052e7a22 Mon Sep 17 00:00:00 2001 From: Chris Eldredge Date: Fri, 10 Mar 2023 20:28:48 -0500 Subject: [PATCH] Identities offers both key and certificate when both are present --- .../Sources/SecretAgentKit/Agent.swift | 25 ++++++++----------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/Sources/Packages/Sources/SecretAgentKit/Agent.swift b/Sources/Packages/Sources/SecretAgentKit/Agent.swift index 84cd238..52009d8 100644 --- a/Sources/Packages/Sources/SecretAgentKit/Agent.swift +++ b/Sources/Packages/Sources/SecretAgentKit/Agent.swift @@ -86,27 +86,24 @@ extension Agent { func identities() -> Data { let secrets = storeList.allSecrets certificateHandler.reloadCertificates(for: secrets) - var count = UInt32(secrets.count).bigEndian - let countData = Data(bytes: &count, count: UInt32.bitWidth/8) + var count = secrets.count var keyData = Data() for secret in secrets { - let keyBlob: Data - let curveData: Data - - if let (certificateData, name) = try? certificateHandler.keyBlobAndName(for: secret) { - keyBlob = certificateData - curveData = name - } else { - keyBlob = writer.data(secret: secret) - curveData = writer.curveType(for: secret.algorithm, length: secret.keySize).data(using: .utf8)! - } - + let keyBlob: Data = writer.data(secret: secret) + let curveData: Data = writer.curveType(for: secret.algorithm, length: secret.keySize).data(using: .utf8)! keyData.append(writer.lengthAndData(of: keyBlob)) keyData.append(writer.lengthAndData(of: curveData)) + if let (certificateData, name) = try? certificateHandler.keyBlobAndName(for: secret) { + keyData.append(writer.lengthAndData(of: certificateData)) + keyData.append(writer.lengthAndData(of: name)) + count += 1 + } } - logger.log("Agent enumerated \(secrets.count) identities") + logger.log("Agent enumerated \(count) identities") + var countBigEndian = UInt32(count).bigEndian + let countData = Data(bytes: &countBigEndian, count: UInt32.bitWidth/8) return countData + keyData }