summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Calavera <[email protected]>2016-06-22 14:47:53 -0700
committerDavid Calavera <[email protected]>2016-06-22 14:50:29 -0700
commita2f93e91d253d9ac29e666fd7d3d9508a2b23134 (patch)
treed7ae4578bc8720b424328b2fed450ceea1ed55ee
parent8eaae73f85dd3df78df80d2dac066eb0866444ae (diff)
Add NewCredSshKeyFromMemory to the credentials helpers.
Allowing to use public and private keys from memory without reading them from disk and without using an ssh agent. Signed-off-by: David Calavera <[email protected]>
-rw-r--r--credentials.go24
1 files changed, 21 insertions, 3 deletions
diff --git a/credentials.go b/credentials.go
index bb0ec41..4e42b6e 100644
--- a/credentials.go
+++ b/credentials.go
@@ -44,13 +44,15 @@ func NewCredUserpassPlaintext(username string, password string) (int, Cred) {
return int(ret), cred
}
-func NewCredSshKey(username string, publickey string, privatekey string, passphrase string) (int, Cred) {
+// NewCredSshKey creates new ssh credentials reading the public and private keys
+// from the file system.
+func NewCredSshKey(username string, publicKeyPath string, privateKeyPath string, passphrase string) (int, Cred) {
cred := Cred{}
cusername := C.CString(username)
defer C.free(unsafe.Pointer(cusername))
- cpublickey := C.CString(publickey)
+ cpublickey := C.CString(publicKeyPath)
defer C.free(unsafe.Pointer(cpublickey))
- cprivatekey := C.CString(privatekey)
+ cprivatekey := C.CString(privateKeyPath)
defer C.free(unsafe.Pointer(cprivatekey))
cpassphrase := C.CString(passphrase)
defer C.free(unsafe.Pointer(cpassphrase))
@@ -58,6 +60,22 @@ func NewCredSshKey(username string, publickey string, privatekey string, passphr
return int(ret), cred
}
+// NewCredSshKeyFromMemory creates new ssh credentials using the publicKey and privateKey
+// arguments as the values for the public and private keys.
+func NewCredSshKeyFromMemory(username string, publicKey string, privateKey string, passphrase string) (int, Cred) {
+ cred := Cred{}
+ cusername := C.CString(username)
+ defer C.free(unsafe.Pointer(cusername))
+ cpublickey := C.CString(publicKey)
+ defer C.free(unsafe.Pointer(cpublickey))
+ cprivatekey := C.CString(privateKey)
+ defer C.free(unsafe.Pointer(cprivatekey))
+ cpassphrase := C.CString(passphrase)
+ defer C.free(unsafe.Pointer(cpassphrase))
+ ret := C.git_cred_ssh_key_memory_new(&cred.ptr, cusername, cpublickey, cprivatekey, cpassphrase)
+ return int(ret), cred
+}
+
func NewCredSshKeyFromAgent(username string) (int, Cred) {
cred := Cred{}
cusername := C.CString(username)