diff --git a/config.el b/config.el index 73bff49..01ae3f6 100644 --- a/config.el +++ b/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."