fix(org-caldav): use url-digest-auth-storage with HA1 hash for Baikal Digest auth
url-digest-auth-user-pass does not exist. Correct var is url-digest-auth-storage which stores HA1 = MD5(user:realm:pass), not plaintext password.
This commit is contained in:
17
config.el
17
config.el
@@ -1747,17 +1747,24 @@ current frame."
|
||||
;; Baikal uses Digest auth. Pre-register credentials from ~/.authinfo
|
||||
;; so Emacs url package doesn't prompt interactively.
|
||||
(defun my/caldav-setup-digest-auth ()
|
||||
"Load Digest auth credentials for Baikal from auth-source (~/.authinfo)."
|
||||
"Load Digest auth credentials for Baikal from auth-source (~/.authinfo).
|
||||
Baikal uses Digest auth. url-digest-auth-storage stores HA1 = MD5(user:realm:pass)."
|
||||
(require 'url-auth)
|
||||
(let* ((found (car (auth-source-search :host "cal.apps.sukany.cz"
|
||||
:user "martin" :max 1)))
|
||||
(pass (when found
|
||||
(let ((s (plist-get found :secret)))
|
||||
(if (functionp s) (funcall s) s)))))
|
||||
(if (functionp s) (funcall s) s))))
|
||||
(user "martin")
|
||||
(realm "BaikalDAV")
|
||||
(server "cal.apps.sukany.cz:443"))
|
||||
(when pass
|
||||
(add-to-list 'url-digest-auth-user-pass
|
||||
(cons (cons "cal.apps.sukany.cz" "BaikalDAV")
|
||||
(cons "martin" pass))))))
|
||||
(let ((ha1 (md5 (concat user ":" realm ":" pass)))
|
||||
(existing (assoc server url-digest-auth-storage)))
|
||||
(if existing
|
||||
(setcdr existing (list (cons realm ha1)))
|
||||
(push (list server (cons realm ha1))
|
||||
url-digest-auth-storage))))))
|
||||
|
||||
(defun my/org-caldav-sync ()
|
||||
"Sync org-caldav after pre-registering Baikal Digest auth."
|
||||
|
||||
Reference in New Issue
Block a user