diff --git a/passKit/Crypto/GopenPgp.swift b/passKit/Crypto/GopenPgp.swift index a7a7a0b..0a4b34d 100644 --- a/passKit/Crypto/GopenPgp.swift +++ b/passKit/Crypto/GopenPgp.swift @@ -19,11 +19,16 @@ struct GopenPgp: PgpInterface { private let privateKey: CryptoKeyRing init(publicArmoredKey: String, privateArmoredKey: String) throws { - guard let pgp = CryptoGetGopenPGP() else { + var error: NSError? + guard let publicKey = CryptoBuildKeyRingArmored(publicArmoredKey, &error), + let privateKey = CryptoBuildKeyRingArmored(privateArmoredKey, &error) else { throw AppError.KeyImport } - publicKey = try pgp.buildKeyRingArmored(publicArmoredKey) - privateKey = try pgp.buildKeyRingArmored(privateArmoredKey) + guard error == nil else { + throw error! + } + self.publicKey = publicKey + self.privateKey = privateKey } func decrypt(encryptedData: Data, passphrase: String) throws -> Data? { diff --git a/passKitTests/Crypto/CryptoFrameworkTest.swift b/passKitTests/Crypto/CryptoFrameworkTest.swift index c5eea85..c4e6388 100644 --- a/passKitTests/Crypto/CryptoFrameworkTest.swift +++ b/passKitTests/Crypto/CryptoFrameworkTest.swift @@ -42,10 +42,13 @@ class CryptoFrameworkTest: XCTestCase { ED25519, ED25519_SUB, ].forEach { keyTriple in - let pgp = CryptoGetGopenPGP()! - let publicKey = try pgp.buildKeyRingArmored(keyTriple.publicKey) - let privateKey = try pgp.buildKeyRingArmored(keyTriple.privateKey) var error: NSError? + guard let publicKey = CryptoBuildKeyRingArmored(keyTriple.publicKey, &error), + let privateKey = CryptoBuildKeyRingArmored(keyTriple.privateKey, &error) else { + XCTFail("Keys cannot be initialized.") + return + } + XCTAssertNil(error) XCTAssert(publicKey.getFingerprint(&error).hasSuffix(keyTriple.fingerprint)) XCTAssertNil(error)