mirror of
https://github.com/gosticks/SwiftGit2.git
synced 2025-10-16 11:55:34 +00:00
Merge pull request #101 from jakeva/add-agent-auth
add ssh agent authentication
This commit is contained in:
commit
c5eb8036d0
@ -18,6 +18,7 @@ private class Wrapper<T> {
|
||||
|
||||
public enum Credentials {
|
||||
case `default`
|
||||
case sshAgent
|
||||
case plaintext(username: String, password: String)
|
||||
case sshMemory(username: String, publicKey: String, privateKey: String, passphrase: String)
|
||||
|
||||
@ -33,13 +34,23 @@ public enum Credentials {
|
||||
/// Handle the request of credentials, passing through to a wrapped block after converting the arguments.
|
||||
/// Converts the result to the correct error code required by libgit2 (0 = success, 1 = rejected setting creds,
|
||||
/// -1 = error)
|
||||
internal func credentialsCallback(cred: UnsafeMutablePointer<UnsafeMutablePointer<git_cred>?>?, _: UnsafePointer<Int8>?,
|
||||
_: UnsafePointer<Int8>?, _: UInt32, payload: UnsafeMutableRawPointer?) -> Int32 {
|
||||
internal func credentialsCallback(
|
||||
cred: UnsafeMutablePointer<UnsafeMutablePointer<git_cred>?>?,
|
||||
url: UnsafePointer<CChar>?,
|
||||
username: UnsafePointer<CChar>?,
|
||||
_: UInt32,
|
||||
payload: UnsafeMutableRawPointer? ) -> Int32 {
|
||||
|
||||
let result: Int32
|
||||
|
||||
// Find username_from_url
|
||||
let name = username.map(String.init(cString:))
|
||||
|
||||
switch Credentials.fromPointer(payload!) {
|
||||
case .default:
|
||||
result = git_cred_default_new(cred)
|
||||
case .sshAgent:
|
||||
result = git_cred_ssh_key_from_agent(cred, name!)
|
||||
case .plaintext(let username, let password):
|
||||
result = git_cred_userpass_plaintext_new(cred, username, password)
|
||||
case .sshMemory(let username, let publicKey, let privateKey, let passphrase):
|
||||
|
||||
Loading…
Reference in New Issue
Block a user