package git /* #include #include */ import "C" import ( "unsafe" "runtime" ) type CredType uint const ( CredTypeUserpassPlaintext CredType = C.GIT_CREDTYPE_USERPASS_PLAINTEXT CredTypeSshKey = C.GIT_CREDTYPE_SSH_KEY CredTypeSshCustom = C.GIT_CREDTYPE_SSH_CUSTOM CredTypeDefault = C.GIT_CREDTYPE_DEFAULT ) type Cred struct { ptr *C.git_cred } func (o *Cred) HasUsername() bool { return C.git_cred_has_username(o.ptr) != 0 } func (o *Cred) Type() CredType { return CredType(o.ptr.credtype) } func credFromC(ptr *C.git_cred) *Cred { return &Cred{ptr} } func NewCredUserpassPlaintext(username string, password string) (*Cred, error) { cred := Cred{} cusername := C.CString(username) defer C.free(unsafe.Pointer(cusername)) cpassword := C.CString(password) defer C.free(unsafe.Pointer(cpassword)) runtime.LockOSThread() defer runtime.UnlockOSThread() ret := C.git_cred_userpass_plaintext_new(&cred.ptr, cusername, cpassword) if ret < 0 { return nil, MakeGitError(ret) } return &cred, nil } func NewCredSshKey(username, publickey, privatekey, passphrase string) (*Cred, error) { 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)) runtime.LockOSThread() defer runtime.UnlockOSThread() ret := C.git_cred_ssh_key_new(&cred.ptr, cusername, cpublickey, cprivatekey, cpassphrase) if ret < 0 { return nil, MakeGitError(ret) } return &cred, nil } func NewCredSshKeyFromAgent(username string) (*Cred, error) { cred := Cred{} cusername := C.CString(username) defer C.free(unsafe.Pointer(cusername)) runtime.LockOSThread() defer runtime.UnlockOSThread() ret := C.git_cred_ssh_key_from_agent(&cred.ptr, cusername) if ret < 0 { return nil, MakeGitError(ret) } return &cred, nil } func NewCredDefault() (*Cred, error) { cred := Cred{} runtime.LockOSThread() defer runtime.UnlockOSThread() ret := C.git_cred_default_new(&cred.ptr) if ret < 0 { return nil, MakeGitError(ret) } return &cred, nil }