summaryrefslogtreecommitdiff
path: root/credentials.go
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 /credentials.go
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]>
Diffstat (limited to 'credentials.go')
-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)