MCPcopy Create free account
hub / github.com/libgit2/git2go / getSSHConfigFromCredential

Function getSSHConfigFromCredential

ssh.go:204–250  ·  view source on GitHub ↗
(cred *Credential)

Source from the content-addressed store, hash-verified

202}
203
204func getSSHConfigFromCredential(cred *Credential) (*ssh.ClientConfig, error) {
205 switch cred.Type() {
206 case CredentialTypeSSHCustom:
207 credSSHCustom := (*C.git_credential_ssh_custom)(unsafe.Pointer(cred.ptr))
208 data, ok := pointerHandles.Get(credSSHCustom.payload).(*credentialSSHCustomData)
209 if !ok {
210 return nil, errors.New("unsupported custom SSH credentials")
211 }
212 return &ssh.ClientConfig{
213 User: C.GoString(credSSHCustom.username),
214 Auth: []ssh.AuthMethod{ssh.PublicKeys(data.signer)},
215 }, nil
216 }
217
218 username, _, privatekey, passphrase, err := cred.GetSSHKey()
219 if err != nil {
220 return nil, err
221 }
222
223 var pemBytes []byte
224 if cred.Type() == CredentialTypeSSHMemory {
225 pemBytes = []byte(privatekey)
226 } else {
227 pemBytes, err = ioutil.ReadFile(privatekey)
228 if err != nil {
229 return nil, err
230 }
231 }
232
233 var key ssh.Signer
234 if passphrase != "" {
235 key, err = ssh.ParsePrivateKeyWithPassphrase(pemBytes, []byte(passphrase))
236 if err != nil {
237 return nil, err
238 }
239 } else {
240 key, err = ssh.ParsePrivateKey(pemBytes)
241 if err != nil {
242 return nil, err
243 }
244 }
245
246 return &ssh.ClientConfig{
247 User: username,
248 Auth: []ssh.AuthMethod{ssh.PublicKeys(key)},
249 }, nil
250}

Callers 1

ActionMethod · 0.85

Calls 3

GetMethod · 0.80
GetSSHKeyMethod · 0.80
TypeMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…