[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#15520: 24.3; secrets.el secrets-create-item has wrong dbus arguments
From: |
Nicolas Petton |
Subject: |
bug#15520: 24.3; secrets.el secrets-create-item has wrong dbus arguments (fix included) |
Date: |
Wed, 02 Oct 2013 19:20:06 +0200 |
In secrets.el, secrets-create-item has the wrong label property for the
created item, and the secret struct is not built correctly.
Here's a new version that fixes the issue.
(defun secrets-create-item (collection item password &rest attributes)
"Create a new item in COLLECTION with label ITEM and password
PASSWORD.
ATTRIBUTES are key-value pairs set for the created item. The
keys are keyword symbols, starting with a colon. Example:
\(secrets-create-item \"Tramp collection\" \"item\" \"geheim\"
:method \"sudo\" :user \"joe\" :host \"remote-host\"\)
The object path of the created item is returned."
(unless (member item (secrets-list-items collection))
(let ((collection-path (secrets-unlock-collection collection))
result props)
(unless (secrets-empty-path collection-path)
;; Create attributes list.
(while (consp (cdr attributes))
(unless (keywordp (car attributes))
(error 'wrong-type-argument (car attributes)))
(setq props (add-to-list
'props
(list :dict-entry
(substring (symbol-name (car attributes)) 1)
(cadr attributes))
'append)
attributes (cddr attributes)))
;; Create the item.
(setq result
(dbus-call-method
:session secrets-service collection-path
secrets-interface-collection "CreateItem"
;; Properties.
(append
`(:array
(:dict-entry "org.freedesktop.Secret.Item.Label" (:variant
,item)))
(when props
`((:dict-entry
"org.freedesktop.Secret.Item.Attributes" (:variant ,(append
'(:array) props))))))
;; Secret.
`(:struct :object-path ,secrets-session-path
,(dbus-string-to-byte-array "")
,(dbus-string-to-byte-array password)
"text/plain")
;; Do not replace. Replace does not seem to work.
nil))
(secrets-prompt (cadr result))
;; Return the object path.
(car result)))))
- bug#15520: 24.3; secrets.el secrets-create-item has wrong dbus arguments (fix included),
Nicolas Petton <=