diff --git a/passKitTests/Crypto/CryptoFrameworkTest.swift b/passKitTests/Crypto/CryptoFrameworkTest.swift index 0d584ea..d41308a 100644 --- a/passKitTests/Crypto/CryptoFrameworkTest.swift +++ b/passKitTests/Crypto/CryptoFrameworkTest.swift @@ -38,8 +38,9 @@ class CryptoFrameworkTest: XCTestCase { private func testInternal(plainMessage: CryptoPlainMessage?, messageConverter: MessageConverter) throws { try [ RSA2048, - RSA4096, RSA2048_SUB, + RSA4096, + RSA4096_SUB, ED25519, ED25519_SUB, ].forEach { keyTriple in diff --git a/passKitTests/Crypto/PGPAgentTest.swift b/passKitTests/Crypto/PGPAgentTest.swift index 94a8276..ae8bd84 100644 --- a/passKitTests/Crypto/PGPAgentTest.swift +++ b/passKitTests/Crypto/PGPAgentTest.swift @@ -41,8 +41,9 @@ class PGPAgentTest: XCTestCase { func testBasicEncryptDecrypt() throws { try [ RSA2048, - RSA4096, RSA2048_SUB, + RSA4096, + RSA4096_SUB, ED25519, ED25519_SUB, ].forEach { keyTriple in diff --git a/passKitTests/Models/PasswordStoreTest.swift b/passKitTests/Models/PasswordStoreTest.swift index acf2e28..82529eb 100644 --- a/passKitTests/Models/PasswordStoreTest.swift +++ b/passKitTests/Models/PasswordStoreTest.swift @@ -12,25 +12,25 @@ import ObjectiveGit @testable import passKit class PasswordStoreTest: XCTestCase { -// let cloneOptions: [String : GTCredentialProvider] = { -// let credentialProvider = GTCredentialProvider { (_, _, _) -> (GTCredential?) in -// try? GTCredential(userName: "", password: "") -// } -// return [GTRepositoryCloneOptionsCredentialProvider: credentialProvider] -// }() -// let remoteRepoURL = URL(string: "git://localhost/")! -// -// func testClone() throws { -// let url = URL(fileURLWithPath: "\(Globals.repositoryPath)-test") -// let passwordStore = PasswordStore(url: url) -// -// try passwordStore.cloneRepository( -// remoteRepoURL: remoteRepoURL, -// options: cloneOptions, -// branchName: "master", -// transferProgressBlock: { _, _ in }, -// checkoutProgressBlock: { _, _, _ in } -// ) -// passwordStore.erase() -// } + let cloneOptions: [String : GTCredentialProvider] = { + let credentialProvider = GTCredentialProvider { (_, _, _) -> (GTCredential?) in + try? GTCredential(userName: "", password: "") + } + return [GTRepositoryCloneOptionsCredentialProvider: credentialProvider] + }() + let remoteRepoURL = URL(string: "https://github.com/mssun/passforios-password-store.git")! + + func testClone() throws { + let url = URL(fileURLWithPath: "\(Globals.repositoryPath)-test") + let passwordStore = PasswordStore(url: url) + + try passwordStore.cloneRepository( + remoteRepoURL: remoteRepoURL, + options: cloneOptions, + branchName: "master", + transferProgressBlock: { _, _ in }, + checkoutProgressBlock: { _, _, _ in } + ) + passwordStore.erase() + } } diff --git a/passKitTests/Testbase/TestPGPKeys.swift b/passKitTests/Testbase/TestPGPKeys.swift index 2fcaa7f..3a1f5ee 100644 --- a/passKitTests/Testbase/TestPGPKeys.swift +++ b/passKitTests/Testbase/TestPGPKeys.swift @@ -36,6 +36,12 @@ let RSA4096 = PGPKeyTestTriple( fingerprint: "d862027e" ) +let RSA4096_SUB = PGPKeyTestTriple( + publicKey: PGP_RSA4096_PUBLIC_KEY, + privateKey: PGP_RSA4096_PRIVATE_SUBKEY, + fingerprint: "d862027e" +) + let ED25519 = PGPKeyTestTriple( publicKey: PGP_ED25519_PUBLIC_KEY, privateKey: PGP_ED25519_PRIVATE_KEY, @@ -360,6 +366,89 @@ VFOhGxQwNgv9665cH9/3W6STnUiM7V9RkG93OALOLxdTghESA61HRg== -----END PGP PRIVATE KEY BLOCK----- """ +let PGP_RSA4096_PRIVATE_SUBKEY = """ +-----BEGIN PGP PRIVATE KEY BLOCK----- + +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 +ghESA61HRg== +=DFUr +-----END PGP PRIVATE KEY BLOCK----- +""" + let PGP_ED25519_PUBLIC_KEY = """ -----BEGIN PGP PUBLIC KEY BLOCK-----