-
Notifications
You must be signed in to change notification settings - Fork 163
Open
Description
I would like to prompt the user for a password during encrypted file creation, but using FixedStringPrompt does not do so. Using TerminalPrompt does not work as it causes an error "multiple-value keyring.TerminalPrompt("Please select a password") (value of type (string, error)) in single-value context"
func SetFileStore(fileSaveDir *C.char, fileName *C.char, data *C.char) *C.char {
saveDir := C.GoString(fileSaveDir)
// saveDir, _ := os.Getwd()
ring, openErr := keyring.Open(keyring.Config{
AllowedBackends: []keyring.BackendType{"file"},
FilePasswordFunc: keyring.FixedStringPrompt("Please select a password"),
FileDir: saveDir,
})
if openErr != nil {
openErrStr := string(openErr.Error())
returnErrStr := (*C.char)(C.CString(openErrStr))
defer C.free(unsafe.Pointer(returnErrStr))
return returnErrStr
}
dataStr := C.GoString(data)
fileNameStr := C.GoString(fileName)
setErr := ring.Set(keyring.Item{
Key: fileNameStr,
Data: []byte(dataStr),
})
if setErr != nil {
errStr := string(setErr.Error())
returnErrStr := (*C.char)(C.CString(errStr))
defer C.free(unsafe.Pointer(returnErrStr))
return returnErrStr
}
fileItem, getErr := ring.Get(fileNameStr)
if getErr != nil {
errStr := string(getErr.Error())
returnErrStr := (*C.char)(C.CString(errStr))
defer C.free(unsafe.Pointer(returnErrStr))
return returnErrStr
}
if string(fileItem.Data) != dataStr {
returnErrStr := (*C.char)(C.CString("File was not found"))
defer C.free(unsafe.Pointer(returnErrStr))
return returnErrStr
}
result := (*C.char)(C.CString(""))
defer C.free(unsafe.Pointer(result))
return result
}
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels