Skip to content

Commit c5d9d25

Browse files
authored
Use createPGPMessage instead of CryptoNewPGPMessage to support ASCII-armored password with YubiKey (#658)
1 parent 5bf7ff2 commit c5d9d25

File tree

2 files changed

+11
-11
lines changed

2 files changed

+11
-11
lines changed

pass/Services/PasswordDecryptor.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ func verifyPin(smartCard: YKFSmartCardInterface, pin: String) async throws {
206206

207207
func decipher(smartCard: YKFSmartCardInterface, ciphertext: Data, chained: Bool) async throws -> Data {
208208
var error: NSError?
209-
let message = CryptoNewPGPMessage(ciphertext)
209+
let message = createPGPMessage(from: ciphertext)
210210
guard let mpi1 = Gopenpgp.HelperPassGetEncryptedMPI1(message, &error) else {
211211
throw AppError.yubiKey(.decipher(message: "Failed to get encrypted MPI."))
212212
}
@@ -225,7 +225,7 @@ func decipher(smartCard: YKFSmartCardInterface, ciphertext: Data, chained: Bool)
225225
}
226226

227227
func decryptPassword(deciphered: Data, ciphertext: Data) throws -> String {
228-
let message = CryptoNewPGPMessage(ciphertext)
228+
let message = createPGPMessage(from: ciphertext)
229229

230230
guard let algoByte = deciphered.first, let algo = symmetricKeyIDNameDict[algoByte] else {
231231
throw AppError.yubiKey(.decipher(message: "Failed to new session key."))

passKit/Crypto/GopenPGPInterface.swift

+9-9
Original file line numberDiff line numberDiff line change
@@ -147,15 +147,15 @@ struct GopenPGPInterface: PGPInterface {
147147
var shortKeyID: [String] {
148148
publicKeys.keys.map { $0.suffix(8).uppercased() }
149149
}
150+
}
150151

151-
private func createPGPMessage(from encryptedData: Data) -> CryptoPGPMessage? {
152-
// Important note:
153-
// Even if Defaults.encryptInArmored is true now, it could be different during the encryption.
154-
var error: NSError?
155-
let message = CryptoNewPGPMessageFromArmored(String(data: encryptedData, encoding: .ascii), &error)
156-
if error == nil {
157-
return message
158-
}
159-
return CryptoNewPGPMessage(encryptedData.mutable as Data)
152+
public func createPGPMessage(from encryptedData: Data) -> CryptoPGPMessage? {
153+
// Important note:
154+
// Even if Defaults.encryptInArmored is true now, it could be different during the encryption.
155+
var error: NSError?
156+
let message = CryptoNewPGPMessageFromArmored(String(data: encryptedData, encoding: .ascii), &error)
157+
if error == nil {
158+
return message
160159
}
160+
return CryptoNewPGPMessage(encryptedData.mutable as Data)
161161
}

0 commit comments

Comments
 (0)