From f8c0c7453176f834e0ab6cfebd1a22a3c28572cc Mon Sep 17 00:00:00 2001 From: Daneel Date: Tue, 24 Feb 2026 19:47:14 +0100 Subject: [PATCH] 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. --- config.el | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) 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."