1
0
mirror of https://github.com/docker/docker-credential-helpers.git synced 2026-06-13 16:01:28 +05:30

Implemented list functionality for secretservice- linux

Signed-off-by: Avi Vaid <avaid1996@gmail.com>
This commit is contained in:
Avi Vaid
2016-07-11 19:33:35 -04:00
parent 5a8fb214ed
commit 72661b3103
5 changed files with 70 additions and 2 deletions
+23
View File
@@ -78,3 +78,26 @@ func (h Secretservice) Get(serverURL string) (string, string, error) {
}
return user, pass, nil
}
func (h Secretservice) List() ([]string, []string, error) {
var pathsC **C.char
defer C.free(unsafe.Pointer(pathsC))
var acctsC **C.char
defer C.free(unsafe.Pointer(acctsC))
var listLenC C.uint
err := C.list(&pathsC, &acctsC, &listLenC)
if err != nil {
defer C.free(unsafe.Pointer(err))
return nil, nil, errors.New("Error from list function in secretservice_linux.c likely due to error in secretservice library")
}
listLen := int(listLenC)
pathTmp := (*[1 << 30]*C.char)(unsafe.Pointer(pathsC))[:listLen:listLen]
acctTmp := (*[1 << 30]*C.char)(unsafe.Pointer(acctsC))[:listLen:listLen]
paths := make([]string, listLen)
accts := make([]string, listLen)
for i := 0; i < listLen; i++ {
paths[i] = C.GoString(pathTmp[i])
accts[i] = C.GoString(acctTmp[i])
}
return paths, accts, nil
}