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 {
|
public enum Credentials {
|
||||||
case `default`
|
case `default`
|
||||||
|
case sshAgent
|
||||||
case plaintext(username: String, password: String)
|
case plaintext(username: String, password: String)
|
||||||
case sshMemory(username: String, publicKey: String, privateKey: String, passphrase: 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.
|
/// 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,
|
/// Converts the result to the correct error code required by libgit2 (0 = success, 1 = rejected setting creds,
|
||||||
/// -1 = error)
|
/// -1 = error)
|
||||||
internal func credentialsCallback(cred: UnsafeMutablePointer<UnsafeMutablePointer<git_cred>?>?, _: UnsafePointer<Int8>?,
|
internal func credentialsCallback(
|
||||||
_: UnsafePointer<Int8>?, _: UInt32, payload: UnsafeMutableRawPointer?) -> Int32 {
|
cred: UnsafeMutablePointer<UnsafeMutablePointer<git_cred>?>?,
|
||||||
|
url: UnsafePointer<CChar>?,
|
||||||
|
username: UnsafePointer<CChar>?,
|
||||||
|
_: UInt32,
|
||||||
|
payload: UnsafeMutableRawPointer? ) -> Int32 {
|
||||||
|
|
||||||
let result: Int32
|
let result: Int32
|
||||||
|
|
||||||
|
// Find username_from_url
|
||||||
|
let name = username.map(String.init(cString:))
|
||||||
|
|
||||||
switch Credentials.fromPointer(payload!) {
|
switch Credentials.fromPointer(payload!) {
|
||||||
case .default:
|
case .default:
|
||||||
result = git_cred_default_new(cred)
|
result = git_cred_default_new(cred)
|
||||||
|
case .sshAgent:
|
||||||
|
result = git_cred_ssh_key_from_agent(cred, name!)
|
||||||
case .plaintext(let username, let password):
|
case .plaintext(let username, let password):
|
||||||
result = git_cred_userpass_plaintext_new(cred, username, password)
|
result = git_cred_userpass_plaintext_new(cred, username, password)
|
||||||
case .sshMemory(let username, let publicKey, let privateKey, let passphrase):
|
case .sshMemory(let username, let publicKey, let privateKey, let passphrase):
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user