From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Xiyue Deng Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 30 Jul 2024 02:20:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 72358@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.172230599919655 (code B ref -1); Tue, 30 Jul 2024 02:20:01 +0000 Received: (at submit) by debbugs.gnu.org; 30 Jul 2024 02:19:59 +0000 Received: from localhost ([127.0.0.1]:46443 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sYcSx-00056r-Np for submit@debbugs.gnu.org; Mon, 29 Jul 2024 22:19:59 -0400 Received: from lists.gnu.org ([209.51.188.17]:34568) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sYcSs-00056g-N4 for submit@debbugs.gnu.org; Mon, 29 Jul 2024 22:19:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sYcSe-0002je-UD for bug-gnu-emacs@gnu.org; Mon, 29 Jul 2024 22:19:36 -0400 Received: from mail-qv1-xf30.google.com ([2607:f8b0:4864:20::f30]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1sYcSa-00069r-2d for bug-gnu-emacs@gnu.org; Mon, 29 Jul 2024 22:19:36 -0400 Received: by mail-qv1-xf30.google.com with SMTP id 6a1803df08f44-6b7a8cada97so19967756d6.3 for ; Mon, 29 Jul 2024 19:19:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1722305970; x=1722910770; darn=gnu.org; h=mime-version:message-id:date:subject:to:from:from:to:cc:subject :date:message-id:reply-to; bh=VQfVwWr3cwKivU35g3L04BA2GjxpnswiRkL9hoeoZgM=; b=YqcCfoT4HjgEDE949dKQ2qmeYzFZqVUKg9+tOpbhFpcRnamk4UIBaQ47JU+8Vt0Nhi ewLadtkOdqr+1auaiw3FpDRNz4WtUQpvHX6D8fUHiFX0y8gizklFbDKoTLYazghWgKdF ENqBkkofGzIuS8y8Wf2JTs9BaDRRPTTe+b9vuKZe/VVA9MRknZif5ROR84eFAQ3vi+ug uHnSM9cxCcFV+qSQfiT83EhujI3jdLpv/aOWJZz/BHYthtJX7bkbs39JqylyIk3icK4X jJeY9HUBjaamD6d8tN28kdrh+/qy9UJUUds2Wd5g1mDTdxLqTt4xm0/DeQEuriny7Ygo w7gQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722305970; x=1722910770; h=mime-version:message-id:date:subject:to:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=VQfVwWr3cwKivU35g3L04BA2GjxpnswiRkL9hoeoZgM=; b=KQ9qe7+xF4Ups04vRbLwEuTJO1Kv6WVO9ddc4JXXZ2B89YA1JOSsz2yfrRxB9z3WXD DrUpyM6hpJBToZY/9+qT3O3/SKK6OIS7tftALlTDmzGOVHEqiS+NQhggDe2DSShHe6GJ 3XbiN7+Y5XC9x6/vmeIgdRb/xYysSFqE9NONXJx7U8r8y3QLWjCNHgok2l/RK5XUVVyb G21Wz632syDJ0YOKeSVxqiGn4Lp9MGVrfIyHGI3EBM49ftM7lUnLZI2anReXVORCt4bU ywogJOmfaxzI+2apUM+1Ta2M5xifU9Y+31Xdq7XcQSt6cKyRaY94QaTd6RzokNG6BNqn Iwhg== X-Gm-Message-State: AOJu0YxEIYCPpZcdOdQOplpTFtYvGaKdh1D8Hx7DHOgUO05c+CRIiduU F9a36d/KDotkY7hK94+CkM3+q3qfMTX5dsotg6tHbCXPXcWJOLFCRDDlm1QChQqoSQ== X-Google-Smtp-Source: AGHT+IGZXboXiiVOS8VlBLMJJu9OT3lwGGAV/EkvaOtUWvL3mQxjci51t6Qk9Vf8dQst32jAUUdb1w== X-Received: by 2002:a17:90a:5e4c:b0:2c9:9b16:e004 with SMTP id 98e67ed59e1d1-2cf7e87e1efmr6884324a91.43.1722301923006; Mon, 29 Jul 2024 18:12:03 -0700 (PDT) Received: from debian-hx90 ([2603:8000:a400:cdc:d52f:6b4b:2d07:ca62]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2cf28ca6228sm9218012a91.34.2024.07.29.18.12.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Jul 2024 18:12:02 -0700 (PDT) From: Xiyue Deng Date: Mon, 29 Jul 2024 14:25:01 -0700 Message-ID: <87mslz8yzk.fsf@debian-hx90.lan> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Received-SPF: pass client-ip=2607:f8b0:4864:20::f30; envelope-from=manphiz@gmail.com; helo=mail-qv1-xf30.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_03_06=1.592, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: -0.3 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.3 (-) --=-=-= Content-Type: text/plain Hi, I have been trying out using oauth2.el to enable OAuth2-based authentication for email service providers and had some success for Gmail. During this process, I have made a few changes to oauth2.el that enables it to use with Gmail OAuth2 as well as some usability and debugging improvements, which I'm sharing below. This is a series of five patches, which are attached. The first patch shows the authentication URL in the minibuffer window alongside the prompt accepting the authorization code. This helps when a user has multiple accounts from the same provider but is logged into a different account than the one that the user is trying to set up. If the user use the link (or through `browse-url') it will use the active account instead of the one intended. By showing the URL in the minibuffer, the user can choose other ways to get the authorization code (e.g. using another browser, using private/encognito mode, etc.) The second patch adds the parameters `access_type=offline' and `prompt=consent' to the authorization URL, which is required for Gmail OAuth2 to get the refresh token. Without these 2 parameters, Gmail response will only contain the access token which expires in one hour. They should also be compatible with other OAuth2 authentication process. (Though I am currently having trouble to get outlook.com to work regardless of these parameters, which I'll ask in a separate thread.) Note that the second patch depends on the first patch as they modify the same part of the code. The third patch encodes the parameters for requesting refreshing access token, which is recommended because the client secret and other parameters may contain characters that may break parameter parsing. The fourth patch may need a bit of background: oauth2.el (optionally) uses plstore to save authentication data for future reuse, and the plstore id for an account is computed using a combination of `auth-url', `token-url', and `scope'. However, this combination of data doesn't guarantee uniqueness for accounts for a same provider, e.g. for Gmail, the three parameters are the same for different accounts, and hence storing a second account information will override the first one. This fourth patch adds `client-id' to the calculation of plstore id to ensure its uniqueness. This may cause a few concerns: - This will invalidate all existing entries and a user will have to redo the authorization process again to get a new refresh token. However, I think it's more important to ensure that oauth2.el works correctly for multiple accounts of the same provider, or a user may suffer from confusion when adding a new account invalidates a previous account. - Adding `client-id' to the calculation of plstore id may provoke suspicion of leaking it as the hash calculation uses md5. In most cases, requesting a refresh token requires both `client-id' and `client-secret', so without including the latter it should be safe. There are cases when requesting only the access token may work with `client-id' along. Still, I think this should not be a big concern as the data is combined with `auth-url', `token-url', and `scope' which provides sufficient salt. Alternatively, we can also choose to use a more secure hash function, e.g. SHA2 or better, given that existing entries will be invalidated anyway. The fifth patch adds debug messages when doing a URL query which records the request URL, the request data, and the response data, and provide a custom variable to enable this. This provides a way to help debugging the requests, and I find it handy when testing oauth2 against different providers. Please review and comment. TIA! In GNU Emacs 29.4 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.38, cairo version 1.16.0) of 2024-07-02, modified by Debian built on debian-hx90 System Description: Debian GNU/Linux 12 (bookworm) Configured using: 'configure --build x86_64-linux-gnu --prefix=/usr --sharedstatedir=/var/lib --libexecdir=/usr/libexec --localstatedir=/var/lib --infodir=/usr/share/info --mandir=/usr/share/man --with-libsystemd --with-pop=yes --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/29.4/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/29.4/site-lisp:/usr/share/emacs/site-lisp --with-sound=alsa --without-gconf --with-mailutils --with-native-compilation --build x86_64-linux-gnu --prefix=/usr --sharedstatedir=/var/lib --libexecdir=/usr/libexec --localstatedir=/var/lib --infodir=/usr/share/info --mandir=/usr/share/man --with-libsystemd --with-pop=yes --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/29.4/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/29.4/site-lisp:/usr/share/emacs/site-lisp --with-sound=alsa --without-gconf --with-mailutils --with-native-compilation --with-cairo --with-x=yes --with-x-toolkit=gtk3 --with-toolkit-scroll-bars 'CFLAGS=-g -O2 -ffile-prefix-map=/build/emacs-UNWIcy/emacs-29.4+1=. -fstack-protector-strong -Wformat -Werror=format-security -Wall' 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2' LDFLAGS=-Wl,-z,relro' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: VTerm Minor modes in effect: global-git-commit-mode: t magit-auto-revert-mode: t shell-dirtrack-mode: t mu4e-modeline-mode: t windmove-mode: t rcirc-track-minor-mode: t server-mode: t xclip-mode: t global-treesit-auto-mode: t treemacs-project-follow-mode: t treemacs-follow-mode: t treemacs-git-mode: t treemacs-fringe-indicator-mode: t corfu-terminal-mode: t corfu-popupinfo-mode: t corfu-echo-mode: t global-corfu-mode: t corfu-mode: t activities-tabs-mode: t activities-mode: t fido-vertical-mode: t icomplete-vertical-mode: t icomplete-mode: t fido-mode: t override-global-mode: t global-display-line-numbers-mode: t display-line-numbers-mode: t global-auto-revert-mode: t tooltip-mode: t global-eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t tool-bar-mode: t tab-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t buffer-read-only: t column-number-mode: t line-number-mode: t transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t Load-path shadows: /usr/share/emacs/site-lisp/elpa/debian-el-37.16/debian-autoloads hides /usr/share/emacs/site-lisp/elpa/gnuplot-0.8.1/debian-autoloads /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-section hides /usr/share/emacs/site-lisp/elpa/magit-section-3.3.0/magit-section /usr/share/emacs/site-lisp/elpa/ace-window-0.10.0/ace-window-autoloads hides /usr/share/emacs/site-lisp/elpa-src/ace-window-0.10.0/ace-window-autoloads /usr/share/emacs/site-lisp/elpa/ace-window-0.10.0/ace-window-pkg hides /usr/share/emacs/site-lisp/elpa-src/ace-window-0.10.0/ace-window-pkg /usr/share/emacs/site-lisp/elpa/ace-window-0.10.0/ace-window hides /usr/share/emacs/site-lisp/elpa-src/ace-window-0.10.0/ace-window /usr/share/emacs/site-lisp/elpa/activities-0.7/activities-autoloads hides /usr/share/emacs/site-lisp/elpa-src/activities-0.7/activities-autoloads /usr/share/emacs/site-lisp/elpa/activities-0.7/activities-pkg hides /usr/share/emacs/site-lisp/elpa-src/activities-0.7/activities-pkg /usr/share/emacs/site-lisp/elpa/activities-0.7/activities-list hides /usr/share/emacs/site-lisp/elpa-src/activities-0.7/activities-list /usr/share/emacs/site-lisp/elpa/activities-0.7/activities hides /usr/share/emacs/site-lisp/elpa-src/activities-0.7/activities /usr/share/emacs/site-lisp/elpa/activities-0.7/activities-tabs hides /usr/share/emacs/site-lisp/elpa-src/activities-0.7/activities-tabs /usr/share/emacs/site-lisp/elpa/apache-mode-2.2.0/apache-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/apache-mode-2.2.0/apache-mode-autoloads /usr/share/emacs/site-lisp/elpa/apache-mode-2.2.0/apache-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/apache-mode-2.2.0/apache-mode-pkg /usr/share/emacs/site-lisp/elpa/apache-mode-2.2.0/apache-mode hides /usr/share/emacs/site-lisp/elpa-src/apache-mode-2.2.0/apache-mode /usr/share/emacs/site-lisp/elpa/auctex-13.3/tex-info hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/tex-info /usr/share/emacs/site-lisp/elpa/auctex-13.3/latex-flymake hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/latex-flymake /usr/share/emacs/site-lisp/elpa/auctex-13.3/tex-site hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/tex-site /usr/share/emacs/site-lisp/elpa/auctex-13.3/texmathp hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/texmathp /usr/share/emacs/site-lisp/elpa/auctex-13.3/toolbar-x hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/toolbar-x /usr/share/emacs/site-lisp/elpa/auctex-13.3/tex-style hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/tex-style /usr/share/emacs/site-lisp/elpa/auctex-13.3/tex-font hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/tex-font /usr/share/emacs/site-lisp/elpa/auctex-13.3/tex-jp hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/tex-jp /usr/share/emacs/site-lisp/elpa/auctex-13.3/tex-mik hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/tex-mik /usr/share/emacs/site-lisp/elpa/auctex-13.3/plain-tex hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/plain-tex /usr/share/emacs/site-lisp/elpa/auctex-13.3/tex-fold hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/tex-fold /usr/share/emacs/site-lisp/elpa/auctex-13.3/tex-ispell hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/tex-ispell /usr/share/emacs/site-lisp/elpa/auctex-13.3/tex-bar hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/tex-bar /usr/share/emacs/site-lisp/elpa/auctex-13.3/preview-latex hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/preview-latex /usr/share/emacs/site-lisp/elpa/auctex-13.3/bib-cite hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/bib-cite /usr/share/emacs/site-lisp/elpa/auctex-13.3/preview hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/preview /usr/share/emacs/site-lisp/elpa/auctex-13.3/context-nl hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/context-nl /usr/share/emacs/site-lisp/elpa/auctex-13.3/auto-loads hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/auto-loads /usr/share/emacs/site-lisp/elpa/auctex-13.3/multi-prompt hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/multi-prompt /usr/share/emacs/site-lisp/elpa/auctex-13.3/context-en hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/context-en /usr/share/emacs/site-lisp/elpa/auctex-13.3/lpath hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/lpath /usr/share/emacs/site-lisp/elpa/auctex-13.3/auctex hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/auctex /usr/share/emacs/site-lisp/elpa/auctex-13.3/tex hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/tex /usr/share/emacs/site-lisp/elpa/auctex-13.3/auctex-autoloads hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/auctex-autoloads /usr/share/emacs/site-lisp/elpa/auctex-13.3/font-latex hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/font-latex /usr/share/emacs/site-lisp/elpa/auctex-13.3/auctex-pkg hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/auctex-pkg /usr/share/emacs/site-lisp/elpa/auctex-13.3/context hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/context /usr/share/emacs/site-lisp/elpa/auctex-13.3/latex hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/latex /usr/share/emacs/site-lisp/elpa/auctex-13.3/tex-wizard hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/tex-wizard /usr/share/emacs/site-lisp/elpa/avy-0.5.0/avy hides /usr/share/emacs/site-lisp/elpa-src/avy-0.5.0/avy /usr/share/emacs/site-lisp/elpa/avy-0.5.0/avy-autoloads hides /usr/share/emacs/site-lisp/elpa-src/avy-0.5.0/avy-autoloads /usr/share/emacs/site-lisp/elpa/avy-0.5.0/avy-pkg hides /usr/share/emacs/site-lisp/elpa-src/avy-0.5.0/avy-pkg /usr/share/emacs/site-lisp/elpa/bazel-0/bazel-autoloads hides /usr/share/emacs/site-lisp/elpa-src/bazel-0/bazel-autoloads /usr/share/emacs/site-lisp/elpa/bazel-0/bazel hides /usr/share/emacs/site-lisp/elpa-src/bazel-0/bazel /usr/share/emacs/site-lisp/elpa/bazel-0/test hides /usr/share/emacs/site-lisp/elpa-src/bazel-0/test /usr/share/emacs/site-lisp/elpa/bazel-0/bazel-pkg hides /usr/share/emacs/site-lisp/elpa-src/bazel-0/bazel-pkg /usr/share/emacs/site-lisp/elpa/bison-mode-0.3/bison-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/bison-mode-0.3/bison-mode-pkg /usr/share/emacs/site-lisp/elpa/bison-mode-0.3/bison-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/bison-mode-0.3/bison-mode-autoloads /usr/share/emacs/site-lisp/elpa/bison-mode-0.3/bison-mode hides /usr/share/emacs/site-lisp/elpa-src/bison-mode-0.3/bison-mode /usr/share/emacs/site-lisp/elpa/boxquote-2.3/boxquote hides /usr/share/emacs/site-lisp/elpa-src/boxquote-2.3/boxquote /usr/share/emacs/site-lisp/elpa/boxquote-2.3/boxquote-autoloads hides /usr/share/emacs/site-lisp/elpa-src/boxquote-2.3/boxquote-autoloads /usr/share/emacs/site-lisp/elpa/boxquote-2.3/boxquote-pkg hides /usr/share/emacs/site-lisp/elpa-src/boxquote-2.3/boxquote-pkg /usr/share/emacs/site-lisp/elpa/buttercup-1.26/buttercup-pkg hides /usr/share/emacs/site-lisp/elpa-src/buttercup-1.26/buttercup-pkg /usr/share/emacs/site-lisp/elpa/buttercup-1.26/buttercup hides /usr/share/emacs/site-lisp/elpa-src/buttercup-1.26/buttercup /usr/share/emacs/site-lisp/elpa/buttercup-1.26/buttercup-autoloads hides /usr/share/emacs/site-lisp/elpa-src/buttercup-1.26/buttercup-autoloads /usr/share/emacs/site-lisp/elpa/buttercup-1.26/buttercup-compat hides /usr/share/emacs/site-lisp/elpa-src/buttercup-1.26/buttercup-compat /usr/share/emacs/site-lisp/elpa/cfrs-1.6.0/cfrs-pkg hides /usr/share/emacs/site-lisp/elpa-src/cfrs-1.6.0/cfrs-pkg /usr/share/emacs/site-lisp/elpa/cfrs-1.6.0/cfrs hides /usr/share/emacs/site-lisp/elpa-src/cfrs-1.6.0/cfrs /usr/share/emacs/site-lisp/elpa/cfrs-1.6.0/cfrs-autoloads hides /usr/share/emacs/site-lisp/elpa-src/cfrs-1.6.0/cfrs-autoloads /usr/share/emacs/site-lisp/elpa/clojure-mode-5.19.0/clojure-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/clojure-mode-5.19.0/clojure-mode-pkg /usr/share/emacs/site-lisp/elpa/clojure-mode-5.19.0/clojure-mode hides /usr/share/emacs/site-lisp/elpa-src/clojure-mode-5.19.0/clojure-mode /usr/share/emacs/site-lisp/elpa/clojure-mode-5.19.0/clojure-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/clojure-mode-5.19.0/clojure-mode-autoloads /usr/share/emacs/site-lisp/elpa/clojure-mode-extra-font-locking-3.0.0/clojure-mode-extra-font-locking-pkg hides /usr/share/emacs/site-lisp/elpa-src/clojure-mode-extra-font-locking-3.0.0/clojure-mode-extra-font-locking-pkg /usr/share/emacs/site-lisp/elpa/clojure-mode-extra-font-locking-3.0.0/clojure-mode-extra-font-locking-autoloads hides /usr/share/emacs/site-lisp/elpa-src/clojure-mode-extra-font-locking-3.0.0/clojure-mode-extra-font-locking-autoloads /usr/share/emacs/site-lisp/elpa/clojure-mode-extra-font-locking-3.0.0/clojure-mode-extra-font-locking hides /usr/share/emacs/site-lisp/elpa-src/clojure-mode-extra-font-locking-3.0.0/clojure-mode-extra-font-locking /usr/share/emacs/site-lisp/elpa/cmake-mode-3.29.0/cmake-mode hides /usr/share/emacs/site-lisp/elpa-src/cmake-mode-3.29.0/cmake-mode /usr/share/emacs/site-lisp/elpa/cmake-mode-3.29.0/cmake-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/cmake-mode-3.29.0/cmake-mode-autoloads /usr/share/emacs/site-lisp/elpa/cmake-mode-3.29.0/cmake-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/cmake-mode-3.29.0/cmake-mode-pkg /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-dabbrev hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-dabbrev /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-capf hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-capf /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-yasnippet hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-yasnippet /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-ispell hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-ispell /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-etags hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-etags /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-template hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-template /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-abbrev hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-abbrev /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-files hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-files /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-css hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-css /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-tests hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-tests /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-dabbrev-code hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-dabbrev-code /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-pkg hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-pkg /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-oddmuse hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-oddmuse /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-bbdb hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-bbdb /usr/share/emacs/site-lisp/elpa/company-0.10.2/company hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-clang hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-clang /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-nxml hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-nxml /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-gtags hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-gtags /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-tempo hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-tempo /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-autoloads hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-autoloads /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-cmake hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-cmake /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-tng hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-tng /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-elisp hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-elisp /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-semantic hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-semantic /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-keywords hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-keywords /usr/share/emacs/site-lisp/elpa/compat-29.1.4.5/compat-26 hides /usr/share/emacs/site-lisp/elpa-src/compat-29.1.4.5/compat-26 /usr/share/emacs/site-lisp/elpa/compat-29.1.4.5/compat-28 hides /usr/share/emacs/site-lisp/elpa-src/compat-29.1.4.5/compat-28 /usr/share/emacs/site-lisp/elpa/compat-29.1.4.5/compat-macs hides /usr/share/emacs/site-lisp/elpa-src/compat-29.1.4.5/compat-macs /usr/share/emacs/site-lisp/elpa/compat-29.1.4.5/compat-autoloads hides /usr/share/emacs/site-lisp/elpa-src/compat-29.1.4.5/compat-autoloads /usr/share/emacs/site-lisp/elpa/compat-29.1.4.5/compat-pkg hides /usr/share/emacs/site-lisp/elpa-src/compat-29.1.4.5/compat-pkg /usr/share/emacs/site-lisp/elpa/compat-29.1.4.5/compat-25 hides /usr/share/emacs/site-lisp/elpa-src/compat-29.1.4.5/compat-25 /usr/share/emacs/site-lisp/elpa/compat-29.1.4.5/compat-29 hides /usr/share/emacs/site-lisp/elpa-src/compat-29.1.4.5/compat-29 /usr/share/emacs/site-lisp/elpa/compat-29.1.4.5/compat-27 hides /usr/share/emacs/site-lisp/elpa-src/compat-29.1.4.5/compat-27 /usr/share/emacs/site-lisp/elpa/compat-29.1.4.5/compat hides /usr/share/emacs/site-lisp/elpa-src/compat-29.1.4.5/compat /usr/share/emacs/site-lisp/elpa/corfu-1.4/corfu hides /usr/share/emacs/site-lisp/elpa-src/corfu-1.4/corfu /usr/share/emacs/site-lisp/elpa/corfu-1.4/corfu-quick hides /usr/share/emacs/site-lisp/elpa-src/corfu-1.4/corfu-quick /usr/share/emacs/site-lisp/elpa/corfu-1.4/corfu-info hides /usr/share/emacs/site-lisp/elpa-src/corfu-1.4/corfu-info /usr/share/emacs/site-lisp/elpa/corfu-1.4/corfu-history hides /usr/share/emacs/site-lisp/elpa-src/corfu-1.4/corfu-history /usr/share/emacs/site-lisp/elpa/corfu-1.4/corfu-popupinfo hides /usr/share/emacs/site-lisp/elpa-src/corfu-1.4/corfu-popupinfo /usr/share/emacs/site-lisp/elpa/corfu-1.4/corfu-indexed hides /usr/share/emacs/site-lisp/elpa-src/corfu-1.4/corfu-indexed /usr/share/emacs/site-lisp/elpa/corfu-1.4/corfu-pkg hides /usr/share/emacs/site-lisp/elpa-src/corfu-1.4/corfu-pkg /usr/share/emacs/site-lisp/elpa/corfu-1.4/corfu-echo hides /usr/share/emacs/site-lisp/elpa-src/corfu-1.4/corfu-echo /usr/share/emacs/site-lisp/elpa/corfu-1.4/corfu-autoloads hides /usr/share/emacs/site-lisp/elpa-src/corfu-1.4/corfu-autoloads /usr/share/emacs/site-lisp/elpa/corfu-terminal-0.7/corfu-terminal-autoloads hides /usr/share/emacs/site-lisp/elpa-src/corfu-terminal-0.7/corfu-terminal-autoloads /usr/share/emacs/site-lisp/elpa/corfu-terminal-0.7/corfu-terminal-pkg hides /usr/share/emacs/site-lisp/elpa-src/corfu-terminal-0.7/corfu-terminal-pkg /usr/share/emacs/site-lisp/elpa/corfu-terminal-0.7/corfu-terminal hides /usr/share/emacs/site-lisp/elpa-src/corfu-terminal-0.7/corfu-terminal /usr/share/emacs/site-lisp/elpa/csv-mode-1.23/csv-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/csv-mode-1.23/csv-mode-autoloads /usr/share/emacs/site-lisp/elpa/csv-mode-1.23/csv-mode hides /usr/share/emacs/site-lisp/elpa-src/csv-mode-1.23/csv-mode /usr/share/emacs/site-lisp/elpa/csv-mode-1.23/csv-mode-tests hides /usr/share/emacs/site-lisp/elpa-src/csv-mode-1.23/csv-mode-tests /usr/share/emacs/site-lisp/elpa/csv-mode-1.23/csv-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/csv-mode-1.23/csv-mode-pkg /usr/share/emacs/site-lisp/elpa/dart-mode-1.0.7/dart-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/dart-mode-1.0.7/dart-mode-autoloads /usr/share/emacs/site-lisp/elpa/dart-mode-1.0.7/dart-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/dart-mode-1.0.7/dart-mode-pkg /usr/share/emacs/site-lisp/elpa/dart-mode-1.0.7/dart-mode hides /usr/share/emacs/site-lisp/elpa-src/dart-mode-1.0.7/dart-mode /usr/share/emacs/site-lisp/elpa/dash-2.19.1/dash hides /usr/share/emacs/site-lisp/elpa-src/dash-2.19.1/dash /usr/share/emacs/site-lisp/elpa/dash-2.19.1/dash-pkg hides /usr/share/emacs/site-lisp/elpa-src/dash-2.19.1/dash-pkg /usr/share/emacs/site-lisp/elpa/dash-2.19.1/dash-autoloads hides /usr/share/emacs/site-lisp/elpa-src/dash-2.19.1/dash-autoloads /usr/share/emacs/site-lisp/elpa/debian-el-37.16/debian-el-autoloads hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37.16/debian-el-autoloads /usr/share/emacs/site-lisp/elpa/debian-el-37.16/apt-sources hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37.16/apt-sources /usr/share/emacs/site-lisp/elpa/debian-el-37.16/debian-bug hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37.16/debian-bug /usr/share/emacs/site-lisp/elpa/debian-el-37.16/apt-utils hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37.16/apt-utils /usr/share/emacs/site-lisp/elpa/debian-el-37.16/debian-el-pkg hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37.16/debian-el-pkg /usr/share/emacs/site-lisp/elpa/debian-el-37.16/debian-autoloads hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37.16/debian-autoloads /usr/share/emacs/site-lisp/elpa/debian-el-37.16/gnus-BTS hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37.16/gnus-BTS /usr/share/emacs/site-lisp/elpa/debian-el-37.16/deb-view hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37.16/deb-view /usr/share/emacs/site-lisp/elpa/debian-el-37.16/debian-el hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37.16/debian-el /usr/share/emacs/site-lisp/elpa/debian-el-37.16/preseed hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37.16/preseed /usr/share/emacs/site-lisp/elpa/debpaste-0.1.5/debpaste hides /usr/share/emacs/site-lisp/elpa-src/debpaste-0.1.5/debpaste /usr/share/emacs/site-lisp/elpa/debpaste-0.1.5/debpaste-pkg hides /usr/share/emacs/site-lisp/elpa-src/debpaste-0.1.5/debpaste-pkg /usr/share/emacs/site-lisp/elpa/debpaste-0.1.5/debpaste-autoloads hides /usr/share/emacs/site-lisp/elpa-src/debpaste-0.1.5/debpaste-autoloads /usr/share/emacs/site-lisp/elpa/devscripts-40/devscripts hides /usr/share/emacs/site-lisp/elpa-src/devscripts-40/devscripts /usr/share/emacs/site-lisp/elpa/devscripts-40/devscripts-autoloads hides /usr/share/emacs/site-lisp/elpa-src/devscripts-40/devscripts-autoloads /usr/share/emacs/site-lisp/elpa/devscripts-40/pbuilder-mode hides /usr/share/emacs/site-lisp/elpa-src/devscripts-40/pbuilder-mode /usr/share/emacs/site-lisp/elpa/devscripts-40/devscripts-pkg hides /usr/share/emacs/site-lisp/elpa-src/devscripts-40/devscripts-pkg /usr/share/emacs/site-lisp/elpa/devscripts-40/pbuilder-log-view-mode hides /usr/share/emacs/site-lisp/elpa-src/devscripts-40/pbuilder-log-view-mode /usr/share/emacs/site-lisp/elpa/dockerfile-mode-1.7/dockerfile-mode hides /usr/share/emacs/site-lisp/elpa-src/dockerfile-mode-1.7/dockerfile-mode /usr/share/emacs/site-lisp/elpa/dockerfile-mode-1.7/dockerfile-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/dockerfile-mode-1.7/dockerfile-mode-autoloads /usr/share/emacs/site-lisp/elpa/dockerfile-mode-1.7/dockerfile-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/dockerfile-mode-1.7/dockerfile-mode-pkg /usr/share/emacs/site-lisp/elpa/dpkg-dev-el-37.16/debian-bts-control hides /usr/share/emacs/site-lisp/elpa-src/dpkg-dev-el-37.16/debian-bts-control /usr/share/emacs/site-lisp/elpa/dpkg-dev-el-37.16/debian-changelog-mode hides /usr/share/emacs/site-lisp/elpa-src/dpkg-dev-el-37.16/debian-changelog-mode /usr/share/emacs/site-lisp/elpa/dpkg-dev-el-37.16/debian-autopkgtest-control-mode hides /usr/share/emacs/site-lisp/elpa-src/dpkg-dev-el-37.16/debian-autopkgtest-control-mode /usr/share/emacs/site-lisp/elpa/dpkg-dev-el-37.16/dpkg-dev-el-autoloads hides /usr/share/emacs/site-lisp/elpa-src/dpkg-dev-el-37.16/dpkg-dev-el-autoloads /usr/share/emacs/site-lisp/elpa/dpkg-dev-el-37.16/dpkg-dev-el-pkg hides /usr/share/emacs/site-lisp/elpa-src/dpkg-dev-el-37.16/dpkg-dev-el-pkg /usr/share/emacs/site-lisp/elpa/dpkg-dev-el-37.16/dpkg-dev-el hides /usr/share/emacs/site-lisp/elpa-src/dpkg-dev-el-37.16/dpkg-dev-el /usr/share/emacs/site-lisp/elpa/dpkg-dev-el-37.16/debian-control-mode hides /usr/share/emacs/site-lisp/elpa-src/dpkg-dev-el-37.16/debian-control-mode /usr/share/emacs/site-lisp/elpa/dpkg-dev-el-37.16/debian-copyright hides /usr/share/emacs/site-lisp/elpa-src/dpkg-dev-el-37.16/debian-copyright /usr/share/emacs/site-lisp/elpa/dpkg-dev-el-37.16/readme-debian hides /usr/share/emacs/site-lisp/elpa-src/dpkg-dev-el-37.16/readme-debian /usr/share/emacs/site-lisp/elpa/exec-path-from-shell-2.1/exec-path-from-shell hides /usr/share/emacs/site-lisp/elpa-src/exec-path-from-shell-2.1/exec-path-from-shell /usr/share/emacs/site-lisp/elpa/exec-path-from-shell-2.1/exec-path-from-shell-autoloads hides /usr/share/emacs/site-lisp/elpa-src/exec-path-from-shell-2.1/exec-path-from-shell-autoloads /usr/share/emacs/site-lisp/elpa/exec-path-from-shell-2.1/exec-path-from-shell-pkg hides /usr/share/emacs/site-lisp/elpa-src/exec-path-from-shell-2.1/exec-path-from-shell-pkg /usr/share/emacs/site-lisp/elpa/format-all-0.6.0/format-all hides /usr/share/emacs/site-lisp/elpa-src/format-all-0.6.0/format-all /usr/share/emacs/site-lisp/elpa/format-all-0.6.0/format-all-pkg hides /usr/share/emacs/site-lisp/elpa-src/format-all-0.6.0/format-all-pkg /usr/share/emacs/site-lisp/elpa/format-all-0.6.0/format-all-autoloads hides /usr/share/emacs/site-lisp/elpa-src/format-all-0.6.0/format-all-autoloads /usr/share/emacs/site-lisp/elpa/git-commit-3.3.0/git-commit hides /usr/share/emacs/site-lisp/elpa-src/git-commit-3.3.0/git-commit /usr/share/emacs/site-lisp/elpa/git-commit-3.3.0/git-commit-autoloads hides /usr/share/emacs/site-lisp/elpa-src/git-commit-3.3.0/git-commit-autoloads /usr/share/emacs/site-lisp/elpa/git-commit-3.3.0/git-commit-pkg hides /usr/share/emacs/site-lisp/elpa-src/git-commit-3.3.0/git-commit-pkg /usr/share/emacs/site-lisp/elpa/git-modes-1.4.2/git-modes hides /usr/share/emacs/site-lisp/elpa-src/git-modes-1.4.2/git-modes /usr/share/emacs/site-lisp/elpa/git-modes-1.4.2/git-modes-pkg hides /usr/share/emacs/site-lisp/elpa-src/git-modes-1.4.2/git-modes-pkg /usr/share/emacs/site-lisp/elpa/git-modes-1.4.2/git-modes-autoloads hides /usr/share/emacs/site-lisp/elpa-src/git-modes-1.4.2/git-modes-autoloads /usr/share/emacs/site-lisp/elpa/gitattributes-mode-1.4.2/gitattributes-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/gitattributes-mode-1.4.2/gitattributes-mode-pkg /usr/share/emacs/site-lisp/elpa/gitattributes-mode-1.4.2/gitattributes-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/gitattributes-mode-1.4.2/gitattributes-mode-autoloads /usr/share/emacs/site-lisp/elpa/gitattributes-mode-1.4.2/gitattributes-mode hides /usr/share/emacs/site-lisp/elpa-src/gitattributes-mode-1.4.2/gitattributes-mode /usr/share/emacs/site-lisp/elpa/gitconfig-mode-1.4.2/gitconfig-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/gitconfig-mode-1.4.2/gitconfig-mode-autoloads /usr/share/emacs/site-lisp/elpa/gitconfig-mode-1.4.2/gitconfig-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/gitconfig-mode-1.4.2/gitconfig-mode-pkg /usr/share/emacs/site-lisp/elpa/gitconfig-mode-1.4.2/gitconfig-mode hides /usr/share/emacs/site-lisp/elpa-src/gitconfig-mode-1.4.2/gitconfig-mode /usr/share/emacs/site-lisp/elpa/gitignore-mode-1.4.2/gitignore-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/gitignore-mode-1.4.2/gitignore-mode-pkg /usr/share/emacs/site-lisp/elpa/gitignore-mode-1.4.2/gitignore-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/gitignore-mode-1.4.2/gitignore-mode-autoloads /usr/share/emacs/site-lisp/elpa/gitignore-mode-1.4.2/gitignore-mode hides /usr/share/emacs/site-lisp/elpa-src/gitignore-mode-1.4.2/gitignore-mode /usr/share/emacs/site-lisp/elpa/gnuplot-0.8.1/gnuplot hides /usr/share/emacs/site-lisp/elpa-src/gnuplot-0.8.1/gnuplot /usr/share/emacs/site-lisp/elpa/gnuplot-0.8.1/gnuplot-autoloads hides /usr/share/emacs/site-lisp/elpa-src/gnuplot-0.8.1/gnuplot-autoloads /usr/share/emacs/site-lisp/elpa/debian-el-37.16/debian-autoloads hides /usr/share/emacs/site-lisp/elpa-src/gnuplot-0.8.1/debian-autoloads /usr/share/emacs/site-lisp/elpa/gnuplot-0.8.1/gnuplot-pkg hides /usr/share/emacs/site-lisp/elpa-src/gnuplot-0.8.1/gnuplot-pkg /usr/share/emacs/site-lisp/elpa/gnuplot-0.8.1/gnuplot-context hides /usr/share/emacs/site-lisp/elpa-src/gnuplot-0.8.1/gnuplot-context /usr/share/emacs/site-lisp/elpa/gnuplot-0.8.1/gnuplot-gui hides /usr/share/emacs/site-lisp/elpa-src/gnuplot-0.8.1/gnuplot-gui /usr/share/emacs/site-lisp/elpa/go-mode-1.6.0/go-mode hides /usr/share/emacs/site-lisp/elpa-src/go-mode-1.6.0/go-mode /usr/share/emacs/site-lisp/elpa/go-mode-1.6.0/go-guru hides /usr/share/emacs/site-lisp/elpa-src/go-mode-1.6.0/go-guru /usr/share/emacs/site-lisp/elpa/go-mode-1.6.0/go-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/go-mode-1.6.0/go-mode-pkg /usr/share/emacs/site-lisp/elpa/go-mode-1.6.0/go-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/go-mode-1.6.0/go-mode-autoloads /usr/share/emacs/site-lisp/elpa/go-mode-1.6.0/go-rename hides /usr/share/emacs/site-lisp/elpa-src/go-mode-1.6.0/go-rename /usr/share/emacs/site-lisp/elpa/graphviz-dot-mode-0.4.2/graphviz-dot-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/graphviz-dot-mode-0.4.2/graphviz-dot-mode-autoloads /usr/share/emacs/site-lisp/elpa/graphviz-dot-mode-0.4.2/graphviz-dot-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/graphviz-dot-mode-0.4.2/graphviz-dot-mode-pkg /usr/share/emacs/site-lisp/elpa/graphviz-dot-mode-0.4.2/graphviz-dot-mode hides /usr/share/emacs/site-lisp/elpa-src/graphviz-dot-mode-0.4.2/graphviz-dot-mode /usr/share/emacs/site-lisp/elpa/ht-2.3/ht-pkg hides /usr/share/emacs/site-lisp/elpa-src/ht-2.3/ht-pkg /usr/share/emacs/site-lisp/elpa/ht-2.3/ht-autoloads hides /usr/share/emacs/site-lisp/elpa-src/ht-2.3/ht-autoloads /usr/share/emacs/site-lisp/elpa/ht-2.3/ht hides /usr/share/emacs/site-lisp/elpa-src/ht-2.3/ht /usr/share/emacs/site-lisp/elpa/hydra-0.15.0/hydra-ox hides /usr/share/emacs/site-lisp/elpa-src/hydra-0.15.0/hydra-ox /usr/share/emacs/site-lisp/elpa/hydra-0.15.0/hydra-autoloads hides /usr/share/emacs/site-lisp/elpa-src/hydra-0.15.0/hydra-autoloads /usr/share/emacs/site-lisp/elpa/hydra-0.15.0/hydra-pkg hides /usr/share/emacs/site-lisp/elpa-src/hydra-0.15.0/hydra-pkg /usr/share/emacs/site-lisp/elpa/hydra-0.15.0/hydra-examples hides /usr/share/emacs/site-lisp/elpa-src/hydra-0.15.0/hydra-examples /usr/share/emacs/site-lisp/elpa/hydra-0.15.0/hydra hides /usr/share/emacs/site-lisp/elpa-src/hydra-0.15.0/hydra /usr/share/emacs/site-lisp/elpa/inheritenv-0.2/inheritenv hides /usr/share/emacs/site-lisp/elpa-src/inheritenv-0.2/inheritenv /usr/share/emacs/site-lisp/elpa/inheritenv-0.2/inheritenv-autoloads hides /usr/share/emacs/site-lisp/elpa-src/inheritenv-0.2/inheritenv-autoloads /usr/share/emacs/site-lisp/elpa/inheritenv-0.2/inheritenv-pkg hides /usr/share/emacs/site-lisp/elpa-src/inheritenv-0.2/inheritenv-pkg /usr/share/emacs/site-lisp/elpa/inheritenv-0.2/inheritenv-tests hides /usr/share/emacs/site-lisp/elpa-src/inheritenv-0.2/inheritenv-tests /usr/share/emacs/site-lisp/elpa/language-id-0.20/language-id hides /usr/share/emacs/site-lisp/elpa-src/language-id-0.20/language-id /usr/share/emacs/site-lisp/elpa/language-id-0.20/language-id-pkg hides /usr/share/emacs/site-lisp/elpa-src/language-id-0.20/language-id-pkg /usr/share/emacs/site-lisp/elpa/language-id-0.20/language-id-autoloads hides /usr/share/emacs/site-lisp/elpa-src/language-id-0.20/language-id-autoloads /usr/share/emacs/site-lisp/elpa/lintian-0.1/lintian-pkg hides /usr/share/emacs/site-lisp/elpa-src/lintian-0.1/lintian-pkg /usr/share/emacs/site-lisp/elpa/lintian-0.1/lintian-autoloads hides /usr/share/emacs/site-lisp/elpa-src/lintian-0.1/lintian-autoloads /usr/share/emacs/site-lisp/elpa/lintian-0.1/lintian hides /usr/share/emacs/site-lisp/elpa-src/lintian-0.1/lintian /usr/share/emacs/site-lisp/elpa/lv-0.15.0/lv-autoloads hides /usr/share/emacs/site-lisp/elpa-src/lv-0.15.0/lv-autoloads /usr/share/emacs/site-lisp/elpa/lv-0.15.0/lv hides /usr/share/emacs/site-lisp/elpa-src/lv-0.15.0/lv /usr/share/emacs/site-lisp/elpa/lv-0.15.0/lv-pkg hides /usr/share/emacs/site-lisp/elpa-src/lv-0.15.0/lv-pkg /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-remote hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-remote /usr/share/emacs/site-lisp/elpa/magit-3.3.0/git-rebase hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/git-rebase /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-bisect hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-bisect /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-margin hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-margin /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-merge hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-merge /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-section hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-section /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-patch hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-patch /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-commit hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-commit /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-autoloads hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-autoloads /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-files hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-files /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-stash hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-stash /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-bookmark hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-bookmark /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-submodule hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-submodule /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-apply hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-apply /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-repos hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-repos /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-core hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-core /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-subtree hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-subtree /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-autorevert hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-autorevert /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-gitignore hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-gitignore /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-transient hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-transient /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-extras hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-extras /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-git hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-git /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-notes hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-notes /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-reflog hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-reflog /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-mode hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-mode /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-push hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-push /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-tag hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-tag /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-process hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-process /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-ediff hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-ediff /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-imenu hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-imenu /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-diff hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-diff /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-clone hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-clone /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-log hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-log /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-utils hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-utils /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-wip hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-wip /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-branch hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-branch /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-pull hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-pull /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-reset hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-reset /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-sequence hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-sequence /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-status hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-status /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-refs hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-refs /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-obsolete hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-obsolete /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-fetch hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-fetch /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-worktree hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-worktree /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-blame hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-blame /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-pkg hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-pkg /usr/share/emacs/site-lisp/elpa/magit-section-3.3.0/magit-section-autoloads hides /usr/share/emacs/site-lisp/elpa-src/magit-section-3.3.0/magit-section-autoloads /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-section hides /usr/share/emacs/site-lisp/elpa-src/magit-section-3.3.0/magit-section /usr/share/emacs/site-lisp/elpa/magit-section-3.3.0/magit-section-pkg hides /usr/share/emacs/site-lisp/elpa-src/magit-section-3.3.0/magit-section-pkg /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/matlab-cgen hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/matlab-cgen /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/matlab-scan hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/matlab-scan /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/matlab-publish hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/matlab-publish /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/matlab hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/matlab /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/matlab-complete hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/matlab-complete /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/matlab-syntax hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/matlab-syntax /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/tlc hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/tlc /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/matlab-netshell hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/matlab-netshell /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/semantic-matlab hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/semantic-matlab /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/mlint hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/mlint /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/company-matlab-shell hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/company-matlab-shell /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/matlab-shell-gud hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/matlab-shell-gud /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/mlgud hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/mlgud /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/srecode-matlab hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/srecode-matlab /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/matlab-compat hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/matlab-compat /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/matlab-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/matlab-mode-pkg /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/matlab-maint hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/matlab-maint /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/cedet-matlab hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/cedet-matlab /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/matlab-topic hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/matlab-topic /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/linemark hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/linemark /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/matlab-shell hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/matlab-shell /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/semanticdb-matlab hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/semanticdb-matlab /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/matlab-load hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/matlab-load /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/matlab-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/matlab-mode-autoloads /usr/share/emacs/site-lisp/elpa/meson-mode-0.2/meson-mode hides /usr/share/emacs/site-lisp/elpa-src/meson-mode-0.2/meson-mode /usr/share/emacs/site-lisp/elpa/meson-mode-0.2/utils hides /usr/share/emacs/site-lisp/elpa-src/meson-mode-0.2/utils /usr/share/emacs/site-lisp/elpa/meson-mode-0.2/meson-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/meson-mode-0.2/meson-mode-autoloads /usr/share/emacs/site-lisp/elpa/meson-mode-0.2/meson-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/meson-mode-0.2/meson-mode-pkg /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-draft hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-draft /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-modeline hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-modeline /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-view hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-view /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-message hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-message /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-helpers hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-helpers /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-pkg hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-pkg /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-bookmarks hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-bookmarks /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-thread hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-thread /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-mime-parts hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-mime-parts /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-server hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-server /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-query-items hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-query-items /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-contrib hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-contrib /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-window hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-window /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-config hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-config /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-autoloads hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-autoloads /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-icalendar hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-icalendar /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-mark hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-mark /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-headers hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-headers /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-org hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-org /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-contacts hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-contacts /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-speedbar hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-speedbar /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-obsolete hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-obsolete /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-vars hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-vars /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-actions hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-actions /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-main hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-main /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-search hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-search /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-notification hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-notification /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-context hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-context /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-compose hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-compose /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-lists hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-lists /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-folders hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-folders /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-update hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-update /usr/share/emacs/site-lisp/elpa/nginx-mode-1.1.9/nginx-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/nginx-mode-1.1.9/nginx-mode-autoloads /usr/share/emacs/site-lisp/elpa/nginx-mode-1.1.9/nginx-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/nginx-mode-1.1.9/nginx-mode-pkg /usr/share/emacs/site-lisp/elpa/nginx-mode-1.1.9/nginx-mode hides /usr/share/emacs/site-lisp/elpa-src/nginx-mode-1.1.9/nginx-mode /usr/share/emacs/site-lisp/elpa/paredit-26/paredit-autoloads hides /usr/share/emacs/site-lisp/elpa-src/paredit-26/paredit-autoloads /usr/share/emacs/site-lisp/elpa/paredit-26/paredit-pkg hides /usr/share/emacs/site-lisp/elpa-src/paredit-26/paredit-pkg /usr/share/emacs/site-lisp/elpa/paredit-26/paredit hides /usr/share/emacs/site-lisp/elpa-src/paredit-26/paredit /usr/share/emacs/site-lisp/elpa/persist-0.6.1/persist hides /usr/share/emacs/site-lisp/elpa-src/persist-0.6.1/persist /usr/share/emacs/site-lisp/elpa/persist-0.6.1/persist-pkg hides /usr/share/emacs/site-lisp/elpa-src/persist-0.6.1/persist-pkg /usr/share/emacs/site-lisp/elpa/persist-0.6.1/persist-autoloads hides /usr/share/emacs/site-lisp/elpa-src/persist-0.6.1/persist-autoloads /usr/share/emacs/site-lisp/elpa/pfuture-1.9/pfuture hides /usr/share/emacs/site-lisp/elpa-src/pfuture-1.9/pfuture /usr/share/emacs/site-lisp/elpa/pfuture-1.9/pfuture-autoloads hides /usr/share/emacs/site-lisp/elpa-src/pfuture-1.9/pfuture-autoloads /usr/share/emacs/site-lisp/elpa/pfuture-1.9/pfuture-pkg hides /usr/share/emacs/site-lisp/elpa-src/pfuture-1.9/pfuture-pkg /usr/share/emacs/site-lisp/elpa/po-mode-0.21/po-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/po-mode-0.21/po-mode-pkg /usr/share/emacs/site-lisp/elpa/po-mode-0.21/po-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/po-mode-0.21/po-mode-autoloads /usr/share/emacs/site-lisp/elpa/po-mode-0.21/po-mode hides /usr/share/emacs/site-lisp/elpa-src/po-mode-0.21/po-mode /usr/share/emacs/site-lisp/elpa/popon-0.13/popon hides /usr/share/emacs/site-lisp/elpa-src/popon-0.13/popon /usr/share/emacs/site-lisp/elpa/popon-0.13/popon-autoloads hides /usr/share/emacs/site-lisp/elpa-src/popon-0.13/popon-autoloads /usr/share/emacs/site-lisp/elpa/popon-0.13/popon-pkg hides /usr/share/emacs/site-lisp/elpa-src/popon-0.13/popon-pkg /usr/share/emacs/site-lisp/elpa/posframe-1.1.7/posframe-pkg hides /usr/share/emacs/site-lisp/elpa-src/posframe-1.1.7/posframe-pkg /usr/share/emacs/site-lisp/elpa/posframe-1.1.7/posframe-autoloads hides /usr/share/emacs/site-lisp/elpa-src/posframe-1.1.7/posframe-autoloads /usr/share/emacs/site-lisp/elpa/posframe-1.1.7/posframe hides /usr/share/emacs/site-lisp/elpa-src/posframe-1.1.7/posframe /usr/share/emacs/site-lisp/elpa/projectile-2.8.0/projectile-pkg hides /usr/share/emacs/site-lisp/elpa-src/projectile-2.8.0/projectile-pkg /usr/share/emacs/site-lisp/elpa/projectile-2.8.0/projectile-autoloads hides /usr/share/emacs/site-lisp/elpa-src/projectile-2.8.0/projectile-autoloads /usr/share/emacs/site-lisp/elpa/projectile-2.8.0/projectile hides /usr/share/emacs/site-lisp/elpa-src/projectile-2.8.0/projectile /usr/share/emacs/site-lisp/elpa/py-isort-2016.1/py-isort hides /usr/share/emacs/site-lisp/elpa-src/py-isort-2016.1/py-isort /usr/share/emacs/site-lisp/elpa/py-isort-2016.1/py-isort-autoloads hides /usr/share/emacs/site-lisp/elpa-src/py-isort-2016.1/py-isort-autoloads /usr/share/emacs/site-lisp/elpa/py-isort-2016.1/py-isort-pkg hides /usr/share/emacs/site-lisp/elpa-src/py-isort-2016.1/py-isort-pkg /usr/share/emacs/site-lisp/elpa/pyvenv-1.21/pyvenv hides /usr/share/emacs/site-lisp/elpa-src/pyvenv-1.21/pyvenv /usr/share/emacs/site-lisp/elpa/pyvenv-1.21/pyvenv-pkg hides /usr/share/emacs/site-lisp/elpa-src/pyvenv-1.21/pyvenv-pkg /usr/share/emacs/site-lisp/elpa/pyvenv-1.21/pyvenv-autoloads hides /usr/share/emacs/site-lisp/elpa-src/pyvenv-1.21/pyvenv-autoloads /usr/share/emacs/site-lisp/elpa/rust-mode-1.0.5/rust-common hides /usr/share/emacs/site-lisp/elpa-src/rust-mode-1.0.5/rust-common /usr/share/emacs/site-lisp/elpa/rust-mode-1.0.5/rust-mode-tests hides /usr/share/emacs/site-lisp/elpa-src/rust-mode-1.0.5/rust-mode-tests /usr/share/emacs/site-lisp/elpa/rust-mode-1.0.5/rust-mode-treesitter hides /usr/share/emacs/site-lisp/elpa-src/rust-mode-1.0.5/rust-mode-treesitter /usr/share/emacs/site-lisp/elpa/rust-mode-1.0.5/rust-cargo hides /usr/share/emacs/site-lisp/elpa-src/rust-mode-1.0.5/rust-cargo /usr/share/emacs/site-lisp/elpa/rust-mode-1.0.5/rust-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/rust-mode-1.0.5/rust-mode-autoloads /usr/share/emacs/site-lisp/elpa/rust-mode-1.0.5/rust-utils hides /usr/share/emacs/site-lisp/elpa-src/rust-mode-1.0.5/rust-utils /usr/share/emacs/site-lisp/elpa/rust-mode-1.0.5/rust-rustfmt hides /usr/share/emacs/site-lisp/elpa-src/rust-mode-1.0.5/rust-rustfmt /usr/share/emacs/site-lisp/elpa/rust-mode-1.0.5/rust-mode hides /usr/share/emacs/site-lisp/elpa-src/rust-mode-1.0.5/rust-mode /usr/share/emacs/site-lisp/elpa/rust-mode-1.0.5/rust-playpen hides /usr/share/emacs/site-lisp/elpa-src/rust-mode-1.0.5/rust-playpen /usr/share/emacs/site-lisp/elpa/rust-mode-1.0.5/rust-prog-mode hides /usr/share/emacs/site-lisp/elpa-src/rust-mode-1.0.5/rust-prog-mode /usr/share/emacs/site-lisp/elpa/rust-mode-1.0.5/rust-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/rust-mode-1.0.5/rust-mode-pkg /usr/share/emacs/site-lisp/elpa/rust-mode-1.0.5/rust-cargo-tests hides /usr/share/emacs/site-lisp/elpa-src/rust-mode-1.0.5/rust-cargo-tests /usr/share/emacs/site-lisp/elpa/rust-mode-1.0.5/rust-compile hides /usr/share/emacs/site-lisp/elpa-src/rust-mode-1.0.5/rust-compile /usr/share/emacs/site-lisp/elpa/s-1.12.0/s-autoloads hides /usr/share/emacs/site-lisp/elpa-src/s-1.12.0/s-autoloads /usr/share/emacs/site-lisp/elpa/s-1.12.0/s-pkg hides /usr/share/emacs/site-lisp/elpa-src/s-1.12.0/s-pkg /usr/share/emacs/site-lisp/elpa/s-1.12.0/s hides /usr/share/emacs/site-lisp/elpa-src/s-1.12.0/s /usr/share/emacs/site-lisp/elpa/scala-mode-1.1.0/scala-mode-map hides /usr/share/emacs/site-lisp/elpa-src/scala-mode-1.1.0/scala-mode-map /usr/share/emacs/site-lisp/elpa/scala-mode-1.1.0/scala-mode-indent hides /usr/share/emacs/site-lisp/elpa-src/scala-mode-1.1.0/scala-mode-indent /usr/share/emacs/site-lisp/elpa/scala-mode-1.1.0/scala-mode-syntax hides /usr/share/emacs/site-lisp/elpa-src/scala-mode-1.1.0/scala-mode-syntax /usr/share/emacs/site-lisp/elpa/scala-mode-1.1.0/scala-mode-lib hides /usr/share/emacs/site-lisp/elpa-src/scala-mode-1.1.0/scala-mode-lib /usr/share/emacs/site-lisp/elpa/scala-mode-1.1.0/scala-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/scala-mode-1.1.0/scala-mode-pkg /usr/share/emacs/site-lisp/elpa/scala-mode-1.1.0/scala-mode-prettify-symbols hides /usr/share/emacs/site-lisp/elpa-src/scala-mode-1.1.0/scala-mode-prettify-symbols /usr/share/emacs/site-lisp/elpa/scala-mode-1.1.0/scala-compile hides /usr/share/emacs/site-lisp/elpa-src/scala-mode-1.1.0/scala-compile /usr/share/emacs/site-lisp/elpa/scala-mode-1.1.0/scala-mode hides /usr/share/emacs/site-lisp/elpa-src/scala-mode-1.1.0/scala-mode /usr/share/emacs/site-lisp/elpa/scala-mode-1.1.0/scala-organise hides /usr/share/emacs/site-lisp/elpa-src/scala-mode-1.1.0/scala-organise /usr/share/emacs/site-lisp/elpa/scala-mode-1.1.0/scala-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/scala-mode-1.1.0/scala-mode-autoloads /usr/share/emacs/site-lisp/elpa/scala-mode-1.1.0/scala-mode-paragraph hides /usr/share/emacs/site-lisp/elpa-src/scala-mode-1.1.0/scala-mode-paragraph /usr/share/emacs/site-lisp/elpa/scala-mode-1.1.0/scala-mode-imenu hides /usr/share/emacs/site-lisp/elpa-src/scala-mode-1.1.0/scala-mode-imenu /usr/share/emacs/site-lisp/elpa/scala-mode-1.1.0/scala-mode-fontlock hides /usr/share/emacs/site-lisp/elpa-src/scala-mode-1.1.0/scala-mode-fontlock /usr/share/emacs/site-lisp/elpa/seq-2.24/seq-24 hides /usr/share/emacs/site-lisp/elpa-src/seq-2.24/seq-24 /usr/share/emacs/site-lisp/elpa/seq-2.24/seq-autoloads hides /usr/share/emacs/site-lisp/elpa-src/seq-2.24/seq-autoloads /usr/share/emacs/site-lisp/elpa/seq-2.24/seq hides /usr/share/emacs/site-lisp/elpa-src/seq-2.24/seq /usr/share/emacs/site-lisp/elpa/seq-2.24/seq-pkg hides /usr/share/emacs/site-lisp/elpa-src/seq-2.24/seq-pkg /usr/share/emacs/site-lisp/elpa/seq-2.24/seq-25 hides /usr/share/emacs/site-lisp/elpa-src/seq-2.24/seq-25 /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-project-follow-mode hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-project-follow-mode /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-dom hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-dom /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-follow-mode hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-follow-mode /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-logging hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-logging /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-autoloads hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-autoloads /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-compatibility hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-compatibility /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-async hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-async /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-themes hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-themes /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-mouse-interface hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-mouse-interface /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-tag-follow-mode hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-tag-follow-mode /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-bookmarks hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-bookmarks /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-fringe-indicator hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-fringe-indicator /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-filewatch-mode hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-filewatch-mode /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-interface hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-interface /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-tags hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-tags /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-visuals hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-visuals /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-core-utils hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-core-utils /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-peek-mode hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-peek-mode /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-annotations hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-annotations /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-icons hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-icons /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-persistence hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-persistence /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-diagnostics hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-diagnostics /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-scope hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-scope /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-extensions hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-extensions /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-rendering hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-rendering /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-customization hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-customization /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-file-management hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-file-management /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-faces hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-faces /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-macros hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-macros /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-git-commit-diff-mode hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-git-commit-diff-mode /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-treelib hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-treelib /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-hydras hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-hydras /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-pkg hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-pkg /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-header-line hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-header-line /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-icons-dired hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-icons-dired /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-workspaces hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-workspaces /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-mode hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-mode /usr/share/emacs/site-lisp/elpa/treemacs-magit-3.1/treemacs-magit hides /usr/share/emacs/site-lisp/elpa-src/treemacs-magit-3.1/treemacs-magit /usr/share/emacs/site-lisp/elpa/treemacs-magit-3.1/treemacs-magit-pkg hides /usr/share/emacs/site-lisp/elpa-src/treemacs-magit-3.1/treemacs-magit-pkg /usr/share/emacs/site-lisp/elpa/treemacs-magit-3.1/treemacs-magit-autoloads hides /usr/share/emacs/site-lisp/elpa-src/treemacs-magit-3.1/treemacs-magit-autoloads /usr/share/emacs/site-lisp/elpa/treemacs-projectile-3.1/treemacs-projectile-pkg hides /usr/share/emacs/site-lisp/elpa-src/treemacs-projectile-3.1/treemacs-projectile-pkg /usr/share/emacs/site-lisp/elpa/treemacs-projectile-3.1/treemacs-projectile-autoloads hides /usr/share/emacs/site-lisp/elpa-src/treemacs-projectile-3.1/treemacs-projectile-autoloads /usr/share/emacs/site-lisp/elpa/treemacs-projectile-3.1/treemacs-projectile hides /usr/share/emacs/site-lisp/elpa-src/treemacs-projectile-3.1/treemacs-projectile /usr/share/emacs/site-lisp/elpa/vterm-0.0.2/vterm-load-path hides /usr/share/emacs/site-lisp/elpa-src/vterm-0.0.2/vterm-load-path /usr/share/emacs/site-lisp/elpa/vterm-0.0.2/vterm hides /usr/share/emacs/site-lisp/elpa-src/vterm-0.0.2/vterm /usr/share/emacs/site-lisp/elpa/vterm-0.0.2/vterm-pkg hides /usr/share/emacs/site-lisp/elpa-src/vterm-0.0.2/vterm-pkg /usr/share/emacs/site-lisp/elpa/vterm-0.0.2/vterm-autoloads hides /usr/share/emacs/site-lisp/elpa-src/vterm-0.0.2/vterm-autoloads /usr/share/emacs/site-lisp/elpa/web-mode-17.3.13/web-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/web-mode-17.3.13/web-mode-pkg /usr/share/emacs/site-lisp/elpa/web-mode-17.3.13/web-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/web-mode-17.3.13/web-mode-autoloads /usr/share/emacs/site-lisp/elpa/web-mode-17.3.13/web-mode hides /usr/share/emacs/site-lisp/elpa-src/web-mode-17.3.13/web-mode /usr/share/emacs/site-lisp/elpa/with-editor-3.3.2/with-editor-pkg hides /usr/share/emacs/site-lisp/elpa-src/with-editor-3.3.2/with-editor-pkg /usr/share/emacs/site-lisp/elpa/with-editor-3.3.2/with-editor-autoloads hides /usr/share/emacs/site-lisp/elpa-src/with-editor-3.3.2/with-editor-autoloads /usr/share/emacs/site-lisp/elpa/with-editor-3.3.2/with-editor hides /usr/share/emacs/site-lisp/elpa-src/with-editor-3.3.2/with-editor /usr/share/emacs/site-lisp/elpa/xml-rpc-1.6.17/xml-rpc hides /usr/share/emacs/site-lisp/elpa-src/xml-rpc-1.6.17/xml-rpc /usr/share/emacs/site-lisp/elpa/xml-rpc-1.6.17/xml-rpc-pkg hides /usr/share/emacs/site-lisp/elpa-src/xml-rpc-1.6.17/xml-rpc-pkg /usr/share/emacs/site-lisp/elpa/xml-rpc-1.6.17/xml-rpc-autoloads hides /usr/share/emacs/site-lisp/elpa-src/xml-rpc-1.6.17/xml-rpc-autoloads /usr/share/emacs/site-lisp/elpa/yaml-mode-0.0.16/yaml-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/yaml-mode-0.0.16/yaml-mode-pkg /usr/share/emacs/site-lisp/elpa/yaml-mode-0.0.16/yaml-mode hides /usr/share/emacs/site-lisp/elpa-src/yaml-mode-0.0.16/yaml-mode /usr/share/emacs/site-lisp/elpa/yaml-mode-0.0.16/yaml-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/yaml-mode-0.0.16/yaml-mode-autoloads /usr/share/emacs/site-lisp/elpa/yasnippet-0.14.1/yasnippet-autoloads hides /usr/share/emacs/site-lisp/elpa-src/yasnippet-0.14.1/yasnippet-autoloads /usr/share/emacs/site-lisp/elpa/yasnippet-0.14.1/yasnippet-pkg hides /usr/share/emacs/site-lisp/elpa-src/yasnippet-0.14.1/yasnippet-pkg /usr/share/emacs/site-lisp/elpa/yasnippet-0.14.1/yasnippet hides /usr/share/emacs/site-lisp/elpa-src/yasnippet-0.14.1/yasnippet /usr/share/emacs/site-lisp/elpa/yasnippet-snippets-20220713/yasnippet-snippets hides /usr/share/emacs/site-lisp/elpa-src/yasnippet-snippets-20220713/yasnippet-snippets /usr/share/emacs/site-lisp/elpa/yasnippet-snippets-20220713/yasnippet-snippets-pkg hides /usr/share/emacs/site-lisp/elpa-src/yasnippet-snippets-20220713/yasnippet-snippets-pkg /usr/share/emacs/site-lisp/elpa/yasnippet-snippets-20220713/yasnippet-snippets-autoloads hides /usr/share/emacs/site-lisp/elpa-src/yasnippet-snippets-20220713/yasnippet-snippets-autoloads /usr/share/emacs/site-lisp/elpa/zenburn-theme-2.8.0/zenburn-theme hides /usr/share/emacs/site-lisp/elpa-src/zenburn-theme-2.8.0/zenburn-theme /usr/share/emacs/site-lisp/elpa/zenburn-theme-2.8.0/zenburn-theme-pkg hides /usr/share/emacs/site-lisp/elpa-src/zenburn-theme-2.8.0/zenburn-theme-pkg /usr/share/emacs/site-lisp/elpa/zenburn-theme-2.8.0/zenburn-theme-autoloads hides /usr/share/emacs/site-lisp/elpa-src/zenburn-theme-2.8.0/zenburn-theme-autoloads /usr/share/emacs/site-lisp/elpa/seq-2.24/seq hides /usr/share/emacs/29.4/lisp/emacs-lisp/seq Features: (shadow emacsbug novice debian-copyright shr-color json-ts-mode git-rebase reporter debian-bts-control vterm tramp tramp-loaddefs trampver tramp-integration files-x tramp-compat term ehelp vterm-module debian-changelog-mode debian-bug conf-mode make-mode goto-addr misearch multi-isearch url-queue magit-extras magit-bookmark magit-submodule magit-obsolete magit-blame magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit magit-sequence magit-notes magit-worktree magit-tag magit-merge magit-branch magit-reset magit-files magit-refs magit-status magit magit-repos magit-apply magit-wip magit-log which-func magit-diff git-commit log-edit add-log magit-core magit-autorevert magit-margin magit-transient magit-process with-editor shell magit-mode transient magit-git magit-section magit-utils crm smerge-mode diff mailalias face-remap dired-aux mm-archive qp sort gnus-cite mail-extr textsec uni-scripts idna-mapping ucs-normalize uni-confusable textsec-check gnus-async gnus-bcklg gnus-ml gnus-topic cursor-sensor timezone utf-7 url-cache nnfolder gnus-demon nnml ezgnus gnus-delay gnus-draft gnus-agent gnus-srvr gnus-score score-mode nnvirtual nntp gnus-cache nndraft nnmh auth-source-xoauth2-plugin oauth2 url-http url-auth url-gw plstore eglot external-completion array jsonrpc ert ewoc debug backtrace xref pcase imenu matlab matlab-scan matlab-syntax matlab-compat jka-compr mu4e mu4e-org org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-src ob-comint org-pcomplete pcomplete org-list org-footnote org-faces org-entities noutline outline ob-emacs-lisp ob-core ob-eval org-cycle org-table ol org-fold org-fold-core org-keys oc org-loaddefs find-func org-version org-compat org-macs format-spec mu4e-notification notifications mu4e-main smtpmail mu4e-view mu4e-mime-parts cal-menu calendar cal-loaddefs mu4e-headers mu4e-thread mu4e-actions mu4e-compose mu4e-draft gnus-msg gnus-art mm-uu mml2015 mm-view mml-smime smime dig gnus-sum gnus-group gnus-undo gnus-start gnus-dbus dbus gnus-cloud nnimap nnmail mail-source utf7 nnoo gnus-spec gnus-int gnus-range gnus-win gnus nnheader range mu4e-search mu4e-lists mu4e-bookmarks mu4e-mark mu4e-message shr pixel-fill kinsoku url-file svg xml dom flow-fill mule-util mu4e-contacts mu4e-update mu4e-folders mu4e-context mu4e-query-items mu4e-server mu4e-modeline mu4e-vars mu4e-helpers mu4e-config mu4e-window ido message sendmail yank-media rfc822 mml mml-sec gnus-util mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader mu4e-obsolete windmove flyspell ispell gnutls network-stream puny nsm epa-file epa derived epg rfc6068 epg-config rcirc parse-time iso8601 time-date term/xterm xterm comp comp-cstr server cap-words superword subword vc-hg vc-git diff-mode vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs log-view pcvs-util vc vc-dispatcher bug-reference disp-table whitespace yasnippet-snippets yasnippet cus-edit cus-start wid-edit init mu4e-debian-hx90 zenburn-theme xclip treesit-auto treesit treemacs-project-follow-mode treemacs-follow-mode treemacs-rendering treemacs-annotations treemacs-async treemacs-visuals treemacs-fringe-indicator pulse color treemacs-workspaces treemacs-dom treemacs-icons treemacs-themes treemacs-scope treemacs-core-utils treemacs-logging treemacs-customization pfuture inline ht s hl-line dash keychain-environment exec-path-from-shell corfu-terminal popon corfu-popupinfo corfu-echo corfu compat activities-tabs activities persist bookmark pp edmacro kmacro advice icomplete cus-load flymake-proc flymake project compile text-property-search comint ansi-osc ansi-color ring warnings icons thingatpt cl-extra help-mode use-package use-package-ensure use-package-delight use-package-diminish use-package-bind-key bind-key easy-mmode use-package-core display-line-numbers autorevert filenotify keychain-environment-autoloads treesit-auto-autoloads xclip-autoloads rx info debian-el dired dired-loaddefs finder-inf package browse-url url url-proxy url-privacy url-expand url-methods url-history url-cookie generate-lisp-file url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs password-cache json subr-x map byte-opt gv bytecomp byte-compile url-vars cl-loaddefs cl-lib rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic indonesian philippine cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget keymap hashtable-print-readable backquote threads dbusbind inotify lcms2 dynamic-setting system-font-setting font-render-setting cairo move-toolbar gtk x-toolkit xinput2 x multi-tty make-network-process native-compile emacs) Memory information: ((conses 16 1385704 157406) (symbols 48 42601 43) (strings 32 181071 16554) (string-bytes 1 5513742) (vectors 16 115417) (vector-slots 8 2872186 223315) (floats 8 1025 2197) (intervals 56 42184 12669) (buffers 984 116)) -- Xiyue Deng --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0001-Show-full-authentication-URL-to-let-user-choose-how-.patch >From 2b9e50cb0948e0b4f28883042109994ffa295d3d Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Sun, 21 Jul 2024 14:50:56 -0700 Subject: [PATCH 1/5] Show full authentication URL to let user choose how to visit it * packages/oauth2/oauth2.el (oauth2-request-authorization): show full authentication URL in user prompt. --- oauth2.el | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/oauth2.el b/oauth2.el index 7da9702004..3a3e50ad2b 100644 --- a/oauth2.el +++ b/oauth2.el @@ -57,14 +57,17 @@ "Request OAuth authorization at AUTH-URL by launching `browse-url'. CLIENT-ID is the client id provided by the provider. It returns the code provided by the service." - (browse-url (concat auth-url - (if (string-match-p "\?" auth-url) "&" "?") - "client_id=" (url-hexify-string client-id) - "&response_type=code" - "&redirect_uri=" (url-hexify-string (or redirect-uri "urn:ietf:wg:oauth:2.0:oob")) - (if scope (concat "&scope=" (url-hexify-string scope)) "") - (if state (concat "&state=" (url-hexify-string state)) ""))) - (read-string "Enter the code your browser displayed: ")) + (let ((url (concat auth-url + (if (string-match-p "\?" auth-url) "&" "?") + "client_id=" (url-hexify-string client-id) + "&response_type=code" + "&redirect_uri=" (url-hexify-string (or redirect-uri "urn:ietf:wg:oauth:2.0:oob")) + (if scope (concat "&scope=" (url-hexify-string scope)) "") + (if state (concat "&state=" (url-hexify-string state)) "")))) + (browse-url url) + (read-string (concat "Follow the instruction on your default browser, or " + "visit:\n" url + "\nEnter the code your browser displayed: ")))) (defun oauth2-request-access-parse () "Parse the result of an OAuth request." -- 2.39.2 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0002-Add-parameters-required-by-Google-OAuth2-to-get-refr.patch >From 26ed9886bd9d3970d55cf76e4269cef3998503a7 Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Sun, 21 Jul 2024 14:52:02 -0700 Subject: [PATCH 2/5] Add parameters required by Google OAuth2 to get refresh_token * packages/oauth2/oauth2.el (oauth2-request-authorization): add `access_type=offline' and `prompt=consent' when requesting token to receive refresh_token. --- oauth2.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/oauth2.el b/oauth2.el index 3a3e50ad2b..9780ac3a1d 100644 --- a/oauth2.el +++ b/oauth2.el @@ -63,7 +63,9 @@ It returns the code provided by the service." "&response_type=code" "&redirect_uri=" (url-hexify-string (or redirect-uri "urn:ietf:wg:oauth:2.0:oob")) (if scope (concat "&scope=" (url-hexify-string scope)) "") - (if state (concat "&state=" (url-hexify-string state)) "")))) + (if state (concat "&state=" (url-hexify-string state)) "") + "&access_type=offline" + "&prompt=consent"))) (browse-url url) (read-string (concat "Follow the instruction on your default browser, or " "visit:\n" url -- 2.39.2 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0003-Encode-parameters-when-requesting-access.patch >From 59225412e1d06ae9e165cfde6a4a985cee4fc569 Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Sun, 21 Jul 2024 14:54:08 -0700 Subject: [PATCH 3/5] Encode parameters when requesting access * packages/oauth2/oauth2.el (oauth2-request-access): encode all parameters which may contain characters that breaks URL. --- oauth2.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/oauth2.el b/oauth2.el index 9780ac3a1d..b035742fc1 100644 --- a/oauth2.el +++ b/oauth2.el @@ -107,10 +107,10 @@ Return an `oauth2-token' structure." (oauth2-make-access-request token-url (concat - "client_id=" client-id + "client_id=" (url-hexify-string client-id) (when client-secret - (concat "&client_secret=" client-secret)) - "&code=" code + (concat "&client_secret=" (url-hexify-string client-secret))) + "&code=" (url-hexify-string code) "&redirect_uri=" (url-hexify-string (or redirect-uri "urn:ietf:wg:oauth:2.0:oob")) "&grant_type=authorization_code")))) (make-oauth2-token :client-id client-id -- 2.39.2 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0004-Support-storing-data-for-multiple-accounts-of-the-sa.patch >From eb4afbc2f21c65417de5ca8e06309fd4c53cc1ab Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Sun, 28 Jul 2024 03:00:04 -0700 Subject: [PATCH 4/5] Support storing data for multiple accounts of the same provider Currently the plstore id computed by `oauth2-compute-id' only takes `auth-url', `token-url', and `scope' into account, which could be the same for the same provider (e.g. Gmail). This prevents storing information for multiple accounts of the same service for some providers. This patch adds `client-id' to the calculation of plstore id to make sure that it is unique for different accounts of the same provider. * packages/oauth2/oauth2.el (oauth2-compute-id): add `client-id' as a parameter of `oauth2-compute-id' to ensure unique id amount multiple accounts of the same provider. --- oauth2.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/oauth2.el b/oauth2.el index b035742fc1..ea012d4d38 100644 --- a/oauth2.el +++ b/oauth2.el @@ -163,17 +163,17 @@ TOKEN should be obtained with `oauth2-request-access'." :group 'oauth2 :type 'file) -(defun oauth2-compute-id (auth-url token-url scope) +(defun oauth2-compute-id (auth-url token-url scope client-id) "Compute an unique id based on URLs. This allows to store the token in an unique way." - (secure-hash 'md5 (concat auth-url token-url scope))) + (secure-hash 'md5 (concat auth-url token-url scope client-id))) ;;;###autoload (defun oauth2-auth-and-store (auth-url token-url scope client-id client-secret &optional redirect-uri state) "Request access to a resource and store it using `plstore'." ;; We store a MD5 sum of all URL (let* ((plstore (plstore-open oauth2-token-file)) - (id (oauth2-compute-id auth-url token-url scope)) + (id (oauth2-compute-id auth-url token-url scope client-id)) (plist (cdr (plstore-get plstore id)))) ;; Check if we found something matching this access (if plist -- 2.39.2 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0005-Add-debug-messages-and-provide-a-switch-for-enabling.patch >From 6cf0ab190d24b6fc2a7335d02a8aef29ab24c622 Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Sun, 28 Jul 2024 03:41:20 -0700 Subject: [PATCH 5/5] Add debug messages and provide a switch for enabling This helps debugging whether the authorization and refresh requests were successful and inspecting the responses. * packages/oauth2/oauth2.el: add debug message and option for enabling. --- oauth2.el | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/oauth2.el b/oauth2.el index ea012d4d38..06a880532e 100644 --- a/oauth2.el +++ b/oauth2.el @@ -40,6 +40,7 @@ (require 'plstore) (require 'json) (require 'url-http) +(require 'pp) (defvar url-http-data) (defvar url-http-method) @@ -53,6 +54,15 @@ :link '(url-link :tag "Savannah" "https://git.savannah.gnu.org/cgit/emacs/elpa.git/tree/?h=externals/oauth2") :link '(url-link :tag "ELPA" "https://elpa.gnu.org/packages/oauth2.html")) +(defcustom oauth2-debug nil + "Enable debug messages." + :type 'boolean) + +(defun oauth2--do-debug (&rest msg) + "Output debug messages when `oauth2-debug' is enabled." + (if oauth2-debug + (apply #'message msg))) + (defun oauth2-request-authorization (auth-url client-id &optional scope state redirect-uri) "Request OAuth authorization at AUTH-URL by launching `browse-url'. CLIENT-ID is the client id provided by the provider. @@ -79,6 +89,8 @@ It returns the code provided by the service." (defun oauth2-make-access-request (url data) "Make an access request to URL using DATA in POST." + (oauth2--do-debug "oauth2-make-access-request: url: %s" url) + (oauth2--do-debug "oauth2-make-access-request: data: %s" data) (let ((url-request-method "POST") (url-request-data data) (url-request-extra-headers @@ -86,6 +98,8 @@ It returns the code provided by the service." (with-current-buffer (url-retrieve-synchronously url) (let ((data (oauth2-request-access-parse))) (kill-buffer (current-buffer)) + (oauth2--do-debug "oauth2-make-access-request: response: %s" + (pp-to-string data)) data)))) (cl-defstruct oauth2-token -- 2.39.2 --=-=-=-- From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Robert Pluim Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 30 Jul 2024 07:48:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Xiyue Deng Cc: 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.172232567420767 (code B ref 72358); Tue, 30 Jul 2024 07:48:02 +0000 Received: (at 72358) by debbugs.gnu.org; 30 Jul 2024 07:47:54 +0000 Received: from localhost ([127.0.0.1]:46890 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sYhaL-0005Os-GC for submit@debbugs.gnu.org; Tue, 30 Jul 2024 03:47:53 -0400 Received: from mail-wm1-f50.google.com ([209.85.128.50]:60546) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sYhaJ-0005Ob-PN for 72358@debbugs.gnu.org; Tue, 30 Jul 2024 03:47:52 -0400 Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-4266dc7591fso22103685e9.0 for <72358@debbugs.gnu.org>; Tue, 30 Jul 2024 00:47:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1722325592; x=1722930392; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id :reply-to; bh=QVUmq8BQnjeRd+stcwrBtMHGBNyNN8DftMAcOOCYO2s=; b=aQ8ECMMfsVYbGYbgSp49Y5EzhV0+SBF7rZSZV9bHojAI++MDbD3DvCIpNkPPKR1L8S SIfDYyVQ2W8/atf7A4OKIV7s7oFnkxlUU0AXBejON0loiWvQk0UgxJlebBBzhGtEtrxl d856R+n52FosRmKkS9nV6eAAwld9im6aymalaVuLRi46sxcgXdF4D1S8GwOjO5CTdlQF FDyHFoaalxr4GQil+cb49bQVh1YPhRoS0Ng7UBGiFg/h3TDnNEUkUMDx7Cng19CTlAI1 OrH7gInzklu3uG8iQjIh5rnCxUqU51dIMD6CB551bJeIo65ewSk7blNslHSnm2V/jlUG P9tw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722325592; x=1722930392; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=QVUmq8BQnjeRd+stcwrBtMHGBNyNN8DftMAcOOCYO2s=; b=qjNRyiYZm060gZeoyEaQOom4r1E8drhmRaSeTwOUDmohD1wr+Do3kqY5GMPvMilnj5 NrjfVEexieBX+X8auk6PgePhoR4y2gS4Y+y9UQBzXVfqorHUReIPt1IvmklJr1JXPNsx N2SjuyQd5VU3aDEFCQIzqDir3/4bbQPLvOMo2OL3fLCuXhTzVZs91nj4lGtv8fHx06Xv f8lg2tQ1XvZl8Pp8MgJxb6yyMdS2O20MtaZf5M6edhdVEGBozPSU1/4Le3qwgnCPvbBK bbk4DCImuaOW6TopGgAylPnXGxYY4ySi/99BXMC86PVEVzcO1Kg4vWEPiPU/vgNWCrNk Fsfg== X-Gm-Message-State: AOJu0YxParSxFDtFmA626eY6If6JuObpPlDDyNZA8AclwjbmfJMRmLxB RbDy8Fy5OjDRMm+nhNy9XJAJV2bHhuKrz3WMBBh32VB0N6yYtP6RPC7n3A== X-Google-Smtp-Source: AGHT+IHNbt3dYd5jfJ/hJNVPMeDfo1H3ut7xVnbgLFuhuBLRYortC9z57l6RlmmMlrg1pOterQX31g== X-Received: by 2002:a05:6000:1a88:b0:369:ba89:a577 with SMTP id ffacd0b85a97d-36b5d03cc5bmr7562250f8f.34.1722325591225; Tue, 30 Jul 2024 00:46:31 -0700 (PDT) Received: from rltb ([82.66.8.55]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-36b367fc445sm13907553f8f.48.2024.07.30.00.46.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Jul 2024 00:46:30 -0700 (PDT) From: Robert Pluim In-Reply-To: <87mslz8yzk.fsf@debian-hx90.lan> (Xiyue Deng's message of "Mon, 29 Jul 2024 14:25:01 -0700") References: <87mslz8yzk.fsf@debian-hx90.lan> Date: Tue, 30 Jul 2024 09:46:29 +0200 Message-ID: <87frrr725m.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) >>>>> On Mon, 29 Jul 2024 14:25:01 -0700, Xiyue Deng sa= id: Xiyue> Hi, Xiyue> I have been trying out using oauth2.el to enable OAuth2-based Xiyue> authentication for email service providers and had some success = for Xiyue> Gmail. During this process, I have made a few changes to oauth2= .el that Xiyue> enables it to use with Gmail OAuth2 as well as some usability and Xiyue> debugging improvements, which I'm sharing below. Thank you for this. This support is becoming more necessary as time goes on. I even wonder if we should bring oauth2.el into emacs instead of it being a package. Xiyue> This is a series of five patches, which are attached. Xiyue> The first patch shows the authentication URL in the minibuffer w= indow Xiyue> alongside the prompt accepting the authorization code. This hel= ps when Xiyue> a user has multiple accounts from the same provider but is logge= d into a Xiyue> different account than the one that the user is trying to set up= . If Xiyue> the user use the link (or through `browse-url') it will use the = active Xiyue> account instead of the one intended. By showing the URL in the Xiyue> minibuffer, the user can choose other ways to get the authorizat= ion code Xiyue> (e.g. using another browser, using private/encognito mode, etc.) OK. This fixes one of my irritations with oauth2.el =F0=9F=99=82 Xiyue> The second patch adds the parameters `access_type=3Doffline' and Xiyue> `prompt=3Dconsent' to the authorization URL, which is required f= or Gmail Xiyue> OAuth2 to get the refresh token. Without these 2 parameters, Gm= ail Xiyue> response will only contain the access token which expires in one= hour. Xiyue> They should also be compatible with other OAuth2 authentication = process. Xiyue> (Though I am currently having trouble to get outlook.com to work Xiyue> regardless of these parameters, which I'll ask in a separate thr= ead.) Xiyue> Note that the second patch depends on the first patch as they mo= dify the same Xiyue> part of the code. OK. I=CA=BCm assuming oauth2.el can use the refresh token next time it needs to authorize? (I=CA=BCve been avoiding actually using oauth2.el in anger, since app passwords still work) Xiyue> The third patch encodes the parameters for requesting refreshing= access Xiyue> token, which is recommended because the client secret and other Xiyue> parameters may contain characters that may break parameter parsi= ng. OK Xiyue> The fourth patch may need a bit of background: oauth2.el (option= ally) Xiyue> uses plstore to save authentication data for future reuse, and t= he Xiyue> plstore id for an account is computed using a combination of `au= th-url', Xiyue> `token-url', and `scope'. However, this combination of data doe= sn't Xiyue> guarantee uniqueness for accounts for a same provider, e.g. for = Gmail, Xiyue> the three parameters are the same for different accounts, and he= nce Xiyue> storing a second account information will override the first one. Xiyue> This fourth patch adds `client-id' to the calculation of plstore= id to Xiyue> ensure its uniqueness. This may cause a few concerns: Xiyue> - This will invalidate all existing entries and a user will have= to redo Xiyue> the authorization process again to get a new refresh token. H= owever, Xiyue> I think it's more important to ensure that oauth2.el works cor= rectly Xiyue> for multiple accounts of the same provider, or a user may suff= er from Xiyue> confusion when adding a new account invalidates a previous acc= ount. I don=CA=BCt think that=CA=BCs too big a concern. 'modern' authentication f= lows regularly re-prompt, so this will not be too surprising (although maybe call it out in the package=CA=BCs NEWS or README). Xiyue> - Adding `client-id' to the calculation of plstore id may provoke Xiyue> suspicion of leaking it as the hash calculation uses md5. In = most Xiyue> cases, requesting a refresh token requires both `client-id' and Xiyue> `client-secret', so without including the latter it should be = safe. Xiyue> There are cases when requesting only the access token may work= with Xiyue> `client-id' along. Still, I think this should not be a big co= ncern as Xiyue> the data is combined with `auth-url', `token-url', and `scope'= which Xiyue> provides sufficient salt. Alternatively, we can also choose t= o use a Xiyue> more secure hash function, e.g. SHA2 or better, given that exi= sting Xiyue> entries will be invalidated anyway. If the existing entries are going to become invalid anyway, you might as well take the opportunity to move away from md5 at the same time. git picked SHA-256, but that was a while ago, so maybe SHA-512? Xiyue> The fifth patch adds debug messages when doing a URL query which= records Xiyue> the request URL, the request data, and the response data, and pr= ovide a Xiyue> custom variable to enable this. This provides a way to help deb= ugging Xiyue> the requests, and I find it handy when testing oauth2 against di= fferent Xiyue> providers. OK (although perhaps make it a defvar rather than a defcustom, to avoid people accidentally enabling it). Robert --=20 From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: =?UTF-8?Q?Bj=C3=B6rn?= Bidar Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 30 Jul 2024 14:07:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Robert Pluim Cc: 72358@debbugs.gnu.org, Xiyue Deng Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.172234841324271 (code B ref 72358); Tue, 30 Jul 2024 14:07:02 +0000 Received: (at 72358) by debbugs.gnu.org; 30 Jul 2024 14:06:53 +0000 Received: from localhost ([127.0.0.1]:48055 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sYnUx-0006JE-Ci for submit@debbugs.gnu.org; Tue, 30 Jul 2024 10:06:53 -0400 Received: from thaodan.de ([185.216.177.71]:33714) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sYnUd-0006IZ-JR for 72358@debbugs.gnu.org; Tue, 30 Jul 2024 10:06:40 -0400 Received: from odin (dsl-trebng12-50dc75-154.dhcp.inet.fi [80.220.117.154]) by thaodan.de (Postfix) with ESMTPSA id A7492D00045; Tue, 30 Jul 2024 17:05:22 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=thaodan.de; s=mail; t=1722348322; bh=IKuXmuXOEns+iMd1D+LsIo89uGEyOGZHygWF+nVu+9s=; h=From:To:Cc:Subject:In-Reply-To:References:Date; b=wTGOdAflgqNwCvKfMG73u3bPEc0Ob4cKS7gj/W+/g9HGSX83AWpX3jNV8zNBTlM6x LLt/yHc4BGPz7/zWJB+bKD3aU6tKyTScr9GcswV7lXoYPWe0nQPOAduyV6QulSVkkq 1jZhdPcpi7oRU6vAp0NUIa9uElbWKrsDzA1+8EatyHDvIiEonPl6eYDCA/ed4JLGDM /dXu0HE3p1a4vVyLTMcvl8Yg3PFjjYGRemF7LC5jV2CtBpXYJCVEs2lWdyuHpwO7w5 gb2CCRzmX/VQFkjs+wjnCEl3CiMwQHZTt5PDwduyDwngrU6xS3+9JbJiLUqV7TOJiq U6LRLZvjAdO7VAH0IytaMMyuuqnXm6oxsFVV5WlV4YmVmkpabnxlwv6dZADiaO1RLO OOJySMHhO2TEBmVgLNW/KYcW8wdrl9o7NC+pmDALvSJznfb5zPeXOsr/1q1k7guLuT oT/M2lFCml0BNV9XzfBJcAXOOxvYEBriAMeiexFTOD7yQXKBNfJfYIPS7CLp6xOJOq o+wTq1jdtpZT7JQ7+1QK0lGbKeVa1iwgIKCWKIwwr9pguxQLZDF02D7as8ZEQnOU3K SB03/TgFDO0rC9d9GcSukAhlsBCaGpYtD8cRSj95Wusq8CnknT5s5HKuGfOmZ3NT23 OGNDAB6LSfgLRhXEio8Rpftg= From: =?UTF-8?Q?Bj=C3=B6rn?= Bidar In-Reply-To: <87frrr725m.fsf@gmail.com> (Robert Pluim's message of "Tue, 30 Jul 2024 09:46:29 +0200") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> Autocrypt: addr=bjorn.bidar@thaodan.de; prefer-encrypt=nopreference; keydata= mDMEZNfpPhYJKwYBBAHaRw8BAQdACBEmr+0xwIIHZfIDlZmm7sa+lHHSb0g9FZrN6qE6ru60JUJq w7ZybiBCaWRhciA8Ympvcm4uYmlkYXJAdGhhb2Rhbi5kZT6IlgQTFgoAPgIbAwULCQgHAgIiAgYV CgkICwIEFgIDAQIeBwIXgBYhBFHxdut1RzAepymoq1wbdKFlHF9oBQJk1/YmAhkBAAoJEFwbdKFl HF9oB9cBAJoIIGQKXm4cpap+Flxc/EGnYl0123lcEyzuduqvlDT0AQC3OlFKm/OiqJ8IMTrzJRZ8 phFssTkSrrFXnM2jm5PYDoiTBBMWCgA7FiEEUfF263VHMB6nKairXBt0oWUcX2gFAmTX6T4CGwMF CwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQXBt0oWUcX2hbCQEAtru7kvM8hi8zo6z9ux2h K+B5xViKuo7Z8K3IXuK5ugwA+wUfKzomzdBPhfxDsqLcEziGRxoyx0Q3ld9aermBUccHtBxCasO2 cm4gQmlkYXIgPG1lQHRoYW9kYW4uZGU+iJMEExYKADsCGwMFCwkIBwICIgIGFQoJCAsCBBYCAwEC HgcCF4AWIQRR8XbrdUcwHqcpqKtcG3ShZRxfaAUCZNf2FQAKCRBcG3ShZRxfaCzSAP4hZ7cSp0YN XYpcjHdsySh2MuBhhoPeLGXs+2kSiqBiOwD/TP8AgPEg/R+SI9GI9on7fBJJ0mp2IT8kZ2rhDOjg gA6IkwQTFgoAOxYhBFHxdut1RzAepymoq1wbdKFlHF9oBQJk1+ntAhsDBQsJCAcCAiICBhUKCQgL AgQWAgMBAh4HAheAAAoJEFwbdKFlHF9oBgwA/iQHwe0VL4Df4GGTYlNjMSHFlIkBmN4UfYGLYj3E TrOUAQC51M+M3cjsL8WHdpBz6VAo6df9d+rVwhQ9vQuFHqevArg4BGTX6T4SCisGAQQBl1UBBQEB B0Cbohc3JEfn005/cm0AOGjSsW1ZxAkgaoVNjbpqk4MgNAMBCAeIeAQYFgoAIBYhBFHxdut1RzAe pymoq1wbdKFlHF9oBQJk1+k+AhsMAAoJEFwbdKFlHF9ooHABAKGmrGBic/Vys3BBrOQiRB3Z7izO HwhqTRpAqFZtXS2nAQDZhp/5aYw1TZjTzkm1KVt9QiYnjd/MvxRE9iaY6x4mDbgzBGTX6T4WCSsG AQQB2kcPAQEHQAgRJq/tMcCCB2XyA5WZpu7GvpRx0m9IPRWazeqhOq7uiO8EGBYKACAWIQRR8Xbr dUcwHqcpqKtcG3ShZRxfaAUCZNf71AIbIgCBCRBcG3ShZRxfaHYgBBkWCgAdFiEEUfF263VHMB6n KairXBt0oWUcX2gFAmTX+9QACgkQXBt0oWUcX2jeSwD6AtWn0cuo8IF35YRo4o3cDRJnUfJnbvJy GxyCDThR+zYBAKG6/jdwmZkBQZKslnDAbMMd2WfiZZT5JW3IWC4EaKMO7HkBAKYPGZ3UbfkRvfFK S+pQ9CgtNfkSJQBtT1Ob7Y6nsacgAQCpyXN7yppmhW/oBgivITPy9Lkg+V4NK9WZYZCU9Q7LBA== Date: Tue, 30 Jul 2024 17:05:21 +0300 Message-ID: <87h6c77z6m.fsf@> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 1.2 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Robert Pluim writes: > Xiyue> - This will invalidate all existing entries and a user will have to redo > Xiyue> the authorization process again to get a new refresh token. However, > Xiyue> I think it's more important to [...] Content analysis details: (1.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 T_SPF_TEMPERROR SPF: test of record failed (temperror) -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 1.2 INVALID_MSGID Message-Id is not valid, according to RFC 2822 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.2 (/) Robert Pluim writes: > Xiyue> - This will invalidate all existing entries and a user will ha= ve to redo > Xiyue> the authorization process again to get a new refresh token. = However, > Xiyue> I think it's more important to ensure that oauth2.el works c= orrectly > Xiyue> for multiple accounts of the same provider, or a user may su= ffer from > Xiyue> confusion when adding a new account invalidates a previous a= ccount. > > I don=CA=BCt think that=CA=BCs too big a concern. 'modern' authentication= flows > regularly re-prompt, so this will not be too surprising (although > maybe call it out in the package=CA=BCs NEWS or README). In many cases the refreshing of tokens is transparent to the user there doesn't have to be a re-prompt to refresh the token if the OAuth provider support it. Micrsofts OAuth workflow is quite good in this regard as there's a non-standard error to indicate when the user has to re-authorize the application. I assume all implementation of OAuth have their quirks. From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: =?UTF-8?Q?Bj=C3=B6rn?= Bidar Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 30 Jul 2024 14:15:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Xiyue Deng Cc: 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.172234884724882 (code B ref 72358); Tue, 30 Jul 2024 14:15:01 +0000 Received: (at 72358) by debbugs.gnu.org; 30 Jul 2024 14:14:07 +0000 Received: from localhost ([127.0.0.1]:48061 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sYnbz-0006Sf-Bt for submit@debbugs.gnu.org; Tue, 30 Jul 2024 10:14:07 -0400 Received: from thaodan.de ([185.216.177.71]:58622) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sYnXD-0006M5-EL for 72358@debbugs.gnu.org; Tue, 30 Jul 2024 10:13:54 -0400 Received: from odin (dsl-trebng12-50dc75-154.dhcp.inet.fi [80.220.117.154]) by thaodan.de (Postfix) with ESMTPSA id 53367D00045; Tue, 30 Jul 2024 17:08:22 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=thaodan.de; s=mail; t=1722348502; bh=M7IIf0wD9EecdKr1WBd8UwFYEUZDO2FKpJt6CaOflmk=; h=From:To:Cc:Subject:In-Reply-To:References:Date; b=rkQ5LRjMJv0i8jk2VhEgQabs/KGRsUoWOF9PS1U1WnD6m6cpyvRDmdy0M6d6S6wju tkdOeaSQaHT4DwQ90o/0dZHwUwRttYJ4wYtgtGNoGDzi6X9kT0YoXxnN5NYiJKp/oW 7FEo4SFzHufv/Rz1eWfDxz82479bbtoeNfMv1EumIx4HEd2uqkkG6m41RYylmnKRXb b2TOUcVpAXHQdwdexfd2df4TCA6Whd4Z/lh7iywPXelsWndwtE397lsLUnBQni3Smf iB0ozIE87W4Sl1eoNGm1mGq0JfFHATn54jZqwlJdcWEdtvQdBa+TvykbxWrKvd8SR8 t6QUrTOH4ZI0HEFrlmMMBKSiMyBvsMPB0GK41LrNNUiMmy5BkgjEZEluDURgLREvHt pt5l4Esc0OjkkHfa94YIxbfbnZa5vscV09VeDp/7rdRjHXZmr7lb4f93WJ9TzNefoG KLS7Jrxj2jS/Em8UVxy97m8fVT84q1pYIaFJkang/CFp8Soi1ZcAuNOqfj5Aqxk2Fu /g6BSWQyusKqh3DyARwBFxN3uxnmLljAbXtGF40ABcFvfX4Ht9NogpFBzl8iUS4YTp SR9Cf+K8GjdvQOX1+jNUczF0rmnyray9VFWypKLYSo3BEeapwCf6HxllXRjC5uhrTW LbyTXRNiQhkEUum7VpSUsmZs= From: =?UTF-8?Q?Bj=C3=B6rn?= Bidar In-Reply-To: <87mslz8yzk.fsf@debian-hx90.lan> (Xiyue Deng's message of "Mon, 29 Jul 2024 14:25:01 -0700") References: <87mslz8yzk.fsf@debian-hx90.lan> Autocrypt: addr=bjorn.bidar@thaodan.de; prefer-encrypt=nopreference; keydata= mDMEZNfpPhYJKwYBBAHaRw8BAQdACBEmr+0xwIIHZfIDlZmm7sa+lHHSb0g9FZrN6qE6ru60JUJq w7ZybiBCaWRhciA8Ympvcm4uYmlkYXJAdGhhb2Rhbi5kZT6IlgQTFgoAPgIbAwULCQgHAgIiAgYV CgkICwIEFgIDAQIeBwIXgBYhBFHxdut1RzAepymoq1wbdKFlHF9oBQJk1/YmAhkBAAoJEFwbdKFl HF9oB9cBAJoIIGQKXm4cpap+Flxc/EGnYl0123lcEyzuduqvlDT0AQC3OlFKm/OiqJ8IMTrzJRZ8 phFssTkSrrFXnM2jm5PYDoiTBBMWCgA7FiEEUfF263VHMB6nKairXBt0oWUcX2gFAmTX6T4CGwMF CwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQXBt0oWUcX2hbCQEAtru7kvM8hi8zo6z9ux2h K+B5xViKuo7Z8K3IXuK5ugwA+wUfKzomzdBPhfxDsqLcEziGRxoyx0Q3ld9aermBUccHtBxCasO2 cm4gQmlkYXIgPG1lQHRoYW9kYW4uZGU+iJMEExYKADsCGwMFCwkIBwICIgIGFQoJCAsCBBYCAwEC HgcCF4AWIQRR8XbrdUcwHqcpqKtcG3ShZRxfaAUCZNf2FQAKCRBcG3ShZRxfaCzSAP4hZ7cSp0YN XYpcjHdsySh2MuBhhoPeLGXs+2kSiqBiOwD/TP8AgPEg/R+SI9GI9on7fBJJ0mp2IT8kZ2rhDOjg gA6IkwQTFgoAOxYhBFHxdut1RzAepymoq1wbdKFlHF9oBQJk1+ntAhsDBQsJCAcCAiICBhUKCQgL AgQWAgMBAh4HAheAAAoJEFwbdKFlHF9oBgwA/iQHwe0VL4Df4GGTYlNjMSHFlIkBmN4UfYGLYj3E TrOUAQC51M+M3cjsL8WHdpBz6VAo6df9d+rVwhQ9vQuFHqevArg4BGTX6T4SCisGAQQBl1UBBQEB B0Cbohc3JEfn005/cm0AOGjSsW1ZxAkgaoVNjbpqk4MgNAMBCAeIeAQYFgoAIBYhBFHxdut1RzAe pymoq1wbdKFlHF9oBQJk1+k+AhsMAAoJEFwbdKFlHF9ooHABAKGmrGBic/Vys3BBrOQiRB3Z7izO HwhqTRpAqFZtXS2nAQDZhp/5aYw1TZjTzkm1KVt9QiYnjd/MvxRE9iaY6x4mDbgzBGTX6T4WCSsG AQQB2kcPAQEHQAgRJq/tMcCCB2XyA5WZpu7GvpRx0m9IPRWazeqhOq7uiO8EGBYKACAWIQRR8Xbr dUcwHqcpqKtcG3ShZRxfaAUCZNf71AIbIgCBCRBcG3ShZRxfaHYgBBkWCgAdFiEEUfF263VHMB6n KairXBt0oWUcX2gFAmTX+9QACgkQXBt0oWUcX2jeSwD6AtWn0cuo8IF35YRo4o3cDRJnUfJnbvJy GxyCDThR+zYBAKG6/jdwmZkBQZKslnDAbMMd2WfiZZT5JW3IWC4EaKMO7HkBAKYPGZ3UbfkRvfFK S+pQ9CgtNfkSJQBtT1Ob7Y6nsacgAQCpyXN7yppmhW/oBgivITPy9Lkg+V4NK9WZYZCU9Q7LBA== Date: Tue, 30 Jul 2024 17:08:21 +0300 Message-ID: <87cymv7z1m.fsf@> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 1.2 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Xiyue Deng writes: > The fourth patch may need a bit of background: oauth2.el (optionally) > uses plstore to save authentication data for future reuse, and the > plstore id for an account is computed using a combination [...] Content analysis details: (1.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_PASS SPF: sender matches SPF record -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 1.2 INVALID_MSGID Message-Id is not valid, according to RFC 2822 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.2 (/) Xiyue Deng writes: > The fourth patch may need a bit of background: oauth2.el (optionally) > uses plstore to save authentication data for future reuse, and the > plstore id for an account is computed using a combination of `auth-url', > `token-url', and `scope'. However, this combination of data doesn't > guarantee uniqueness for accounts for a same provider, e.g. for Gmail, > the three parameters are the same for different accounts, and hence > storing a second account information will override the first one. Would it make sense to plug OAuth2.el into auth-source to store the authentication token safely inside an existing credential storage? Various applications already do so when using the native credential storages such as Freedesktop.org or the macOS keyring. From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Robert Pluim Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 30 Jul 2024 14:41:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Xiyue Deng Cc: =?UTF-8?Q?Bj=C3=B6rn?= Bidar , 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.172235045327312 (code B ref 72358); Tue, 30 Jul 2024 14:41:02 +0000 Received: (at 72358) by debbugs.gnu.org; 30 Jul 2024 14:40:53 +0000 Received: from localhost ([127.0.0.1]:48101 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sYo20-00076S-MP for submit@debbugs.gnu.org; Tue, 30 Jul 2024 10:40:52 -0400 Received: from mail-wm1-f50.google.com ([209.85.128.50]:55589) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sYo1w-00076A-Sw for 72358@debbugs.gnu.org; Tue, 30 Jul 2024 10:40:50 -0400 Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-42817bee9e8so24764545e9.3 for <72358@debbugs.gnu.org>; Tue, 30 Jul 2024 07:40:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1722350368; x=1722955168; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id :reply-to; bh=DbG7KztFvgNNtLhPXMQ1mbmX0urvP31b698Ra71KnPY=; b=KI6/OhWH1H7DJCgpVIRgtdelvzhmEwik6n9AHsXFS+7MmfqfeCbr6LiYhtlyLQ/NJM r95Av64KQz1QUwQciUZdVuzg3Y4Mox6Fm3+c9pOD2T0nNxJKfbviNI1GoQRJmKuQDX7T CxkWevuIFPY8TdWHm6PorrAaFgqscvDpv9RcCWY56GoEc8IIkBecn4KZjpoBxYrvoy8u 17vUyIWrLAivxu80eSmLc1UTjFDGDT0LM18RCdr2V2Hca7pm4NDyKzJDG+k3uOGKW/2+ sqSIa5zvQe+JkMt7s+RiSFTaEMDJ+07fUMm5pEibglGg71z94XVFhScL6xdUnvf68T/6 RLCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722350368; x=1722955168; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=DbG7KztFvgNNtLhPXMQ1mbmX0urvP31b698Ra71KnPY=; b=sUy5TCZm+PmpQvR3e1GMcyQQhN74l4lANekNBkgOSl6+15km0ae7A1XRAP/TIBw7OH e3X748Tp7fBtHIdkYxced8N6ATavw7Dne+ZrcPhZnACqzJ6ACctDQPPyH/4phYb2S36p k8byoLC2RUTtQWO6JEyHlakJHY4fG2LKNM6+c6aqiC6EpC2Sj94Qk1bVa6g2LQCkCZuh IXCdSTmIMv94CnV6M5wrKOGrzGta5Cta9Dg8jIjhXvTjNrfwIYWZC8nc/QoUvd8yIY9f nQzZuMq9L6Uj9M3/ajI8yMrjbcO0RTVRhvxciRotJW6XR/l8FwStU6Eu9556JqwjHbhl Qa+A== X-Forwarded-Encrypted: i=1; AJvYcCVFP+6fZ1ZLKVaslwEYg33XRMxm6Kvx9RaeLf6Zt14hMqZtO4bwzVzytPepcmqTFQ4pGQRFfyZKs/JDRgTJodsn1xbf9Nk= X-Gm-Message-State: AOJu0YzXjRLaY0DEQ96ARCj0tR74MppKubsinP8NpRpZAbkZSmnPOltD rvu+z2EyMsRBho9Bv6uXssIk1zrgybLGujbmzKBJjde6+UILXURVkeLOXg== X-Google-Smtp-Source: AGHT+IHmQQ/mXnPlLdrcdy7nDMAWuYGJ812Cgmd/NOckDCt2WZGa8Boc19WJqefqjGc49ukCQB9fTg== X-Received: by 2002:a05:600c:358e:b0:428:10ec:e5ca with SMTP id 5b1f17b1804b1-42811d88a0fmr84758845e9.14.1722350367811; Tue, 30 Jul 2024 07:39:27 -0700 (PDT) Received: from rltb ([2a01:e0a:3f3:fb51:c026:d246:cbf5:2104]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4280573fec6sm215337655e9.18.2024.07.30.07.39.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Jul 2024 07:39:27 -0700 (PDT) From: Robert Pluim In-Reply-To: <9717.00003590144$1722349291@news.gmane.org> ("=?UTF-8?Q?Bj=C3=B6rn?= Bidar via \"Bug reports for GNU Emacs, the Swiss army knife of text editors\""'s message of "Tue, 30 Jul 2024 17:08:21 +0300") References: <87mslz8yzk.fsf@debian-hx90.lan> <9717.00003590144$1722349291@news.gmane.org> Date: Tue, 30 Jul 2024 16:39:26 +0200 Message-ID: <87r0bbvt9d.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) >>>>> On Tue, 30 Jul 2024 17:08:21 +0300, Bj=C3=B6rn Bidar via "Bug reports= for GNU Emacs, the Swiss army knife of text editors" said: Bj=C3=B6rn> Xiyue Deng writes: >> The fourth patch may need a bit of background: oauth2.el (optionally) >> uses plstore to save authentication data for future reuse, and the >> plstore id for an account is computed using a combination of `auth-u= rl', >> `token-url', and `scope'. However, this combination of data doesn't >> guarantee uniqueness for accounts for a same provider, e.g. for Gmai= l, >> the three parameters are the same for different accounts, and hence >> storing a second account information will override the first one. Bj=C3=B6rn> Would it make sense to plug OAuth2.el into auth-source to s= tore the Bj=C3=B6rn> authentication token safely inside an existing credential s= torage? Bj=C3=B6rn> Various applications already do so when using the native cr= edential Bj=C3=B6rn> storages such as Freedesktop.org or the macOS keyring. Yes. In fact there=CA=BCs the auth-source-xoauth2 package that does that. And oauth2 can already store stuff using plstore, so I=CA=BCm sure it can be extended to use auth-source. Robert --=20 From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Xiyue Deng Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 30 Jul 2024 19:39:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Robert Pluim Cc: 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.172236831323425 (code B ref 72358); Tue, 30 Jul 2024 19:39:01 +0000 Received: (at 72358) by debbugs.gnu.org; 30 Jul 2024 19:38:33 +0000 Received: from localhost ([127.0.0.1]:48399 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sYsg4-00065k-G0 for submit@debbugs.gnu.org; Tue, 30 Jul 2024 15:38:33 -0400 Received: from mail-pf1-f181.google.com ([209.85.210.181]:55600) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sYsg0-00065S-PO for 72358@debbugs.gnu.org; Tue, 30 Jul 2024 15:38:30 -0400 Received: by mail-pf1-f181.google.com with SMTP id d2e1a72fcca58-70d399da0b5so4253963b3a.3 for <72358@debbugs.gnu.org>; Tue, 30 Jul 2024 12:38:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1722368228; x=1722973028; darn=debbugs.gnu.org; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:from:to:cc:subject:date:message-id:reply-to; bh=WlyniwB/DUztAr4nt2qE7/qESR6SVrabXujkNh+NTLQ=; b=NbOAwk1Tj7G3tCDee2zZMc1gCoNGyO68kFS/1R98E98hwcuz2ajXZTgaOUX/7/HiIK 0pm9QMZozuN1nckG9XmdBE+IZw4Lxec1HVedCEXvneILMaetV3nxEupMrB4pNbkaF9eq B2N3ZW7tqsukb2lX5JWQMYKmZGG7NqAqs7woQLKy41iR7QE+oOC66Hd9lyQuqV0nBLHF 5xXhh9+bfsDVp7VYFl5TIH7DbrtNE7egzKtli7GpVgBqqKyhvlDYM6pGCM67eNA2LSaZ QmmULSOakMDunoOITe2TPeYGWxew1CbOVUGsbSRaT6OlA6eDKQOYj1E5BUOOgaEYwThQ YkTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722368228; x=1722973028; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=WlyniwB/DUztAr4nt2qE7/qESR6SVrabXujkNh+NTLQ=; b=xIeoZK0XdyUNckWEhqiTAfa0pArZdr6m6s8v4dWVSWCgnJMsQHEFXdTGEf6p+Isech 4ApXQMhJm9fJvC0rMB7iKgcK7U7aXjv6Nc0yOg/hk5qiE85447aQSWIu28yu4jkwnKMf mOq3IfZPwybIcV8n0D4QTrg+0QneLwxYVTPo7Hw4sJLJiPqqDLFPPRf9xb5mcXjHYRXF b0EIm8zj+KfKK3nd2OVWZXp/pvkGWlN4fI/Y6GSbtmKX6tYUxvp1QqtC1Br8IkQfWU9l y99cbXj3l6p0vjKwMlemnWFM+d1ojeooAzkRs2+Aym2ypP7/cWeoFzgjCJ3Fmr09uhxA ODoA== X-Gm-Message-State: AOJu0Yz2skNDhow5E3a0fpAwPHiih7EdD1Qv4b9kqVsX9je/G4N9omJt 57vbbKWzi3Sv7iHaqTeJQ4DpxARCG9wDoWeorsl2xZT7uzX/AqbvqgNH6dcF X-Google-Smtp-Source: AGHT+IFLV3E9m9ZhgNTl19ctjoHlCnJL8J6V76oQ4kg4qxLk1vtp5BfETCEyqP7+lf47B+MM50yEng== X-Received: by 2002:a05:6a00:3ccd:b0:706:6b0b:9573 with SMTP id d2e1a72fcca58-70eced9bad8mr15731114b3a.19.1722368227766; Tue, 30 Jul 2024 12:37:07 -0700 (PDT) Received: from debian-hx90 (syn-104-172-240-218.res.spectrum.com. [104.172.240.218]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-70ead712e9csm8815467b3a.79.2024.07.30.12.37.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Jul 2024 12:37:07 -0700 (PDT) From: Xiyue Deng In-Reply-To: <87frrr725m.fsf@gmail.com> (Robert Pluim's message of "Tue, 30 Jul 2024 09:46:29 +0200") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> Date: Tue, 30 Jul 2024 12:37:05 -0700 Message-ID: <87ed7a8ye6.fsf@debian-hx90.lan> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Robert Pluim writes: >>>>>> On Mon, 29 Jul 2024 14:25:01 -0700, Xiyue Deng s= aid: > > Xiyue> Hi, > Xiyue> I have been trying out using oauth2.el to enable OAuth2-based > Xiyue> authentication for email service providers and had some succes= s for > Xiyue> Gmail. During this process, I have made a few changes to oaut= h2.el that > Xiyue> enables it to use with Gmail OAuth2 as well as some usability = and > Xiyue> debugging improvements, which I'm sharing below. > > Thank you for this. This support is becoming more necessary as time > goes on. I even wonder if we should bring oauth2.el into emacs instead > of it being a package. > I would also love that to happen. In fact, I have another addon inspired by auth-source-xoauth2 and makes use of oauth2.el and auth-source backend, though it requires advising the auth-source-search-backends and kind of awkward. I'll post that through another bug report for comments after this one gets submitted. > Xiyue> This is a series of five patches, which are attached. > > Xiyue> The first patch shows the authentication URL in the minibuffer= window > Xiyue> alongside the prompt accepting the authorization code. This h= elps when > Xiyue> a user has multiple accounts from the same provider but is log= ged into a > Xiyue> different account than the one that the user is trying to set = up. If > Xiyue> the user use the link (or through `browse-url') it will use th= e active > Xiyue> account instead of the one intended. By showing the URL in the > Xiyue> minibuffer, the user can choose other ways to get the authoriz= ation code > Xiyue> (e.g. using another browser, using private/encognito mode, etc= .) > > OK. This fixes one of my irritations with oauth2.el =F0=9F=99=82 > Glad to hear I'm not the only one. > Xiyue> The second patch adds the parameters `access_type=3Doffline' a= nd > Xiyue> `prompt=3Dconsent' to the authorization URL, which is required= for Gmail > Xiyue> OAuth2 to get the refresh token. Without these 2 parameters, = Gmail > Xiyue> response will only contain the access token which expires in o= ne hour. > Xiyue> They should also be compatible with other OAuth2 authenticatio= n process. > Xiyue> (Though I am currently having trouble to get outlook.com to wo= rk > Xiyue> regardless of these parameters, which I'll ask in a separate t= hread.) > > Xiyue> Note that the second patch depends on the first patch as they = modify the same > Xiyue> part of the code. > > OK. I=CA=BCm assuming oauth2.el can use the refresh token next time it > needs to authorize? (I=CA=BCve been avoiding actually using oauth2.el in > anger, since app passwords still work) > Yes, with a valid refresh token you can login without any manual steps. Unless the refresh_token itself is expired, in which case you'll have to re-authorize. > Xiyue> The third patch encodes the parameters for requesting refreshi= ng access > Xiyue> token, which is recommended because the client secret and other > Xiyue> parameters may contain characters that may break parameter par= sing. > > OK > > Xiyue> The fourth patch may need a bit of background: oauth2.el (opti= onally) > Xiyue> uses plstore to save authentication data for future reuse, and= the > Xiyue> plstore id for an account is computed using a combination of `= auth-url', > Xiyue> `token-url', and `scope'. However, this combination of data d= oesn't > Xiyue> guarantee uniqueness for accounts for a same provider, e.g. fo= r Gmail, > Xiyue> the three parameters are the same for different accounts, and = hence > Xiyue> storing a second account information will override the first o= ne. > > Xiyue> This fourth patch adds `client-id' to the calculation of plsto= re id to > Xiyue> ensure its uniqueness. This may cause a few concerns: > > Xiyue> - This will invalidate all existing entries and a user will ha= ve to redo > Xiyue> the authorization process again to get a new refresh token. = However, > Xiyue> I think it's more important to ensure that oauth2.el works c= orrectly > Xiyue> for multiple accounts of the same provider, or a user may su= ffer from > Xiyue> confusion when adding a new account invalidates a previous a= ccount. > > I don=CA=BCt think that=CA=BCs too big a concern. 'modern' authentication= flows > regularly re-prompt, so this will not be too surprising (although > maybe call it out in the package=CA=BCs NEWS or README). > I have added a NEWS file in patch 6 documenting this for 0.17 (which should be the version of the next release.) > Xiyue> - Adding `client-id' to the calculation of plstore id may prov= oke > Xiyue> suspicion of leaking it as the hash calculation uses md5. I= n most > Xiyue> cases, requesting a refresh token requires both `client-id' = and > Xiyue> `client-secret', so without including the latter it should b= e safe. > Xiyue> There are cases when requesting only the access token may wo= rk with > Xiyue> `client-id' along. Still, I think this should not be a big = concern as > Xiyue> the data is combined with `auth-url', `token-url', and `scop= e' which > Xiyue> provides sufficient salt. Alternatively, we can also choose= to use a > Xiyue> more secure hash function, e.g. SHA2 or better, given that e= xisting > Xiyue> entries will be invalidated anyway. > > If the existing entries are going to become invalid anyway, you might > as well take the opportunity to move away from md5 at the same > time. git picked SHA-256, but that was a while ago, so maybe SHA-512? > Makes sense. I have updated the hash function to use SHA-512 in patch 5. > Xiyue> The fifth patch adds debug messages when doing a URL query whi= ch records > Xiyue> the request URL, the request data, and the response data, and = provide a > Xiyue> custom variable to enable this. This provides a way to help d= ebugging > Xiyue> the requests, and I find it handy when testing oauth2 against = different > Xiyue> providers. > > OK (although perhaps make it a defvar rather than a defcustom, to > avoid people accidentally enabling it). > Done also in patch 5. > Robert --=20 Xiyue Deng --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0001-Show-full-authentication-URL-to-let-user-choose-how-.patch >From 2b9e50cb0948e0b4f28883042109994ffa295d3d Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Sun, 21 Jul 2024 14:50:56 -0700 Subject: [PATCH 1/6] Show full authentication URL to let user choose how to visit it * packages/oauth2/oauth2.el (oauth2-request-authorization): show full authentication URL in user prompt. --- oauth2.el | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/oauth2.el b/oauth2.el index 7da9702004..3a3e50ad2b 100644 --- a/oauth2.el +++ b/oauth2.el @@ -57,14 +57,17 @@ "Request OAuth authorization at AUTH-URL by launching `browse-url'. CLIENT-ID is the client id provided by the provider. It returns the code provided by the service." - (browse-url (concat auth-url - (if (string-match-p "\?" auth-url) "&" "?") - "client_id=" (url-hexify-string client-id) - "&response_type=code" - "&redirect_uri=" (url-hexify-string (or redirect-uri "urn:ietf:wg:oauth:2.0:oob")) - (if scope (concat "&scope=" (url-hexify-string scope)) "") - (if state (concat "&state=" (url-hexify-string state)) ""))) - (read-string "Enter the code your browser displayed: ")) + (let ((url (concat auth-url + (if (string-match-p "\?" auth-url) "&" "?") + "client_id=" (url-hexify-string client-id) + "&response_type=code" + "&redirect_uri=" (url-hexify-string (or redirect-uri "urn:ietf:wg:oauth:2.0:oob")) + (if scope (concat "&scope=" (url-hexify-string scope)) "") + (if state (concat "&state=" (url-hexify-string state)) "")))) + (browse-url url) + (read-string (concat "Follow the instruction on your default browser, or " + "visit:\n" url + "\nEnter the code your browser displayed: ")))) (defun oauth2-request-access-parse () "Parse the result of an OAuth request." -- 2.39.2 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0002-Add-parameters-required-by-Google-OAuth2-to-get-refr.patch >From 26ed9886bd9d3970d55cf76e4269cef3998503a7 Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Sun, 21 Jul 2024 14:52:02 -0700 Subject: [PATCH 2/6] Add parameters required by Google OAuth2 to get refresh_token * packages/oauth2/oauth2.el (oauth2-request-authorization): add `access_type=offline' and `prompt=consent' when requesting token to receive refresh_token. --- oauth2.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/oauth2.el b/oauth2.el index 3a3e50ad2b..9780ac3a1d 100644 --- a/oauth2.el +++ b/oauth2.el @@ -63,7 +63,9 @@ It returns the code provided by the service." "&response_type=code" "&redirect_uri=" (url-hexify-string (or redirect-uri "urn:ietf:wg:oauth:2.0:oob")) (if scope (concat "&scope=" (url-hexify-string scope)) "") - (if state (concat "&state=" (url-hexify-string state)) "")))) + (if state (concat "&state=" (url-hexify-string state)) "") + "&access_type=offline" + "&prompt=consent"))) (browse-url url) (read-string (concat "Follow the instruction on your default browser, or " "visit:\n" url -- 2.39.2 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0003-Encode-parameters-when-requesting-access.patch >From 59225412e1d06ae9e165cfde6a4a985cee4fc569 Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Sun, 21 Jul 2024 14:54:08 -0700 Subject: [PATCH 3/6] Encode parameters when requesting access * packages/oauth2/oauth2.el (oauth2-request-access): encode all parameters which may contain characters that breaks URL. --- oauth2.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/oauth2.el b/oauth2.el index 9780ac3a1d..b035742fc1 100644 --- a/oauth2.el +++ b/oauth2.el @@ -107,10 +107,10 @@ Return an `oauth2-token' structure." (oauth2-make-access-request token-url (concat - "client_id=" client-id + "client_id=" (url-hexify-string client-id) (when client-secret - (concat "&client_secret=" client-secret)) - "&code=" code + (concat "&client_secret=" (url-hexify-string client-secret))) + "&code=" (url-hexify-string code) "&redirect_uri=" (url-hexify-string (or redirect-uri "urn:ietf:wg:oauth:2.0:oob")) "&grant_type=authorization_code")))) (make-oauth2-token :client-id client-id -- 2.39.2 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0004-Support-storing-data-for-multiple-accounts-of-the-sa.patch >From e801af578e63c7e333e668bdfef05e4cf0802582 Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Sun, 28 Jul 2024 03:00:04 -0700 Subject: [PATCH 4/6] Support storing data for multiple accounts of the same provider Currently the plstore id computed by `oauth2-compute-id' only takes `auth-url', `token-url', and `scope' into account, which could be the same for the same provider (e.g. Gmail). This prevents storing information for multiple accounts of the same service for some providers. This patch adds `client-id' to the calculation of plstore id to make sure that it is unique for different accounts of the same provider. It also changes the hash function to sha512 to be more secure. * packages/oauth2/oauth2.el (oauth2-compute-id): add `client-id' as a parameter of `oauth2-compute-id' to ensure unique id amount multiple accounts of the same provider, and change hash function to sha512. --- oauth2.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/oauth2.el b/oauth2.el index b035742fc1..035971ac85 100644 --- a/oauth2.el +++ b/oauth2.el @@ -163,17 +163,17 @@ TOKEN should be obtained with `oauth2-request-access'." :group 'oauth2 :type 'file) -(defun oauth2-compute-id (auth-url token-url scope) +(defun oauth2-compute-id (auth-url token-url scope client-id) "Compute an unique id based on URLs. This allows to store the token in an unique way." - (secure-hash 'md5 (concat auth-url token-url scope))) + (secure-hash 'sha512 (concat auth-url token-url scope client-id))) ;;;###autoload (defun oauth2-auth-and-store (auth-url token-url scope client-id client-secret &optional redirect-uri state) "Request access to a resource and store it using `plstore'." ;; We store a MD5 sum of all URL (let* ((plstore (plstore-open oauth2-token-file)) - (id (oauth2-compute-id auth-url token-url scope)) + (id (oauth2-compute-id auth-url token-url scope client-id)) (plist (cdr (plstore-get plstore id)))) ;; Check if we found something matching this access (if plist -- 2.39.2 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0005-Add-debug-messages-and-provide-a-switch-variable-for.patch >From 08b04a07aa399bc756f1a8a00ae17cf333be02d9 Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Sun, 28 Jul 2024 03:41:20 -0700 Subject: [PATCH 5/6] Add debug messages and provide a switch variable for enabling This helps debugging whether the authorization and refresh requests were successful and inspecting the responses. * packages/oauth2/oauth2.el: add support for debug messages and a switch variable for enabling. --- oauth2.el | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/oauth2.el b/oauth2.el index 035971ac85..aca48f9ce1 100644 --- a/oauth2.el +++ b/oauth2.el @@ -40,6 +40,7 @@ (require 'plstore) (require 'json) (require 'url-http) +(require 'pp) (defvar url-http-data) (defvar url-http-method) @@ -53,6 +54,15 @@ :link '(url-link :tag "Savannah" "https://git.savannah.gnu.org/cgit/emacs/elpa.git/tree/?h=externals/oauth2") :link '(url-link :tag "ELPA" "https://elpa.gnu.org/packages/oauth2.html")) +(defcustom oauth2-debug nil + "Enable debug messages." + :type 'boolean) + +(defun oauth2--do-debug (&rest msg) + "Output debug messages when `oauth2-debug' is enabled." + (if oauth2-debug + (apply #'message msg))) + (defun oauth2-request-authorization (auth-url client-id &optional scope state redirect-uri) "Request OAuth authorization at AUTH-URL by launching `browse-url'. CLIENT-ID is the client id provided by the provider. @@ -79,6 +89,8 @@ It returns the code provided by the service." (defun oauth2-make-access-request (url data) "Make an access request to URL using DATA in POST." + (oauth2--do-debug "oauth2-make-access-request: url: %s" url) + (oauth2--do-debug "oauth2-make-access-request: data: %s" data) (let ((url-request-method "POST") (url-request-data data) (url-request-extra-headers @@ -86,6 +98,8 @@ It returns the code provided by the service." (with-current-buffer (url-retrieve-synchronously url) (let ((data (oauth2-request-access-parse))) (kill-buffer (current-buffer)) + (oauth2--do-debug "oauth2-make-access-request: response: %s" + (pp-to-string data)) data)))) (cl-defstruct oauth2-token @@ -158,10 +172,8 @@ TOKEN should be obtained with `oauth2-request-access'." auth-url client-id scope state redirect-uri) redirect-uri)) -(defcustom oauth2-token-file (concat user-emacs-directory "oauth2.plstore") - "File path where store OAuth tokens." - :group 'oauth2 - :type 'file) +(defvar oauth2-token-file (concat user-emacs-directory "oauth2.plstore") + "File path where store OAuth tokens.") (defun oauth2-compute-id (auth-url token-url scope client-id) "Compute an unique id based on URLs. -- 2.39.2 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0006-Add-NEWS-file-to-document-the-changes-to-plstore-id-.patch >From 2fbc85ee128cfdf7a1521bbc9554424e9ba510da Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Tue, 30 Jul 2024 03:46:57 -0700 Subject: [PATCH 6/6] Add NEWS file to document the changes to plstore id generation --- NEWS | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 NEWS diff --git a/NEWS b/NEWS new file mode 100644 index 0000000000..6715a1914a --- /dev/null +++ b/NEWS @@ -0,0 +1,23 @@ +Summary of changes to oauth2.el +------------------------------- + +For changes of 0.16 and older or full changes please check the git +history of the repository of oauth2.el. + +* 0.17 + +** Changes to plstore id generation and needs to reacquire refresh_token + +The generation of plstore id used to include `auth-url', `token-url', +and `scope'. Now `client-id' is also included. This is required to +support multiple accounts of some providers which use the same +`auth-url', `token-url', and `scope' (e.g. Gmail), and hence the +generated plstore id is not unique amount accounts. Adding +`client-id' solves this problem. + +The hash function of calculating the plstore id has also changed from +MD5 to SHA512 to be more secure. + +As a result, users of oauth2.el will need to redo the authentication +process to get a new refresh_token when upgrading from older version +to 0.17. -- 2.39.2 --=-=-=-- From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Xiyue Deng Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 30 Jul 2024 19:42:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: =?UTF-8?Q?Bj=C3=B6rn?= Bidar Cc: Robert Pluim , 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.172236851323799 (code B ref 72358); Tue, 30 Jul 2024 19:42:01 +0000 Received: (at 72358) by debbugs.gnu.org; 30 Jul 2024 19:41:53 +0000 Received: from localhost ([127.0.0.1]:48403 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sYsjI-0006Bn-T0 for submit@debbugs.gnu.org; Tue, 30 Jul 2024 15:41:53 -0400 Received: from mail-pl1-f181.google.com ([209.85.214.181]:58427) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sYsjG-0006Ba-80 for 72358@debbugs.gnu.org; Tue, 30 Jul 2024 15:41:51 -0400 Received: by mail-pl1-f181.google.com with SMTP id d9443c01a7336-1fc5296e214so36604915ad.0 for <72358@debbugs.gnu.org>; Tue, 30 Jul 2024 12:41:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1722368430; x=1722973230; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id :reply-to; bh=pTi/9sqSb6sLc6Trmi91xUZn/+9BODS5pFcVoSGF7e0=; b=dQ2J6hSt/QPA996lszyJsLF8sybo6pD8bZ/38AFsKLx0IpwHgA5SJzk7cYlPt5pb8o SofH//vNks7hz5SlD4o+vx9CH1WflEwOQqIpV0Xbo21clRZEdxLrllCbc7OcVfkIr0yc UUKwOZKZdTcopyQk0is7DfLOdxQGWUv899y2aPHSq/2MdvrF5oN1XXca79gN/hMxTTl7 FYK1//nOLqBttJV85bUvoXh+CjCbE/lw6BHbEpQflPJMUzNIYBga/wAFrOxzNrrXcIfm 7mR5i9GPp2wM9Km3bRcn5izlUaSwAOOV+L4aK3yxwt6fLbGSwYw5agH8G9mFhb3Y2iuh Og3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722368430; x=1722973230; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pTi/9sqSb6sLc6Trmi91xUZn/+9BODS5pFcVoSGF7e0=; b=rfzT1CG01qJ/Z+gd9WMXQw/xUGGBUYv6ANnmgvUMVUv1coRxRBesvJjV7Fi1M9QIvg 6PqPDovbYv3zsUlViBf3hNePR8niA+Ei2AupXig7ZgMCVQjiUG/jcWtaSUhVhnn6OzYc pxySbVY6kFn9C6LlnmlYBY5PNhC61RzhIVOPWc/5c3JXmiU5RR6epC56PXjQIwwPG2To ZVDW0kRPqW2mf4ERXqDlYEHQ7mH4Ja9IOXdfs1c59hVakJ2Dw2az2zKknvSAOTVyGAlQ PYY0PP9qR8lFWy6+BGu1JlEXREu0+iqgwA92jcP/AiC6Hnp17AIKEOFkvmAU2Cy82XqI 1c1Q== X-Forwarded-Encrypted: i=1; AJvYcCWNRM9TrwvTWSzcZFy8oG7LcQqU2gK4PBRx8ypaK7IdwRaHJhnKFR1WMBUixAs55raaphDu4/TvSQ1wQkp3q/KXJL/AsJs= X-Gm-Message-State: AOJu0YxjaWLRaAexYIJ7U10YVIQ9Rs9nbzmLvJHn5inZIfhaZwlNR1iY 5j1R5xey+Wrk9M3TS33RwOIMrQC8bLkwjufrob7vgLily2qC/QJt8XE2yol5 X-Google-Smtp-Source: AGHT+IG4pzHShA2Z9WpVOSa8xEmiZxrYhRs6aK7q0mhNs7mrscitziXWfkilBbTiB+K/don1i8w+qQ== X-Received: by 2002:a17:902:d50f:b0:1fd:acd1:b658 with SMTP id d9443c01a7336-1ff048df124mr154116095ad.55.1722368429594; Tue, 30 Jul 2024 12:40:29 -0700 (PDT) Received: from debian-hx90 (syn-104-172-240-218.res.spectrum.com. [104.172.240.218]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1fed7c88a67sm105994685ad.11.2024.07.30.12.40.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Jul 2024 12:40:29 -0700 (PDT) From: Xiyue Deng In-Reply-To: <66a8f323.170a0220.9172c.8e28SMTPIN_ADDED_BROKEN@mx.google.com> ("=?UTF-8?Q?Bj=C3=B6rn?= Bidar"'s message of "Tue, 30 Jul 2024 17:05:21 +0300") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <66a8f323.170a0220.9172c.8e28SMTPIN_ADDED_BROKEN@mx.google.com> Date: Tue, 30 Jul 2024 12:40:28 -0700 Message-ID: <87a5hy8y8j.fsf@debian-hx90.lan> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Bj=C3=B6rn Bidar writes: > Robert Pluim writes: > >> Xiyue> - This will invalidate all existing entries and a user will h= ave to redo >> Xiyue> the authorization process again to get a new refresh token.= However, >> Xiyue> I think it's more important to ensure that oauth2.el works = correctly >> Xiyue> for multiple accounts of the same provider, or a user may s= uffer from >> Xiyue> confusion when adding a new account invalidates a previous = account. >> >> I don=CA=BCt think that=CA=BCs too big a concern. 'modern' authenticatio= n flows >> regularly re-prompt, so this will not be too surprising (although >> maybe call it out in the package=CA=BCs NEWS or README). > > In many cases the refreshing of tokens is transparent to the user there > doesn't have to be a re-prompt to refresh the token if the OAuth > provider support it. > Micrsofts OAuth workflow is quite good in this regard as there's a > non-standard error to indicate when the user has to re-authorize the > application. > Actually I am currently having trouble for a few weeks to get my outlook.com email work with MS OAuth2. To avoid some repeated typing, I have documented the issues and steps I have tried in this stackoverflow question[1]. I would great appreciated it if you can shed some lights there > I assume all implementation of OAuth have their quirks. Indeed. [1] https://stackoverflow.com/questions/78787763/getting-aadsts65001-error-= invalid-grant-when-trying-to-refresh-access-token-fo --=20 Xiyue Deng From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Xiyue Deng Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 30 Jul 2024 19:44:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: =?UTF-8?Q?Bj=C3=B6rn?= Bidar Cc: 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.172236859223969 (code B ref 72358); Tue, 30 Jul 2024 19:44:02 +0000 Received: (at 72358) by debbugs.gnu.org; 30 Jul 2024 19:43:12 +0000 Received: from localhost ([127.0.0.1]:48407 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sYska-0006EW-C7 for submit@debbugs.gnu.org; Tue, 30 Jul 2024 15:43:12 -0400 Received: from mail-pl1-f169.google.com ([209.85.214.169]:60782) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sYskX-0006EI-Qv for 72358@debbugs.gnu.org; Tue, 30 Jul 2024 15:43:10 -0400 Received: by mail-pl1-f169.google.com with SMTP id d9443c01a7336-1fb3b7d0d56so24965625ad.1 for <72358@debbugs.gnu.org>; Tue, 30 Jul 2024 12:42:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1722368509; x=1722973309; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id :reply-to; bh=uo7k9V7bc6z5+SdUp1cEcHBL4oG7qjEC9wSwbKXg2QA=; b=MQP7SxKXjrrMore2kyhP9aTu2gRbNNL56n/MP1zW2zi1rH4ZcBpQGRDbhgoPtFTF34 Y1AMPIy/0vz5U78jueJbydUgljV2nUembepa9PxAI3Mn0P6ED3g+r0qypxNm2ll//T2u JYzPe+h7+UyKZa82D1nSMQSdZ/lnQqx/dvzawyM3Mydk6Tgu1lQaDtrNedBZyZXbw4fm MxceftJ0icWRO5wIfzQuZG0lyQwOc99Qs6xRCnB5hbWDRYzlMjC3o+8++LLmy2VF4/nL 8twjg0PCWaZKdYZRosKTJqopmVeeYJnOKPNCGMPL2oiIBl6E7hCOn7oek8rdO184+CjN 2kLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722368509; x=1722973309; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=uo7k9V7bc6z5+SdUp1cEcHBL4oG7qjEC9wSwbKXg2QA=; b=Br3NyQVoUCouvrsNMc3umvhc7Ws0jBa+KjsVsFDBIBRnriA6KoaNHN2DUasL0qGGIg Z2R1BeVxl7BLpmOzTiKCbYSGLaDfzXdbu/iWbrQ9VtClIYvGnijZkAzEtEdRcEH6CSIg 8xyNFOerRSkvme2wVImmprLSK9TM9U0gl/saqAfBEvgFw6roysi6HfwHTmErAAVqO8f3 cClTnOKhx1BjRMMHlRQ47t0C9Uuu9M/vdVXcJubOuFGHbKb8kC9QAPFrSCS1CjzrwSwe vZukZAEgRPdlfHwBY8RnoruRRUjgqz8/Be+wcqI9GqU2R2tsu/1Qu9z5wf6ABQNOviK7 Rb8w== X-Gm-Message-State: AOJu0YxIbCQgk9RThCgI480SME04tVqmrr+OzcQOmqSlWw6GFZLATjRV XXKnbWOXyOBm6NuvPeOrY6FhB6KMVNT5ej0m/D6UXTw7vjZ3M10OWUP9AZ1I X-Google-Smtp-Source: AGHT+IENfGFmJ3moTT/z37x2lnp+h/GjbE5TLxp4kT+awiUEf1kjqIY6Fa9iUmDxhDNvRBYP28n/1A== X-Received: by 2002:a17:902:f685:b0:1fd:d6d8:133e with SMTP id d9443c01a7336-1ff04817b79mr123251515ad.14.1722368509293; Tue, 30 Jul 2024 12:41:49 -0700 (PDT) Received: from debian-hx90 (syn-104-172-240-218.res.spectrum.com. [104.172.240.218]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1fed7cc0213sm108105845ad.72.2024.07.30.12.41.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Jul 2024 12:41:48 -0700 (PDT) From: Xiyue Deng In-Reply-To: <66a8f3d6.050a0220.8facb.d530SMTPIN_ADDED_BROKEN@mx.google.com> ("=?UTF-8?Q?Bj=C3=B6rn?= Bidar"'s message of "Tue, 30 Jul 2024 17:08:21 +0300") References: <87mslz8yzk.fsf@debian-hx90.lan> <66a8f3d6.050a0220.8facb.d530SMTPIN_ADDED_BROKEN@mx.google.com> Date: Tue, 30 Jul 2024 12:41:47 -0700 Message-ID: <875xsm8y6c.fsf@debian-hx90.lan> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Bj=C3=B6rn Bidar writes: > Xiyue Deng writes: > >> The fourth patch may need a bit of background: oauth2.el (optionally) >> uses plstore to save authentication data for future reuse, and the >> plstore id for an account is computed using a combination of `auth-url', >> `token-url', and `scope'. However, this combination of data doesn't >> guarantee uniqueness for accounts for a same provider, e.g. for Gmail, >> the three parameters are the same for different accounts, and hence >> storing a second account information will override the first one. > > Would it make sense to plug OAuth2.el into auth-source to store the > authentication token safely inside an existing credential storage? > > Various applications already do so when using the native credential > storages such as Freedesktop.org or the macOS keyring. As I mentioned to Robert, I do have another addon to do exactly this, though through an awkward advice. Would be great if auth-source can make use of oauth2.el and handle that more gracefully. I'll file another bug to explore options once this one is done. --=20 Xiyue Deng From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Xiyue Deng Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 30 Jul 2024 19:47:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Robert Pluim Cc: =?UTF-8?Q?Bj=C3=B6rn?= Bidar , 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.172236876424330 (code B ref 72358); Tue, 30 Jul 2024 19:47:01 +0000 Received: (at 72358) by debbugs.gnu.org; 30 Jul 2024 19:46:04 +0000 Received: from localhost ([127.0.0.1]:48411 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sYsnM-0006KJ-1f for submit@debbugs.gnu.org; Tue, 30 Jul 2024 15:46:04 -0400 Received: from mail-pf1-f180.google.com ([209.85.210.180]:42287) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sYsnK-0006JY-Ou for 72358@debbugs.gnu.org; Tue, 30 Jul 2024 15:46:03 -0400 Received: by mail-pf1-f180.google.com with SMTP id d2e1a72fcca58-70d18112b60so179635b3a.1 for <72358@debbugs.gnu.org>; Tue, 30 Jul 2024 12:45:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1722368682; x=1722973482; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id :reply-to; bh=29wfx/5jpk2MgSipDSGSXo7A8kK3yG0+wne0bE6TcrA=; b=KYtH7M8xcZ5rli8STlqL0i5vsGnzfKfmpzbeRXlwazYtiFKfVJvz5YxPyX6ZXgjCmo szxROGY4f/Y0uOEJekN013hiX1mt44C9IIigbD4JZOjs+IpoV/BJuRDvW4U6cVfF3dDy +gqLlqFn0Y9SzMnLaLRGGKbuCf/Rm2xH9ckTWdvQL8wQouWr7CMolNL+1CNxJvN6OqFw sqY0+z6uLRgsTHW3J9VV/MCNDfxFRe8tYDURUiNakxaMprXqVzldY2UMPDlN8NBnQT/e hCy//rQ1so4Yt3bIBXgYQE7I1+emlLgmgPticr/dIGpMUcxW4RzGaOyqnvJMATdqKfRq 5Nlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722368682; x=1722973482; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=29wfx/5jpk2MgSipDSGSXo7A8kK3yG0+wne0bE6TcrA=; b=SKEOTK72ZiEDo2ijBp4VQ+mAt29SDZ6574i0CabFqKCRlYqzx3tLoyBjgb2uu5Ozvf aTXsh02uFhtZ96sPJsV1CPvn/rrOeNPirPIKM2jtKEk4QAs/v9NROHNGaT7JRSuPKWlP FH5jdrlO4vgCd7ml31ifxLR4yiTXg0ll//WDB4PVeth5yxYdQBg8Rmwdem4ALZwheA80 6pcvZ2i2N6+JEOSIoAsVQzTx7WUp3HdywfnPa6z17NGwO4va57YoHDK3yXjdawla0FvG hjKQjYA+hebCoRBbKj6lkxOdM21SkdgiXpffXSwpweAJtB0z1wmaQ9Qvhp1o7woIpp9o SViQ== X-Forwarded-Encrypted: i=1; AJvYcCXvQZavcMWymeX8V2ioN1IqFXNyvwi44NaD9VfTWAuFHjFngOKzFybuTqVYsyqznTi5d/7U6fF9lIRCY5A3hXiyzR+rtvc= X-Gm-Message-State: AOJu0YyojgTANfdHTs73nO0iYvE4QNwk1pAtc5CNTrS+o5PSA4rmqdzS iEZmreTfduJ+1evZ4WbNQpmwJsOTLBo0mXR3yeQRLPA5qM7ETdSgcVLbQBbY X-Google-Smtp-Source: AGHT+IEJLA02ZTDdSZeiBHJvmYUFNK4qe6TUm1jdOck0FWDEhSu5N+esfPQrhjFc4j0qoEbAF/Niqg== X-Received: by 2002:a05:6a20:7f8e:b0:1c4:83f4:356 with SMTP id adf61e73a8af0-1c4e4853b79mr4993074637.18.1722368682261; Tue, 30 Jul 2024 12:44:42 -0700 (PDT) Received: from debian-hx90 (syn-104-172-240-218.res.spectrum.com. [104.172.240.218]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-7a9fa5a0bcesm7942475a12.89.2024.07.30.12.44.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Jul 2024 12:44:41 -0700 (PDT) From: Xiyue Deng In-Reply-To: <87r0bbvt9d.fsf@gmail.com> (Robert Pluim's message of "Tue, 30 Jul 2024 16:39:26 +0200") References: <87mslz8yzk.fsf@debian-hx90.lan> <9717.00003590144$1722349291@news.gmane.org> <87r0bbvt9d.fsf@gmail.com> Date: Tue, 30 Jul 2024 12:44:40 -0700 Message-ID: <871q3a8y1j.fsf@debian-hx90.lan> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Robert Pluim writes: >>>>>> On Tue, 30 Jul 2024 17:08:21 +0300, Bj=C3=B6rn Bidar via "Bug report= s for GNU Emacs, the Swiss army knife of text editors" said: > > Bj=C3=B6rn> Xiyue Deng writes: > >> The fourth patch may need a bit of background: oauth2.el (optional= ly) > >> uses plstore to save authentication data for future reuse, and the > >> plstore id for an account is computed using a combination of `auth= -url', > >> `token-url', and `scope'. However, this combination of data doesn= 't > >> guarantee uniqueness for accounts for a same provider, e.g. for Gm= ail, > >> the three parameters are the same for different accounts, and hence > >> storing a second account information will override the first one. > > Bj=C3=B6rn> Would it make sense to plug OAuth2.el into auth-source to= store the > Bj=C3=B6rn> authentication token safely inside an existing credential= storage? > > Bj=C3=B6rn> Various applications already do so when using the native = credential > Bj=C3=B6rn> storages such as Freedesktop.org or the macOS keyring. > > Yes. In fact there=CA=BCs the auth-source-xoauth2 package that does > that. And oauth2 can already store stuff using plstore, so I=CA=BCm sure = it > can be extended to use auth-source. > auth-source-xoauth2 doesn't actually use auth-source (e.g. ~/.authinfo.gpg) to store the data it needs, but use a custom file storing an ELisp hash table to store the client-id, client-secret, etc. It does advice the authentication code to use the calculated token. > > Robert --=20 Xiyue Deng From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: =?UTF-8?Q?Bj=C3=B6rn?= Bidar Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 30 Jul 2024 21:52:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Xiyue Deng Cc: Robert Pluim , 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.17223762965073 (code B ref 72358); Tue, 30 Jul 2024 21:52:02 +0000 Received: (at 72358) by debbugs.gnu.org; 30 Jul 2024 21:51:36 +0000 Received: from localhost ([127.0.0.1]:48654 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sYukp-0001Jl-Uj for submit@debbugs.gnu.org; Tue, 30 Jul 2024 17:51:36 -0400 Received: from thaodan.de ([185.216.177.71]:58934) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sYukm-0001JT-QS for 72358@debbugs.gnu.org; Tue, 30 Jul 2024 17:51:33 -0400 Received: from odin (dsl-trebng12-50dc75-154.dhcp.inet.fi [80.220.117.154]) by thaodan.de (Postfix) with ESMTPSA id 16A08D0004E; Wed, 31 Jul 2024 00:50:41 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=thaodan.de; s=mail; t=1722376241; bh=iENIAkRdpDEnNlCMz3xmwTAPv+PYGgNUbZlnklXDB0g=; h=From:To:Cc:Subject:In-Reply-To:References:Date; b=a7OpUSSf2evuRolR5m28UaaJ+KNzsCtKR0cnTuQlKtM8e5/jmSgVSH5dxTpWySrsf /E9L5ueWvjD/8FYJjQcsyD8ZtYaHiof3tzKt/+LciFX4cmLh4YXSkRVIP+CPn8N6YK hh6o6JaSLmRN8pVvra3+e+2wG/OVbSM5/tR4jZYfhNpmm/BS6ALBxFmopCjNkL/3HV 4fOSO3CdtFyImWQe2xVONTHBxTAwv8YrnY6yzUhET09dPUH/veLOrjw1Z/7jMIObJn a9SYPwGgy3eRrG59V2NsbHyUIVS5FNNTZBasDx3/8Zq/Gg/H+7/vwjxqgMCZp9BXSx mSajJ5qokXGsnWjNyEtnGtmkdFAg1FN8F1UP/rnzf0hhL6yUwF1XDQI0CcA7MtHso7 xo+JWExrlMv394Mq6No7zQEDPar8xgOBM+DpUIJqOFM0ipSxUpsMRKp5BTiVOE+Xtd AF3/XACdwVrAyI3KxK4iV7U/qvat2vSgObp386PIWwaOMncBK5049T6WConS5TuxwG n4i9JBwyjUjCrKJ4PNsx6Ipierb7NU03P+AAcpCl/ztquFdlpegdll9r8pIgvRCCei cVwi6YBCT1jahl9j2uKyg0+nwdtMvYtCV1KRPNy6NBX2HI3k67To4YsffPIh+6DbE1 rPYXrTEAX4zGH5lUAH0iT8ws= From: =?UTF-8?Q?Bj=C3=B6rn?= Bidar In-Reply-To: <87a5hy8y8j.fsf@debian-hx90.lan> (Xiyue Deng's message of "Tue, 30 Jul 2024 12:40:28 -0700") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <66a8f323.170a0220.9172c.8e28SMTPIN_ADDED_BROKEN@mx.google.com> <87a5hy8y8j.fsf@debian-hx90.lan> Autocrypt: addr=bjorn.bidar@thaodan.de; prefer-encrypt=nopreference; keydata= mDMEZNfpPhYJKwYBBAHaRw8BAQdACBEmr+0xwIIHZfIDlZmm7sa+lHHSb0g9FZrN6qE6ru60JUJq w7ZybiBCaWRhciA8Ympvcm4uYmlkYXJAdGhhb2Rhbi5kZT6IlgQTFgoAPgIbAwULCQgHAgIiAgYV CgkICwIEFgIDAQIeBwIXgBYhBFHxdut1RzAepymoq1wbdKFlHF9oBQJk1/YmAhkBAAoJEFwbdKFl HF9oB9cBAJoIIGQKXm4cpap+Flxc/EGnYl0123lcEyzuduqvlDT0AQC3OlFKm/OiqJ8IMTrzJRZ8 phFssTkSrrFXnM2jm5PYDoiTBBMWCgA7FiEEUfF263VHMB6nKairXBt0oWUcX2gFAmTX6T4CGwMF CwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQXBt0oWUcX2hbCQEAtru7kvM8hi8zo6z9ux2h K+B5xViKuo7Z8K3IXuK5ugwA+wUfKzomzdBPhfxDsqLcEziGRxoyx0Q3ld9aermBUccHtBxCasO2 cm4gQmlkYXIgPG1lQHRoYW9kYW4uZGU+iJMEExYKADsCGwMFCwkIBwICIgIGFQoJCAsCBBYCAwEC HgcCF4AWIQRR8XbrdUcwHqcpqKtcG3ShZRxfaAUCZNf2FQAKCRBcG3ShZRxfaCzSAP4hZ7cSp0YN XYpcjHdsySh2MuBhhoPeLGXs+2kSiqBiOwD/TP8AgPEg/R+SI9GI9on7fBJJ0mp2IT8kZ2rhDOjg gA6IkwQTFgoAOxYhBFHxdut1RzAepymoq1wbdKFlHF9oBQJk1+ntAhsDBQsJCAcCAiICBhUKCQgL AgQWAgMBAh4HAheAAAoJEFwbdKFlHF9oBgwA/iQHwe0VL4Df4GGTYlNjMSHFlIkBmN4UfYGLYj3E TrOUAQC51M+M3cjsL8WHdpBz6VAo6df9d+rVwhQ9vQuFHqevArg4BGTX6T4SCisGAQQBl1UBBQEB B0Cbohc3JEfn005/cm0AOGjSsW1ZxAkgaoVNjbpqk4MgNAMBCAeIeAQYFgoAIBYhBFHxdut1RzAe pymoq1wbdKFlHF9oBQJk1+k+AhsMAAoJEFwbdKFlHF9ooHABAKGmrGBic/Vys3BBrOQiRB3Z7izO HwhqTRpAqFZtXS2nAQDZhp/5aYw1TZjTzkm1KVt9QiYnjd/MvxRE9iaY6x4mDbgzBGTX6T4WCSsG AQQB2kcPAQEHQAgRJq/tMcCCB2XyA5WZpu7GvpRx0m9IPRWazeqhOq7uiO8EGBYKACAWIQRR8Xbr dUcwHqcpqKtcG3ShZRxfaAUCZNf71AIbIgCBCRBcG3ShZRxfaHYgBBkWCgAdFiEEUfF263VHMB6n KairXBt0oWUcX2gFAmTX+9QACgkQXBt0oWUcX2jeSwD6AtWn0cuo8IF35YRo4o3cDRJnUfJnbvJy GxyCDThR+zYBAKG6/jdwmZkBQZKslnDAbMMd2WfiZZT5JW3IWC4EaKMO7HkBAKYPGZ3UbfkRvfFK S+pQ9CgtNfkSJQBtT1Ob7Y6nsacgAQCpyXN7yppmhW/oBgivITPy9Lkg+V4NK9WZYZCU9Q7LBA== Date: Wed, 31 Jul 2024 00:50:39 +0300 Message-ID: <871q3a8s7k.fsf@> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 1.2 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Xiyue Deng writes: > =?UTF-8?Q?Bj=C3=B6rn?= Bidar writes: > >> Robert Pluim writes: >> >>> Xiyue> - This will invalidate all existing entries and a user will have to redo >>> Xiyue> the autho [...] Content analysis details: (1.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_PASS SPF: sender matches SPF record -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 1.2 INVALID_MSGID Message-Id is not valid, according to RFC 2822 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.2 (/) Xiyue Deng writes: > Bj=C3=B6rn Bidar writes: > >> Robert Pluim writes: >> >>> Xiyue> - This will invalidate all existing entries and a user will = have to redo >>> Xiyue> the authorization process again to get a new refresh token= . However, >>> Xiyue> I think it's more important to ensure that oauth2.el works= correctly >>> Xiyue> for multiple accounts of the same provider, or a user may = suffer from >>> Xiyue> confusion when adding a new account invalidates a previous= account. >>> >>> I don=CA=BCt think that=CA=BCs too big a concern. 'modern' authenticati= on flows >>> regularly re-prompt, so this will not be too surprising (although >>> maybe call it out in the package=CA=BCs NEWS or README). >> >> In many cases the refreshing of tokens is transparent to the user there >> doesn't have to be a re-prompt to refresh the token if the OAuth >> provider support it. >> Micrsofts OAuth workflow is quite good in this regard as there's a >> non-standard error to indicate when the user has to re-authorize the >> application. >> > > Actually I am currently having trouble for a few weeks to get my > outlook.com email work with MS OAuth2. To avoid some repeated typing, I > have documented the issues and steps I have tried in this stackoverflow > question[1]. I would great appreciated it if you can shed some lights > there > I remember when adding OAuth support to Sailfish OS we needed to patch our signon to work with the non-standard Microsoft flow. We have this patch on top of the OAuth2 plugin for signond to accept that they send the authentication as a request for you to fetch upon you have to another request with the new url to get authentication code. The patch can be found here: https://github.com/sailfishos/signon-plugin-oauth2/blob/master/rpm/0005-Sup= port-Microsoft-OAuth2-flow.patch I'm not the person who wrote the patch but I fixed the plugin later for Dropbox so that PKCE (RFC7636) isn't used unless the server requests it (response type must be code to request PKCE). PKCE is strongly recommended. The patch above already works kinda that way without requesting PKCE. Read here for further information: https://learn.microsoft.com/en-us/entra/identity-platform/v2-oauth2-auth-co= de-flow https://datatracker.ietf.org/doc/html/rfc7636 From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: =?UTF-8?Q?Bj=C3=B6rn?= Bidar Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 30 Jul 2024 21:53:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Xiyue Deng Cc: 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.17223763655198 (code B ref 72358); Tue, 30 Jul 2024 21:53:02 +0000 Received: (at 72358) by debbugs.gnu.org; 30 Jul 2024 21:52:45 +0000 Received: from localhost ([127.0.0.1]:48659 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sYulx-0001Ll-FU for submit@debbugs.gnu.org; Tue, 30 Jul 2024 17:52:45 -0400 Received: from thaodan.de ([185.216.177.71]:46452) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sYulv-0001LY-J8 for 72358@debbugs.gnu.org; Tue, 30 Jul 2024 17:52:44 -0400 Received: from odin (dsl-trebng12-50dc75-154.dhcp.inet.fi [80.220.117.154]) by thaodan.de (Postfix) with ESMTPSA id 51E8AD0004E; Wed, 31 Jul 2024 00:51:53 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=thaodan.de; s=mail; t=1722376313; bh=sdH3uwrC5r4j7NqvKz3oyJ7My6XogLAjMcqONGPkCq0=; h=From:To:Cc:Subject:In-Reply-To:References:Date; b=sMQIVAa9cGteHU2asLlLk1jB0l2opjjfI9XXNxr6AKv/bJomrlSLK0py0IFviOt9r B0gOWYr5FPf4y+kzDEVSEJwEkMGGHqQ8BIgTTB5l40MFKJQnRyxT8IQzAHUmbXjfZW Zz7L6U67MPJ9UIseXUumvNZlJQOkUf/e5OfGWAmG19CN23UUxijfW3KoeSwRPp/OoG hvVs2/7RkhFVVr//vhriBiHgqwbcd2XlJe0vERM5nQ1Vyrcm3hCMYiR6K9GOF2s/0V 1Eco9/SWdrcm8KvT/WtO32Ra8FYGlpf8BeD53kxsxm3Z8dhxxczZD+ucE6hGv+R3Jw EHT2BJNg4viv6WjT3PoV/x4lOLhxRAtTwIdJQg0KxyIMz3alKzxNWbaZTfZuBF3XaW UFJP2D5u7Hon6xRMDtziaMcqJgeOOlkStiigJmXx6ZYaQTkgyyC260DQCyIsmUGsi2 2l8YO9Tqzt5C7goYbfeoPUnqN48ekoM5oaaA5EiI9R2DctHK6oDaD6cBLYS/Z93Ux/ 0bQjcHtZq671F/zARuFTIS7wQjSNuDJIFP3p7dItI+XucOE7b7+QpgnY8T+XoKJ3dv 8Wob0lI3qxh7VZk9MZmr0PMASHe40fSDBtrZJybcRaK+UL07hjSxRydu6CPs/XVZJ1 GFPXwIYR64pH8j2qJHScsrfQ= From: =?UTF-8?Q?Bj=C3=B6rn?= Bidar In-Reply-To: <875xsm8y6c.fsf@debian-hx90.lan> (Xiyue Deng's message of "Tue, 30 Jul 2024 12:41:47 -0700") References: <87mslz8yzk.fsf@debian-hx90.lan> <66a8f3d6.050a0220.8facb.d530SMTPIN_ADDED_BROKEN@mx.google.com> <875xsm8y6c.fsf@debian-hx90.lan> Autocrypt: addr=bjorn.bidar@thaodan.de; prefer-encrypt=nopreference; keydata= mDMEZNfpPhYJKwYBBAHaRw8BAQdACBEmr+0xwIIHZfIDlZmm7sa+lHHSb0g9FZrN6qE6ru60JUJq w7ZybiBCaWRhciA8Ympvcm4uYmlkYXJAdGhhb2Rhbi5kZT6IlgQTFgoAPgIbAwULCQgHAgIiAgYV CgkICwIEFgIDAQIeBwIXgBYhBFHxdut1RzAepymoq1wbdKFlHF9oBQJk1/YmAhkBAAoJEFwbdKFl HF9oB9cBAJoIIGQKXm4cpap+Flxc/EGnYl0123lcEyzuduqvlDT0AQC3OlFKm/OiqJ8IMTrzJRZ8 phFssTkSrrFXnM2jm5PYDoiTBBMWCgA7FiEEUfF263VHMB6nKairXBt0oWUcX2gFAmTX6T4CGwMF CwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQXBt0oWUcX2hbCQEAtru7kvM8hi8zo6z9ux2h K+B5xViKuo7Z8K3IXuK5ugwA+wUfKzomzdBPhfxDsqLcEziGRxoyx0Q3ld9aermBUccHtBxCasO2 cm4gQmlkYXIgPG1lQHRoYW9kYW4uZGU+iJMEExYKADsCGwMFCwkIBwICIgIGFQoJCAsCBBYCAwEC HgcCF4AWIQRR8XbrdUcwHqcpqKtcG3ShZRxfaAUCZNf2FQAKCRBcG3ShZRxfaCzSAP4hZ7cSp0YN XYpcjHdsySh2MuBhhoPeLGXs+2kSiqBiOwD/TP8AgPEg/R+SI9GI9on7fBJJ0mp2IT8kZ2rhDOjg gA6IkwQTFgoAOxYhBFHxdut1RzAepymoq1wbdKFlHF9oBQJk1+ntAhsDBQsJCAcCAiICBhUKCQgL AgQWAgMBAh4HAheAAAoJEFwbdKFlHF9oBgwA/iQHwe0VL4Df4GGTYlNjMSHFlIkBmN4UfYGLYj3E TrOUAQC51M+M3cjsL8WHdpBz6VAo6df9d+rVwhQ9vQuFHqevArg4BGTX6T4SCisGAQQBl1UBBQEB B0Cbohc3JEfn005/cm0AOGjSsW1ZxAkgaoVNjbpqk4MgNAMBCAeIeAQYFgoAIBYhBFHxdut1RzAe pymoq1wbdKFlHF9oBQJk1+k+AhsMAAoJEFwbdKFlHF9ooHABAKGmrGBic/Vys3BBrOQiRB3Z7izO HwhqTRpAqFZtXS2nAQDZhp/5aYw1TZjTzkm1KVt9QiYnjd/MvxRE9iaY6x4mDbgzBGTX6T4WCSsG AQQB2kcPAQEHQAgRJq/tMcCCB2XyA5WZpu7GvpRx0m9IPRWazeqhOq7uiO8EGBYKACAWIQRR8Xbr dUcwHqcpqKtcG3ShZRxfaAUCZNf71AIbIgCBCRBcG3ShZRxfaHYgBBkWCgAdFiEEUfF263VHMB6n KairXBt0oWUcX2gFAmTX+9QACgkQXBt0oWUcX2jeSwD6AtWn0cuo8IF35YRo4o3cDRJnUfJnbvJy GxyCDThR+zYBAKG6/jdwmZkBQZKslnDAbMMd2WfiZZT5JW3IWC4EaKMO7HkBAKYPGZ3UbfkRvfFK S+pQ9CgtNfkSJQBtT1Ob7Y6nsacgAQCpyXN7yppmhW/oBgivITPy9Lkg+V4NK9WZYZCU9Q7LBA== Date: Wed, 31 Jul 2024 00:51:52 +0300 Message-ID: <87wml27dl3.fsf@> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 1.2 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Xiyue Deng writes: > =?UTF-8?Q?Bj=C3=B6rn?= Bidar writes: > >> Xiyue Deng writes: >> >>> The fourth patch may need a bit of background: oauth2.el (optionally) >>> uses plstore to save authen [...] Content analysis details: (1.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_PASS SPF: sender matches SPF record -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 1.2 INVALID_MSGID Message-Id is not valid, according to RFC 2822 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.2 (/) Xiyue Deng writes: > Bj=C3=B6rn Bidar writes: > >> Xiyue Deng writes: >> >>> The fourth patch may need a bit of background: oauth2.el (optionally) >>> uses plstore to save authentication data for future reuse, and the >>> plstore id for an account is computed using a combination of `auth-url', >>> `token-url', and `scope'. However, this combination of data doesn't >>> guarantee uniqueness for accounts for a same provider, e.g. for Gmail, >>> the three parameters are the same for different accounts, and hence >>> storing a second account information will override the first one. >> >> Would it make sense to plug OAuth2.el into auth-source to store the >> authentication token safely inside an existing credential storage? >> >> Various applications already do so when using the native credential >> storages such as Freedesktop.org or the macOS keyring. > > As I mentioned to Robert, I do have another addon to do exactly this, > though through an awkward advice. Would be great if auth-source can > make use of oauth2.el and handle that more gracefully. I'll file > another bug to explore options once this one is done. Care to post this advice? It's not an optimal solution but better than nothing in the interim. From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Xiyue Deng Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 31 Jul 2024 07:46:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: =?UTF-8?Q?Bj=C3=B6rn?= Bidar Cc: 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.172241190231507 (code B ref 72358); Wed, 31 Jul 2024 07:46:01 +0000 Received: (at 72358) by debbugs.gnu.org; 31 Jul 2024 07:45:02 +0000 Received: from localhost ([127.0.0.1]:48969 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sZ417-0008Bk-BO for submit@debbugs.gnu.org; Wed, 31 Jul 2024 03:45:02 -0400 Received: from mail-pl1-f181.google.com ([209.85.214.181]:46475) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sZ415-0008BL-02 for 72358@debbugs.gnu.org; Wed, 31 Jul 2024 03:44:59 -0400 Received: by mail-pl1-f181.google.com with SMTP id d9443c01a7336-1fd90c2fc68so41471265ad.1 for <72358@debbugs.gnu.org>; Wed, 31 Jul 2024 00:44:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1722411818; x=1723016618; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Xb8/e+L78h8Yf/Cuyoun9Y3JqXdYouKRAEOXPwucQuY=; b=aaYtEpDp8KyfLX+7iXw2Ssq5CnpTpHj3ptxOz8kS641bI/AtqER+dp0xuwbXxgT7FK 64Np+OCw+Wxl1uY9HlkM0UJmVAlyg7n1RHWf7g/j4BHTIFrMVBwICAljQ2rL9HvWA1Hm eYOMlCiWtVwRRcC3i1gJKdV7KQPO/qF3BJT2z6kzdftY2y6pqprB/tdliF9qchapyZ9C 4Fr0pvFaGv7UoKZ9XlndQRXAlaJAmiqGa4T5pmwW0KLtz8W3VpfKjbqxpesCECQXR7N4 privs0gPxhsLgLmwOO/WcnYPdYet7ULdP64pHDHZUWlwF6XVoxJJ1bLfpBAi7KRCYfpO MnTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722411818; x=1723016618; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Xb8/e+L78h8Yf/Cuyoun9Y3JqXdYouKRAEOXPwucQuY=; b=kB1NXO3/XNn3Y8d1fbiuCl36jhVtsELvn1lDdd/du7fFiYQTNWGgwEJATYSwy8XNNC 4567Kov6xBxQNUtvGEvGzIzJGks3rhVyCiVUR6U2sDq3zaQUXZTPoX4HaR9CAlJVSCd1 7+a/qHLtzY8NgVQfl4N/6RQkavjs7aa69bAtSVVSJwt9cfY+Wtez/b8e2CaGd74d+l7J soEQDuit9PX5TBI+7M/MFVHoqmpvI4ozjrr1AIiGpdELK+eDIW0nlxr9fEVeYM1oO7qA HBN7LW6maGfIKB61JUnSizNVwoejzLJ0Gw6h/Ml05AF6UTqktK9I9gtX4jA7QfEJsPQx xIVw== X-Gm-Message-State: AOJu0Yx5pNDD9c85UjVv5zqJSA9XByr1Ua7k+E3iZdbFVx1+jFw4oZhH M1w2TSils3B5phvyrRbvkv1a3102uAHUNN5IaVehCp/SBD1GnfL3f2ALOg0z X-Google-Smtp-Source: AGHT+IGtc9m2JEfeuAdGpVQtgQKflciqKL8ClLBSnGwqmzKEYxs5dx0R/HldHRiBM0Fyqzd0bbYodg== X-Received: by 2002:a17:903:186:b0:1fd:5fa0:e996 with SMTP id d9443c01a7336-1ff048e4f43mr128194335ad.43.1722411817480; Wed, 31 Jul 2024 00:43:37 -0700 (PDT) Received: from debian-hx90 (syn-104-172-240-218.res.spectrum.com. [104.172.240.218]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1fed7ff65f4sm113751735ad.300.2024.07.31.00.43.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 31 Jul 2024 00:43:37 -0700 (PDT) From: Xiyue Deng In-Reply-To: <66a96079.170a0220.1522dd.3e68SMTPIN_ADDED_BROKEN@mx.google.com> ("=?UTF-8?Q?Bj=C3=B6rn?= Bidar"'s message of "Wed, 31 Jul 2024 00:51:52 +0300") References: <87mslz8yzk.fsf@debian-hx90.lan> <66a8f3d6.050a0220.8facb.d530SMTPIN_ADDED_BROKEN@mx.google.com> <875xsm8y6c.fsf@debian-hx90.lan> <66a96079.170a0220.1522dd.3e68SMTPIN_ADDED_BROKEN@mx.google.com> Date: Wed, 31 Jul 2024 00:43:34 -0700 Message-ID: <87wml26m6x.fsf@debian-hx90.lan> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Bj=C3=B6rn Bidar writes: > Xiyue Deng writes: > >> Bj=C3=B6rn Bidar writes: >> >>> Xiyue Deng writes: >>> >>>> The fourth patch may need a bit of background: oauth2.el (optionally) >>>> uses plstore to save authentication data for future reuse, and the >>>> plstore id for an account is computed using a combination of `auth-url= ', >>>> `token-url', and `scope'. However, this combination of data doesn't >>>> guarantee uniqueness for accounts for a same provider, e.g. for Gmail, >>>> the three parameters are the same for different accounts, and hence >>>> storing a second account information will override the first one. >>> >>> Would it make sense to plug OAuth2.el into auth-source to store the >>> authentication token safely inside an existing credential storage? >>> >>> Various applications already do so when using the native credential >>> storages such as Freedesktop.org or the macOS keyring. >> >> As I mentioned to Robert, I do have another addon to do exactly this, >> though through an awkward advice. Would be great if auth-source can >> make use of oauth2.el and handle that more gracefully. I'll file >> another bug to explore options once this one is done. > > Care to post this advice? It's not an optimal solution but better than > nothing in the interim. It currently depends on this modified oauth2.el. Once the patches are accepted I'll post it in a separate bug. --=20 Xiyue Deng From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Robert Pluim Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 31 Jul 2024 08:57:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Xiyue Deng Cc: 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.17224161855976 (code B ref 72358); Wed, 31 Jul 2024 08:57:01 +0000 Received: (at 72358) by debbugs.gnu.org; 31 Jul 2024 08:56:25 +0000 Received: from localhost ([127.0.0.1]:49091 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sZ58D-0001YK-2Q for submit@debbugs.gnu.org; Wed, 31 Jul 2024 04:56:25 -0400 Received: from mail-lj1-f170.google.com ([209.85.208.170]:57432) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sZ589-0001Y3-KA for 72358@debbugs.gnu.org; Wed, 31 Jul 2024 04:56:24 -0400 Received: by mail-lj1-f170.google.com with SMTP id 38308e7fff4ca-2eeb1ba0481so87196831fa.2 for <72358@debbugs.gnu.org>; Wed, 31 Jul 2024 01:56:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1722416100; x=1723020900; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id :reply-to; bh=BfxBWbDuu3uAZ3fowSfovYANp54HuBKHxvLv3D8m6wc=; b=d5724Q5jFp8zFA1VWut9wQ/MQFYRexvT7SPO06jktAR3cIJXmPA56EHRDm3e3V60kt EAoLoTeP/b4UEMVOuTkMxsKDcMLk8gpM1jSp+ybdPacbcnfoiXlsLPTI0/75c0sPJpTL zxWpChY9tMPXLwvCuWp60g2oTraPlU++j9H7aWgA4kf1K2aJ3drlPtEnTv69lab2OfHg YuSizeFjYPqOfvAf6SMKuFcm5UrD6zYErAfy2NUWvKBR6huAxcLRFw3z83uuWZRg1iQU P7nYEr21A08jPzn7Heor3Ge4PmmwERFNXpC1wVBY8QwWVG8CiQxnx25ZuUTfA001aO7n YpcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722416100; x=1723020900; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BfxBWbDuu3uAZ3fowSfovYANp54HuBKHxvLv3D8m6wc=; b=xBJQQ5/JhEnBnMLd7BHLyAxg7wv+vLVaipweufP2zp32TZaUC/LA+ix28qtRYSBI2d GZpbTtUUsPzrZ07Bg7HRYwRAtyPZcI2Qd5McbXCB6tWg8BDJ/Zh6ARIa5RKOSN6j4ugs rLff7L02sMUZ1D03I4HAkNWdphixhrKne2GTIy80Pgl2WDKtgbCLmgOR5sqHZxlqdQ0K GAxp9Iua2ME+f+HbXkN/tOWYk0t/MDUllQmpjUFnQfX/9YjS2gWffVZ4LWgMOSMkkTJJ OjsvoJ0a6fLX+bYOfpV6G+iJPyrZpEHsBNtimngvYV+fIvd8nVxLwCXoxMRVF+PF4LDH MWlg== X-Gm-Message-State: AOJu0YyRkniA71pSYRVc7tcb/3brlakSr8kCw8uddA+Cn6J2rddrB20r rdm/AerWhZxMFN+tgAxkKsYYXKEAQF1D/YJAE8Maw6vsgm/ANzHYSqPegA== X-Google-Smtp-Source: AGHT+IE7ecRR4LRwUbP9GCkmAFnjyxUtgRqz1DyKEB7XwTXUVyF2D50+1t8up67FIHW8gy5sd/3Zcw== X-Received: by 2002:a2e:9953:0:b0:2ef:2d58:ec24 with SMTP id 38308e7fff4ca-2f12ecd30f5mr89133231fa.17.1722416099420; Wed, 31 Jul 2024 01:54:59 -0700 (PDT) Received: from rltb ([2a01:e0a:3f3:fb51:c026:d246:cbf5:2104]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4282babaaa8sm13348935e9.24.2024.07.31.01.54.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 31 Jul 2024 01:54:58 -0700 (PDT) From: Robert Pluim In-Reply-To: <87ed7a8ye6.fsf@debian-hx90.lan> (Xiyue Deng's message of "Tue, 30 Jul 2024 12:37:05 -0700") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <87ed7a8ye6.fsf@debian-hx90.lan> Date: Wed, 31 Jul 2024 10:54:57 +0200 Message-ID: <87jzh2vt3y.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) >>>>> On Tue, 30 Jul 2024 12:37:05 -0700, Xiyue Deng sa= id: Xiyue> The fifth patch adds debug messages when doing a URL query which= records Xiyue> the request URL, the request data, and the response data, and pr= ovide a Xiyue> custom variable to enable this. This provides a way to help deb= ugging Xiyue> the requests, and I find it handy when testing oauth2 against di= fferent Xiyue> providers. >>=20 >> OK (although perhaps make it a defvar rather than a defcustom, to >> avoid people accidentally enabling it). >>=20 Xiyue> Done also in patch 5. I see you changed `oauth2-token-file' to a `defvar', which I don=CA=BCt think you should do. I was talking about making `oauth2-debug' a defvar. Robert --=20 From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Xiyue Deng Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 31 Jul 2024 11:15:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Robert Pluim Cc: 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.172242448819299 (code B ref 72358); Wed, 31 Jul 2024 11:15:02 +0000 Received: (at 72358) by debbugs.gnu.org; 31 Jul 2024 11:14:48 +0000 Received: from localhost ([127.0.0.1]:49265 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sZ7I7-00051D-NF for submit@debbugs.gnu.org; Wed, 31 Jul 2024 07:14:48 -0400 Received: from mail-pf1-f182.google.com ([209.85.210.182]:45427) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sZ7I6-00050y-6F for 72358@debbugs.gnu.org; Wed, 31 Jul 2024 07:14:46 -0400 Received: by mail-pf1-f182.google.com with SMTP id d2e1a72fcca58-70b703eda27so3523340b3a.3 for <72358@debbugs.gnu.org>; Wed, 31 Jul 2024 04:14:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1722424404; x=1723029204; darn=debbugs.gnu.org; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:from:to:cc:subject:date:message-id:reply-to; bh=KpkbVL5EIAUt9J65BP34yPogklEb+p64II87YhL/pOo=; b=c14oTOeqpW7N/Hwl6JcAvsLdTscKTKJlLjkrS9ua6s/w+f7LPSMKE5cGdTIiY9IgLN 7jMN4vhx/+rBEO0b+r3fye3hMfrV+dT7kAElgTMe+/qT9o4qSoOly+xtL+ysW9QOX7jI I1yEtMe8M4KtGYZiK2iyzOwODYkpSuwXLct2jbvg3YM5CcsRh9GDJ4ntcBVpjOe3Igd4 E82rdvBmzpOXlwRGX6UwNVbuHAWqi+u5GP7TteJMSBSrM24xIz+M9RDyWqZ5RZ27eCgS uyOd9oZp0yrA2JlE75ara2JFts+WDt1v4JlNk2S4K3EyIYVbORiGnFAMZHJWMfJpN8WF zyCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722424404; x=1723029204; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=KpkbVL5EIAUt9J65BP34yPogklEb+p64II87YhL/pOo=; b=PHcVjE0DwL29kxBf1xgEITTuihJquw96DyO4mGwlq5H5eZQxI/f9Ohi0IKT3ijs/9i 3NdmvCEXmWD/6scGoTQDQX+IguPme5GrqzHsO+ePgVM3y0uNIhxdfm9HUnorvlZtYAX3 b2c33bKTcLcLojUnx7uDj6FKn26qkTrGkp1xiYK4pQ4rgoGzaN+ir5SwzDqaACw3jpxD TYOxKrKpHZJEqIDIvYHPGfaPe2aUHZPeNS7kOyZGdPx5ASRRJhGDfY4BwWb3NomKHrX+ rOKw8agcF5XdiC4bGi1na9OELbc0dDxJGa6G7/G345sKWy8oPoZbYjAbFys4E0vuH660 HB9g== X-Gm-Message-State: AOJu0YwKqrPPWXem7J6hs2MWtMa/KR4UP6LTNC3QhZ/bahGZfM1jmPMx OTWB1hn6GGsNpDHoVVOS02U7UjOXPiiKwgLzlmig1A8dOLz4jB8ldGoLJQ== X-Google-Smtp-Source: AGHT+IExPltkU4JmI9Gd4GwzpAzpFq1H/JKN9fOm8i9r+VtBJnSgBbNhXAQ3osiXw3oSkEqTzfiBXg== X-Received: by 2002:a05:6a00:c96:b0:705:c0a1:61c9 with SMTP id d2e1a72fcca58-70ecea1ae96mr12565635b3a.9.1722424404473; Wed, 31 Jul 2024 04:13:24 -0700 (PDT) Received: from debian-hx90 (syn-076-094-249-045.res.spectrum.com. [76.94.249.45]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-70efcbeec52sm2716914b3a.62.2024.07.31.04.13.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 31 Jul 2024 04:13:23 -0700 (PDT) From: Xiyue Deng In-Reply-To: <87jzh2vt3y.fsf@gmail.com> (Robert Pluim's message of "Wed, 31 Jul 2024 10:54:57 +0200") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <87ed7a8ye6.fsf@debian-hx90.lan> <87jzh2vt3y.fsf@gmail.com> Date: Wed, 31 Jul 2024 04:13:23 -0700 Message-ID: <87frrp6ch8.fsf@debian-hx90.lan> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Robert Pluim writes: >>>>>> On Tue, 30 Jul 2024 12:37:05 -0700, Xiyue Deng s= aid: > Xiyue> The fifth patch adds debug messages when doing a URL query whi= ch records > Xiyue> the request URL, the request data, and the response data, and = provide a > Xiyue> custom variable to enable this. This provides a way to help d= ebugging > Xiyue> the requests, and I find it handy when testing oauth2 against = different > Xiyue> providers. > >>=20 > >> OK (although perhaps make it a defvar rather than a defcustom, to > >> avoid people accidentally enabling it). > >>=20 > > Xiyue> Done also in patch 5. > > I see you changed `oauth2-token-file' to a `defvar', which I don=CA=BCt > think you should do. I was talking about making `oauth2-debug' a > defvar. > > Robert Oops. Another reminder not to write code after 2am. The fixed patch 5 is attached. --=20 Xiyue Deng --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0005-Add-debug-messages-and-provide-a-switch-variable-for.patch >From 55417ec61c91f6b4d8e16a0c9933fb178d7bb657 Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Sun, 28 Jul 2024 03:41:20 -0700 Subject: [PATCH 5/6] Add debug messages and provide a switch variable for enabling This helps debugging whether the authorization and refresh requests were successful and inspecting the responses. * packages/oauth2/oauth2.el: add support for debug messages and a switch variable for enabling. --- oauth2.el | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/oauth2.el b/oauth2.el index 035971ac85..ce7a835100 100644 --- a/oauth2.el +++ b/oauth2.el @@ -40,6 +40,7 @@ (require 'plstore) (require 'json) (require 'url-http) +(require 'pp) (defvar url-http-data) (defvar url-http-method) @@ -53,6 +54,14 @@ :link '(url-link :tag "Savannah" "https://git.savannah.gnu.org/cgit/emacs/elpa.git/tree/?h=externals/oauth2") :link '(url-link :tag "ELPA" "https://elpa.gnu.org/packages/oauth2.html")) +(defvar oauth2-debug nil + "Enable debug messages.") + +(defun oauth2--do-debug (&rest msg) + "Output debug messages when `oauth2-debug' is enabled." + (if oauth2-debug + (apply #'message msg))) + (defun oauth2-request-authorization (auth-url client-id &optional scope state redirect-uri) "Request OAuth authorization at AUTH-URL by launching `browse-url'. CLIENT-ID is the client id provided by the provider. @@ -79,6 +88,8 @@ It returns the code provided by the service." (defun oauth2-make-access-request (url data) "Make an access request to URL using DATA in POST." + (oauth2--do-debug "oauth2-make-access-request: url: %s" url) + (oauth2--do-debug "oauth2-make-access-request: data: %s" data) (let ((url-request-method "POST") (url-request-data data) (url-request-extra-headers @@ -86,6 +97,8 @@ It returns the code provided by the service." (with-current-buffer (url-retrieve-synchronously url) (let ((data (oauth2-request-access-parse))) (kill-buffer (current-buffer)) + (oauth2--do-debug "oauth2-make-access-request: response: %s" + (pp-to-string data)) data)))) (cl-defstruct oauth2-token -- 2.39.2 --=-=-=-- From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements In-Reply-To: <87mslz8yzk.fsf@debian-hx90.lan> Resent-From: Andrew Cohen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 31 Jul 2024 23:54:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 72358@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.172247003330167 (code B ref -1); Wed, 31 Jul 2024 23:54:02 +0000 Received: (at submit) by debbugs.gnu.org; 31 Jul 2024 23:53:53 +0000 Received: from localhost ([127.0.0.1]:50434 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sZJ8i-0007qU-OI for submit@debbugs.gnu.org; Wed, 31 Jul 2024 19:53:53 -0400 Received: from lists.gnu.org ([209.51.188.17]:33692) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sZJ8h-0007qN-My for submit@debbugs.gnu.org; Wed, 31 Jul 2024 19:53:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sZJ8R-0006Pd-9O for bug-gnu-emacs@gnu.org; Wed, 31 Jul 2024 19:53:35 -0400 Received: from ciao.gmane.io ([116.202.254.214]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sZJ8O-0006oY-QX for bug-gnu-emacs@gnu.org; Wed, 31 Jul 2024 19:53:35 -0400 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1sZJ8L-000A0K-Pt for bug-gnu-emacs@gnu.org; Thu, 01 Aug 2024 01:53:29 +0200 X-Injected-Via-Gmane: http://gmane.org/ From: Andrew Cohen Date: Thu, 01 Aug 2024 07:53:21 +0800 Message-ID: <87r0b915la.fsf@ust.hk> References: <87mslz8yzk.fsf@debian-hx90.lan> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" User-Agent: Gnus/5.13 (Gnus v5.13) Cancel-Lock: sha1:LVdqEafXg8u1hnXrhHBhn6ipG9A= Received-SPF: pass client-ip=116.202.254.214; envelope-from=geb-bug-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.4 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.4 (--) --=-=-= Content-Type: text/plain I have been using the existing oauth2.el and auth-source.el to use both gmail and outlook (through my university) with oauth2 for several years now (I posted a bit about it some time ago on the devel list). I didn't need to change much to get it to work so I thought as long as the changes by Xiyue are being considered (all of which look good to me) I would chime in. I'm happy to provide more info about my setup and usage if anyone is interested. Firstly, I note that I have gmail working fine without the change in patchset 2 (although I see nothing wrong with the change, I wonder why it isn't necessary for me but is for Xiyue). Secondly, there is one other important change that I have been using which should probably be added to oauth2.el (I communicated the change to Julien a long time ago, but he said he is no longer actively maintaining oauth2.el): in refreshing the token the access-response is ignored (as is the response-error). The access-response contains information about the token expiration so its needed in order to control when to fetch a new token. The simple patch below stores the access-response in the appropriate slot in the token: --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=diff Content-Transfer-Encoding: base64 Content-Description: store access-response on refresh ZGlmZiAtLWdpdCBhL29hdXRoMi5lbCBiL29hdXRoMi5lbAppbmRleCA3ZGE5NzAyLi5lNDYwYjAx IDEwMDY0NAotLS0gYS9vYXV0aDIuZWwKKysrIGIvb2F1dGgyLmVsCkBAIC0xMTksMjggKzExOSwz NSBAQCBSZXR1cm4gYW4gYG9hdXRoMi10b2tlbicgc3RydWN0dXJlLiIKIChkZWZ1biBvYXV0aDIt cmVmcmVzaC1hY2Nlc3MgKHRva2VuKQogICAiUmVmcmVzaCBPQXV0aCBhY2Nlc3MgVE9LRU4uCiBU T0tFTiBzaG91bGQgYmUgb2J0YWluZWQgd2l0aCBgb2F1dGgyLXJlcXVlc3QtYWNjZXNzJy4iCi0g IChzZXRmIChvYXV0aDItdG9rZW4tYWNjZXNzLXRva2VuIHRva2VuKQotICAgICAgICAoY2RyIChh c3NvYyAnYWNjZXNzX3Rva2VuCi0gICAgICAgICAgICAgICAgICAgIChvYXV0aDItbWFrZS1hY2Nl c3MtcmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgKG9hdXRoMi10b2tlbi10b2tlbi11cmwg dG9rZW4pCi0gICAgICAgICAgICAgICAgICAgICAoY29uY2F0ICJjbGllbnRfaWQ9IiAob2F1dGgy LXRva2VuLWNsaWVudC1pZCB0b2tlbikKLQkJCSAgICAgKHdoZW4gKG9hdXRoMi10b2tlbi1jbGll bnQtc2VjcmV0IHRva2VuKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQg IiZjbGllbnRfc2VjcmV0PSIgKG9hdXRoMi10b2tlbi1jbGllbnQtc2VjcmV0IHRva2VuKSkpCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICImcmVmcmVzaF90b2tlbj0iIChvYXV0aDItdG9r ZW4tcmVmcmVzaC10b2tlbiB0b2tlbikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiZn cmFudF90eXBlPXJlZnJlc2hfdG9rZW4iKSkpKSkKLSAgOzsgSWYgdGhlIHRva2VuIGhhcyBhIHBs c3RvcmUsIHVwZGF0ZSBpdAotICAobGV0ICgocGxzdG9yZSAob2F1dGgyLXRva2VuLXBsc3RvcmUg dG9rZW4pKSkKLSAgICAod2hlbiBwbHN0b3JlCi0gICAgICAocGxzdG9yZS1wdXQgcGxzdG9yZSAo b2F1dGgyLXRva2VuLXBsc3RvcmUtaWQgdG9rZW4pCi0gICAgICAgICAgICAgICAgICAgbmlsIGAo OmFjY2Vzcy10b2tlbgotICAgICAgICAgICAgICAgICAgICAgICAgICwob2F1dGgyLXRva2VuLWFj Y2Vzcy10b2tlbiB0b2tlbikKLSAgICAgICAgICAgICAgICAgICAgICAgICA6cmVmcmVzaC10b2tl bgotICAgICAgICAgICAgICAgICAgICAgICAgICwob2F1dGgyLXRva2VuLXJlZnJlc2gtdG9rZW4g dG9rZW4pCi0gICAgICAgICAgICAgICAgICAgICAgICAgOmFjY2Vzcy1yZXNwb25zZQotICAgICAg ICAgICAgICAgICAgICAgICAgICwob2F1dGgyLXRva2VuLWFjY2Vzcy1yZXNwb25zZSB0b2tlbikK LSAgICAgICAgICAgICAgICAgICAgICAgICApKQotICAgICAgKHBsc3RvcmUtc2F2ZSBwbHN0b3Jl KSkpCi0gIHRva2VuKQorICAobGV0ICgocmVzcG9uc2UgKG9hdXRoMi1tYWtlLWFjY2Vzcy1yZXF1 ZXN0CisgICAgICAgICAgICAgICAgICAgIChvYXV0aDItdG9rZW4tdG9rZW4tdXJsIHRva2VuKQor ICAgICAgICAgICAgICAgICAgICAoY29uY2F0ICJjbGllbnRfaWQ9IiAob2F1dGgyLXRva2VuLWNs aWVudC1pZCB0b2tlbikKKwkJCSAgICAod2hlbiAob2F1dGgyLXRva2VuLWNsaWVudC1zZWNyZXQg dG9rZW4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0ICImY2xpZW50X3Nl Y3JldD0iIChvYXV0aDItdG9rZW4tY2xpZW50LXNlY3JldCB0b2tlbikpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICImcmVmcmVzaF90b2tlbj0iIChvYXV0aDItdG9rZW4tcmVmcmVzaC10 b2tlbiB0b2tlbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJmdyYW50X3R5cGU9cmVm cmVzaF90b2tlbiIpKSkpCisgICAgKGlmLWxldCAoKHJlc3BvbnNlLWVycm9yIChjZHIgKGFzc29j ICdlcnJvciByZXNwb25zZSkpKSkKKyAgICAgICAgKG1lc3NhZ2UgIm9hdXRoMiB0b2tlbiByZWZy ZXNoIGVycm9yOiAlcyIgcmVzcG9uc2UtZXJyb3IpCisgICAgICAoc2V0ZiAob2F1dGgyLXRva2Vu LWFjY2Vzcy10b2tlbiB0b2tlbikKKyAgICAgICAgICAgIChjZHIgKGFzc29jICdhY2Nlc3NfdG9r ZW4gcmVzcG9uc2UpKSkKKyAgICAgICh3aGVuLWxldCAoKHJlZnJlc2hfdG9rZW4gKGNkciAoYXNz b2MgJ3JlZnJlc2hfdG9rZW4gcmVzcG9uc2UpKSkpCisgICAgICAgIChzZXRmIChvYXV0aDItdG9r ZW4tcmVmcmVzaC10b2tlbiB0b2tlbikgcmVmcmVzaF90b2tlbikpCisgICAgICAoc2V0ZiAob2F1 dGgyLXRva2VuLWFjY2Vzcy1yZXNwb25zZSB0b2tlbikKKyAgICAgICAgICAgIChhc3NvYy1kZWxl dGUtYWxsICdyZWZyZXNoX3Rva2VuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXNz b2MtZGVsZXRlLWFsbCAnYWNjZXNzX3Rva2VuIHJlc3BvbnNlKSkpCisgICAgICA7OyBJZiB0aGUg dG9rZW4gaGFzIGEgcGxzdG9yZSwgdXBkYXRlIGl0CisgICAgICAobGV0ICgocGxzdG9yZSAob2F1 dGgyLXRva2VuLXBsc3RvcmUgdG9rZW4pKSkKKyAgICAgICAgKHdoZW4gcGxzdG9yZQorICAgICAg ICAgIChwbHN0b3JlLXB1dCBwbHN0b3JlIChvYXV0aDItdG9rZW4tcGxzdG9yZS1pZCB0b2tlbikK KyAgICAgICAgICAgICAgICAgICAgICAgbmlsIGAoOmFjY2Vzcy10b2tlbgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAsKG9hdXRoMi10b2tlbi1hY2Nlc3MtdG9rZW4gdG9rZW4pCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDpyZWZyZXNoLXRva2VuCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICwob2F1dGgyLXRva2VuLXJlZnJlc2gtdG9rZW4gdG9rZW4pCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDphY2Nlc3MtcmVzcG9uc2UKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLChvYXV0aDItdG9rZW4tYWNjZXNzLXJlc3BvbnNlIHRva2VuKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICApKQorICAgICAgICAgIChwbHN0b3JlLXNhdmUgcGxzdG9y ZSkpKSkKKyAgICB0b2tlbikpCiAKIDs7OyMjI2F1dG9sb2FkCiAoZGVmdW4gb2F1dGgyLWF1dGgg KGF1dGgtdXJsIHRva2VuLXVybCBjbGllbnQtaWQgY2xpZW50LXNlY3JldCAmb3B0aW9uYWwgc2Nv cGUgc3RhdGUgcmVkaXJlY3QtdXJpKQo= --=-=-= Content-Type: text/plain Lastly, a brief description of how to get things to work with auth-source and existing code (subject to the change I mentioned above): auth-source entries using the plstore backend allow the secret to be a function (which is passed the whole entry plist as an argument). All that is needed then is a function that returns the access token (which is then used in gnus and smtpmail, both of which already work properly with an oauth2 access-token). A simple function to check the expiration time and fetch a new access-token if necessary (and update the new token and expiration information) and then return the access-token is what I use. So I used auth-source to create plstore entries for gmail and outlook containing the oauth2 tokens, and set the secret to the following function (defun gnus-refresh-access (plist) "Return an oauth2 access-token for PLIST. If the current token has expired, fetch, save, and return a new one." (cl-destructuring-bind (&key user host port token last-update (expires_in (alist-get 'expires_in (oauth2-token-access-response token))) (create-args (list :type 'plstore :create '(:encrypted (token client-secret-sav) :unencrypted (auth-url scope redirect-uri last-update smtp-auth)))) &allow-other-keys) plist (unless (and (numberp expires_in) (numberp last-update) (< (float-time) (+ last-update expires_in))) (message "Getting new token for %s at %s:%s" user host port) (setq plist (plist-put plist :secret 'gnus-refresh-access)) (setq plist (plist-put plist :last-update (truncate (float-time)))) ;; get a new token and update the plist (setq plist (plist-put plist :token (oauth2-refresh-access token))) ;; update auth-source---if something in the plist has changed ;; then no entry will be found during the search, and the ;; create flag will be honored. (apply #'auth-source-search (append plist create-args))) ;; return the access token (oauth2-token-access-token (plist-get plist :token)))) By the way, I let auth-source handle the plstore rather than oauth2.el. It seemed simpler to have only one of them managing the store rather than both. By the by the way, there are some important bugs in auth-source.el that I have fixed in my personal tree (and a few that I haven't). I'll post about them in a separate bug report at some point. Best, Andy -- Andrew Cohen --=-=-=-- From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Thomas Fitzsimmons Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 01 Aug 2024 18:51:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Xiyue Deng Cc: =?UTF-8?Q?Bj=C3=B6rn?= Bidar , Robert Pluim , 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.172253821819017 (code B ref 72358); Thu, 01 Aug 2024 18:51:02 +0000 Received: (at 72358) by debbugs.gnu.org; 1 Aug 2024 18:50:18 +0000 Received: from localhost ([127.0.0.1]:51952 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sZasT-0004wf-Jx for submit@debbugs.gnu.org; Thu, 01 Aug 2024 14:50:18 -0400 Received: from mail.fitzsim.org ([69.165.165.189]:36126) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sZasR-0004wQ-5U for 72358@debbugs.gnu.org; Thu, 01 Aug 2024 14:50:16 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=fitzsim.org ; s=20220430; h=Content-Transfer-Encoding:Content-Type:MIME-Version: Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From:Sender:Reply-To: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=8AeotqYymmk/05GjIBbrb3oqQiaud2cD2zOBlAh3E+w=; b=PPqMje4sjsnW+CHLJgHvvHXLJw hYI1DkSDAM56avcuCnpjHWNDdA01OVSQGge7bIJP9rU24y02M+1XM9fIeuWHI4qQaQFp4zzaEkyWL NaB/1gYdqKDPxZ15Dpfvu+PN0Ool1nxO4udcYtGr6sra3dDHK4t0Ax7kf0nJAPZc4BScv2oeYFJuz eSHXJqvsKcMy7FQv/TdZObxIUX3Ppl3iTMIZRwVVM9fLernNW2/di9+lDEZp/x8B1wOoJ0otVLBzO da1yevhxwz6bski4OoPJQDIWRlPLfxqoHrGQHyX4zMH61Tj/9j5Tw2GB5Pm7PE3pq9c9lJawmfkhV qF51NL6Q==; Received: from [192.168.1.1] (helo=localhost.localdomain) by mail.fitzsim.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sZ2YN-000wgV-Rq; Thu, 01 Aug 2024 14:49:50 -0400 From: Thomas Fitzsimmons In-Reply-To: <871q3a8y1j.fsf@debian-hx90.lan> (Xiyue Deng's message of "Tue, 30 Jul 2024 12:44:40 -0700") References: <87mslz8yzk.fsf@debian-hx90.lan> <9717.00003590144$1722349291@news.gmane.org> <87r0bbvt9d.fsf@gmail.com> <871q3a8y1j.fsf@debian-hx90.lan> Date: Thu, 01 Aug 2024 14:49:49 -0400 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Xiyue Deng writes: > Robert Pluim writes: > >>>>>>> On Tue, 30 Jul 2024 17:08:21 +0300, Bj=C3=B6rn Bidar via "Bug repor= ts for GNU Emacs, the Swiss army knife of text editors" said: >> >> Bj=C3=B6rn> Xiyue Deng writes: >> >> The fourth patch may need a bit of background: oauth2.el (optiona= lly) >> >> uses plstore to save authentication data for future reuse, and the >> >> plstore id for an account is computed using a combination of `aut= h-url', >> >> `token-url', and `scope'. However, this combination of data does= n't >> >> guarantee uniqueness for accounts for a same provider, e.g. for G= mail, >> >> the three parameters are the same for different accounts, and hen= ce >> >> storing a second account information will override the first one. >> >> Bj=C3=B6rn> Would it make sense to plug OAuth2.el into auth-source t= o store the >> Bj=C3=B6rn> authentication token safely inside an existing credentia= l storage? >> >> Bj=C3=B6rn> Various applications already do so when using the native= credential >> Bj=C3=B6rn> storages such as Freedesktop.org or the macOS keyring. >> >> Yes. In fact there=CA=BCs the auth-source-xoauth2 package that does >> that. And oauth2 can already store stuff using plstore, so I=CA=BCm sure= it >> can be extended to use auth-source. >> > > auth-source-xoauth2 doesn't actually use auth-source > (e.g. ~/.authinfo.gpg) to store the data it needs, but use a custom file > storing an ELisp hash table to store the client-id, client-secret, etc. > It does advice the authentication code to use the calculated token. I have not seen it mentioned in this thread yet, so here goes: my url-http-oauth package in GNU ELPA supports storing credentials in ~/.authinfo.gpg and refreshing them. It would be nice if your OAuth2 work could get feature parity with it, then I could delete my package; feel free to copy any code that makes sense. (I do not use url-http-oauth anymore, but I felt the need to write it when I was using Excorporate and OAuth.) Ideally you could get the result (and the xoauth2 support for IMAP and SMTP) accepted in Emacs core. (Then, extremely ideally, the FSF could work out legal agreements with the various OAuth providers to get Emacs registered as an OAuth application, like, e.g., Thunderbird.) Thomas From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Xiyue Deng Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 02 Aug 2024 08:12:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Thomas Fitzsimmons Cc: =?UTF-8?Q?Bj=C3=B6rn?= Bidar , Robert Pluim , 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.1722586292731 (code B ref 72358); Fri, 02 Aug 2024 08:12:02 +0000 Received: (at 72358) by debbugs.gnu.org; 2 Aug 2024 08:11:32 +0000 Received: from localhost ([127.0.0.1]:52409 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sZnNr-0000Bj-Lu for submit@debbugs.gnu.org; Fri, 02 Aug 2024 04:11:32 -0400 Received: from mail-pf1-f181.google.com ([209.85.210.181]:61842) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sZnNp-0000BV-0X for 72358@debbugs.gnu.org; Fri, 02 Aug 2024 04:11:30 -0400 Received: by mail-pf1-f181.google.com with SMTP id d2e1a72fcca58-70d19d768c2so6097914b3a.3 for <72358@debbugs.gnu.org>; Fri, 02 Aug 2024 01:11:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1722586204; x=1723191004; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id :reply-to; bh=yEEAHyMG/NHWg8M7lVDhpRYRh/wX3pjGm7e1b7kFBNs=; b=hhhqIPiIHDJCXUsVEZcaUOCo1iWG7nwJUv4HdVG+K/HDo9MNslrlsFdxHkqeVyGgkn Gp1sP9Ekdu3CE3EimELbvHtVfN3PNozvNN3z6pUPwBAgEq9ypIk1LM3+8nkVwZXXjJZH 2U3ykrio5H7cx35TvZkL9h7V5O/OWozqnc9OGdQblCYgVrq03YIa6e/R+1hilMm+/MKi ++/oJRxNbINEkqJBoBXuMt2WOB8Sl8k+XX6vzcOKaLC4BKYKH0p3x1JkDNK8mHIzscEY UZFas6BJwff+iSktcvyhCdcd67qMHnSFkxYIkvSMxM7MkHSSVa2i2rNsqLqDx8GO/SJP ek2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722586204; x=1723191004; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=yEEAHyMG/NHWg8M7lVDhpRYRh/wX3pjGm7e1b7kFBNs=; b=mkiLljrgNuse6J/6CGdTIaectOl3ItYDyX25+FKgNsm3UuxjlWHOkPTWebltpZOzRS blV9m2wulecuLh9umYFQ2zCql2A+lii54zrXYmrq548Tv45ivZTFquNUNo0PwTpM1P8t 1rF+9XlhRWQJ4P8Hsf2NUerW1U+fWNuQbC8GL5Ku6oXM+WVEAJjRuebiYxLnGuZCRe1H avo/qWhofnX4FS9ReNeaMbebcfHY7Zhlr8V0x4cFuZnb0k8juXqq/pOmtj4mHo0M/sZM Wig5hzPd4zbhnjKYZPn32qL6ivABjG+STF6CcAg87x7L9nEjdT9InWQjvFHsF6JN/QcQ R4ow== X-Forwarded-Encrypted: i=1; AJvYcCUa474nZi+OT3WLJmM+aatEi4PkpuXze+585fgNrwx+s+7qmjuHtLQ8MNrZ2R2iBBFZc3/AxRXoQmLTyNWDps7+leT8RUU= X-Gm-Message-State: AOJu0YxJZS2ja0HOaT46Q6oKa9HqQ4smWn7MbB/ty0Yruh5JRFnNt9YY RKYvXorqwVwAS0fXXsgsdw/W8rAa4w85GoZL1mcWMef0iKi9oB30pTzcsQ== X-Google-Smtp-Source: AGHT+IH/ir4Dzr3jfcdat7Khb6KYrKxqyTez59jdU21le0Y66Oa9lnPANWbgeLEs0Em4iIKqqHuFKg== X-Received: by 2002:a05:6a00:14c8:b0:70e:91ca:32ab with SMTP id d2e1a72fcca58-7106cf8ffa6mr4056144b3a.6.1722586204280; Fri, 02 Aug 2024 01:10:04 -0700 (PDT) Received: from debian-hx90 (syn-076-094-249-045.res.spectrum.com. [76.94.249.45]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7106ecfc3cfsm930306b3a.146.2024.08.02.01.10.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Aug 2024 01:10:03 -0700 (PDT) From: Xiyue Deng In-Reply-To: (Thomas Fitzsimmons's message of "Thu, 01 Aug 2024 14:49:49 -0400") References: <87mslz8yzk.fsf@debian-hx90.lan> <9717.00003590144$1722349291@news.gmane.org> <87r0bbvt9d.fsf@gmail.com> <871q3a8y1j.fsf@debian-hx90.lan> Date: Fri, 02 Aug 2024 01:09:55 -0700 Message-ID: <87y15f4a7g.fsf@debian-hx90.lan> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hi Thomas, Thomas Fitzsimmons writes: > Xiyue Deng writes: > >> Robert Pluim writes: >> >>>>>>>> On Tue, 30 Jul 2024 17:08:21 +0300, Bj=C3=B6rn Bidar via "Bug repo= rts for GNU Emacs, the Swiss army knife of text editors" said: >>> >>> Bj=C3=B6rn> Xiyue Deng writes: >>> >> The fourth patch may need a bit of background: oauth2.el (option= ally) >>> >> uses plstore to save authentication data for future reuse, and t= he >>> >> plstore id for an account is computed using a combination of `au= th-url', >>> >> `token-url', and `scope'. However, this combination of data doe= sn't >>> >> guarantee uniqueness for accounts for a same provider, e.g. for = Gmail, >>> >> the three parameters are the same for different accounts, and he= nce >>> >> storing a second account information will override the first one. >>> >>> Bj=C3=B6rn> Would it make sense to plug OAuth2.el into auth-source = to store the >>> Bj=C3=B6rn> authentication token safely inside an existing credenti= al storage? >>> >>> Bj=C3=B6rn> Various applications already do so when using the nativ= e credential >>> Bj=C3=B6rn> storages such as Freedesktop.org or the macOS keyring. >>> >>> Yes. In fact there=CA=BCs the auth-source-xoauth2 package that does >>> that. And oauth2 can already store stuff using plstore, so I=CA=BCm sur= e it >>> can be extended to use auth-source. >>> >> >> auth-source-xoauth2 doesn't actually use auth-source >> (e.g. ~/.authinfo.gpg) to store the data it needs, but use a custom file >> storing an ELisp hash table to store the client-id, client-secret, etc. >> It does advice the authentication code to use the calculated token. > > I have not seen it mentioned in this thread yet, so here goes: my > url-http-oauth package in GNU ELPA supports storing credentials in > ~/.authinfo.gpg and refreshing them. It would be nice if your OAuth2 > work could get feature parity with it, then I could delete my package; > feel free to copy any code that makes sense. (I do not use > url-http-oauth anymore, but I felt the need to write it when I was using > Excorporate and OAuth.) > Thanks for working on url-http-oauth! I think it adds credential management using auth-source, e.g. prompt for client-id and client-secret and store them, which my other addon (that I'll post next as it depends on the changes I made here) didn't do. Ideally this should be handled transparently by all auth-source backends and say Gnus when you add a new account, but IIUC currently the JSON backend doesn't support creation, which I'm using for ease to read and modify. > Ideally you could get the result (and the xoauth2 support for IMAP and > SMTP) accepted in Emacs core. > That would be great! My other addon uses advice, but it would definitely be better to be integrated in core (which already has partial support) > (Then, extremely ideally, the FSF could work out legal agreements with > the various OAuth providers to get Emacs registered as an OAuth > application, like, e.g., Thunderbird.) > That would be the best for the end user. Imagine a Gnus user could just add a new account and on launch Gnus the default browser will open the login page (or be prompted an URL to visit), which then normally handles all the login shenanigans (2FA, authenticator, etc.) and viola, you're logged in. > Thomas --=20 Xiyue Deng From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Xiyue Deng Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 02 Aug 2024 08:17:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Robert Pluim Cc: 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.17225866101344 (code B ref 72358); Fri, 02 Aug 2024 08:17:01 +0000 Received: (at 72358) by debbugs.gnu.org; 2 Aug 2024 08:16:50 +0000 Received: from localhost ([127.0.0.1]:52429 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sZnT0-0000Lb-Fw for submit@debbugs.gnu.org; Fri, 02 Aug 2024 04:16:50 -0400 Received: from mail-pl1-f181.google.com ([209.85.214.181]:51551) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sZnSy-0000LP-9v for 72358@debbugs.gnu.org; Fri, 02 Aug 2024 04:16:48 -0400 Received: by mail-pl1-f181.google.com with SMTP id d9443c01a7336-1fd640a6454so62685715ad.3 for <72358@debbugs.gnu.org>; Fri, 02 Aug 2024 01:16:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1722586524; x=1723191324; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id :reply-to; bh=St57At159kjjn3OifAhowrYfSgzT+YnJxHQAX1qAuVo=; b=fvCINgtrF3oamNRfwtg23Z93JLA8GiL7RhnoqBIaYIVvej7RSESdjIdPuI41xPw8eD 7EsepoVlIHBFWxbaVBSsKjJI9Sp5Q10iO/NhHGq8fPqDOTH8ItKuBqNKPLKLrwiqptHz +dOpFImJMTI7eAGHDztuBWkXf9xkLLEu7GW02Y1D//ras2eX+s14/V48CX8HflA1rS40 pux6J6Ht8hEbUY8dFDuZ6JppcCCxpXxqaDgotWEGATpK6BtlGVCgSXvR6TPO2GesbcLJ c1AY5A0dnsJXxnR1ucsgYA6O06hI2wvSnnDSkdq/qHTp7sR/D1lRjAeabJOpTi4nI0YI LFfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722586524; x=1723191324; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=St57At159kjjn3OifAhowrYfSgzT+YnJxHQAX1qAuVo=; b=T7pN7eVlefao6d4B3z0hVQX+OMEMIUiA+Wyi8FAKiqEI26ewnOIovErpy4Dpck8eJp xk3O+704h/12khh3YeGfvNT3poN45XZSEI1+Yl8ditWW+FPX7Obf49aNsOkf81m6d9DU oc9xC6pgZZVbAON82dnjZgnIGjMhmu2BspQniAyPqP7HLFXXGyWUN8Y7VwN3PWMWFHzA BLyLofy5tUFp0bJVI0l9WVtGiE2d3Mis2FCzpZHm0zFy2i30MZU7Oo2skQDgqGDFELJy /qBEXOgQRcuyhhmBq1Yg6t5lE2tllb3rPHcXCZhMRqL6m70Fwg/Dr7fCGQ5om8sLwhUK wfDw== X-Gm-Message-State: AOJu0YxtZZfOM85o4gcphVhk+MPNxnb0g6Vv/2qmuuuWz+MALdFbi6AW oV/0WrOf9mLOpExLUuP3uqLrHlgfy1MxM0bmppl7t6QC+VdaHXh/AlgIUA== X-Google-Smtp-Source: AGHT+IH6Wey1yVT2kEwpBhKiRDL38CF7q3jcTD2vybnykgthgvWs3EJYPXqWVytEPZB/pfhMijSSkw== X-Received: by 2002:a17:902:f683:b0:1fb:9b9f:cb29 with SMTP id d9443c01a7336-1ff572e0b5amr33704695ad.24.1722586523968; Fri, 02 Aug 2024 01:15:23 -0700 (PDT) Received: from debian-hx90 (syn-076-094-249-045.res.spectrum.com. [76.94.249.45]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1ff58a66284sm11615185ad.0.2024.08.02.01.15.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Aug 2024 01:15:23 -0700 (PDT) From: Xiyue Deng In-Reply-To: <87frrp6ch8.fsf@debian-hx90.lan> (Xiyue Deng's message of "Wed, 31 Jul 2024 04:13:23 -0700") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <87ed7a8ye6.fsf@debian-hx90.lan> <87jzh2vt3y.fsf@gmail.com> <87frrp6ch8.fsf@debian-hx90.lan> Date: Fri, 02 Aug 2024 01:15:22 -0700 Message-ID: <87ttg349yd.fsf@debian-hx90.lan> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Xiyue Deng writes: > Robert Pluim writes: > >>>>>>> On Tue, 30 Jul 2024 12:37:05 -0700, Xiyue Deng = said: >> Xiyue> The fifth patch adds debug messages when doing a URL query wh= ich records >> Xiyue> the request URL, the request data, and the response data, and= provide a >> Xiyue> custom variable to enable this. This provides a way to help = debugging >> Xiyue> the requests, and I find it handy when testing oauth2 against= different >> Xiyue> providers. >> >>=20 >> >> OK (although perhaps make it a defvar rather than a defcustom, to >> >> avoid people accidentally enabling it). >> >>=20 >> >> Xiyue> Done also in patch 5. >> >> I see you changed `oauth2-token-file' to a `defvar', which I don=CA=BCt >> think you should do. I was talking about making `oauth2-debug' a >> defvar. >> >> Robert > > Oops. Another reminder not to write code after 2am. > > The fixed patch 5 is attached. More reviews welcome! BTW, is there any dev available to commit the changes once it's in a good shape? --=20 Xiyue Deng From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Robert Pluim Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 02 Aug 2024 08:41:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Xiyue Deng Cc: 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.17225880283825 (code B ref 72358); Fri, 02 Aug 2024 08:41:02 +0000 Received: (at 72358) by debbugs.gnu.org; 2 Aug 2024 08:40:28 +0000 Received: from localhost ([127.0.0.1]:52450 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sZnpr-0000zd-P1 for submit@debbugs.gnu.org; Fri, 02 Aug 2024 04:40:27 -0400 Received: from mail-wm1-f49.google.com ([209.85.128.49]:58623) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sZnpp-0000zP-Ae for 72358@debbugs.gnu.org; Fri, 02 Aug 2024 04:40:26 -0400 Received: by mail-wm1-f49.google.com with SMTP id 5b1f17b1804b1-4280ee5f1e3so52472055e9.0 for <72358@debbugs.gnu.org>; Fri, 02 Aug 2024 01:40:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1722587941; x=1723192741; darn=debbugs.gnu.org; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:from:to:cc:subject:date:message-id:reply-to; bh=wC78Rq32I6fSJGjL6Vp7aNbKEIrmtrHV2vsmboqW5Vc=; b=kLTRBdn62ZDYM2t7qwj6ccgNLgT66My0u8cBigrtFqnPpbPNwlMs6/vtt5avvXtB70 oKBzqz3iaMqdicTvYVVzIBEprN8tjy3DwcQMWRLTg3P/5vcYujWw5WQWq2cELTE6s2ik NJyVtx6T/AqnQZUDciAskVQClT/HXOdyGOZe51O/njL/JXfafgASCiYyc8uT9J3Z2ZX/ Ekldpo7zr4FOEusovdpabUgPR2hrgjmmV+zYJ5oRe/h5YKSbj16Pi53bPpLdxL+3BuV1 qnD4og9RPtY3SVAMPVKe5LVLG+8PCZ/WJnPCvLtIggPUwm49+MH2p2q6NL7Xi6ODoTUI c7Vg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722587941; x=1723192741; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=wC78Rq32I6fSJGjL6Vp7aNbKEIrmtrHV2vsmboqW5Vc=; b=iaT2urQl18xJMpqnfIWSMTKILhvd0qjY3bkFxasTwr1UIp85a6hbiBlMi7+HaOP8OZ Lt0VdYKkh/eTxL7Y7wiJvIF6arJpvIUU2q8wYpgXsCIrmkFxz75IUcU8t7ohK8gYGyBl zDhO/yeri6GmrvXe4er5VHO5v4cJH00NTNAX3QkHUD9TPqhIOp0Oi+nnyZsnExCzBkq8 ZrA63FzA+IXoJUtUvhvmVf2C00KlD2+iATbaD3qpRyPnb+LKuDTLiqTeCMWQveyG/A70 HpjNgfnlIAmwz1fDisCMwW4nKDmcpmqJX2cJXkNtX++Z0gaI0sSPhc2R2Ao2EOZPOeOr u2NA== X-Gm-Message-State: AOJu0YwArZ1hFeNT0bsawtcQegZijqq2AhELOO0dCCqSPGkUlHzzVdGU DXklWKKXHAvRE609scndwbogQNHHN1EROhf8kjjuHoFermkVmdtQmd4fbA== X-Google-Smtp-Source: AGHT+IFX+OpKvxwBbHbjajbByT+Blzt7vE3BEQur+LxkFgayUidfJL2itoaTtGTqoYskucYD1hANQA== X-Received: by 2002:a05:600c:4f8d:b0:426:5c36:207c with SMTP id 5b1f17b1804b1-428e6b7cb52mr16503585e9.25.1722587940567; Fri, 02 Aug 2024 01:39:00 -0700 (PDT) Received: from rltb ([2a01:e0a:3f3:fb51:a772:8603:2417:6eb7]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4282b89a946sm86364075e9.6.2024.08.02.01.38.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Aug 2024 01:38:59 -0700 (PDT) From: Robert Pluim In-Reply-To: <87ttg349yd.fsf@debian-hx90.lan> (Xiyue Deng's message of "Fri, 02 Aug 2024 01:15:22 -0700") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <87ed7a8ye6.fsf@debian-hx90.lan> <87jzh2vt3y.fsf@gmail.com> <87frrp6ch8.fsf@debian-hx90.lan> <87ttg349yd.fsf@debian-hx90.lan> Date: Fri, 02 Aug 2024 10:38:59 +0200 Message-ID: <875xsjwc7w.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) >>>>> On Fri, 02 Aug 2024 01:15:22 -0700, Xiyue Deng said: Xiyue> BTW, is there any dev available to commit the changes once it's in a Xiyue> good shape? You could request commit access. I see you have a number of contributions to Emacs already. Robert -- From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: =?UTF-8?Q?Bj=C3=B6rn?= Bidar Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 02 Aug 2024 14:46:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Xiyue Deng Cc: Robert Pluim , Thomas Fitzsimmons , 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.172260990410138 (code B ref 72358); Fri, 02 Aug 2024 14:46:02 +0000 Received: (at 72358) by debbugs.gnu.org; 2 Aug 2024 14:45:04 +0000 Received: from localhost ([127.0.0.1]:53639 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sZtWh-0002dS-FB for submit@debbugs.gnu.org; Fri, 02 Aug 2024 10:45:03 -0400 Received: from thaodan.de ([185.216.177.71]:38004) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sZtWe-0002cl-Cb for 72358@debbugs.gnu.org; Fri, 02 Aug 2024 10:45:01 -0400 Received: from odin (dsl-trebng12-50dc75-154.dhcp.inet.fi [80.220.117.154]) by thaodan.de (Postfix) with ESMTPSA id 913BCD00044; Fri, 2 Aug 2024 17:44:01 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=thaodan.de; s=mail; t=1722609841; bh=h08D4bWQEobjR6YAPGiQDTdaIz1C4dSm0T8zOpDuw8Y=; h=From:To:Cc:Subject:In-Reply-To:References:Date; b=IeWXppqJVWTe+BsYSZYP2FpYeg59zLtQAqpHf88G2b/d2jd7p6p58Yj6Y0am8B2HP f/j54+uQ6upbjDLHrXNpOCDmz9XhglIcrhum9+J0kzQQrKNlLg5HeBDZ+wQBPXJB8Y 6X1TRTGEW5Gdwlo11nLiHs6zav+/qdSYFN3pRWRqevQRSc/FMZBAryCVc4OlnPFjMh F38gmIXaAsuQc91DgRkwgGuhHAKj2hoQusYzSqgb4W0DE86FYknumCNr+kXoj/8z/G 6jcyWeM1F7ccM4DLoS0wAFCkV71wFl3jQxxgEpX0n7cWORQkG4w1OIHsxetlUJox/s b1gLmUe5aenXpYCsduSpuacab5rQk2ZZUlBsEARtpNJDhYILzVjis8Fn+fwOzx6azb 5CHkxMkHJL1Zqa593crPS/Ij0CTHjfa11OJwq2pjJWutsJUh0NRTGBu5RNEPWsj9j2 zuaU/Xi0eLFT1/1YNatn/dmR+OG+vRXQUOVQoWoKXsHXnJGsVUP6p2wWUIL7lGm344 n2FTawbmaZglP01+Km7rUKJsuS1ZxL602pBAbOTs2oC7eV+NVmLBftOfSswgDFmfzU 81BXmfxUrTUNaKUwtJE5qAHEz4g80EdgiNkrTRcq/vZeJ/aMr0/lHqKQgXXxhBmCVh +NCZlNwRQtymROXgCdQ45T58= From: =?UTF-8?Q?Bj=C3=B6rn?= Bidar In-Reply-To: <87y15f4a7g.fsf@debian-hx90.lan> (Xiyue Deng's message of "Fri, 02 Aug 2024 01:09:55 -0700") References: <87mslz8yzk.fsf@debian-hx90.lan> <9717.00003590144$1722349291@news.gmane.org> <87r0bbvt9d.fsf@gmail.com> <871q3a8y1j.fsf@debian-hx90.lan> <87y15f4a7g.fsf@debian-hx90.lan> Autocrypt: addr=bjorn.bidar@thaodan.de; prefer-encrypt=nopreference; keydata= mDMEZNfpPhYJKwYBBAHaRw8BAQdACBEmr+0xwIIHZfIDlZmm7sa+lHHSb0g9FZrN6qE6ru60JUJq w7ZybiBCaWRhciA8Ympvcm4uYmlkYXJAdGhhb2Rhbi5kZT6IlgQTFgoAPgIbAwULCQgHAgIiAgYV CgkICwIEFgIDAQIeBwIXgBYhBFHxdut1RzAepymoq1wbdKFlHF9oBQJk1/YmAhkBAAoJEFwbdKFl HF9oB9cBAJoIIGQKXm4cpap+Flxc/EGnYl0123lcEyzuduqvlDT0AQC3OlFKm/OiqJ8IMTrzJRZ8 phFssTkSrrFXnM2jm5PYDoiTBBMWCgA7FiEEUfF263VHMB6nKairXBt0oWUcX2gFAmTX6T4CGwMF CwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQXBt0oWUcX2hbCQEAtru7kvM8hi8zo6z9ux2h K+B5xViKuo7Z8K3IXuK5ugwA+wUfKzomzdBPhfxDsqLcEziGRxoyx0Q3ld9aermBUccHtBxCasO2 cm4gQmlkYXIgPG1lQHRoYW9kYW4uZGU+iJMEExYKADsCGwMFCwkIBwICIgIGFQoJCAsCBBYCAwEC HgcCF4AWIQRR8XbrdUcwHqcpqKtcG3ShZRxfaAUCZNf2FQAKCRBcG3ShZRxfaCzSAP4hZ7cSp0YN XYpcjHdsySh2MuBhhoPeLGXs+2kSiqBiOwD/TP8AgPEg/R+SI9GI9on7fBJJ0mp2IT8kZ2rhDOjg gA6IkwQTFgoAOxYhBFHxdut1RzAepymoq1wbdKFlHF9oBQJk1+ntAhsDBQsJCAcCAiICBhUKCQgL AgQWAgMBAh4HAheAAAoJEFwbdKFlHF9oBgwA/iQHwe0VL4Df4GGTYlNjMSHFlIkBmN4UfYGLYj3E TrOUAQC51M+M3cjsL8WHdpBz6VAo6df9d+rVwhQ9vQuFHqevArg4BGTX6T4SCisGAQQBl1UBBQEB B0Cbohc3JEfn005/cm0AOGjSsW1ZxAkgaoVNjbpqk4MgNAMBCAeIeAQYFgoAIBYhBFHxdut1RzAe pymoq1wbdKFlHF9oBQJk1+k+AhsMAAoJEFwbdKFlHF9ooHABAKGmrGBic/Vys3BBrOQiRB3Z7izO HwhqTRpAqFZtXS2nAQDZhp/5aYw1TZjTzkm1KVt9QiYnjd/MvxRE9iaY6x4mDbgzBGTX6T4WCSsG AQQB2kcPAQEHQAgRJq/tMcCCB2XyA5WZpu7GvpRx0m9IPRWazeqhOq7uiO8EGBYKACAWIQRR8Xbr dUcwHqcpqKtcG3ShZRxfaAUCZNf71AIbIgCBCRBcG3ShZRxfaHYgBBkWCgAdFiEEUfF263VHMB6n KairXBt0oWUcX2gFAmTX+9QACgkQXBt0oWUcX2jeSwD6AtWn0cuo8IF35YRo4o3cDRJnUfJnbvJy GxyCDThR+zYBAKG6/jdwmZkBQZKslnDAbMMd2WfiZZT5JW3IWC4EaKMO7HkBAKYPGZ3UbfkRvfFK S+pQ9CgtNfkSJQBtT1Ob7Y6nsacgAQCpyXN7yppmhW/oBgivITPy9Lkg+V4NK9WZYZCU9Q7LBA== Date: Fri, 02 Aug 2024 17:43:59 +0300 Message-ID: <87jzgzq91s.fsf@> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 1.2 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Xiyue Deng writes: > Hi Thomas, > > Thomas Fitzsimmons writes: > >> Xiyue Deng writes: >> >>> Robert Pluim writes: >>> >>>>>>>>> On Tue, 30 Jul 2024 17:08:21 [...] Content analysis details: (1.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_PASS SPF: sender matches SPF record -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 1.2 INVALID_MSGID Message-Id is not valid, according to RFC 2822 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.2 (/) Xiyue Deng writes: > Hi Thomas, > > Thomas Fitzsimmons writes: > >> Xiyue Deng writes: >> >>> Robert Pluim writes: >>> >>>>>>>>> On Tue, 30 Jul 2024 17:08:21 +0300, Bj=C3=B6rn Bidar via "Bug rep= orts for GNU Emacs, the Swiss army knife of text editors" said: >>>> >>>> Bj=C3=B6rn> Xiyue Deng writes: >>>> >> The fourth patch may need a bit of background: oauth2.el (optio= nally) >>>> >> uses plstore to save authentication data for future reuse, and = the >>>> >> plstore id for an account is computed using a combination of `a= uth-url', >>>> >> `token-url', and `scope'. However, this combination of data do= esn't >>>> >> guarantee uniqueness for accounts for a same provider, e.g. for= Gmail, >>>> >> the three parameters are the same for different accounts, and h= ence >>>> >> storing a second account information will override the first on= e. >>>> >>>> Bj=C3=B6rn> Would it make sense to plug OAuth2.el into auth-source= to store the >>>> Bj=C3=B6rn> authentication token safely inside an existing credent= ial storage? >>>> >>>> Bj=C3=B6rn> Various applications already do so when using the nati= ve credential >>>> Bj=C3=B6rn> storages such as Freedesktop.org or the macOS keyring. >>>> >>>> Yes. In fact there=CA=BCs the auth-source-xoauth2 package that does >>>> that. And oauth2 can already store stuff using plstore, so I=CA=BCm su= re it >>>> can be extended to use auth-source. >>>> >>> >>> auth-source-xoauth2 doesn't actually use auth-source >>> (e.g. ~/.authinfo.gpg) to store the data it needs, but use a custom file >>> storing an ELisp hash table to store the client-id, client-secret, etc. >>> It does advice the authentication code to use the calculated token. >> >> I have not seen it mentioned in this thread yet, so here goes: my >> url-http-oauth package in GNU ELPA supports storing credentials in >> ~/.authinfo.gpg and refreshing them. It would be nice if your OAuth2 >> work could get feature parity with it, then I could delete my package; >> feel free to copy any code that makes sense. (I do not use >> url-http-oauth anymore, but I felt the need to write it when I was using >> Excorporate and OAuth.) >> > > Thanks for working on url-http-oauth! I think it adds credential > management using auth-source, e.g. prompt for client-id and > client-secret and store them, which my other addon (that I'll post next > as it depends on the changes I made here) didn't do. Ideally this > should be handled transparently by all auth-source backends and say Gnus > when you add a new account, but IIUC currently the JSON backend doesn't > support creation, which I'm using for ease to read and modify. I think depending on the authentication storage it would make sense to provide a custom setting with a sane default that allows the user to configure a path inside the storage to store their credentials. These could then have templates for the hostname, user, port etc just like the regular search parameters that `auth-sources-search' supports. >> Ideally you could get the result (and the xoauth2 support for IMAP and >> SMTP) accepted in Emacs core. >> > > That would be great! My other addon uses advice, but it would > definitely be better to be integrated in core (which already has partial > support) > >From Gnus point of view I think it would make it easier to support auth-source as then Oauth support would come for free as then the credentials can be retrieved just for basic authentication. Some kind of hook or trigger to call renewal functions would be needed though so that tokens can be refreshed transparently or manually if the user needs to re-authenticate. >> (Then, extremely ideally, the FSF could work out legal agreements with >> the various OAuth providers to get Emacs registered as an OAuth >> application, like, e.g., Thunderbird.) >> > > That would be the best for the end user. Imagine a Gnus user could just > add a new account and on launch Gnus the default browser will open the > login page (or be prompted an URL to visit), which then normally handles > all the login shenanigans (2FA, authenticator, etc.) and viola, you're > logged in. > To allow seamless authentication the FSF could make things much smoother by registering Emacs with common providers, working with FSFE together in this regard could help too (there are other countries than the U.S.). The issue I see is that registering Emacs is not enough since Emacs is in this context merely a runtime for these modes that want to use OAuth. The scope of the permissions they need varies, so their names etc. From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Xiyue Deng Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 03 Aug 2024 00:06:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Robert Pluim Cc: 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.17226435303661 (code B ref 72358); Sat, 03 Aug 2024 00:06:02 +0000 Received: (at 72358) by debbugs.gnu.org; 3 Aug 2024 00:05:30 +0000 Received: from localhost ([127.0.0.1]:53878 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sa2H4-0000wz-J3 for submit@debbugs.gnu.org; Fri, 02 Aug 2024 20:05:30 -0400 Received: from mail-pl1-f178.google.com ([209.85.214.178]:56660) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sa2H1-0000wk-5f for 72358@debbugs.gnu.org; Fri, 02 Aug 2024 20:05:29 -0400 Received: by mail-pl1-f178.google.com with SMTP id d9443c01a7336-1fed72d23a7so68132945ad.1 for <72358@debbugs.gnu.org>; Fri, 02 Aug 2024 17:05:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1722643442; x=1723248242; darn=debbugs.gnu.org; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:from:to:cc:subject:date:message-id:reply-to; bh=vhwGPxTJotkRm+KOGsqg3SaRHLrhQ6ybqp88rYOwq+k=; b=g3gdKiTU0EanjCu4qncJeKzCJWqvoLjYOq7mmlvEHry36AeTsw8TXfqSd+Q9nU9nFd R66kFZbYTWptT8qnIxsHAmmhk7wulQ8JUDLj46oV48OXU1ORxurXjgXemTqK2RgqjsWC 0aOKw0kObfFUfuVKNG9xWv5HhFpk/yyhd9xef8VxECqXT6w6lG0vPGpR10F74SL1payb K5V7GH+rMoBZGsk2epRLdxd/fP1tyC6LNEM74O0xmZt46cC9iFD8HvUPf/5RmiYhaJgN 7J4ubY8BTke/oIJn8DETYtbB5JBn2ADHbJdGAt5TAO7vhcyHYyOdFsojuQYMJERqWMuf U+Ag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722643442; x=1723248242; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=vhwGPxTJotkRm+KOGsqg3SaRHLrhQ6ybqp88rYOwq+k=; b=Yz/gCtZS2sgNID2FN8J53twJp1v9BqTonb8KnXDll/xye0S9QHMEvrXuBdVh7qE20/ ugomgVkGLMUOBfFsMiWbPNQVqTNlpihMYNWbulyA/BH5MRj3iP8m7pKAsS0YwSCQEr4Q OaQ/VL5CrSDFAiYlQKCVW5daGABigCqthbDVsYepD4jZR2hjdHAD4RtcpCBiAq3NWiQD mL040O5JD8rfG7HRnya33vzjwSgqIP+O2YmQjz8XxVy/nPXeDFrCedClNhUDVWALDi/r Bnra1naewKjbbzcjqAYUFPkmkxtyOPiJ/Vi5WduQ7M9GxiwQKvC4nq0EMP8RHZ4b810m JMjQ== X-Gm-Message-State: AOJu0YxLRd8d+cnAUd0sOrsMYKTDVW8M3pDWPrCXvRZJJAzbqUVydmuy 9lXf+5O8cGhJf/+60aSGsCRrupQ2C5LycV0XuR+OtUFa2W3Y/0jS47APRw== X-Google-Smtp-Source: AGHT+IF+rHW2vyCwpIMfaDMZz+YRvTmned/nACR5/6xVdZmsOMFrVCPNzgCYiIHw9ZHtBpCqbUS5DA== X-Received: by 2002:a17:902:ce89:b0:1fd:8eaf:eaa9 with SMTP id d9443c01a7336-1ff5732c765mr62030895ad.37.1722643441993; Fri, 02 Aug 2024 17:04:01 -0700 (PDT) Received: from debian-hx90 (syn-076-094-249-045.res.spectrum.com. [76.94.249.45]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1ff58f556c8sm23190675ad.94.2024.08.02.17.04.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Aug 2024 17:04:01 -0700 (PDT) From: Xiyue Deng In-Reply-To: <875xsjwc7w.fsf@gmail.com> (Robert Pluim's message of "Fri, 02 Aug 2024 10:38:59 +0200") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <87ed7a8ye6.fsf@debian-hx90.lan> <87jzh2vt3y.fsf@gmail.com> <87frrp6ch8.fsf@debian-hx90.lan> <87ttg349yd.fsf@debian-hx90.lan> <875xsjwc7w.fsf@gmail.com> Date: Fri, 02 Aug 2024 17:04:00 -0700 Message-ID: <87le1e4glr.fsf@debian-hx90.lan> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hi Robert, Robert Pluim writes: >>>>>> On Fri, 02 Aug 2024 01:15:22 -0700, Xiyue Deng said: > > Xiyue> BTW, is there any dev available to commit the changes once it's in a > Xiyue> good shape? > > You could request commit access. I see you have a number of > contributions to Emacs already. > > Robert That would be great to have. Do you know how I can apply for it (I have already done the paperwork)? -- Xiyue Deng From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 03 Aug 2024 05:54:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Xiyue Deng Cc: rpluim@gmail.com, 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.17226644046918 (code B ref 72358); Sat, 03 Aug 2024 05:54:01 +0000 Received: (at 72358) by debbugs.gnu.org; 3 Aug 2024 05:53:24 +0000 Received: from localhost ([127.0.0.1]:53985 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sa7hk-0001nW-0b for submit@debbugs.gnu.org; Sat, 03 Aug 2024 01:53:24 -0400 Received: from eggs.gnu.org ([209.51.188.92]:51786) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sa7hi-0001nI-9S for 72358@debbugs.gnu.org; Sat, 03 Aug 2024 01:53:22 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sa7hI-0008QZ-1r; Sat, 03 Aug 2024 01:52:57 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=Q4GO9M+fMI6ndeXtv09k9vdmU7O1u2c7LMNO27tLp5I=; b=T7FFJi0Ss9sZ ZUVHboiSUY63Gx9j7mnBdMccbcHUMLKYzzHnyWNV1s+FLGnxJO/aHJ1VXYc4LordzPcBVaDpHVwsl 5gJTbgx3yycjJNKpRJjjQ5uMHLB6kYHC3cZAAHljRwn1YHYefLrg6oSrzhnTRt0+jyIBHOdShUJZ7 LC6mFcH9Y43mKpHUBspHr/mQnbfZ0+DqZaatLS7cM75zr6W/5mzQo+aEEk5gC4NVtzCdjovb/2e0s njs/9U3+rZV9rCsaGMw9CCwSrbE+0hHDpG2v5Z58LlmyDsSthcGxnKqrZTaiMWqjemZRbEguvCsf6 nzFtIgMNq69QYr4GWh77GA==; Date: Sat, 03 Aug 2024 08:52:54 +0300 Message-Id: <86r0b6up8p.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87ttg349yd.fsf@debian-hx90.lan> (message from Xiyue Deng on Fri, 02 Aug 2024 01:15:22 -0700) References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <87ed7a8ye6.fsf@debian-hx90.lan> <87jzh2vt3y.fsf@gmail.com> <87frrp6ch8.fsf@debian-hx90.lan> <87ttg349yd.fsf@debian-hx90.lan> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Cc: 72358@debbugs.gnu.org > From: Xiyue Deng > Date: Fri, 02 Aug 2024 01:15:22 -0700 > > BTW, is there any dev available to commit the changes once it's in a > good shape? All the 3 co-maintainers are tracking these discussions and install changes that are ready to be installed. From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Xiyue Deng Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 03 Aug 2024 09:29:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: rpluim@gmail.com, 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.172267728827886 (code B ref 72358); Sat, 03 Aug 2024 09:29:01 +0000 Received: (at 72358) by debbugs.gnu.org; 3 Aug 2024 09:28:08 +0000 Received: from localhost ([127.0.0.1]:54084 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1saB3X-0007Fh-9F for submit@debbugs.gnu.org; Sat, 03 Aug 2024 05:28:08 -0400 Received: from mail-pj1-f43.google.com ([209.85.216.43]:51633) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1saB3U-0007F4-5v for 72358@debbugs.gnu.org; Sat, 03 Aug 2024 05:28:05 -0400 Received: by mail-pj1-f43.google.com with SMTP id 98e67ed59e1d1-2cfcbdfa572so3611317a91.3 for <72358@debbugs.gnu.org>; Sat, 03 Aug 2024 02:27:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1722677198; x=1723281998; darn=debbugs.gnu.org; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:from:to:cc:subject:date:message-id:reply-to; bh=YuRIqdiPieujlVOk/Vh3rAfUKY533Qak7Rdi/fHBdoc=; b=EaVVOHF7B+wHxKAM5OAXSNtFKhXLXL5JS8/uvmWB7i+68L/Ufe6C/4wFedYTe55cAB ClzlzOPn6zUm/YsxoEW4vq9MFPPv/FYBCzd2pRC0CcxuJNjic/3oi3qjTcgKo5UHwzsP gv1/pb3fRd23N1agsG6L4EGEb+J2D15kOaEUNiaF6PlHl9ajY1uhACNsh4nHCBnv1FJp 4YyjqtlQqSig66allym0vaHM2rsXhYxSY7AyDbTK7QjE3/ex+7k3YGK0vpm1ASaWMFhm MseNLwmjvLwi8Ph8b7FtPujM6aCHvDiZ2fh2hCnT7TqcjJUqp+zD3TP0MCWuqSX19M0R fXQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722677198; x=1723281998; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=YuRIqdiPieujlVOk/Vh3rAfUKY533Qak7Rdi/fHBdoc=; b=Sjd+oEbvSfiEzFI4GdJMrobLsE9/syDx1I15SpXNqZjOP/AT6Iw9OiXjR252HZGriw T7Reorps/FumXPmgbqoMR1L2pooiukmUNwOBFhyMzuSYkXyjEAumQUARZom+sYCiUpEI X0NBbXOVAOVeA+gSzPfnuqEnmYbZUNTnMzqSSuGzr5coXfHCLwBbnIfBoo/Whx/PhZrz KQWTqer5iobvonEYAqoCIxmmyclXlci9BsQ7EhB46w3huVVhSocdf5TDYd9GzelkNma8 KS3Y9sCvzU9FjqGKerKOcao21oMOrRtDcS7Zr3KZh67HiylJz0iNcnrVzGa/nAioWyr7 N/Vg== X-Forwarded-Encrypted: i=1; AJvYcCWNgXnawuQzF8EZJWN1mh/kIky17EkadPvCnRPHIh8dvujpqfQ8ebFxuh6a0/cAyXCLv2etFb7XsfwNIxOk19lUtv9/TSs= X-Gm-Message-State: AOJu0YzuJbDv/SDCs2nw7YVu07+JNix78H8SUZRkPTPFEAo9Kr31yoaD kBiCCQgcxn6FAsVzBB2oRz/83SFqAF2BDdp82NqtVuGhE7NTc/rpiQbhNA== X-Google-Smtp-Source: AGHT+IEuCPSWlT6cmVIcdRHFeMy8cGQ/3JjeGaiV/V1JCZkrMzcbfbmCPVJ7UgmtuhWtdKP7izfF7Q== X-Received: by 2002:a17:90b:4ac8:b0:2c9:887e:46de with SMTP id 98e67ed59e1d1-2cff943e070mr6768016a91.12.1722677198409; Sat, 03 Aug 2024 02:26:38 -0700 (PDT) Received: from debian-hx90 (syn-076-094-249-045.res.spectrum.com. [76.94.249.45]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2cfdc4e3c41sm6481765a91.48.2024.08.03.02.26.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 Aug 2024 02:26:38 -0700 (PDT) From: Xiyue Deng In-Reply-To: <86r0b6up8p.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 03 Aug 2024 08:52:54 +0300") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <87ed7a8ye6.fsf@debian-hx90.lan> <87jzh2vt3y.fsf@gmail.com> <87frrp6ch8.fsf@debian-hx90.lan> <87ttg349yd.fsf@debian-hx90.lan> <86r0b6up8p.fsf@gnu.org> Date: Sat, 03 Aug 2024 02:26:35 -0700 Message-ID: <87h6c23qk4.fsf@debian-hx90.lan> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> Cc: 72358@debbugs.gnu.org >> From: Xiyue Deng >> Date: Fri, 02 Aug 2024 01:15:22 -0700 >> >> BTW, is there any dev available to commit the changes once it's in a >> good shape? > > All the 3 co-maintainers are tracking these discussions and install > changes that are ready to be installed. That's good to know! Thanks Eli! -- Xiyue Deng From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Xiyue Deng Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 07 Aug 2024 23:24:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: =?UTF-8?Q?Bj=C3=B6rn?= Bidar Cc: Robert Pluim , 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.172307304122965 (code B ref 72358); Wed, 07 Aug 2024 23:24:02 +0000 Received: (at 72358) by debbugs.gnu.org; 7 Aug 2024 23:24:01 +0000 Received: from localhost ([127.0.0.1]:35212 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sbq0f-0005yL-0t for submit@debbugs.gnu.org; Wed, 07 Aug 2024 19:24:01 -0400 Received: from mail-pl1-f175.google.com ([209.85.214.175]:42483) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sbq0c-0005y5-Lh for 72358@debbugs.gnu.org; Wed, 07 Aug 2024 19:23:59 -0400 Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-1fd69e44596so2692635ad.1 for <72358@debbugs.gnu.org>; Wed, 07 Aug 2024 16:23:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1723072946; x=1723677746; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id :reply-to; bh=IfFSuXx5GtT2xtBqIA5WXzYxqEcHANjZ7kzRntnqpD4=; b=B85Hz52v8zgZ3kLseHULp8ICd0UKi8kRx6isgNyDzBrw3itvZIl1c6GLhp8wUlNTnK LjAglFVlqG/2wvL4VUYk2LITH10Q4nInvTe13xYGewBta/3yIGQgGf6y9XGVXYsijr+9 81DNJiyg2hezitCECchwYMBwYJWlfo7jFvfFKjeuvHlZQStGGivqjoVcOlDK8EbTRcaI /69s03HvpxCAv4iW00ZYq/kl38RcUQreIN5C5EPHLEqV7g6//sTheMjx61VtrSR2OkoU K6e1tIWAyZw21e/dcW09PwXtALZUAoU/qGVSrntJ10iAbEtktqloaQ3fkSG8XP66/F1d gdIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723072946; x=1723677746; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=IfFSuXx5GtT2xtBqIA5WXzYxqEcHANjZ7kzRntnqpD4=; b=UV7HgRMl8ZhYR+Ru/kSzFnY4TrcuaacZ4QcSS3N00XVNa+zxzbkyhE8KTEC0eyHJGI xboyoGq6n9qiURN+YxtieRhm66Akj74bP9TnP7ARCNN36l+1kxu70ZGoWlje2guhP8bv lBQGaCtjLxAh67UKiJMfY6c2S17SLf5zFObUmuy3Ply8K+16UUIpJIq9V8LAzio9AwVR B6YukmQx3dlocj0qIRRDz4CQIfc7yB3J9PV7F71oEG5Rx37JqVFhttepmSaxYFNNDrjX 8StY08+iQ2uGG45QF8OEyaKbomgCU37MyoToi3sw6KYwW/FBB2TC3dyUQR3tHFCbs7F1 RmVA== X-Forwarded-Encrypted: i=1; AJvYcCXL+i98tzN0YmpoNBknimdA3czCbM77p+p9HSnT8IwOFukbdvaR65Gwr3yu+8EfASKvQzDsS5RbDZqrhDgdeD/1XIdA4Tw= X-Gm-Message-State: AOJu0YzxueqBeSIrnGClELAgs+rjvbuFgp9ZSMvTSSsXe5FmcmVPbtAG 56EDKo/1mPajQLFKy8HTgt0meCwWPx2mODCJhpinQDYmXpBr1P2ybj6i7g== X-Google-Smtp-Source: AGHT+IHkKBBMXrWemUdxv6VAu5HoXCJi36xBuZA1+PxgFfSASTJCYkPoS8M0muKyhno2kXRRhI5Aeg== X-Received: by 2002:a17:902:dac7:b0:1fd:9648:2d66 with SMTP id d9443c01a7336-20095899872mr1117145ad.17.1723072946426; Wed, 07 Aug 2024 16:22:26 -0700 (PDT) Received: from debian-hx90 (syn-076-094-249-045.res.spectrum.com. [76.94.249.45]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1ff58f26f4bsm111655595ad.34.2024.08.07.16.22.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Aug 2024 16:22:26 -0700 (PDT) From: Xiyue Deng In-Reply-To: <87a5hy8y8j.fsf@debian-hx90.lan> (Xiyue Deng's message of "Tue, 30 Jul 2024 12:40:28 -0700") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <66a8f323.170a0220.9172c.8e28SMTPIN_ADDED_BROKEN@mx.google.com> <87a5hy8y8j.fsf@debian-hx90.lan> Date: Wed, 07 Aug 2024 16:22:23 -0700 Message-ID: <87ed6zc40g.fsf@debian-hx90.lan> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Xiyue Deng writes: > Bj=C3=B6rn Bidar writes: > >> Robert Pluim writes: >> >>> Xiyue> - This will invalidate all existing entries and a user will = have to redo >>> Xiyue> the authorization process again to get a new refresh token= . However, >>> Xiyue> I think it's more important to ensure that oauth2.el works= correctly >>> Xiyue> for multiple accounts of the same provider, or a user may = suffer from >>> Xiyue> confusion when adding a new account invalidates a previous= account. >>> >>> I don=CA=BCt think that=CA=BCs too big a concern. 'modern' authenticati= on flows >>> regularly re-prompt, so this will not be too surprising (although >>> maybe call it out in the package=CA=BCs NEWS or README). >> >> In many cases the refreshing of tokens is transparent to the user there >> doesn't have to be a re-prompt to refresh the token if the OAuth >> provider support it. >> Micrsofts OAuth workflow is quite good in this regard as there's a >> non-standard error to indicate when the user has to re-authorize the >> application. >> > > Actually I am currently having trouble for a few weeks to get my > outlook.com email work with MS OAuth2. To avoid some repeated typing, I > have documented the issues and steps I have tried in this stackoverflow > question[1]. I would great appreciated it if you can shed some lights > there > >> I assume all implementation of OAuth have their quirks. > > Indeed. > > > [1] https://stackoverflow.com/questions/78787763/getting-aadsts65001-erro= r-invalid-grant-when-trying-to-refresh-access-token-fo Just want to report back that after confirming with an MS representative through online chat, outlook.com has actually disabled refreshing access_token through the token endpoint, and users are asked to migrate to Outlook app or compatibles apps (Thunderbird still works). I'm not sure whether this is also the case for organization emails, which may also be disabled by default (or soonish if not already) but can be enabled separately by an org admin. Anyway, I'd suggest people stop wasting your time here and use Gmail (or maybe Yahoo mail) which has decent 3rd party OAuth2 support. Meanwhile I have submitted a request to re-enable this support[1]. [1] https://feedbackportal.microsoft.com/feedback/idea/069f1816-0a55-ef11-b= 4ad-0022484d3ecc --=20 Xiyue Deng From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: =?UTF-8?Q?Bj=C3=B6rn?= Bidar Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 08 Aug 2024 06:12:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Xiyue Deng Cc: Robert Pluim , 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.172309750731681 (code B ref 72358); Thu, 08 Aug 2024 06:12:01 +0000 Received: (at 72358) by debbugs.gnu.org; 8 Aug 2024 06:11:47 +0000 Received: from localhost ([127.0.0.1]:35371 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sbwNH-0008Ev-0f for submit@debbugs.gnu.org; Thu, 08 Aug 2024 02:11:47 -0400 Received: from thaodan.de ([185.216.177.71]:59260) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sbwNE-0008Ef-S6 for 72358@debbugs.gnu.org; Thu, 08 Aug 2024 02:11:46 -0400 Received: from odin (dsl-trebng12-50dc75-154.dhcp.inet.fi [80.220.117.154]) by thaodan.de (Postfix) with ESMTPSA id 7A775D00042; Thu, 8 Aug 2024 09:11:11 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=thaodan.de; s=mail; t=1723097471; bh=ypcvRGuZLI7AVkF0i9aPGsh4EJc8OVrU2zTfjYXyrDk=; h=From:To:Cc:Subject:In-Reply-To:References:Date; b=ZYYh1Ey/tmvIIK3GwOSj8qQbsLK+zdV03lZA2PbQCuu6XCzf/fSPost4On/4KIGIK 4Ekr6+lewbxCDSj+A6xeAypRH1PQbuK8xCEAwF8sO+dPcCD8dCCov8iYcqyG/ihcrY z4/Xkmmv92YPRidvPdkhdAb+72tgPSj4h4AueAAFK/ZwLmMHCbprzQQjrNP/kVrf7v Q5N4PcUN2SjnDHiVRYsdAJZNIPT+HAhr40Fp/hamzImwRRcb1ixImzBhHgNbFFspuV dKw7waNKteeYL2a88PKUrMU0lRLMw/x/m4eao+TJhlwU2vcE07uccQbIjJXSY6e5eO S5DnXVkom2K0bL28dfHjHUBYXY7+kxgwxJdgOfyr7SeBsy1pot+bGWQMPKCNXosB2G WPxLCGN/Au853/E+pGVTU8nTxiUdDwfK1g3Duj084QIZkWqRhAPgLw2T1Qmr4xyXdD ncCYsJVqL0zpgyQ3GNCbvdKagOk93oMg2ZgPy+z1JwwBCY1CksfWVT9Lxo01qFyapa NghnNYHcvO57NVa/QmJFj1msn+n7A9Q081/MIXshTJ0VZzlJnjo105mOoUXQOy6XEi kuWtgCgyQ9/5rCLdL+0j5HDI3hBBvVN0SSYYbADF+tsnvpeGEKwYG3ESSC1HpkdgEh 3RUrtg3qAWxzFih3O3BA4vjI= From: =?UTF-8?Q?Bj=C3=B6rn?= Bidar In-Reply-To: <87ed6zc40g.fsf@debian-hx90.lan> (Xiyue Deng's message of "Wed, 07 Aug 2024 16:22:23 -0700") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <66a8f323.170a0220.9172c.8e28SMTPIN_ADDED_BROKEN@mx.google.com> <87a5hy8y8j.fsf@debian-hx90.lan> <87ed6zc40g.fsf@debian-hx90.lan> Autocrypt: addr=bjorn.bidar@thaodan.de; prefer-encrypt=nopreference; keydata= mDMEZNfpPhYJKwYBBAHaRw8BAQdACBEmr+0xwIIHZfIDlZmm7sa+lHHSb0g9FZrN6qE6ru60JUJq w7ZybiBCaWRhciA8Ympvcm4uYmlkYXJAdGhhb2Rhbi5kZT6IlgQTFgoAPgIbAwULCQgHAgIiAgYV CgkICwIEFgIDAQIeBwIXgBYhBFHxdut1RzAepymoq1wbdKFlHF9oBQJk1/YmAhkBAAoJEFwbdKFl HF9oB9cBAJoIIGQKXm4cpap+Flxc/EGnYl0123lcEyzuduqvlDT0AQC3OlFKm/OiqJ8IMTrzJRZ8 phFssTkSrrFXnM2jm5PYDoiTBBMWCgA7FiEEUfF263VHMB6nKairXBt0oWUcX2gFAmTX6T4CGwMF CwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQXBt0oWUcX2hbCQEAtru7kvM8hi8zo6z9ux2h K+B5xViKuo7Z8K3IXuK5ugwA+wUfKzomzdBPhfxDsqLcEziGRxoyx0Q3ld9aermBUccHtBxCasO2 cm4gQmlkYXIgPG1lQHRoYW9kYW4uZGU+iJMEExYKADsCGwMFCwkIBwICIgIGFQoJCAsCBBYCAwEC HgcCF4AWIQRR8XbrdUcwHqcpqKtcG3ShZRxfaAUCZNf2FQAKCRBcG3ShZRxfaCzSAP4hZ7cSp0YN XYpcjHdsySh2MuBhhoPeLGXs+2kSiqBiOwD/TP8AgPEg/R+SI9GI9on7fBJJ0mp2IT8kZ2rhDOjg gA6IkwQTFgoAOxYhBFHxdut1RzAepymoq1wbdKFlHF9oBQJk1+ntAhsDBQsJCAcCAiICBhUKCQgL AgQWAgMBAh4HAheAAAoJEFwbdKFlHF9oBgwA/iQHwe0VL4Df4GGTYlNjMSHFlIkBmN4UfYGLYj3E TrOUAQC51M+M3cjsL8WHdpBz6VAo6df9d+rVwhQ9vQuFHqevArg4BGTX6T4SCisGAQQBl1UBBQEB B0Cbohc3JEfn005/cm0AOGjSsW1ZxAkgaoVNjbpqk4MgNAMBCAeIeAQYFgoAIBYhBFHxdut1RzAe pymoq1wbdKFlHF9oBQJk1+k+AhsMAAoJEFwbdKFlHF9ooHABAKGmrGBic/Vys3BBrOQiRB3Z7izO HwhqTRpAqFZtXS2nAQDZhp/5aYw1TZjTzkm1KVt9QiYnjd/MvxRE9iaY6x4mDbgzBGTX6T4WCSsG AQQB2kcPAQEHQAgRJq/tMcCCB2XyA5WZpu7GvpRx0m9IPRWazeqhOq7uiO8EGBYKACAWIQRR8Xbr dUcwHqcpqKtcG3ShZRxfaAUCZNf71AIbIgCBCRBcG3ShZRxfaHYgBBkWCgAdFiEEUfF263VHMB6n KairXBt0oWUcX2gFAmTX+9QACgkQXBt0oWUcX2jeSwD6AtWn0cuo8IF35YRo4o3cDRJnUfJnbvJy GxyCDThR+zYBAKG6/jdwmZkBQZKslnDAbMMd2WfiZZT5JW3IWC4EaKMO7HkBAKYPGZ3UbfkRvfFK S+pQ9CgtNfkSJQBtT1Ob7Y6nsacgAQCpyXN7yppmhW/oBgivITPy9Lkg+V4NK9WZYZCU9Q7LBA== Date: Thu, 08 Aug 2024 09:11:09 +0300 Message-ID: <878qx7pmrm.fsf@> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 1.2 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Xiyue Deng writes: > Xiyue Deng writes: > >> =?UTF-8?Q?Bj=C3=B6rn?= Bidar writes: >> >>> Robert Pluim writes: >>> >>>> Xiyue> - This will invalidate all existing entries a [...] Content analysis details: (1.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_PASS SPF: sender matches SPF record -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 1.2 INVALID_MSGID Message-Id is not valid, according to RFC 2822 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.2 (/) Xiyue Deng writes: > Xiyue Deng writes: > >> Bj=C3=B6rn Bidar writes: >> >>> Robert Pluim writes: >>> >>>> Xiyue> - This will invalidate all existing entries and a user will= have to redo >>>> Xiyue> the authorization process again to get a new refresh toke= n. However, >>>> Xiyue> I think it's more important to ensure that oauth2.el work= s correctly >>>> Xiyue> for multiple accounts of the same provider, or a user may= suffer from >>>> Xiyue> confusion when adding a new account invalidates a previou= s account. >>>> >>>> I don=CA=BCt think that=CA=BCs too big a concern. 'modern' authenticat= ion flows >>>> regularly re-prompt, so this will not be too surprising (although >>>> maybe call it out in the package=CA=BCs NEWS or README). >>> >>> In many cases the refreshing of tokens is transparent to the user there >>> doesn't have to be a re-prompt to refresh the token if the OAuth >>> provider support it. >>> Micrsofts OAuth workflow is quite good in this regard as there's a >>> non-standard error to indicate when the user has to re-authorize the >>> application. >>> >> >> Actually I am currently having trouble for a few weeks to get my >> outlook.com email work with MS OAuth2. To avoid some repeated typing, I >> have documented the issues and steps I have tried in this stackoverflow >> question[1]. I would great appreciated it if you can shed some lights >> there >> >>> I assume all implementation of OAuth have their quirks. >> >> Indeed. >> >> >> [1] https://stackoverflow.com/questions/78787763/getting-aadsts65001-err= or-invalid-grant-when-trying-to-refresh-access-token-fo > > Just want to report back that after confirming with an MS representative > through online chat, outlook.com has actually disabled refreshing > access_token through the token endpoint, and users are asked to migrate > to Outlook app or compatibles apps (Thunderbird still works). Thank you for notifying me on this I will forward this to my employer. > I'm not sure whether this is also the case for organization emails, which= may > also be disabled by default (or soonish if not already) but can be > enabled separately by an org admin. It does depend some domains use whitelist e.g. Tampere University of Applies sciences. Without a specific Emacs GNUs/Caldav/whatever AppID inside Microsoft OAuth2 it will be hard to pass that. > Anyway, I'd suggest people stop > wasting your time here and use Gmail (or maybe Yahoo mail) which has > decent 3rd party OAuth2 support. I don't think that's an option for most user that complain about working OAuth2 support, in most cases it's a work or some other organization account. Another thing I think is very important is to support Nextcloud as it's a FOSS app supporting OAuth2 which quite many users and organizations adopted. > Meanwhile I have submitted a request to re-enable this support[1]. > > [1] https://feedbackportal.microsoft.com/feedback/idea/069f1816-0a55-ef11= -b4ad-0022484d3ecc From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: =?UTF-8?Q?Bj=C3=B6rn?= Bidar Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 08 Aug 2024 06:16:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Xiyue Deng Cc: Robert Pluim , 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.172309771432041 (code B ref 72358); Thu, 08 Aug 2024 06:16:02 +0000 Received: (at 72358) by debbugs.gnu.org; 8 Aug 2024 06:15:14 +0000 Received: from localhost ([127.0.0.1]:35376 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sbwQb-0008Kj-QU for submit@debbugs.gnu.org; Thu, 08 Aug 2024 02:15:14 -0400 Received: from thaodan.de ([185.216.177.71]:36536) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sbwQZ-0008KT-QI for 72358@debbugs.gnu.org; Thu, 08 Aug 2024 02:15:12 -0400 Received: from odin (dsl-trebng12-50dc75-154.dhcp.inet.fi [80.220.117.154]) by thaodan.de (Postfix) with ESMTPSA id 05578D00042; Thu, 8 Aug 2024 09:14:39 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=thaodan.de; s=mail; t=1723097680; bh=aHCHF6hBIbUTyUN0zb9Fy6Hj2Qmny8El0VTVLDOOaus=; h=From:To:Cc:Subject:In-Reply-To:References:Date; b=lC+QCqZyntFI2xhU7WoyVC4XUIT8ie/q9oS0q125Ct0+NDW0NaCXLR1ZLFbYuwrN1 1IBsg4Ly+LGdp00boz1xdPPpeE1sU4c20JN0K77WlY88WT+pLuTRouWPiTJJ8IPQyR GcPaim0E1J4fmgnVjfLn/vm9nU8uDcA7Ffq9U42LNBRB6aUTAMVau0eXgZzcXeqYz7 0jUeNCIIpbcKzemFtipckwUCUQ4aMUpErQmCFAe566H9yr03h0N3192x/s2nEevd8y H//fG2iipARrwNLKLCmsOSVuYl8vanLF7TC0M6PfN/cFfg0gUhP1S4dYxYdorrWVOQ iE/3sZNZGga7Nh24dCvZAUIrtxunmtTVWHQrwJ9U90mI3NJDqktbn5BIovR9mw3H71 K2/0pW5yY/BAmLYUoLnfaj0GLr9mcZGo6KWGqs+wMBPapdHd5+u+DlzxLxfRQVJsKo dA8Q/PueS6nm6j3+L+HX0QSxf4Y+YcobfnpgExCeefONw6zW1xRGVihCEpUr/PqBYf Gdztyo2MTlQS0krrVJyxpYoDqHwG466TLALQl0o74NmOKNkxne+CUj3TQUUqlWmteZ Xze4ExtIfYo4M9+dIsuYZh26N4uegSEdIpa762Y1QolZr6/7S0n88/xfdGIRed0hfu y/3df3Mb1zWB/8qXKz86VivM= From: =?UTF-8?Q?Bj=C3=B6rn?= Bidar In-Reply-To: <87ed6zc40g.fsf@debian-hx90.lan> (Xiyue Deng's message of "Wed, 07 Aug 2024 16:22:23 -0700") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <66a8f323.170a0220.9172c.8e28SMTPIN_ADDED_BROKEN@mx.google.com> <87a5hy8y8j.fsf@debian-hx90.lan> <87ed6zc40g.fsf@debian-hx90.lan> Autocrypt: addr=bjorn.bidar@thaodan.de; prefer-encrypt=nopreference; keydata= mDMEZNfpPhYJKwYBBAHaRw8BAQdACBEmr+0xwIIHZfIDlZmm7sa+lHHSb0g9FZrN6qE6ru60JUJq w7ZybiBCaWRhciA8Ympvcm4uYmlkYXJAdGhhb2Rhbi5kZT6IlgQTFgoAPgIbAwULCQgHAgIiAgYV CgkICwIEFgIDAQIeBwIXgBYhBFHxdut1RzAepymoq1wbdKFlHF9oBQJk1/YmAhkBAAoJEFwbdKFl HF9oB9cBAJoIIGQKXm4cpap+Flxc/EGnYl0123lcEyzuduqvlDT0AQC3OlFKm/OiqJ8IMTrzJRZ8 phFssTkSrrFXnM2jm5PYDoiTBBMWCgA7FiEEUfF263VHMB6nKairXBt0oWUcX2gFAmTX6T4CGwMF CwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQXBt0oWUcX2hbCQEAtru7kvM8hi8zo6z9ux2h K+B5xViKuo7Z8K3IXuK5ugwA+wUfKzomzdBPhfxDsqLcEziGRxoyx0Q3ld9aermBUccHtBxCasO2 cm4gQmlkYXIgPG1lQHRoYW9kYW4uZGU+iJMEExYKADsCGwMFCwkIBwICIgIGFQoJCAsCBBYCAwEC HgcCF4AWIQRR8XbrdUcwHqcpqKtcG3ShZRxfaAUCZNf2FQAKCRBcG3ShZRxfaCzSAP4hZ7cSp0YN XYpcjHdsySh2MuBhhoPeLGXs+2kSiqBiOwD/TP8AgPEg/R+SI9GI9on7fBJJ0mp2IT8kZ2rhDOjg gA6IkwQTFgoAOxYhBFHxdut1RzAepymoq1wbdKFlHF9oBQJk1+ntAhsDBQsJCAcCAiICBhUKCQgL AgQWAgMBAh4HAheAAAoJEFwbdKFlHF9oBgwA/iQHwe0VL4Df4GGTYlNjMSHFlIkBmN4UfYGLYj3E TrOUAQC51M+M3cjsL8WHdpBz6VAo6df9d+rVwhQ9vQuFHqevArg4BGTX6T4SCisGAQQBl1UBBQEB B0Cbohc3JEfn005/cm0AOGjSsW1ZxAkgaoVNjbpqk4MgNAMBCAeIeAQYFgoAIBYhBFHxdut1RzAe pymoq1wbdKFlHF9oBQJk1+k+AhsMAAoJEFwbdKFlHF9ooHABAKGmrGBic/Vys3BBrOQiRB3Z7izO HwhqTRpAqFZtXS2nAQDZhp/5aYw1TZjTzkm1KVt9QiYnjd/MvxRE9iaY6x4mDbgzBGTX6T4WCSsG AQQB2kcPAQEHQAgRJq/tMcCCB2XyA5WZpu7GvpRx0m9IPRWazeqhOq7uiO8EGBYKACAWIQRR8Xbr dUcwHqcpqKtcG3ShZRxfaAUCZNf71AIbIgCBCRBcG3ShZRxfaHYgBBkWCgAdFiEEUfF263VHMB6n KairXBt0oWUcX2gFAmTX+9QACgkQXBt0oWUcX2jeSwD6AtWn0cuo8IF35YRo4o3cDRJnUfJnbvJy GxyCDThR+zYBAKG6/jdwmZkBQZKslnDAbMMd2WfiZZT5JW3IWC4EaKMO7HkBAKYPGZ3UbfkRvfFK S+pQ9CgtNfkSJQBtT1Ob7Y6nsacgAQCpyXN7yppmhW/oBgivITPy9Lkg+V4NK9WZYZCU9Q7LBA== Date: Thu, 08 Aug 2024 09:14:39 +0300 Message-ID: <87v80bo81c.fsf@> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 1.2 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Xiyue Deng writes: > Xiyue Deng writes: > >> =?UTF-8?Q?Bj=C3=B6rn?= Bidar writes: >> >>> Robert Pluim writes: >>> >>>> Xiyue> - This will invalidate all existing entries a [...] Content analysis details: (1.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_PASS SPF: sender matches SPF record -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 1.2 INVALID_MSGID Message-Id is not valid, according to RFC 2822 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.2 (/) Xiyue Deng writes: > Xiyue Deng writes: > >> Bj=C3=B6rn Bidar writes: >> >>> Robert Pluim writes: >>> >>>> Xiyue> - This will invalidate all existing entries and a user will= have to redo >>>> Xiyue> the authorization process again to get a new refresh toke= n. However, >>>> Xiyue> I think it's more important to ensure that oauth2.el work= s correctly >>>> Xiyue> for multiple accounts of the same provider, or a user may= suffer from >>>> Xiyue> confusion when adding a new account invalidates a previou= s account. >>>> >>>> I don=CA=BCt think that=CA=BCs too big a concern. 'modern' authenticat= ion flows >>>> regularly re-prompt, so this will not be too surprising (although >>>> maybe call it out in the package=CA=BCs NEWS or README). >>> >>> In many cases the refreshing of tokens is transparent to the user there >>> doesn't have to be a re-prompt to refresh the token if the OAuth >>> provider support it. >>> Micrsofts OAuth workflow is quite good in this regard as there's a >>> non-standard error to indicate when the user has to re-authorize the >>> application. >>> >> >> Actually I am currently having trouble for a few weeks to get my >> outlook.com email work with MS OAuth2. To avoid some repeated typing, I >> have documented the issues and steps I have tried in this stackoverflow >> question[1]. I would great appreciated it if you can shed some lights >> there >> >>> I assume all implementation of OAuth have their quirks. >> >> Indeed. >> >> >> [1] https://stackoverflow.com/questions/78787763/getting-aadsts65001-err= or-invalid-grant-when-trying-to-refresh-access-token-fo > > Just want to report back that after confirming with an MS representative > through online chat, outlook.com has actually disabled refreshing > access_token through the token endpoint, and users are asked to migrate > to Outlook app or compatibles apps (Thunderbird still works). I'm not > sure whether this is also the case for organization emails, which may > also be disabled by default (or soonish if not already) but can be > enabled separately by an org admin. Anyway, I'd suggest people stop > wasting your time here and use Gmail (or maybe Yahoo mail) which has > decent 3rd party OAuth2 support. Can you link a source about that? From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Xiyue Deng Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 08 Aug 2024 08:31:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: =?UTF-8?Q?Bj=C3=B6rn?= Bidar Cc: Robert Pluim , 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.172310582613134 (code B ref 72358); Thu, 08 Aug 2024 08:31:01 +0000 Received: (at 72358) by debbugs.gnu.org; 8 Aug 2024 08:30:26 +0000 Received: from localhost ([127.0.0.1]:35522 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sbyXR-0003Pk-K3 for submit@debbugs.gnu.org; Thu, 08 Aug 2024 04:30:26 -0400 Received: from mail-pf1-f179.google.com ([209.85.210.179]:52234) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sbyXP-0003PU-3K for 72358@debbugs.gnu.org; Thu, 08 Aug 2024 04:30:24 -0400 Received: by mail-pf1-f179.google.com with SMTP id d2e1a72fcca58-70d1cbbeeaeso584360b3a.0 for <72358@debbugs.gnu.org>; Thu, 08 Aug 2024 01:29:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1723105731; x=1723710531; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id :reply-to; bh=UJ8YQJ/KJqFFiZaEWi9oZId9v6dmTDt9x8ARXzDFbKQ=; b=LwuU0x6eoo+NKglQm177aPoqueloC09spRZ4LmYbmvuucPBTnMKb+wGrU6h6ruGHFT ooVS6j0Z5XZv5xr5JWZPkjw7V5DvYirUWpsDfB/VHNJeQSUtoYY8C/5+LFfMIpx2Ernz JlQBDBkD78QNJpJiB3tQABiPHeAvzHu+T39SUZn+aIOWYzXxoHbCgSQVR0rOWEQ57p6m VEJeFzEjgIDFWoTNHGeVmKS3Wp78aTkbhfLXhLryE0cD8CQ4eIyqbLy/n6Mj1MY1GkbQ HHW6HQev4VoaOZycevnYeUAXAv7sBuE2VQEwUs5vLWSQDNVXIrRk6lzoMr97xX+Fl1FA F3xg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723105731; x=1723710531; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UJ8YQJ/KJqFFiZaEWi9oZId9v6dmTDt9x8ARXzDFbKQ=; b=tAe18lOZdLIXaLV2+PA++z7WuRNVvtwBgH8zTbtJURStSDJGE0n1p0l6bzwh1sjKcB JZzNx/+wt6IkiLlJHlbGOTg58DIme/BNjVRxa1LYcv3qHobL34PVnqYtdt4jGgYDimGc HdVddkGUl12HRLY3Pgp67slW25/dUaWCEwLwrJ9PzO85U7fmNRS/su5wdRrWQXnWFzj1 nc9Dcmmyqaa0cTJ3iepRm2UmzE3JofHjIIZu7HgVioOFH04Hjmm59LLNLiwu0GvhXDjr tCTrO9o3yKACq1pWOSjNLG3OpJ4PP+5K7vhFZc/VGGYiWA87FNvOF2kaBJla1inH5Vnp dXmA== X-Forwarded-Encrypted: i=1; AJvYcCWt3kpPzVcdUucbwcwks2vHUj1/L9LHhoD7eCqKh0USaiqgciXqTd5VPnm7/fz9F8qsI2bHEA==@debbugs.gnu.org X-Gm-Message-State: AOJu0YyQzqsrp3vweTPGaUfLhwY/MkgQf1KhdGb++WY9xu9DHYzfvx8q h80NdZOX1iG2zegLF+ZGowMnpX5UzBOS3lH3AzjD+6UUIqrQ9keRdfgU+A== X-Google-Smtp-Source: AGHT+IFUYLADXR3KmKPO54/mXtH+HaHxN0sVZ8iDPkr0BqRut0nv/T1QeyVLBxDLAz7D5MbCF8g4MA== X-Received: by 2002:a05:6a00:915a:b0:70d:1a82:f9a4 with SMTP id d2e1a72fcca58-710cae89caemr1011418b3a.30.1723105730789; Thu, 08 Aug 2024 01:28:50 -0700 (PDT) Received: from debian-hx90 (syn-076-094-249-045.res.spectrum.com. [76.94.249.45]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-710cb2e89ffsm678112b3a.180.2024.08.08.01.28.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 08 Aug 2024 01:28:50 -0700 (PDT) From: Xiyue Deng In-Reply-To: <66b46180.170a0220.1fb02.1d6eSMTPIN_ADDED_BROKEN@mx.google.com> ("=?UTF-8?Q?Bj=C3=B6rn?= Bidar"'s message of "Thu, 08 Aug 2024 09:11:09 +0300") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <66a8f323.170a0220.9172c.8e28SMTPIN_ADDED_BROKEN@mx.google.com> <87a5hy8y8j.fsf@debian-hx90.lan> <87ed6zc40g.fsf@debian-hx90.lan> <66b46180.170a0220.1fb02.1d6eSMTPIN_ADDED_BROKEN@mx.google.com> Date: Thu, 08 Aug 2024 01:28:47 -0700 Message-ID: <87a5hnbeps.fsf@debian-hx90.lan> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Bj=C3=B6rn Bidar writes: > Xiyue Deng writes: > >> Xiyue Deng writes: >> >>> Bj=C3=B6rn Bidar writes: >>> >>>> Robert Pluim writes: >>>> >>>>> Xiyue> - This will invalidate all existing entries and a user wil= l have to redo >>>>> Xiyue> the authorization process again to get a new refresh tok= en. However, >>>>> Xiyue> I think it's more important to ensure that oauth2.el wor= ks correctly >>>>> Xiyue> for multiple accounts of the same provider, or a user ma= y suffer from >>>>> Xiyue> confusion when adding a new account invalidates a previo= us account. >>>>> >>>>> I don=CA=BCt think that=CA=BCs too big a concern. 'modern' authentica= tion flows >>>>> regularly re-prompt, so this will not be too surprising (although >>>>> maybe call it out in the package=CA=BCs NEWS or README). >>>> >>>> In many cases the refreshing of tokens is transparent to the user there >>>> doesn't have to be a re-prompt to refresh the token if the OAuth >>>> provider support it. >>>> Micrsofts OAuth workflow is quite good in this regard as there's a >>>> non-standard error to indicate when the user has to re-authorize the >>>> application. >>>> >>> >>> Actually I am currently having trouble for a few weeks to get my >>> outlook.com email work with MS OAuth2. To avoid some repeated typing, I >>> have documented the issues and steps I have tried in this stackoverflow >>> question[1]. I would great appreciated it if you can shed some lights >>> there >>> >>>> I assume all implementation of OAuth have their quirks. >>> >>> Indeed. >>> >>> >>> [1] https://stackoverflow.com/questions/78787763/getting-aadsts65001-er= ror-invalid-grant-when-trying-to-refresh-access-token-fo >> >> Just want to report back that after confirming with an MS representative >> through online chat, outlook.com has actually disabled refreshing >> access_token through the token endpoint, and users are asked to migrate >> to Outlook app or compatibles apps (Thunderbird still works). > > Thank you for notifying me on this I will forward this to my employer. > >> I'm not sure whether this is also the case for organization emails, whic= h may >> also be disabled by default (or soonish if not already) but can be >> enabled separately by an org admin. > > It does depend some domains use whitelist e.g. Tampere University of > Applies sciences. Without a specific Emacs GNUs/Caldav/whatever AppID > inside Microsoft OAuth2 it will be hard to pass that. > > >> Anyway, I'd suggest people stop >> wasting your time here and use Gmail (or maybe Yahoo mail) which has >> decent 3rd party OAuth2 support. > > I don't think that's an option for most user that complain about working > OAuth2 support, in most cases it's a work or some other organization > account. > > Another thing I think is very important is to support Nextcloud as it's > a FOSS app supporting OAuth2 which quite many users and organizations > adopted. > > Nextcloud sounds interesting. Do you know where I can check for the OAuth2 credentials like client_id and client_secret? >> Meanwhile I have submitted a request to re-enable this support[1]. >> >> [1] https://feedbackportal.microsoft.com/feedback/idea/069f1816-0a55-ef1= 1-b4ad-0022484d3ecc --=20 Xiyue Deng From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Xiyue Deng Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 08 Aug 2024 08:32:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: =?UTF-8?Q?Bj=C3=B6rn?= Bidar Cc: Robert Pluim , 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.172310588513242 (code B ref 72358); Thu, 08 Aug 2024 08:32:01 +0000 Received: (at 72358) by debbugs.gnu.org; 8 Aug 2024 08:31:25 +0000 Received: from localhost ([127.0.0.1]:35526 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sbyYP-0003RW-6P for submit@debbugs.gnu.org; Thu, 08 Aug 2024 04:31:25 -0400 Received: from mail-pl1-f175.google.com ([209.85.214.175]:50455) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sbyYN-0003RJ-IN for 72358@debbugs.gnu.org; Thu, 08 Aug 2024 04:31:24 -0400 Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-1ff3d5c6e9eso6272885ad.1 for <72358@debbugs.gnu.org>; Thu, 08 Aug 2024 01:30:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1723105791; x=1723710591; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id :reply-to; bh=tTa8bJply+xxPlZdR0qF/2leg63qvKy1Fm1cjYvLHoU=; b=g4JbHJOcaGvGCfJZIQeS7iodYV22bL59et5TYFxhtiFSse2df1uvFoU2VrRrayEXg+ 6921IJugfNDUW2Dbk2coh/PtcyH68/8g8gtA+Lc9ioidX3gvjPrHd0zdSUNtbeuwzh7d lwV6ybKThyen/s/OFl6psdpRLfmsh7Ljpd08jDOluc86a+XUHg5Qxl9lLyQhYy21QYEG sYv+hAMB1XsRXfAkoJl3AyKSDG5O4odY5DaKxDpMi/r9DTMOHHwm1rChhIxdZ9BWfsOV vt2iy9n0E/g90CsH1RiMtGKBH10j/MIPNgVAcGReQ1Vj8QrnwMV44Dm+LOLduRXAW3mB YW9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723105791; x=1723710591; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tTa8bJply+xxPlZdR0qF/2leg63qvKy1Fm1cjYvLHoU=; b=CbBsHXLWgeeU7QZ0tA44GLqzaUWiAGIfHETF1I5bva4HarxTPSi+M1zmXOT7eRUme+ +/9/LFy/xf6t+8+yiKaXLy6hJG3oluSZeo2hYoFlNdb8qYYXGATHETXCtqbkh1SmOWv0 eZUoqfhxKjl8Xv8+V6kKecMPgK5C7udqzmwumULiNxMlOs6z/1fPlDCDj0uBlzmKmGqN Z+o4y557ckTuzafJoABTSIKyAsDKJHe3KlgwEaE9QtFSa9M8ykcBk9dpn6jUGtOEWHNC ENO1k/v1yCleAlCUy5TIAhGGBSzw/EBcBSAuHZta8s6t4YuxaIu/v+ZvwQkixgJ8Yjp8 UZ9A== X-Forwarded-Encrypted: i=1; AJvYcCXuRuNkTCOwwihtnhuQ7nLBCPjWpv1oU2a9mCpbHrDoKNIAR98LN+rtgDFbO2Hx0olPSdtdrOK9vCLbMOe0/Ngz9CnYLSE= X-Gm-Message-State: AOJu0Ywd9xB5nD83mwaB5Brwnc+GKyfkwNnDslyQAKth5jeMu9fk4yYJ kILDaSj2SWzuAczxcYHPIDJdxsZ/PL8hUcy8oii5lQTAAgV8IO8jMfLMww== X-Google-Smtp-Source: AGHT+IF+2+tZTwOYzRSGOSTnO4nEB42b8SfZt4tj+vz0IVY7nI1WBFknEgF66kHWAXlUfTMf6z/ItQ== X-Received: by 2002:a17:902:e885:b0:1fd:d0c0:1a83 with SMTP id d9443c01a7336-200952ba9b8mr12074075ad.43.1723105790721; Thu, 08 Aug 2024 01:29:50 -0700 (PDT) Received: from debian-hx90 (syn-076-094-249-045.res.spectrum.com. [76.94.249.45]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1ff59290b65sm119380535ad.241.2024.08.08.01.29.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 08 Aug 2024 01:29:50 -0700 (PDT) From: Xiyue Deng In-Reply-To: <66b46251.170a0220.f2be9.afeeSMTPIN_ADDED_BROKEN@mx.google.com> ("=?UTF-8?Q?Bj=C3=B6rn?= Bidar"'s message of "Thu, 08 Aug 2024 09:14:39 +0300") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <66a8f323.170a0220.9172c.8e28SMTPIN_ADDED_BROKEN@mx.google.com> <87a5hy8y8j.fsf@debian-hx90.lan> <87ed6zc40g.fsf@debian-hx90.lan> <66b46251.170a0220.f2be9.afeeSMTPIN_ADDED_BROKEN@mx.google.com> Date: Thu, 08 Aug 2024 01:29:49 -0700 Message-ID: <875xsbbeo2.fsf@debian-hx90.lan> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Bj=C3=B6rn Bidar writes: > Xiyue Deng writes: > >> Xiyue Deng writes: >> >>> Bj=C3=B6rn Bidar writes: >>> >>>> Robert Pluim writes: >>>> >>>>> Xiyue> - This will invalidate all existing entries and a user wil= l have to redo >>>>> Xiyue> the authorization process again to get a new refresh tok= en. However, >>>>> Xiyue> I think it's more important to ensure that oauth2.el wor= ks correctly >>>>> Xiyue> for multiple accounts of the same provider, or a user ma= y suffer from >>>>> Xiyue> confusion when adding a new account invalidates a previo= us account. >>>>> >>>>> I don=CA=BCt think that=CA=BCs too big a concern. 'modern' authentica= tion flows >>>>> regularly re-prompt, so this will not be too surprising (although >>>>> maybe call it out in the package=CA=BCs NEWS or README). >>>> >>>> In many cases the refreshing of tokens is transparent to the user there >>>> doesn't have to be a re-prompt to refresh the token if the OAuth >>>> provider support it. >>>> Micrsofts OAuth workflow is quite good in this regard as there's a >>>> non-standard error to indicate when the user has to re-authorize the >>>> application. >>>> >>> >>> Actually I am currently having trouble for a few weeks to get my >>> outlook.com email work with MS OAuth2. To avoid some repeated typing, I >>> have documented the issues and steps I have tried in this stackoverflow >>> question[1]. I would great appreciated it if you can shed some lights >>> there >>> >>>> I assume all implementation of OAuth have their quirks. >>> >>> Indeed. >>> >>> >>> [1] https://stackoverflow.com/questions/78787763/getting-aadsts65001-er= ror-invalid-grant-when-trying-to-refresh-access-token-fo >> >> Just want to report back that after confirming with an MS representative >> through online chat, outlook.com has actually disabled refreshing >> access_token through the token endpoint, and users are asked to migrate >> to Outlook app or compatibles apps (Thunderbird still works). I'm not >> sure whether this is also the case for organization emails, which may >> also be disabled by default (or soonish if not already) but can be >> enabled separately by an org admin. Anyway, I'd suggest people stop >> wasting your time here and use Gmail (or maybe Yahoo mail) which has >> decent 3rd party OAuth2 support. > > Can you link a source about that? Unfortunately the MS representative didn't provide any link for this. --=20 Xiyue Deng From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: =?UTF-8?Q?Bj=C3=B6rn?= Bidar Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 08 Aug 2024 09:19:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Xiyue Deng Cc: Robert Pluim , 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.172310872817862 (code B ref 72358); Thu, 08 Aug 2024 09:19:01 +0000 Received: (at 72358) by debbugs.gnu.org; 8 Aug 2024 09:18:48 +0000 Received: from localhost ([127.0.0.1]:35564 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sbzIF-0004e1-Jj for submit@debbugs.gnu.org; Thu, 08 Aug 2024 05:18:47 -0400 Received: from thaodan.de ([185.216.177.71]:37596) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sbzIC-0004dl-Jg for 72358@debbugs.gnu.org; Thu, 08 Aug 2024 05:18:45 -0400 Received: from odin (dsl-trebng12-50dc75-154.dhcp.inet.fi [80.220.117.154]) by thaodan.de (Postfix) with ESMTPSA id 1CE56D00042; Thu, 8 Aug 2024 12:17:38 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=thaodan.de; s=mail; t=1723108658; bh=1Fu+SWFnLLXY4Eol5X1ldfWtJiXyZ4SDWzZXeFEWQ+M=; h=From:To:Cc:Subject:In-Reply-To:References:Date; b=BWVptCKm6FgSToM5Ng7SYLryBHqu976kySiUJdZ7b7FsMttH4rB8V5Yf5keolBxME IbiiIIrmeG6gzZl5wCCyvm0r2U/RRSaFmTiDEYlrtd6Jt7rUrUGy50pobAAXVjxjrY S3Zuj45h0okMn3Ll+rEb92ns481QZ+9J7DLABX4br6CS7RcOU1tiIYwiKOwDgCpDmt UqZDUjLPaACeIcAvBmOQefRfqR/LtmqQRfHeJlNE50zRNAp9r+Mp+ppxrEuB/68OAo uuDG/lv8b3i4nVFC1XGiRcNF2udjy+iC6apnt2q+F12fWn+o4SpLhiKkDZ0+itOylj nXnpD8xh/GjvCX+tfBipl79Q21DHmCWRJMf1JLsU9wcguXrwt+TOurkwkRqMepzvmH dUvd0bkukU6PGWnn6g1F8kM/jEkCZ3Xl0nEjvwRxmCgUbE/JqfOSqPVksQT+H4r6Jy niGj6XUGgDOOp9lL86xWwkfJMDkRZ6XyPxOp+GxW2Lx7zsUAm/0U8iD7GC2qjPMiTh xccVkeXL7vl2iy8H52GJv7kLW/QJ2xEz9UYbVzPFg+INvb8vzd1SE3zNvm5IvQKj4P rfZLXXt8XqazwLq9tQEoNW3eiCLos3e8BM5UCZ8gX8xMer9RM3krpxJbhwdEafsCp1 HvfqKzXprmrBNGf+D8aqrJxU= From: =?UTF-8?Q?Bj=C3=B6rn?= Bidar In-Reply-To: <87a5hnbeps.fsf@debian-hx90.lan> (Xiyue Deng's message of "Thu, 08 Aug 2024 01:28:47 -0700") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <66a8f323.170a0220.9172c.8e28SMTPIN_ADDED_BROKEN@mx.google.com> <87a5hy8y8j.fsf@debian-hx90.lan> <87ed6zc40g.fsf@debian-hx90.lan> <66b46180.170a0220.1fb02.1d6eSMTPIN_ADDED_BROKEN@mx.google.com> <87a5hnbeps.fsf@debian-hx90.lan> Autocrypt: addr=bjorn.bidar@thaodan.de; prefer-encrypt=nopreference; keydata= mDMEZNfpPhYJKwYBBAHaRw8BAQdACBEmr+0xwIIHZfIDlZmm7sa+lHHSb0g9FZrN6qE6ru60JUJq w7ZybiBCaWRhciA8Ympvcm4uYmlkYXJAdGhhb2Rhbi5kZT6IlgQTFgoAPgIbAwULCQgHAgIiAgYV CgkICwIEFgIDAQIeBwIXgBYhBFHxdut1RzAepymoq1wbdKFlHF9oBQJk1/YmAhkBAAoJEFwbdKFl HF9oB9cBAJoIIGQKXm4cpap+Flxc/EGnYl0123lcEyzuduqvlDT0AQC3OlFKm/OiqJ8IMTrzJRZ8 phFssTkSrrFXnM2jm5PYDoiTBBMWCgA7FiEEUfF263VHMB6nKairXBt0oWUcX2gFAmTX6T4CGwMF CwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQXBt0oWUcX2hbCQEAtru7kvM8hi8zo6z9ux2h K+B5xViKuo7Z8K3IXuK5ugwA+wUfKzomzdBPhfxDsqLcEziGRxoyx0Q3ld9aermBUccHtBxCasO2 cm4gQmlkYXIgPG1lQHRoYW9kYW4uZGU+iJMEExYKADsCGwMFCwkIBwICIgIGFQoJCAsCBBYCAwEC HgcCF4AWIQRR8XbrdUcwHqcpqKtcG3ShZRxfaAUCZNf2FQAKCRBcG3ShZRxfaCzSAP4hZ7cSp0YN XYpcjHdsySh2MuBhhoPeLGXs+2kSiqBiOwD/TP8AgPEg/R+SI9GI9on7fBJJ0mp2IT8kZ2rhDOjg gA6IkwQTFgoAOxYhBFHxdut1RzAepymoq1wbdKFlHF9oBQJk1+ntAhsDBQsJCAcCAiICBhUKCQgL AgQWAgMBAh4HAheAAAoJEFwbdKFlHF9oBgwA/iQHwe0VL4Df4GGTYlNjMSHFlIkBmN4UfYGLYj3E TrOUAQC51M+M3cjsL8WHdpBz6VAo6df9d+rVwhQ9vQuFHqevArg4BGTX6T4SCisGAQQBl1UBBQEB B0Cbohc3JEfn005/cm0AOGjSsW1ZxAkgaoVNjbpqk4MgNAMBCAeIeAQYFgoAIBYhBFHxdut1RzAe pymoq1wbdKFlHF9oBQJk1+k+AhsMAAoJEFwbdKFlHF9ooHABAKGmrGBic/Vys3BBrOQiRB3Z7izO HwhqTRpAqFZtXS2nAQDZhp/5aYw1TZjTzkm1KVt9QiYnjd/MvxRE9iaY6x4mDbgzBGTX6T4WCSsG AQQB2kcPAQEHQAgRJq/tMcCCB2XyA5WZpu7GvpRx0m9IPRWazeqhOq7uiO8EGBYKACAWIQRR8Xbr dUcwHqcpqKtcG3ShZRxfaAUCZNf71AIbIgCBCRBcG3ShZRxfaHYgBBkWCgAdFiEEUfF263VHMB6n KairXBt0oWUcX2gFAmTX+9QACgkQXBt0oWUcX2jeSwD6AtWn0cuo8IF35YRo4o3cDRJnUfJnbvJy GxyCDThR+zYBAKG6/jdwmZkBQZKslnDAbMMd2WfiZZT5JW3IWC4EaKMO7HkBAKYPGZ3UbfkRvfFK S+pQ9CgtNfkSJQBtT1Ob7Y6nsacgAQCpyXN7yppmhW/oBgivITPy9Lkg+V4NK9WZYZCU9Q7LBA== Date: Thu, 08 Aug 2024 12:17:36 +0300 Message-ID: <878qx7nzkf.fsf@> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 1.2 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Xiyue Deng writes: > =?UTF-8?Q?Bj=C3=B6rn?= Bidar writes: > >> Xiyue Deng writes: >> >>> Xiyue Deng writes: >>> >>> Anyway, I'd suggest people stop >>> wasting your time [...] Content analysis details: (1.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_PASS SPF: sender matches SPF record -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 1.2 INVALID_MSGID Message-Id is not valid, according to RFC 2822 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.2 (/) Xiyue Deng writes: > Bj=C3=B6rn Bidar writes: > >> Xiyue Deng writes: >> >>> Xiyue Deng writes: >>> >>> Anyway, I'd suggest people stop >>> wasting your time here and use Gmail (or maybe Yahoo mail) which has >>> decent 3rd party OAuth2 support. >> >> I don't think that's an option for most user that complain about working >> OAuth2 support, in most cases it's a work or some other organization >> account. >> >> Another thing I think is very important is to support Nextcloud as it's >> a FOSS app supporting OAuth2 which quite many users and organizations >> adopted. >> >> > > Nextcloud sounds interesting. Do you know where I can check for the > OAuth2 credentials like client_id and client_secret? > You can find them in the administrator settings the Nextcloud server. Here is there documentation: https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/= oauth2.html From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: =?UTF-8?Q?Bj=C3=B6rn?= Bidar Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 08 Aug 2024 09:33:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Xiyue Deng Cc: Robert Pluim , 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.172310957219343 (code B ref 72358); Thu, 08 Aug 2024 09:33:01 +0000 Received: (at 72358) by debbugs.gnu.org; 8 Aug 2024 09:32:52 +0000 Received: from localhost ([127.0.0.1]:35581 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sbzVs-00051v-11 for submit@debbugs.gnu.org; Thu, 08 Aug 2024 05:32:52 -0400 Received: from thaodan.de ([185.216.177.71]:41322) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sbzVo-00051f-PJ for 72358@debbugs.gnu.org; Thu, 08 Aug 2024 05:32:50 -0400 Received: from odin (dsl-trebng12-50dc75-154.dhcp.inet.fi [80.220.117.154]) by thaodan.de (Postfix) with ESMTPSA id B003DD00042; Thu, 8 Aug 2024 12:31:42 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=thaodan.de; s=mail; t=1723109502; bh=usp1kktYcWkKmx9XyJBIWMvYn+N/wB0rjtCnYim7kQ0=; h=From:To:Cc:Subject:In-Reply-To:References:Date; b=X2mCKdmG5C+/jJmOwvs3QBvFmZoBNL8avG2YGocbK/F4d49jufuKXv3gsJbPnsq9r ctco8QL0CQ6ow3hJLgcfDV+6ZyHxz3ppFc90XQ923Jd8xeg886kPeiJATFDS40Gc0v 38R9xUPspkMP8/mxxuCm/jz3Zj9hlwZt6ypfSGFMYkfJnhqk4gBFUQNCqG5e3hYWc+ w3rBlQHz3NHP+nAGQKDF9AhuoPD2Egvo40Qi/pOxAZI2UoC0UGcGIlSJJH2lbfgwgT uSqDNWPIE9mnAisyPyqF1sZDT0dmGx2x105DNKg7QA/L7nhCTLeC+JTe/DA9de1ius mlFN2W8yJ/nU7aX5kq9fLzmjrFkPjjee7hxrtBn2FkMVNWzPZzq/QymqvlGRRt32jF aC2QZRgAema4oF4AcUjPxBlxB7QGmK/J555WxpC6Kpi/WnRk+lBk45ookvzGKYOhRw 1xI8m/xGNdNCHUpqQmk2WvheEx+OFvR3yJ3UTDw0CFAPOGsZuNoE4ItDvM2ZlZ4NzO /1Jl/ACBailfYp+Z1GXIEdlktsvf6WZQzoKFgVFitDKHEPdnM6lLAsq5ub85tthNFS 4d3WeAbU9E7S0Ahk2r+tlMtQs3A//1MUk/cKrrDl7Uu1CB7GuPQlMvyvhrSH7spnhD ZwE/UdoLY58n5wxSQ0wfX1qM= From: =?UTF-8?Q?Bj=C3=B6rn?= Bidar In-Reply-To: <875xsbbeo2.fsf@debian-hx90.lan> (Xiyue Deng's message of "Thu, 08 Aug 2024 01:29:49 -0700") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <66a8f323.170a0220.9172c.8e28SMTPIN_ADDED_BROKEN@mx.google.com> <87a5hy8y8j.fsf@debian-hx90.lan> <87ed6zc40g.fsf@debian-hx90.lan> <66b46251.170a0220.f2be9.afeeSMTPIN_ADDED_BROKEN@mx.google.com> <875xsbbeo2.fsf@debian-hx90.lan> Autocrypt: addr=bjorn.bidar@thaodan.de; prefer-encrypt=nopreference; keydata= mDMEZNfpPhYJKwYBBAHaRw8BAQdACBEmr+0xwIIHZfIDlZmm7sa+lHHSb0g9FZrN6qE6ru60JUJq w7ZybiBCaWRhciA8Ympvcm4uYmlkYXJAdGhhb2Rhbi5kZT6IlgQTFgoAPgIbAwULCQgHAgIiAgYV CgkICwIEFgIDAQIeBwIXgBYhBFHxdut1RzAepymoq1wbdKFlHF9oBQJk1/YmAhkBAAoJEFwbdKFl HF9oB9cBAJoIIGQKXm4cpap+Flxc/EGnYl0123lcEyzuduqvlDT0AQC3OlFKm/OiqJ8IMTrzJRZ8 phFssTkSrrFXnM2jm5PYDoiTBBMWCgA7FiEEUfF263VHMB6nKairXBt0oWUcX2gFAmTX6T4CGwMF CwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQXBt0oWUcX2hbCQEAtru7kvM8hi8zo6z9ux2h K+B5xViKuo7Z8K3IXuK5ugwA+wUfKzomzdBPhfxDsqLcEziGRxoyx0Q3ld9aermBUccHtBxCasO2 cm4gQmlkYXIgPG1lQHRoYW9kYW4uZGU+iJMEExYKADsCGwMFCwkIBwICIgIGFQoJCAsCBBYCAwEC HgcCF4AWIQRR8XbrdUcwHqcpqKtcG3ShZRxfaAUCZNf2FQAKCRBcG3ShZRxfaCzSAP4hZ7cSp0YN XYpcjHdsySh2MuBhhoPeLGXs+2kSiqBiOwD/TP8AgPEg/R+SI9GI9on7fBJJ0mp2IT8kZ2rhDOjg gA6IkwQTFgoAOxYhBFHxdut1RzAepymoq1wbdKFlHF9oBQJk1+ntAhsDBQsJCAcCAiICBhUKCQgL AgQWAgMBAh4HAheAAAoJEFwbdKFlHF9oBgwA/iQHwe0VL4Df4GGTYlNjMSHFlIkBmN4UfYGLYj3E TrOUAQC51M+M3cjsL8WHdpBz6VAo6df9d+rVwhQ9vQuFHqevArg4BGTX6T4SCisGAQQBl1UBBQEB B0Cbohc3JEfn005/cm0AOGjSsW1ZxAkgaoVNjbpqk4MgNAMBCAeIeAQYFgoAIBYhBFHxdut1RzAe pymoq1wbdKFlHF9oBQJk1+k+AhsMAAoJEFwbdKFlHF9ooHABAKGmrGBic/Vys3BBrOQiRB3Z7izO HwhqTRpAqFZtXS2nAQDZhp/5aYw1TZjTzkm1KVt9QiYnjd/MvxRE9iaY6x4mDbgzBGTX6T4WCSsG AQQB2kcPAQEHQAgRJq/tMcCCB2XyA5WZpu7GvpRx0m9IPRWazeqhOq7uiO8EGBYKACAWIQRR8Xbr dUcwHqcpqKtcG3ShZRxfaAUCZNf71AIbIgCBCRBcG3ShZRxfaHYgBBkWCgAdFiEEUfF263VHMB6n KairXBt0oWUcX2gFAmTX+9QACgkQXBt0oWUcX2jeSwD6AtWn0cuo8IF35YRo4o3cDRJnUfJnbvJy GxyCDThR+zYBAKG6/jdwmZkBQZKslnDAbMMd2WfiZZT5JW3IWC4EaKMO7HkBAKYPGZ3UbfkRvfFK S+pQ9CgtNfkSJQBtT1Ob7Y6nsacgAQCpyXN7yppmhW/oBgivITPy9Lkg+V4NK9WZYZCU9Q7LBA== Date: Thu, 08 Aug 2024 12:31:41 +0300 Message-ID: <874j7vnywy.fsf@> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 1.2 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Xiyue Deng writes: >>>>> In many cases the refreshing of tokens is transparent to the user there >>>>> doesn't have to be a re-prompt to refresh the token if the OAuth >>>>> provider support it. >>>>> Micrsofts OAuth wo [...] Content analysis details: (1.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_PASS SPF: sender matches SPF record -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 1.2 INVALID_MSGID Message-Id is not valid, according to RFC 2822 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.2 (/) Xiyue Deng writes: >>>>> In many cases the refreshing of tokens is transparent to the user there >>>>> doesn't have to be a re-prompt to refresh the token if the OAuth >>>>> provider support it. >>>>> Micrsofts OAuth workflow is quite good in this regard as there's a >>>>> non-standard error to indicate when the user has to re-authorize the >>>>> application. >>>>> >>>> >>>> Actually I am currently having trouble for a few weeks to get my >>>> outlook.com email work with MS OAuth2. To avoid some repeated typing, I >>>> have documented the issues and steps I have tried in this stackoverflow >>>> question[1]. I would great appreciated it if you can shed some lights >>>> there >>>> >>>>> I assume all implementation of OAuth have their quirks. >>>> >>>> Indeed. >>>> >>>> >>>> [1] https://stackoverflow.com/questions/78787763/getting-aadsts65001-error-invalid-grant-when-trying-to-refresh-access-token-fo >>> >>> Just want to report back that after confirming with an MS representative >>> through online chat, outlook.com has actually disabled refreshing >>> access_token through the token endpoint, and users are asked to migrate >>> to Outlook app or compatibles apps (Thunderbird still works). I'm not >>> sure whether this is also the case for organization emails, which may >>> also be disabled by default (or soonish if not already) but can be >>> enabled separately by an org admin. Anyway, I'd suggest people stop >>> wasting your time here and use Gmail (or maybe Yahoo mail) which has >>> decent 3rd party OAuth2 support. >> >> Can you link a source about that? > > Unfortunately the MS representative didn't provide any link for this. OK that is to bad, if possible I would ask for an official response. Microsoft counts as a gate keeper, at least officially in the EU, they should not be able to act like this. A workaround would be to request a manual token refresh by authorizing the application all over again. I will update you on anything new I have if I get new information that I can post. From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Thomas Fitzsimmons Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 12 Aug 2024 13:23:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Xiyue Deng Cc: =?UTF-8?Q?Bj=C3=B6rn?= Bidar , Robert Pluim , 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.172346897317892 (code B ref 72358); Mon, 12 Aug 2024 13:23:02 +0000 Received: (at 72358) by debbugs.gnu.org; 12 Aug 2024 13:22:53 +0000 Received: from localhost ([127.0.0.1]:42652 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sdV0f-0004eU-3U for submit@debbugs.gnu.org; Mon, 12 Aug 2024 09:22:53 -0400 Received: from mail.fitzsim.org ([69.165.165.189]:60688) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sdV0b-0004e7-8h for 72358@debbugs.gnu.org; Mon, 12 Aug 2024 09:22:51 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=fitzsim.org ; s=20220430; h=Content-Transfer-Encoding:Content-Type:MIME-Version: Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From:Sender:Reply-To: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=Abfwvf0Yq0v7J4yAfoXm96ldKzhffUk+XKO6DiMcFks=; b=OFshgUCLpo+TTpGlb8UV4Zuyyf BFmEqPoNYWGVyEv+hR06YHwWSX/JJeYmoUqX4uvpEntTiZg+Z/Yxxs1atSy+aXbY2bNPqGtkKkrUy Ov41HU8I44eoVDFaQqMwfUfeKUB2DdgarqKF1S4CTvJAztyZwfJrlqE1JEkWDy1Tb6ZlHk3QoBZ8C 1zFf9EEhbdm/YHhZtDcyKptkR8ZjDQors3pIEU19GDOsW/ILa6Lt9MldQXYElCJDMWzv07sO91zU+ wB9ix9iC32rKojcfLVuU1lm9kJFnO6FzHM/yCenKZ8uRuNse3+Jpbh4TJjpafK172ekmFt72nJBKo 4SfTSnjA==; Received: from [192.168.1.1] (helo=localhost.localdomain) by mail.fitzsim.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sdUzv-0002Cf-FZ; Mon, 12 Aug 2024 09:22:09 -0400 From: Thomas Fitzsimmons In-Reply-To: <87a5hnbeps.fsf@debian-hx90.lan> (Xiyue Deng's message of "Thu, 08 Aug 2024 01:28:47 -0700") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <66a8f323.170a0220.9172c.8e28SMTPIN_ADDED_BROKEN@mx.google.com> <87a5hy8y8j.fsf@debian-hx90.lan> <87ed6zc40g.fsf@debian-hx90.lan> <66b46180.170a0220.1fb02.1d6eSMTPIN_ADDED_BROKEN@mx.google.com> <87a5hnbeps.fsf@debian-hx90.lan> Date: Mon, 12 Aug 2024 09:22:07 -0400 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Xiyue Deng writes: > Bj=C3=B6rn Bidar writes: > >> Xiyue Deng writes: >> >>> Xiyue Deng writes: >>> >>>> Bj=C3=B6rn Bidar writes: >>>> >>>>> Robert Pluim writes: >>>>> >>>>>> Xiyue> - This will invalidate all existing entries and a user wi= ll have to redo >>>>>> Xiyue> the authorization process again to get a new refresh to= ken. However, >>>>>> Xiyue> I think it's more important to ensure that oauth2.el wo= rks correctly >>>>>> Xiyue> for multiple accounts of the same provider, or a user m= ay suffer from >>>>>> Xiyue> confusion when adding a new account invalidates a previ= ous account. >>>>>> >>>>>> I don=CA=BCt think that=CA=BCs too big a concern. 'modern' authentic= ation flows >>>>>> regularly re-prompt, so this will not be too surprising (although >>>>>> maybe call it out in the package=CA=BCs NEWS or README). >>>>> >>>>> In many cases the refreshing of tokens is transparent to the user the= re >>>>> doesn't have to be a re-prompt to refresh the token if the OAuth >>>>> provider support it. >>>>> Micrsofts OAuth workflow is quite good in this regard as there's a >>>>> non-standard error to indicate when the user has to re-authorize the >>>>> application. >>>>> >>>> >>>> Actually I am currently having trouble for a few weeks to get my >>>> outlook.com email work with MS OAuth2. To avoid some repeated typing,= I >>>> have documented the issues and steps I have tried in this stackoverflow >>>> question[1]. I would great appreciated it if you can shed some lights >>>> there >>>> >>>>> I assume all implementation of OAuth have their quirks. >>>> >>>> Indeed. >>>> >>>> >>>> [1] >>>> https://stackoverflow.com/questions/78787763/getting-aadsts65001-error= -invalid-grant-when-trying-to-refresh-access-token-fo >>> >>> Just want to report back that after confirming with an MS representative >>> through online chat, outlook.com has actually disabled refreshing >>> access_token through the token endpoint, and users are asked to migrate >>> to Outlook app or compatibles apps (Thunderbird still works). >> >> Thank you for notifying me on this I will forward this to my employer. >> >>> I'm not sure whether this is also the case for organization emails, whi= ch may >>> also be disabled by default (or soonish if not already) but can be >>> enabled separately by an org admin. >> >> It does depend some domains use whitelist e.g. Tampere University of >> Applies sciences. Without a specific Emacs GNUs/Caldav/whatever AppID >> inside Microsoft OAuth2 it will be hard to pass that. >> >> >>> Anyway, I'd suggest people stop >>> wasting your time here and use Gmail (or maybe Yahoo mail) which has >>> decent 3rd party OAuth2 support. >> >> I don't think that's an option for most user that complain about working >> OAuth2 support, in most cases it's a work or some other organization >> account. >> >> Another thing I think is very important is to support Nextcloud as it's >> a FOSS app supporting OAuth2 which quite many users and organizations >> adopted. >> >> > > Nextcloud sounds interesting. Do you know where I can check for the > OAuth2 credentials like client_id and client_secret? sourcehut [1] provides a Free Software OAuth2 flow, and it has the benefit of not requiring JavaScript (even FOSS JavaScript) anywhere in the process. I wrote url-http-oauth-demo.el [2] as a complete "worked" example demonstrating its use with url-http-oauth.el. Thomas 1. https://sourcehut.org/ 2. https://git.savannah.gnu.org/cgit/emacs/elpa.git/tree/url-http-oauth-dem= o.el?h=3Dexternals/url-http-oauth From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: =?UTF-8?Q?Bj=C3=B6rn?= Bidar Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 12 Aug 2024 16:28:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Thomas Fitzsimmons Cc: Robert Pluim , 72358@debbugs.gnu.org, Xiyue Deng Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.172348004410798 (code B ref 72358); Mon, 12 Aug 2024 16:28:01 +0000 Received: (at 72358) by debbugs.gnu.org; 12 Aug 2024 16:27:24 +0000 Received: from localhost ([127.0.0.1]:43685 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sdXtD-0002o6-LP for submit@debbugs.gnu.org; Mon, 12 Aug 2024 12:27:24 -0400 Received: from thaodan.de ([185.216.177.71]:46240) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sdXtA-0002nm-4v for 72358@debbugs.gnu.org; Mon, 12 Aug 2024 12:27:21 -0400 Received: from odin (dsl-trebng12-50dc75-154.dhcp.inet.fi [80.220.117.154]) by thaodan.de (Postfix) with ESMTPSA id 15D71D00039; Mon, 12 Aug 2024 19:26:08 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=thaodan.de; s=mail; t=1723479968; bh=U7FeplYIjikb+WAqHMb3Kg2HtEontYd/9PAXO/NF4v4=; h=From:To:Cc:Subject:In-Reply-To:References:Date; b=P7r5p+eOAFiOSohT1YsO7IRILgCvo41WFNeTpgLia5CRTtrTWG145cp3v9eZHoNiL sh2qyXS0SNpOjPfTYVoPxlQL8jgiaABe2DoCtny6Rzt+1U8UClHpgy4QaIwSuxeeg2 0F1s9a/5PwqnqPZfTt4/XVPJGHf3W3Tn4H3e2E/y4kwoqxUa9Ts6xzL9DaOeQWVzgZ C6ZUjdNEMohv6ZIuT7AAwHpZqWeT+sPK5rwhO9rwukjrwDYWnA8G0xahqL9q0zulU/ 7bcRR3XDdPa3gV8FtGyG/LNlkxVDjmDi1NsV8Tr1VsOOt/L7uPjzwj2QZRd9rNZucZ 3JwJxqVnM5/jqyAeiJv6ZkNJ+jhYBtByAUsbNaHCGfLQl/rdp+WUrKIsf1qaz/G+2R 75l250YSEX+u6s6yQW8gyGmymX4BPkOls3rsyCleFGgnU07pGStBAZtaIXsrvuYFAR tap3PCuLU+tWxIBGh17iTSdax+NQRDWKK1292heuK7kwyYCGjMhM+D0ZetzH2yVBPL n/p/miTtFNKN0pvfNnfkB7hfnnxbR6ZUfF4OZcAeyW2u5ucWZhOXvKTPz3+6KnzbS7 q1iPxpfYOdfbflOmtV65rJyF4eYv36Hc8v3B27F/ZCElUKriBb0zsYD5XlIEWgfY4X Ck9aVF1JUNi6zBaoM4RVCQzo= From: =?UTF-8?Q?Bj=C3=B6rn?= Bidar In-Reply-To: (Thomas Fitzsimmons's message of "Mon, 12 Aug 2024 09:22:07 -0400") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <66a8f323.170a0220.9172c.8e28SMTPIN_ADDED_BROKEN@mx.google.com> <87a5hy8y8j.fsf@debian-hx90.lan> <87ed6zc40g.fsf@debian-hx90.lan> <66b46180.170a0220.1fb02.1d6eSMTPIN_ADDED_BROKEN@mx.google.com> <87a5hnbeps.fsf@debian-hx90.lan> Autocrypt: addr=bjorn.bidar@thaodan.de; prefer-encrypt=nopreference; keydata= mDMEZNfpPhYJKwYBBAHaRw8BAQdACBEmr+0xwIIHZfIDlZmm7sa+lHHSb0g9FZrN6qE6ru60JUJq w7ZybiBCaWRhciA8Ympvcm4uYmlkYXJAdGhhb2Rhbi5kZT6IlgQTFgoAPgIbAwULCQgHAgIiAgYV CgkICwIEFgIDAQIeBwIXgBYhBFHxdut1RzAepymoq1wbdKFlHF9oBQJk1/YmAhkBAAoJEFwbdKFl HF9oB9cBAJoIIGQKXm4cpap+Flxc/EGnYl0123lcEyzuduqvlDT0AQC3OlFKm/OiqJ8IMTrzJRZ8 phFssTkSrrFXnM2jm5PYDoiTBBMWCgA7FiEEUfF263VHMB6nKairXBt0oWUcX2gFAmTX6T4CGwMF CwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQXBt0oWUcX2hbCQEAtru7kvM8hi8zo6z9ux2h K+B5xViKuo7Z8K3IXuK5ugwA+wUfKzomzdBPhfxDsqLcEziGRxoyx0Q3ld9aermBUccHtBxCasO2 cm4gQmlkYXIgPG1lQHRoYW9kYW4uZGU+iJMEExYKADsCGwMFCwkIBwICIgIGFQoJCAsCBBYCAwEC HgcCF4AWIQRR8XbrdUcwHqcpqKtcG3ShZRxfaAUCZNf2FQAKCRBcG3ShZRxfaCzSAP4hZ7cSp0YN XYpcjHdsySh2MuBhhoPeLGXs+2kSiqBiOwD/TP8AgPEg/R+SI9GI9on7fBJJ0mp2IT8kZ2rhDOjg gA6IkwQTFgoAOxYhBFHxdut1RzAepymoq1wbdKFlHF9oBQJk1+ntAhsDBQsJCAcCAiICBhUKCQgL AgQWAgMBAh4HAheAAAoJEFwbdKFlHF9oBgwA/iQHwe0VL4Df4GGTYlNjMSHFlIkBmN4UfYGLYj3E TrOUAQC51M+M3cjsL8WHdpBz6VAo6df9d+rVwhQ9vQuFHqevArg4BGTX6T4SCisGAQQBl1UBBQEB B0Cbohc3JEfn005/cm0AOGjSsW1ZxAkgaoVNjbpqk4MgNAMBCAeIeAQYFgoAIBYhBFHxdut1RzAe pymoq1wbdKFlHF9oBQJk1+k+AhsMAAoJEFwbdKFlHF9ooHABAKGmrGBic/Vys3BBrOQiRB3Z7izO HwhqTRpAqFZtXS2nAQDZhp/5aYw1TZjTzkm1KVt9QiYnjd/MvxRE9iaY6x4mDbgzBGTX6T4WCSsG AQQB2kcPAQEHQAgRJq/tMcCCB2XyA5WZpu7GvpRx0m9IPRWazeqhOq7uiO8EGBYKACAWIQRR8Xbr dUcwHqcpqKtcG3ShZRxfaAUCZNf71AIbIgCBCRBcG3ShZRxfaHYgBBkWCgAdFiEEUfF263VHMB6n KairXBt0oWUcX2gFAmTX+9QACgkQXBt0oWUcX2jeSwD6AtWn0cuo8IF35YRo4o3cDRJnUfJnbvJy GxyCDThR+zYBAKG6/jdwmZkBQZKslnDAbMMd2WfiZZT5JW3IWC4EaKMO7HkBAKYPGZ3UbfkRvfFK S+pQ9CgtNfkSJQBtT1Ob7Y6nsacgAQCpyXN7yppmhW/oBgivITPy9Lkg+V4NK9WZYZCU9Q7LBA== Date: Mon, 12 Aug 2024 19:26:06 +0300 Message-ID: <87jzglbtcx.fsf@> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 1.2 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Thomas Fitzsimmons writes: > Xiyue Deng writes: > >> =?UTF-8?Q?Bj=C3=B6rn?= Bidar writes: >> >>> Xiyue Deng writes: >>> >>>> Xiyue Deng writes: >>>> >>>>> =?UTF-8?Q?Bj=C3?= [...] Content analysis details: (1.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_PASS SPF: sender matches SPF record -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 1.2 INVALID_MSGID Message-Id is not valid, according to RFC 2822 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.2 (/) Thomas Fitzsimmons writes: > Xiyue Deng writes: > >> Bj=C3=B6rn Bidar writes: >> >>> Xiyue Deng writes: >>> >>>> Xiyue Deng writes: >>>> >>>>> Bj=C3=B6rn Bidar writes: >>>>> >>>>>> Robert Pluim writes: >>>>>> >>>>>>> Xiyue> - This will invalidate all existing entries and a user w= ill have to redo >>>>>>> Xiyue> the authorization process again to get a new refresh t= oken. However, >>>>>>> Xiyue> I think it's more important to ensure that oauth2.el w= orks correctly >>>>>>> Xiyue> for multiple accounts of the same provider, or a user = may suffer from >>>>>>> Xiyue> confusion when adding a new account invalidates a prev= ious account. >>>>>>> >>>>>>> I don=CA=BCt think that=CA=BCs too big a concern. 'modern' authenti= cation flows >>>>>>> regularly re-prompt, so this will not be too surprising (although >>>>>>> maybe call it out in the package=CA=BCs NEWS or README). >>>>>> >>>>>> In many cases the refreshing of tokens is transparent to the user th= ere >>>>>> doesn't have to be a re-prompt to refresh the token if the OAuth >>>>>> provider support it. >>>>>> Micrsofts OAuth workflow is quite good in this regard as there's a >>>>>> non-standard error to indicate when the user has to re-authorize the >>>>>> application. >>>>>> >>>>> >>>>> Actually I am currently having trouble for a few weeks to get my >>>>> outlook.com email work with MS OAuth2. To avoid some repeated typing= , I >>>>> have documented the issues and steps I have tried in this stackoverfl= ow >>>>> question[1]. I would great appreciated it if you can shed some lights >>>>> there >>>>> >>>>>> I assume all implementation of OAuth have their quirks. >>>>> >>>>> Indeed. >>>>> >>>>> >>>>> [1] >>>>> https://stackoverflow.com/questions/78787763/getting-aadsts65001-erro= r-invalid-grant-when-trying-to-refresh-access-token-fo >>>> >>>> Just want to report back that after confirming with an MS representati= ve >>>> through online chat, outlook.com has actually disabled refreshing >>>> access_token through the token endpoint, and users are asked to migrate >>>> to Outlook app or compatibles apps (Thunderbird still works). >>> >>> Thank you for notifying me on this I will forward this to my employer. >>> >>>> I'm not sure whether this is also the case for organization emails, wh= ich may >>>> also be disabled by default (or soonish if not already) but can be >>>> enabled separately by an org admin. >>> >>> It does depend some domains use whitelist e.g. Tampere University of >>> Applies sciences. Without a specific Emacs GNUs/Caldav/whatever AppID >>> inside Microsoft OAuth2 it will be hard to pass that. >>> >>> >>>> Anyway, I'd suggest people stop >>>> wasting your time here and use Gmail (or maybe Yahoo mail) which has >>>> decent 3rd party OAuth2 support. >>> >>> I don't think that's an option for most user that complain about working >>> OAuth2 support, in most cases it's a work or some other organization >>> account. >>> >>> Another thing I think is very important is to support Nextcloud as it's >>> a FOSS app supporting OAuth2 which quite many users and organizations >>> adopted. >>> >>> >> >> Nextcloud sounds interesting. Do you know where I can check for the >> OAuth2 credentials like client_id and client_secret? > > sourcehut [1] provides a Free Software OAuth2 flow, and it has the > benefit of not requiring JavaScript (even FOSS JavaScript) anywhere in > the process. I wrote url-http-oauth-demo.el [2] as a complete "worked" > example demonstrating its use with url-http-oauth.el. Would that provide OAuth2 for providers that require a login through their webinterface, such as Nextcloud Login, without a browser? Most platforms such as Android, KDE or Sailfish OS use a browser for OAuth2 login to login, authorize and then forward the token to the OS/app. > Thomas > > 1. https://sourcehut.org/ > 2. https://git.savannah.gnu.org/cgit/emacs/elpa.git/tree/url-http-oauth-d= emo.el?h=3Dexternals/url-http-oauth From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Xiyue Deng Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 13 Aug 2024 22:06:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: rpluim@gmail.com, 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.17235867169940 (code B ref 72358); Tue, 13 Aug 2024 22:06:02 +0000 Received: (at 72358) by debbugs.gnu.org; 13 Aug 2024 22:05:16 +0000 Received: from localhost ([127.0.0.1]:45601 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sdzdk-0002aG-HC for submit@debbugs.gnu.org; Tue, 13 Aug 2024 18:05:16 -0400 Received: from mail-il1-f180.google.com ([209.85.166.180]:47372) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sdzdh-0002Zz-Pc for 72358@debbugs.gnu.org; Tue, 13 Aug 2024 18:05:14 -0400 Received: by mail-il1-f180.google.com with SMTP id e9e14a558f8ab-39b3c36d247so24657865ab.3 for <72358@debbugs.gnu.org>; Tue, 13 Aug 2024 15:04:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1723586614; x=1724191414; darn=debbugs.gnu.org; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=qwXTPA83BIRoo/WTp7tbbDnKoFG/W2Y62ES+6tIN/QM=; b=G7RtXkqVl2Elo9wJeK1CUXPKKuZDYomXRzQxnch7ALeuU1/ZAue3DE7tFSh9bxTJVa QSc+SjJn2YbIdGE8PSqCrbrXClOtBfBu3BH8t8a/pD+XRzbFbRHeerAYfONqtSMBwKXv sKBns9bzZagys/eoIDow+qn42RWoZlGMBfNQSitm5ltjKioSK2kVJW54nhmOTwy6qSDn KXYcjIb2Vw/Gxz61rRO5R/vMm74gRIRZ1+a2HyqPDbHmFUZA8MQHZnJlKP2S4a1cQ7se oECs7lfWHuA19dYF91SupS8s8pmvQesKoajOuMyD5NUKq+B014N7y+zMEKBxBMl4rLFK vmvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723586614; x=1724191414; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=qwXTPA83BIRoo/WTp7tbbDnKoFG/W2Y62ES+6tIN/QM=; b=WRpyz7Gg4OSiP2UvRKQmQ97VqhQ0eYz27IattLCtYxw5iR57zZe4oR303mSCVchh4B 7Vc6yMecSlB9lWiMK+jH0xOIN5EPpst7e60RbsNRYQWsAy3p697WSGaTtAqWdZEwldu7 PbqmV2pMvP+iQsF7EmujTdrpprlkvK9H1lZyWPaN0Wc//878O5fixpQFjN8pzmplbkE5 d5jlI3CueYfaHACvqXkhkeYa0nmrJ52aIAdFjGeKaabJggM0gTwcFCRfAKydYjRSOgm3 82EMiXPjug83nzFrFBLoljbzJoZuQiXLj3+2urMD9yIkJ3MJi0sVMAfufp7HfAWEkYCb TmlQ== X-Forwarded-Encrypted: i=1; AJvYcCX6dmLIQcN8kY8x7S9Qsf64z0Bj4yo5F+Qqcmb8F0x2ssv9918RvM0Z4QKvhZsD02L4Zd4jhflhdEFg1UwQyhzObhuk7XY= X-Gm-Message-State: AOJu0Yz4WeMApHk5mHNKVgMGt4VkL7YudeI3B82zaH2reSIHeH8nEWJz 01uYqwXDn4N7Fux+QwfOLRZVOhdFoRjp0hwBC7fvnDJ9F60GyjBe5Y5+Lw== X-Google-Smtp-Source: AGHT+IGCoTAbKoGW7D9uS7LfZzuSISkAwTuSsm6/1HBsOlo4mkYhkQ0HLDoSr+2DLM2DvDF0s62IvA== X-Received: by 2002:a05:6e02:1747:b0:39b:3a71:6a2a with SMTP id e9e14a558f8ab-39d12447ba8mr11700875ab.9.1723586613781; Tue, 13 Aug 2024 15:03:33 -0700 (PDT) Received: from debian-hx90 (syn-076-094-249-045.res.spectrum.com. [76.94.249.45]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-7c6979edc70sm1970770a12.22.2024.08.13.15.03.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Aug 2024 15:03:33 -0700 (PDT) From: Xiyue Deng In-Reply-To: <86r0b6up8p.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 03 Aug 2024 08:52:54 +0300") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <87ed7a8ye6.fsf@debian-hx90.lan> <87jzh2vt3y.fsf@gmail.com> <87frrp6ch8.fsf@debian-hx90.lan> <87ttg349yd.fsf@debian-hx90.lan> <86r0b6up8p.fsf@gnu.org> Date: Tue, 13 Aug 2024 15:03:30 -0700 Message-ID: <87ikw4qdvx.fsf@debian-hx90.lan> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hi Eli, Eli Zaretskii writes: >> Cc: 72358@debbugs.gnu.org >> From: Xiyue Deng >> Date: Fri, 02 Aug 2024 01:15:22 -0700 >> >> BTW, is there any dev available to commit the changes once it's in a >> good shape? > > All the 3 co-maintainers are tracking these discussions and install > changes that are ready to be installed. It's been a few days since the last time I received feedback for improvements regarding my patches. Is there any other feedbacks/reviews I am expecting from the co-maintainers? Please also let me know when it's time to ask for merging and requesting a new tagged release. Thanks in advance. -- Xiyue Deng From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 14 Aug 2024 05:30:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Xiyue Deng Cc: =?UTF-8?Q?Bj=C3=B6rn?= Bidar , rpluim@gmail.com, Thomas Fitzsimmons , 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.172361336832075 (code B ref 72358); Wed, 14 Aug 2024 05:30:02 +0000 Received: (at 72358) by debbugs.gnu.org; 14 Aug 2024 05:29:28 +0000 Received: from localhost ([127.0.0.1]:45839 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1se6Zc-0008LH-DA for submit@debbugs.gnu.org; Wed, 14 Aug 2024 01:29:28 -0400 Received: from eggs.gnu.org ([209.51.188.92]:41782) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1se6Za-0008L5-Pg for 72358@debbugs.gnu.org; Wed, 14 Aug 2024 01:29:27 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1se6Yw-0001Bz-CS; Wed, 14 Aug 2024 01:28:46 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=x/5xlH68JS+5nKLDQhY0JWw5F+jEDuCS2a2VbexE+os=; b=Knoe0rr0mYBntc4bo6JT 5nR6kSwlVTfg6ApQ9t/byylGiNmjOoaUSmWZ6SKpAtMafZoQf/L3yL8SiAvH9hDqdmhSYGAWCpIGA wbkg88lraM+mYXIX0ncZqSdJoor6FW/7PqaywtlEgp7B9aKA+0ghMoLlGz+c3cAy1KX8jMPlgjsUU /ResyULdx1vbCe0yKCKPeA3HrNBCMhPjjUGfauZ1X4uACiC7YV3N3Jo9r01RMXnk7MoPdY9n5yXKt 5gIp6QQZ4xT471Jd3XTdPgX8HxJOOM660+G+6JpnpGU55i9BH8N8yGY+yNJvvv8tpT6N9qgFq895H hkUslQH1dTx1JQ==; Date: Wed, 14 Aug 2024 08:28:42 +0300 Message-Id: <86plqbfzat.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87ikw4qdvx.fsf@debian-hx90.lan> (message from Xiyue Deng on Tue, 13 Aug 2024 15:03:30 -0700) References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <87ed7a8ye6.fsf@debian-hx90.lan> <87jzh2vt3y.fsf@gmail.com> <87frrp6ch8.fsf@debian-hx90.lan> <87ttg349yd.fsf@debian-hx90.lan> <86r0b6up8p.fsf@gnu.org> <87ikw4qdvx.fsf@debian-hx90.lan> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Xiyue Deng > Cc: rpluim@gmail.com, 72358@debbugs.gnu.org > Date: Tue, 13 Aug 2024 15:03:30 -0700 > > Hi Eli, > > Eli Zaretskii writes: > > >> Cc: 72358@debbugs.gnu.org > >> From: Xiyue Deng > >> Date: Fri, 02 Aug 2024 01:15:22 -0700 > >> > >> BTW, is there any dev available to commit the changes once it's in a > >> good shape? > > > > All the 3 co-maintainers are tracking these discussions and install > > changes that are ready to be installed. > > It's been a few days since the last time I received feedback for > improvements regarding my patches. Is there any other feedbacks/reviews > I am expecting from the co-maintainers? Please also let me know when > it's time to ask for merging and requesting a new tagged release. ?? The last message in this discussion was just yesterday evening, and my understanding is that you are still discussing the issues and did not reach the final conclusion. If I'm mistaken, my apologies; please describe your conclusion and post the patch that you-all agree would solve the issues, and let's take it from there. From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Xiyue Deng Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 14 Aug 2024 08:26:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: =?UTF-8?Q?Bj=C3=B6rn?= Bidar , rpluim@gmail.com, Thomas Fitzsimmons , 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.172362390617244 (code B ref 72358); Wed, 14 Aug 2024 08:26:02 +0000 Received: (at 72358) by debbugs.gnu.org; 14 Aug 2024 08:25:06 +0000 Received: from localhost ([127.0.0.1]:46047 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1se9Ja-0004U3-2I for submit@debbugs.gnu.org; Wed, 14 Aug 2024 04:25:06 -0400 Received: from mail-pl1-f180.google.com ([209.85.214.180]:59400) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1se9JY-0004TS-32 for 72358@debbugs.gnu.org; Wed, 14 Aug 2024 04:25:04 -0400 Received: by mail-pl1-f180.google.com with SMTP id d9443c01a7336-1fd78c165eeso50949595ad.2 for <72358@debbugs.gnu.org>; Wed, 14 Aug 2024 01:24:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1723623803; x=1724228603; darn=debbugs.gnu.org; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=6c60l15BkvzNhFSCiastRaLbaTIs58wfUpVIulrsqhM=; b=GwuNR1U7DtU4K626qbE/1Wt/9EdYXVJfBuXze+kmGbs8zCQmFotak58HOkyS88eLS6 u923PoEtdw2XnkLXjESo4m/KlCJFBN/g6T7cxUYfhIBFTzg5wrWeqnDoNvpZPBf6Tmoi haPAqQcSMYmh+PXc1pWK5i9lLOtaXk3BVOLLThrKVlVn+NRRoFkKPCFOreOlnuXkYKbm FI9q6AZcCLA8AMboWODLnbSiEyHL4VWrVmwjuaf2ueoczl2e4yXK6R8d0cw38QJ5aQN6 wgq0XtKjSTpQrZyZ1+ABbLTztKaDdHlrcs2V6pC4PXrGmaWYnEZlPsR7K4JtV9G09o/O aa5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723623803; x=1724228603; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=6c60l15BkvzNhFSCiastRaLbaTIs58wfUpVIulrsqhM=; b=TC1smBshjO1ghPXWc4Xt8f34j2UU/+0JIV+RrgWUw5WdlbdLldTYPq79WFppZE6B5Y AV9Tg3OcpHr2YEIkymjt1WqphHIw53m7j43u7Jg8BqjG0lmJ/K8PWbgyAEA4anrZthgn 0sfxJ+r/jYDuGf2UZPGshweJgOgzB3KZRh1mRnxw6AhnrQ2jzP/XENZCP5tWlXzcsCz3 lG8zx/QaawaFeJX5IjC09CaMaIBGZ677W04vcBjuluCJNmw2tvO/ooKbzSvjMMkV1V9X dVgPOl0LyQN96rr+cXgpQmF148jompU3S3Q2IxnRGBO8qWSgEUcnAlsHgw4huXDhfUzZ jW/w== X-Forwarded-Encrypted: i=1; AJvYcCXh+JIPeTl0YarxLKvnlpYXaipViqmJFnAJomPHKc3MZ8Sug4XjxsTmpXvDJmWBH4wukqrAuqASW9M1npqLDbeo+ItPTME= X-Gm-Message-State: AOJu0YxVTMQ8eddSmF9f+tdZ0ClD60XkrFO+loG7XRZFPqCiG5cJpKwl a1jsYXZJgZr/lnoeW8nkL66FdkHQiViZmBHHqEQPRH9OpumpIuASTp94nOV8 X-Google-Smtp-Source: AGHT+IGCLDKfnA5/WGVsrkfY6XJNz6vt7mLYOnrsmm/zFjc0bYdUIVBlRbup/7k92agB2/PyDGjvBw== X-Received: by 2002:a17:903:35cf:b0:1fb:4b87:6e8e with SMTP id d9443c01a7336-201d6487fe4mr23334275ad.42.1723623803242; Wed, 14 Aug 2024 01:23:23 -0700 (PDT) Received: from debian-hx90 (syn-076-094-249-045.res.spectrum.com. [76.94.249.45]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-201cd131512sm24825385ad.7.2024.08.14.01.23.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Aug 2024 01:23:22 -0700 (PDT) From: Xiyue Deng In-Reply-To: <86plqbfzat.fsf@gnu.org> (Eli Zaretskii's message of "Wed, 14 Aug 2024 08:28:42 +0300") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <87ed7a8ye6.fsf@debian-hx90.lan> <87jzh2vt3y.fsf@gmail.com> <87frrp6ch8.fsf@debian-hx90.lan> <87ttg349yd.fsf@debian-hx90.lan> <86r0b6up8p.fsf@gnu.org> <87ikw4qdvx.fsf@debian-hx90.lan> <86plqbfzat.fsf@gnu.org> Date: Wed, 14 Aug 2024 01:23:19 -0700 Message-ID: <877ccjecnc.fsf@debian-hx90.lan> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 1.0 (+) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=-=-= Content-Type: text/plain Eli Zaretskii writes: >> From: Xiyue Deng >> Cc: rpluim@gmail.com, 72358@debbugs.gnu.org >> Date: Tue, 13 Aug 2024 15:03:30 -0700 >> >> Hi Eli, >> >> Eli Zaretskii writes: >> >> >> Cc: 72358@debbugs.gnu.org >> >> From: Xiyue Deng >> >> Date: Fri, 02 Aug 2024 01:15:22 -0700 >> >> >> >> BTW, is there any dev available to commit the changes once it's in a >> >> good shape? >> > >> > All the 3 co-maintainers are tracking these discussions and install >> > changes that are ready to be installed. >> >> It's been a few days since the last time I received feedback for >> improvements regarding my patches. Is there any other feedbacks/reviews >> I am expecting from the co-maintainers? Please also let me know when >> it's time to ask for merging and requesting a new tagged release. > > ?? The last message in this discussion was just yesterday evening, and > my understanding is that you are still discussing the issues and did > not reach the final conclusion. If I'm mistaken, my apologies; The recent communication was not related to my patches but to check whether it is possible to support outlook.com OAuth2 login (and the conclusion was no because refreshing access token was disabled as confirmed by MS representative during an online chat.) > please describe your conclusion and post the patch that you-all agree > would solve the issues, and let's take it from there. I actually only received comments from Robert and I have updated my patches according in [1][2] (also attached in EOM). [1] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=72358#20 [2] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=72358#44 -- Xiyue Deng --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0001-Show-full-authentication-URL-to-let-user-choose-how-.patch >From 2b9e50cb0948e0b4f28883042109994ffa295d3d Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Sun, 21 Jul 2024 14:50:56 -0700 Subject: [PATCH 1/6] Show full authentication URL to let user choose how to visit it * packages/oauth2/oauth2.el (oauth2-request-authorization): show full authentication URL in user prompt. --- oauth2.el | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/oauth2.el b/oauth2.el index 7da9702004..3a3e50ad2b 100644 --- a/oauth2.el +++ b/oauth2.el @@ -57,14 +57,17 @@ "Request OAuth authorization at AUTH-URL by launching `browse-url'. CLIENT-ID is the client id provided by the provider. It returns the code provided by the service." - (browse-url (concat auth-url - (if (string-match-p "\?" auth-url) "&" "?") - "client_id=" (url-hexify-string client-id) - "&response_type=code" - "&redirect_uri=" (url-hexify-string (or redirect-uri "urn:ietf:wg:oauth:2.0:oob")) - (if scope (concat "&scope=" (url-hexify-string scope)) "") - (if state (concat "&state=" (url-hexify-string state)) ""))) - (read-string "Enter the code your browser displayed: ")) + (let ((url (concat auth-url + (if (string-match-p "\?" auth-url) "&" "?") + "client_id=" (url-hexify-string client-id) + "&response_type=code" + "&redirect_uri=" (url-hexify-string (or redirect-uri "urn:ietf:wg:oauth:2.0:oob")) + (if scope (concat "&scope=" (url-hexify-string scope)) "") + (if state (concat "&state=" (url-hexify-string state)) "")))) + (browse-url url) + (read-string (concat "Follow the instruction on your default browser, or " + "visit:\n" url + "\nEnter the code your browser displayed: ")))) (defun oauth2-request-access-parse () "Parse the result of an OAuth request." -- 2.39.2 --=-=-=-- From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Xiyue Deng Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 14 Aug 2024 08:43:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: =?UTF-8?Q?Bj=C3=B6rn?= Bidar , rpluim@gmail.com, Thomas Fitzsimmons , 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.172362493118983 (code B ref 72358); Wed, 14 Aug 2024 08:43:01 +0000 Received: (at 72358) by debbugs.gnu.org; 14 Aug 2024 08:42:11 +0000 Received: from localhost ([127.0.0.1]:46058 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1se9a6-0004w6-FH for submit@debbugs.gnu.org; Wed, 14 Aug 2024 04:42:11 -0400 Received: from mail-pl1-f182.google.com ([209.85.214.182]:44435) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1se9a4-0004vt-Od for 72358@debbugs.gnu.org; Wed, 14 Aug 2024 04:42:09 -0400 Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-1fc566ac769so57077045ad.1 for <72358@debbugs.gnu.org>; Wed, 14 Aug 2024 01:41:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1723624828; x=1724229628; darn=debbugs.gnu.org; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=aUgCjjfNna1qzSpj2n3Pi6bgdz3D5xNUUvA8AZrVvms=; b=WDD63K672o9ftWNfzJCCExWZ1qT5Ull5yzmauL/jWN/5KlmkrvNaL2wgV/Tq8pBjEz a5/DeVWgpzhXAOa5zRYUJ+jcfKkMDmgoH7JpwZgVHVfi/L+HWBGilHV37k/hlaGPz+Co 4OWoAZpRki0e/Qdq+UP2ueNBZXDo5A4/HG34/lNRxJEPpfLj1nsmL9bXZ8EnRpQGdk/Z QJZBTcocuHR8VokjaJh+P6YLa47GJgayICdigRIMUb0TTsQ3/i1X9m9NwkDH7pNcfl1l 2y/r3aVMoqvt7Hwq+Fde/Rq2dO9j7oa5jupSOk+p/v3Y+SQUojOkaz6X88j/3OeWC15h B9dQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723624828; x=1724229628; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=aUgCjjfNna1qzSpj2n3Pi6bgdz3D5xNUUvA8AZrVvms=; b=lUGqkWOxnsFghZP8aojhDqwazEKZcRGy7t+uyyguLkmXUE5IrS2F3pEnLpJbYKZ5L8 YOj5PCRjAWM9X3huGmHJ3/VDB5bOKLFL0xnzVcXC3jPATj8qKz+7SiaQWdzZV/HOVoyf 5cJMtYZE5BSQ6vmTnxVDh02i1/8feVVK34Fn4kRHnKjQU+UidghXWf7fiPWkvD+u6PUs f1MXku9tebfFrYgapTKxLEGUfB+ubUJRUxg2NgVaQ8A8zFhFOdL9XUjbE7gulpx8QPV5 TdK0WxMsuH/pWOcy0zmpGW1Qss7huojYY2e7OC5PjI8JXMVnZnEbjkXAzcQYlKklMeco p+4Q== X-Forwarded-Encrypted: i=1; AJvYcCX3JO6QZDuUVv/MASRIKNZukuHNF+xldk8Im7X2o0Npk7r8ylG7ApE0YPRIV0eYhxCImFNzTrGlt0uF9nfUeREtGBk6PAo= X-Gm-Message-State: AOJu0YztLTYtgq0Sqwl+KeFloKu2/piw15st5ufdhXT2Xl6x/0iIHZ8M 594Jw9sk8BhK+dC+oFxFhSHTTgs7zI+xF7oEJ/EYmqJNhTpJUndiPWDcGuWu X-Google-Smtp-Source: AGHT+IGuR+cz5WlbWti0xm3cJKID3A0DgOKZXrtGjQtn7n6AX8r9ztoAl+8IBDZRI+lgFZUFg4guvg== X-Received: by 2002:a17:902:e888:b0:1fb:59e6:b0e5 with SMTP id d9443c01a7336-201d63dc35amr24992175ad.19.1723624827573; Wed, 14 Aug 2024 01:40:27 -0700 (PDT) Received: from debian-hx90 (syn-076-094-249-045.res.spectrum.com. [76.94.249.45]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-201cd14a6ffsm25052265ad.96.2024.08.14.01.40.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Aug 2024 01:40:27 -0700 (PDT) From: Xiyue Deng In-Reply-To: <877ccjecnc.fsf@debian-hx90.lan> (Xiyue Deng's message of "Wed, 14 Aug 2024 01:23:19 -0700") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <87ed7a8ye6.fsf@debian-hx90.lan> <87jzh2vt3y.fsf@gmail.com> <87frrp6ch8.fsf@debian-hx90.lan> <87ttg349yd.fsf@debian-hx90.lan> <86r0b6up8p.fsf@gnu.org> <87ikw4qdvx.fsf@debian-hx90.lan> <86plqbfzat.fsf@gnu.org> <877ccjecnc.fsf@debian-hx90.lan> Date: Wed, 14 Aug 2024 01:40:26 -0700 Message-ID: <87mslfcxad.fsf@debian-hx90.lan> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 1.0 (+) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=-=-= Content-Type: text/plain Xiyue Deng writes: > Eli Zaretskii writes: > >>> From: Xiyue Deng >>> Cc: rpluim@gmail.com, 72358@debbugs.gnu.org >>> Date: Tue, 13 Aug 2024 15:03:30 -0700 >>> >>> Hi Eli, >>> >>> Eli Zaretskii writes: >>> >>> >> Cc: 72358@debbugs.gnu.org >>> >> From: Xiyue Deng >>> >> Date: Fri, 02 Aug 2024 01:15:22 -0700 >>> >> >>> >> BTW, is there any dev available to commit the changes once it's in a >>> >> good shape? >>> > >>> > All the 3 co-maintainers are tracking these discussions and install >>> > changes that are ready to be installed. >>> >>> It's been a few days since the last time I received feedback for >>> improvements regarding my patches. Is there any other feedbacks/reviews >>> I am expecting from the co-maintainers? Please also let me know when >>> it's time to ask for merging and requesting a new tagged release. >> >> ?? The last message in this discussion was just yesterday evening, and >> my understanding is that you are still discussing the issues and did >> not reach the final conclusion. If I'm mistaken, my apologies; > > The recent communication was not related to my patches but to check > whether it is possible to support outlook.com OAuth2 login (and the > conclusion was no because refreshing access token was disabled as > confirmed by MS representative during an online chat.) > >> please describe your conclusion and post the patch that you-all agree >> would solve the issues, and let's take it from there. > > I actually only received comments from Robert and I have updated my > patches according in [1][2] (also attached in EOM). > > [1] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=72358#20 > [2] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=72358#44 Sorry I accidentally hit sent for my previous mail (which actually ended on a full sentence, what are the chances?) To continue, the description of the patches is in the first message[3] and not changed much except the added 6th patch which added a NEWS file. TL;DR the patches include * adding authorization request parameters required for Gmail OAuth2 to work, * updating key calculation in oauth2.plstore to include `client-id' so that it can store multiple accounts for a given service, and * usability and debugging improvements. I haven't received more comments from Robert so I hope the patches now look good to him. Still, I would like to invite for more reviews (if any) and submit the patches when ready. Thanks! [3] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=72358#5 -- Xiyue Deng --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0001-Show-full-authentication-URL-to-let-user-choose-how-.patch >From 2b9e50cb0948e0b4f28883042109994ffa295d3d Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Sun, 21 Jul 2024 14:50:56 -0700 Subject: [PATCH 1/6] Show full authentication URL to let user choose how to visit it * packages/oauth2/oauth2.el (oauth2-request-authorization): show full authentication URL in user prompt. --- oauth2.el | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/oauth2.el b/oauth2.el index 7da9702004..3a3e50ad2b 100644 --- a/oauth2.el +++ b/oauth2.el @@ -57,14 +57,17 @@ "Request OAuth authorization at AUTH-URL by launching `browse-url'. CLIENT-ID is the client id provided by the provider. It returns the code provided by the service." - (browse-url (concat auth-url - (if (string-match-p "\?" auth-url) "&" "?") - "client_id=" (url-hexify-string client-id) - "&response_type=code" - "&redirect_uri=" (url-hexify-string (or redirect-uri "urn:ietf:wg:oauth:2.0:oob")) - (if scope (concat "&scope=" (url-hexify-string scope)) "") - (if state (concat "&state=" (url-hexify-string state)) ""))) - (read-string "Enter the code your browser displayed: ")) + (let ((url (concat auth-url + (if (string-match-p "\?" auth-url) "&" "?") + "client_id=" (url-hexify-string client-id) + "&response_type=code" + "&redirect_uri=" (url-hexify-string (or redirect-uri "urn:ietf:wg:oauth:2.0:oob")) + (if scope (concat "&scope=" (url-hexify-string scope)) "") + (if state (concat "&state=" (url-hexify-string state)) "")))) + (browse-url url) + (read-string (concat "Follow the instruction on your default browser, or " + "visit:\n" url + "\nEnter the code your browser displayed: ")))) (defun oauth2-request-access-parse () "Parse the result of an OAuth request." -- 2.39.2 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0002-Add-parameters-required-by-Google-OAuth2-to-get-refr.patch >From 26ed9886bd9d3970d55cf76e4269cef3998503a7 Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Sun, 21 Jul 2024 14:52:02 -0700 Subject: [PATCH 2/6] Add parameters required by Google OAuth2 to get refresh_token * packages/oauth2/oauth2.el (oauth2-request-authorization): add `access_type=offline' and `prompt=consent' when requesting token to receive refresh_token. --- oauth2.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/oauth2.el b/oauth2.el index 3a3e50ad2b..9780ac3a1d 100644 --- a/oauth2.el +++ b/oauth2.el @@ -63,7 +63,9 @@ It returns the code provided by the service." "&response_type=code" "&redirect_uri=" (url-hexify-string (or redirect-uri "urn:ietf:wg:oauth:2.0:oob")) (if scope (concat "&scope=" (url-hexify-string scope)) "") - (if state (concat "&state=" (url-hexify-string state)) "")))) + (if state (concat "&state=" (url-hexify-string state)) "") + "&access_type=offline" + "&prompt=consent"))) (browse-url url) (read-string (concat "Follow the instruction on your default browser, or " "visit:\n" url -- 2.39.2 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0003-Encode-parameters-when-requesting-access.patch >From 59225412e1d06ae9e165cfde6a4a985cee4fc569 Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Sun, 21 Jul 2024 14:54:08 -0700 Subject: [PATCH 3/6] Encode parameters when requesting access * packages/oauth2/oauth2.el (oauth2-request-access): encode all parameters which may contain characters that breaks URL. --- oauth2.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/oauth2.el b/oauth2.el index 9780ac3a1d..b035742fc1 100644 --- a/oauth2.el +++ b/oauth2.el @@ -107,10 +107,10 @@ Return an `oauth2-token' structure." (oauth2-make-access-request token-url (concat - "client_id=" client-id + "client_id=" (url-hexify-string client-id) (when client-secret - (concat "&client_secret=" client-secret)) - "&code=" code + (concat "&client_secret=" (url-hexify-string client-secret))) + "&code=" (url-hexify-string code) "&redirect_uri=" (url-hexify-string (or redirect-uri "urn:ietf:wg:oauth:2.0:oob")) "&grant_type=authorization_code")))) (make-oauth2-token :client-id client-id -- 2.39.2 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0004-Support-storing-data-for-multiple-accounts-of-the-sa.patch >From e801af578e63c7e333e668bdfef05e4cf0802582 Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Sun, 28 Jul 2024 03:00:04 -0700 Subject: [PATCH 4/6] Support storing data for multiple accounts of the same provider Currently the plstore id computed by `oauth2-compute-id' only takes `auth-url', `token-url', and `scope' into account, which could be the same for the same provider (e.g. Gmail). This prevents storing information for multiple accounts of the same service for some providers. This patch adds `client-id' to the calculation of plstore id to make sure that it is unique for different accounts of the same provider. It also changes the hash function to sha512 to be more secure. * packages/oauth2/oauth2.el (oauth2-compute-id): add `client-id' as a parameter of `oauth2-compute-id' to ensure unique id amount multiple accounts of the same provider, and change hash function to sha512. --- oauth2.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/oauth2.el b/oauth2.el index b035742fc1..035971ac85 100644 --- a/oauth2.el +++ b/oauth2.el @@ -163,17 +163,17 @@ TOKEN should be obtained with `oauth2-request-access'." :group 'oauth2 :type 'file) -(defun oauth2-compute-id (auth-url token-url scope) +(defun oauth2-compute-id (auth-url token-url scope client-id) "Compute an unique id based on URLs. This allows to store the token in an unique way." - (secure-hash 'md5 (concat auth-url token-url scope))) + (secure-hash 'sha512 (concat auth-url token-url scope client-id))) ;;;###autoload (defun oauth2-auth-and-store (auth-url token-url scope client-id client-secret &optional redirect-uri state) "Request access to a resource and store it using `plstore'." ;; We store a MD5 sum of all URL (let* ((plstore (plstore-open oauth2-token-file)) - (id (oauth2-compute-id auth-url token-url scope)) + (id (oauth2-compute-id auth-url token-url scope client-id)) (plist (cdr (plstore-get plstore id)))) ;; Check if we found something matching this access (if plist -- 2.39.2 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0005-Add-debug-messages-and-provide-a-switch-variable-for.patch >From 55417ec61c91f6b4d8e16a0c9933fb178d7bb657 Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Sun, 28 Jul 2024 03:41:20 -0700 Subject: [PATCH 5/6] Add debug messages and provide a switch variable for enabling This helps debugging whether the authorization and refresh requests were successful and inspecting the responses. * packages/oauth2/oauth2.el: add support for debug messages and a switch variable for enabling. --- oauth2.el | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/oauth2.el b/oauth2.el index 035971ac85..ce7a835100 100644 --- a/oauth2.el +++ b/oauth2.el @@ -40,6 +40,7 @@ (require 'plstore) (require 'json) (require 'url-http) +(require 'pp) (defvar url-http-data) (defvar url-http-method) @@ -53,6 +54,14 @@ :link '(url-link :tag "Savannah" "https://git.savannah.gnu.org/cgit/emacs/elpa.git/tree/?h=externals/oauth2") :link '(url-link :tag "ELPA" "https://elpa.gnu.org/packages/oauth2.html")) +(defvar oauth2-debug nil + "Enable debug messages.") + +(defun oauth2--do-debug (&rest msg) + "Output debug messages when `oauth2-debug' is enabled." + (if oauth2-debug + (apply #'message msg))) + (defun oauth2-request-authorization (auth-url client-id &optional scope state redirect-uri) "Request OAuth authorization at AUTH-URL by launching `browse-url'. CLIENT-ID is the client id provided by the provider. @@ -79,6 +88,8 @@ It returns the code provided by the service." (defun oauth2-make-access-request (url data) "Make an access request to URL using DATA in POST." + (oauth2--do-debug "oauth2-make-access-request: url: %s" url) + (oauth2--do-debug "oauth2-make-access-request: data: %s" data) (let ((url-request-method "POST") (url-request-data data) (url-request-extra-headers @@ -86,6 +97,8 @@ It returns the code provided by the service." (with-current-buffer (url-retrieve-synchronously url) (let ((data (oauth2-request-access-parse))) (kill-buffer (current-buffer)) + (oauth2--do-debug "oauth2-make-access-request: response: %s" + (pp-to-string data)) data)))) (cl-defstruct oauth2-token -- 2.39.2 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0006-Add-NEWS-file-to-document-the-changes-to-plstore-id-.patch >From e8735da21ac82b0698edad1796ddf4a1b8eb4bb2 Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Tue, 30 Jul 2024 03:46:57 -0700 Subject: [PATCH 6/6] Add NEWS file to document the changes to plstore id generation --- NEWS | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 NEWS diff --git a/NEWS b/NEWS new file mode 100644 index 0000000000..6715a1914a --- /dev/null +++ b/NEWS @@ -0,0 +1,23 @@ +Summary of changes to oauth2.el +------------------------------- + +For changes of 0.16 and older or full changes please check the git +history of the repository of oauth2.el. + +* 0.17 + +** Changes to plstore id generation and needs to reacquire refresh_token + +The generation of plstore id used to include `auth-url', `token-url', +and `scope'. Now `client-id' is also included. This is required to +support multiple accounts of some providers which use the same +`auth-url', `token-url', and `scope' (e.g. Gmail), and hence the +generated plstore id is not unique amount accounts. Adding +`client-id' solves this problem. + +The hash function of calculating the plstore id has also changed from +MD5 to SHA512 to be more secure. + +As a result, users of oauth2.el will need to redo the authentication +process to get a new refresh_token when upgrading from older version +to 0.17. -- 2.39.2 --=-=-=-- From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 14 Aug 2024 09:15:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Xiyue Deng , Philip Kaludercic Cc: bjorn.bidar@thaodan.de, rpluim@gmail.com, fitzsim@fitzsim.org, 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.172362684922055 (code B ref 72358); Wed, 14 Aug 2024 09:15:01 +0000 Received: (at 72358) by debbugs.gnu.org; 14 Aug 2024 09:14:09 +0000 Received: from localhost ([127.0.0.1]:46126 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1seA53-0005je-9M for submit@debbugs.gnu.org; Wed, 14 Aug 2024 05:14:09 -0400 Received: from eggs.gnu.org ([209.51.188.92]:42928) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1seA51-0005j0-FI for 72358@debbugs.gnu.org; Wed, 14 Aug 2024 05:14:08 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1seA4M-0001qV-DH; Wed, 14 Aug 2024 05:13:26 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=NpoVOqw7Tuf3Dt4IfdN3Hs53o+G53naQ3by67Y9+FAM=; b=PDpCN/FFLaKiT43/a5qK UwsL2YeRsYJ8S2ZKeZE281SGjUtxRBLlvVCg2SNKEuwNFSphcvpyrVxLhHmFdGdltdSL9wD3cDs+W tuPWljo5PdgnirEw9f6hDE8zv9vLFavcVRVW2QLo/BE5Xt8cKw6TuZe6c2IGX8vcw89P1uSn9JgCT A6yycgeLw/q/c5dbRurLPH1ZrCNcA4kLMnXTx/AlP6Qj8vdldgfP2jKeMYrjKHy3y34k8oyKXUtZA HujgPDemZGTu5gF1lVc2obIleuFv72z8JzKuvDmtkySOciXSnqQ3yJTZaWDqPpOMbtPv1zR+2/fAC eclrtpPZr6s+Ng==; Date: Wed, 14 Aug 2024 12:13:18 +0300 Message-Id: <86wmkj8o29.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <877ccjecnc.fsf@debian-hx90.lan> (message from Xiyue Deng on Wed, 14 Aug 2024 01:23:19 -0700) References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <87ed7a8ye6.fsf@debian-hx90.lan> <87jzh2vt3y.fsf@gmail.com> <87frrp6ch8.fsf@debian-hx90.lan> <87ttg349yd.fsf@debian-hx90.lan> <86r0b6up8p.fsf@gnu.org> <87ikw4qdvx.fsf@debian-hx90.lan> <86plqbfzat.fsf@gnu.org> <877ccjecnc.fsf@debian-hx90.lan> MIME-version: 1.0 Content-type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Xiyue Deng > Cc: Thomas Fitzsimmons , Björn Bidar > , rpluim@gmail.com, 72358@debbugs.gnu.org > Date: Wed, 14 Aug 2024 01:23:19 -0700 > > >> It's been a few days since the last time I received feedback for > >> improvements regarding my patches. Is there any other feedbacks/reviews > >> I am expecting from the co-maintainers? Please also let me know when > >> it's time to ask for merging and requesting a new tagged release. > > > > ?? The last message in this discussion was just yesterday evening, and > > my understanding is that you are still discussing the issues and did > > not reach the final conclusion. If I'm mistaken, my apologies; > > The recent communication was not related to my patches but to check > whether it is possible to support outlook.com OAuth2 login (and the > conclusion was no because refreshing access token was disabled as > confirmed by MS representative during an online chat.) > > > please describe your conclusion and post the patch that you-all agree > > would solve the issues, and let's take it from there. > > I actually only received comments from Robert and I have updated my > patches according in [1][2] (also attached in EOM). > > [1] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=72358#20 > [2] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=72358#44 Thanks. Philip, could you please DTRT here? This seems to be an ELPA package. From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Xiyue Deng Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 21 Aug 2024 18:25:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: bjorn.bidar@thaodan.de, Philip Kaludercic , fitzsim@fitzsim.org, rpluim@gmail.com, 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.172426465615002 (code B ref 72358); Wed, 21 Aug 2024 18:25:01 +0000 Received: (at 72358) by debbugs.gnu.org; 21 Aug 2024 18:24:16 +0000 Received: from localhost ([127.0.0.1]:36324 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sgq0F-0003tt-JK for submit@debbugs.gnu.org; Wed, 21 Aug 2024 14:24:15 -0400 Received: from mail-pl1-f178.google.com ([209.85.214.178]:57610) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sgq0D-0003tc-UO for 72358@debbugs.gnu.org; Wed, 21 Aug 2024 14:24:14 -0400 Received: by mail-pl1-f178.google.com with SMTP id d9443c01a7336-202508cb8ebso27442725ad.3 for <72358@debbugs.gnu.org>; Wed, 21 Aug 2024 11:23:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1724264543; x=1724869343; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id :reply-to; bh=cfpF/YKiTLjk3ffYhtdhcVVlMEuWpz/xHWCEaR9UFcY=; b=ajJ5S+U7y4TjVqX7F5ffbZM1mfZf6Lm7ycKezthd3Ld+dLXZnn29qlzHLdyqAKXxK3 WEkcFsJ5LbxyonMGOO1BVVd/bpOJhL2Yglqwsg7DBJrwbmNHM7N7uDJht27USPM6/teT zYN1Hn0ATAd/ieU229Qyo8/kF1B9PZnt3waShhFe5z/TYNY+oioHd/5woSMeKfPNisHV rlpzP5Wl1P2pR/7b1ESA8vykuiLzUBPawxq94IeXH54lgLldAdkhMFT2rcnMPhBQqC9i MIkLiNuKkxLpi3WAeiqeI077vX3pOOCeitzBfJL2+pGvZs+gJiqNqL0Fc53TzVKnDz2I yqew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724264543; x=1724869343; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cfpF/YKiTLjk3ffYhtdhcVVlMEuWpz/xHWCEaR9UFcY=; b=LKRINkJYKzFf/6iEF1L94d/csIDlP+ALveXbk6mSf8hWs0nnnqGvY+tTKjJYKHlW+B 6dPzZfFAvtnoKmNZxzkbn8C18bJ97whZQxWD9hsyNx+RO8TiMx2dpReg17Hc2SGbrV3i 4U2PRLIZMfbW6tmB1/y5r7g1ygjtDO913Fb05hK9AP70u0hhvZo6sd61esHuVCqfKJJH 6J4Yi9ZOZhbGziBfM/Q7q7GrztdFZRCxIe9bMLlkC6ToBoWWR0yxH455ul2HTvak8z2g VVMxk+92xrcd2oWtOinQnU/XH1o7ueMULqDWx0d3j7wxT7THrV3v/aenSLICm8iRmuyZ UMng== X-Forwarded-Encrypted: i=1; AJvYcCUiRv/tMmrNzge07g81iaSSj4T1wvhiEhIRBP6JV+N0nOORg2jKMLJmJcGP2ntIsidTwX22LQ==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yyjf4E0iG6ThCqTeOJqqoRX+/4RqjkfTA5GSnZb8ZvF7d443SZs CSk6QvOK1QLFbzPa4Hz3lcQ6NqlpCtPPpzexh7be4uSrJ0gms+SHX270zZMc X-Google-Smtp-Source: AGHT+IHbfhwpLyF+MnBUcuMCjWlJgxXcHODfmRulZC1oR8NqlS4vKi8HuPRuC06lpTQTSaVHw4lgKw== X-Received: by 2002:a17:903:41c8:b0:1fd:a54e:bc28 with SMTP id d9443c01a7336-203681c82afmr34624445ad.63.1724264542497; Wed, 21 Aug 2024 11:22:22 -0700 (PDT) Received: from debian-hx90 (syn-076-094-249-045.res.spectrum.com. [76.94.249.45]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-201ffb8f0d6sm88780295ad.28.2024.08.21.11.22.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 21 Aug 2024 11:22:22 -0700 (PDT) From: Xiyue Deng In-Reply-To: <86wmkj8o29.fsf@gnu.org> (Eli Zaretskii's message of "Wed, 14 Aug 2024 12:13:18 +0300") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <87ed7a8ye6.fsf@debian-hx90.lan> <87jzh2vt3y.fsf@gmail.com> <87frrp6ch8.fsf@debian-hx90.lan> <87ttg349yd.fsf@debian-hx90.lan> <86r0b6up8p.fsf@gnu.org> <87ikw4qdvx.fsf@debian-hx90.lan> <86plqbfzat.fsf@gnu.org> <877ccjecnc.fsf@debian-hx90.lan> <86wmkj8o29.fsf@gnu.org> Date: Wed, 21 Aug 2024 11:22:19 -0700 Message-ID: <87wmk9busk.fsf@debian-hx90.lan> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 1.0 (+) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Xiyue Deng >> Cc: Thomas Fitzsimmons , Bj=C3=B6rn Bidar >> , rpluim@gmail.com, 72358@debbugs.gnu.org >> Date: Wed, 14 Aug 2024 01:23:19 -0700 >>=20 >> >> It's been a few days since the last time I received feedback for >> >> improvements regarding my patches. Is there any other feedbacks/revi= ews >> >> I am expecting from the co-maintainers? Please also let me know when >> >> it's time to ask for merging and requesting a new tagged release. >> > >> > ?? The last message in this discussion was just yesterday evening, and >> > my understanding is that you are still discussing the issues and did >> > not reach the final conclusion. If I'm mistaken, my apologies; >>=20 >> The recent communication was not related to my patches but to check >> whether it is possible to support outlook.com OAuth2 login (and the >> conclusion was no because refreshing access token was disabled as >> confirmed by MS representative during an online chat.) >>=20 >> > please describe your conclusion and post the patch that you-all agree >> > would solve the issues, and let's take it from there. >>=20 >> I actually only received comments from Robert and I have updated my >> patches according in [1][2] (also attached in EOM). >>=20 >> [1] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D72358#20 >> [2] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D72358#44 > > Thanks. > > Philip, could you please DTRT here? This seems to be an ELPA package. Friendly ping. Please also let me know if there are more review comments. --=20 Xiyue Deng From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Philip Kaludercic Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 21 Aug 2024 19:44:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Xiyue Deng Cc: bjorn.bidar@thaodan.de, Eli Zaretskii , fitzsim@fitzsim.org, rpluim@gmail.com, 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.172426940523279 (code B ref 72358); Wed, 21 Aug 2024 19:44:02 +0000 Received: (at 72358) by debbugs.gnu.org; 21 Aug 2024 19:43:25 +0000 Received: from localhost ([127.0.0.1]:36393 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sgrEq-00063O-Su for submit@debbugs.gnu.org; Wed, 21 Aug 2024 15:43:25 -0400 Received: from mout02.posteo.de ([185.67.36.66]:49441) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sgrEo-000639-LA for 72358@debbugs.gnu.org; Wed, 21 Aug 2024 15:43:24 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 3FC35240104 for <72358@debbugs.gnu.org>; Wed, 21 Aug 2024 21:42:31 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1724269352; bh=+lPT3UJA4pb9ibXlVbE5JvLMI/6fMTS/mYvxf9MpqLY=; h=From:To:Cc:Subject:Autocrypt:OpenPGP:Date:Message-ID:MIME-Version: Content-Type:Content-Transfer-Encoding:From; b=E8nHC4av2ntUsbeSUEJ5AHYD9SApIcibZM8bUWN4vQxuCrh3YnEbaDF5w5pOwpnJY 2WDwkfoYkz5ODJL61y6vjGX+qEdeTOJdLIjznEsPFMOX1Hrekt2YE9NIdyeIfn2xEh StAoA3LOwjOMXdkJIVlGJQAyEArmkcW4cB5b3SMs9I8Rz2f43U2sJO0/bnNojcUepp rqXMgXPtYGP8/Eldr5RNrLL19ewqkgeXmgBSwu5pX9FFGONqI3F88/GILfMNdd3RNv 4vFcD6RgkSjdRBGDON5lNEwgbSrqC+qxLD2SZ2mvv7ql49gFhGLmcsURAJw1IYMmho kS+/l/7rfr8KA== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4WpxYy12WXz9rxR; Wed, 21 Aug 2024 21:42:29 +0200 (CEST) From: Philip Kaludercic In-Reply-To: <87wmk9busk.fsf@debian-hx90.lan> (Xiyue Deng's message of "Wed, 21 Aug 2024 11:22:19 -0700") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <87ed7a8ye6.fsf@debian-hx90.lan> <87jzh2vt3y.fsf@gmail.com> <87frrp6ch8.fsf@debian-hx90.lan> <87ttg349yd.fsf@debian-hx90.lan> <86r0b6up8p.fsf@gnu.org> <87ikw4qdvx.fsf@debian-hx90.lan> <86plqbfzat.fsf@gnu.org> <877ccjecnc.fsf@debian-hx90.lan> <86wmkj8o29.fsf@gnu.org> <87wmk9busk.fsf@debian-hx90.lan> Autocrypt: addr=philipk@posteo.net; keydata= mDMEZBBQQhYJKwYBBAHaRw8BAQdAHJuofBrfqFh12uQu0Yi7mrl525F28eTmwUDflFNmdui0QlBo aWxpcCBLYWx1ZGVyY2ljIChnZW5lcmF0ZWQgYnkgYXV0b2NyeXB0LmVsKSA8cGhpbGlwa0Bwb3N0 ZW8ubmV0PoiWBBMWCAA+FiEEDg7HY17ghYlni8XN8xYDWXahwukFAmQQUEICGwMFCQHhM4AFCwkI BwIGFQoJCAsCBBYCAwECHgECF4AACgkQ8xYDWXahwulikAEA77hloUiSrXgFkUVJhlKBpLCHUjA0 mWZ9j9w5d08+jVwBAK6c4iGP7j+/PhbkxaEKa4V3MzIl7zJkcNNjHCXmvFcEuDgEZBBQQhIKKwYB BAGXVQEFAQEHQI5NLiLRjZy3OfSt1dhCmFyn+fN/QKELUYQetiaoe+MMAwEIB4h+BBgWCAAmFiEE Dg7HY17ghYlni8XN8xYDWXahwukFAmQQUEICGwwFCQHhM4AACgkQ8xYDWXahwukm+wEA8cml4JpK NeAu65rg+auKrPOP6TP/4YWRCTIvuYDm0joBALw98AMz7/qMHvSCeU/hw9PL6u6R2EScxtpKnWof z4oM OpenPGP: id=philipk@posteo.net; url="https://keys.openpgp.org/vks/v1/by-email/philipk@posteo.net"; preference=signencrypt Date: Wed, 21 Aug 2024 19:42:28 +0000 Message-ID: <87seuxacij.fsf@posteo.net> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Xiyue Deng writes: > Eli Zaretskii writes: > >>> From: Xiyue Deng >>> Cc: Thomas Fitzsimmons , Bj=C3=B6rn Bidar >>> , rpluim@gmail.com, 72358@debbugs.gnu.org >>> Date: Wed, 14 Aug 2024 01:23:19 -0700 >>>=20 >>> >> It's been a few days since the last time I received feedback for >>> >> improvements regarding my patches. Is there any other feedbacks/rev= iews >>> >> I am expecting from the co-maintainers? Please also let me know when >>> >> it's time to ask for merging and requesting a new tagged release. >>> > >>> > ?? The last message in this discussion was just yesterday evening, and >>> > my understanding is that you are still discussing the issues and did >>> > not reach the final conclusion. If I'm mistaken, my apologies; >>>=20 >>> The recent communication was not related to my patches but to check >>> whether it is possible to support outlook.com OAuth2 login (and the >>> conclusion was no because refreshing access token was disabled as >>> confirmed by MS representative during an online chat.) >>>=20 >>> > please describe your conclusion and post the patch that you-all agree >>> > would solve the issues, and let's take it from there. >>>=20 >>> I actually only received comments from Robert and I have updated my >>> patches according in [1][2] (also attached in EOM). >>>=20 >>> [1] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D72358#20 >>> [2] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D72358#44 >> >> Thanks. >> >> Philip, could you please DTRT here? This seems to be an ELPA package. > > Friendly ping. Please also let me know if there are more review > comments. I'm sorry, this was a rather long thread and I didn't have the time yet to follow up on it. Can you confirm that you want me to review the patches attached to this message: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D72358#20 ? --=20 Philip Kaludercic on peregrine From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Xiyue Deng Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 21 Aug 2024 22:14:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Philip Kaludercic Cc: bjorn.bidar@thaodan.de, Eli Zaretskii , fitzsim@fitzsim.org, rpluim@gmail.com, 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.17242784176269 (code B ref 72358); Wed, 21 Aug 2024 22:14:01 +0000 Received: (at 72358) by debbugs.gnu.org; 21 Aug 2024 22:13:37 +0000 Received: from localhost ([127.0.0.1]:36427 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sgtaC-0001d2-8K for submit@debbugs.gnu.org; Wed, 21 Aug 2024 18:13:37 -0400 Received: from mail-pl1-f173.google.com ([209.85.214.173]:48580) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sgta8-0001ch-12 for 72358@debbugs.gnu.org; Wed, 21 Aug 2024 18:13:35 -0400 Received: by mail-pl1-f173.google.com with SMTP id d9443c01a7336-20203988f37so1548975ad.1 for <72358@debbugs.gnu.org>; Wed, 21 Aug 2024 15:12:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1724278301; x=1724883101; darn=debbugs.gnu.org; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:from:to:cc:subject:date:message-id:reply-to; bh=gTJMdzjRa+awU9XAORHbEMTssSlSkDPO07WtwlsVIio=; b=jwSKWNv/DhRBif+jX2HI1Msfd/SgcI1LzxqAXg1I701N8JAkKmT5Aq98LbH48yliNY G3irWZHMdRlZ6RxJyvn3jAZ5vXBfucwsOcVT4Jo8jA4Q0F33IbsQh1PnP74SM5bRkpzy zKy10sir2hUjuaQiYSOG7s9QgotRwIPdfv0lLCg2oTA9Z+ZKw4valFS4nsU24q3679h5 qJO9NrOR3EkNeIhRb0DNkVXo4RFcX1ZqTAJeBeaPErza+czfSw9/yTOzm2Vg+ATmCfYR Jlnn1kEYqYgSULKncd6zogqwIU0s1lVtsfZ8zn091ZQXK9uVdK47uQmYPoFv3LUi+aEM 4RBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724278301; x=1724883101; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=gTJMdzjRa+awU9XAORHbEMTssSlSkDPO07WtwlsVIio=; b=MyQs4rZZoYKqWtuuBgiv2c7OOrlwVkA7LsdNgwGn7l+SLYUkJ/qi9R7e03mrmbLE55 A9CH/781On2IyTbFdAg7cM8o6RVBrGrlUU6ew7HkDo29e5UOr5mfkridylWW9s8rikQ1 1bM22qtrKAdYdJnYwyI+FfNtbfEbnrpoOPY1p023qhMAmxD9Tf/slqSILK7OPPLNywfq nYmN+4qRMAz+Hy0a12tMP7c5VPGd4uPf2LIVxjGPvV6mMhUY//965CXpA0vf4hQeIxWO 9IL8kFjPoNlKDu9gv5bpiNpReZTaAtCtXQ9A0WqMMpIfSU2xgSLML3nNeeyF65O3shRp 853A== X-Forwarded-Encrypted: i=1; AJvYcCXd9AMNq1p6gSwA0b7BWi6YdQIpiRMA0GADYZGhyNEqbObIyyUnBNSnlBoYfYGlzj5RoPQZLw==@debbugs.gnu.org X-Gm-Message-State: AOJu0YwFhJuIfd4ew69JseBdRKB+7TZ8mQLs5faE5I5TqEW/BN3BOLL3 DJRGxt5Q95aDmyeJeIuvdp3cWxiWaSz8Xx/T9c2nVqdk/zNZXRADEAJMYMA5 X-Google-Smtp-Source: AGHT+IHne1TcTvnM1iRyJ0ykjsD9LcS/hE/cGEarU1RV52d0j2A2kpmBzA0f0wEtMx9d3T7BYX3q+g== X-Received: by 2002:a17:902:ce86:b0:201:f83e:c267 with SMTP id d9443c01a7336-20367d32b6cmr39322905ad.5.1724278300226; Wed, 21 Aug 2024 15:11:40 -0700 (PDT) Received: from debian-hx90 (syn-076-094-249-045.res.spectrum.com. [76.94.249.45]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2038557ee79sm798415ad.82.2024.08.21.15.11.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 21 Aug 2024 15:11:39 -0700 (PDT) From: Xiyue Deng In-Reply-To: <87seuxacij.fsf@posteo.net> (Philip Kaludercic's message of "Wed, 21 Aug 2024 19:42:28 +0000") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <87ed7a8ye6.fsf@debian-hx90.lan> <87jzh2vt3y.fsf@gmail.com> <87frrp6ch8.fsf@debian-hx90.lan> <87ttg349yd.fsf@debian-hx90.lan> <86r0b6up8p.fsf@gnu.org> <87ikw4qdvx.fsf@debian-hx90.lan> <86plqbfzat.fsf@gnu.org> <877ccjecnc.fsf@debian-hx90.lan> <86wmkj8o29.fsf@gnu.org> <87wmk9busk.fsf@debian-hx90.lan> <87seuxacij.fsf@posteo.net> Date: Wed, 21 Aug 2024 15:11:36 -0700 Message-ID: <87seuxbk6f.fsf@debian-hx90.lan> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 1.0 (+) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi Philip, Philip Kaludercic writes: > Xiyue Deng writes: > >> Eli Zaretskii writes: >> >>>> From: Xiyue Deng >>>> Cc: Thomas Fitzsimmons , Bj=C3=B6rn Bidar >>>> , rpluim@gmail.com, 72358@debbugs.gnu.org >>>> Date: Wed, 14 Aug 2024 01:23:19 -0700 >>>>=20 >>>> >> It's been a few days since the last time I received feedback for >>>> >> improvements regarding my patches. Is there any other feedbacks/re= views >>>> >> I am expecting from the co-maintainers? Please also let me know wh= en >>>> >> it's time to ask for merging and requesting a new tagged release. >>>> > >>>> > ?? The last message in this discussion was just yesterday evening, a= nd >>>> > my understanding is that you are still discussing the issues and did >>>> > not reach the final conclusion. If I'm mistaken, my apologies; >>>>=20 >>>> The recent communication was not related to my patches but to check >>>> whether it is possible to support outlook.com OAuth2 login (and the >>>> conclusion was no because refreshing access token was disabled as >>>> confirmed by MS representative during an online chat.) >>>>=20 >>>> > please describe your conclusion and post the patch that you-all agree >>>> > would solve the issues, and let's take it from there. >>>>=20 >>>> I actually only received comments from Robert and I have updated my >>>> patches according in [1][2] (also attached in EOM). >>>>=20 >>>> [1] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D72358#20 >>>> [2] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D72358#44 >>> >>> Thanks. >>> >>> Philip, could you please DTRT here? This seems to be an ELPA package. >> >> Friendly ping. Please also let me know if there are more review >> comments. > > I'm sorry, this was a rather long thread and I didn't have the time yet > to follow up on it. Can you confirm that you want me to review the > patches attached to this message: > > https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D72358#20 > > ? Almost with a later update for patch 5. I am now attaching the latest patches here to avoid any confusions. Thanks! --=20 Xiyue Deng --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0001-Show-full-authentication-URL-to-let-user-choose-how-.patch >From 2b9e50cb0948e0b4f28883042109994ffa295d3d Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Sun, 21 Jul 2024 14:50:56 -0700 Subject: [PATCH 1/6] Show full authentication URL to let user choose how to visit it * packages/oauth2/oauth2.el (oauth2-request-authorization): show full authentication URL in user prompt. --- oauth2.el | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/oauth2.el b/oauth2.el index 7da9702004..3a3e50ad2b 100644 --- a/oauth2.el +++ b/oauth2.el @@ -57,14 +57,17 @@ "Request OAuth authorization at AUTH-URL by launching `browse-url'. CLIENT-ID is the client id provided by the provider. It returns the code provided by the service." - (browse-url (concat auth-url - (if (string-match-p "\?" auth-url) "&" "?") - "client_id=" (url-hexify-string client-id) - "&response_type=code" - "&redirect_uri=" (url-hexify-string (or redirect-uri "urn:ietf:wg:oauth:2.0:oob")) - (if scope (concat "&scope=" (url-hexify-string scope)) "") - (if state (concat "&state=" (url-hexify-string state)) ""))) - (read-string "Enter the code your browser displayed: ")) + (let ((url (concat auth-url + (if (string-match-p "\?" auth-url) "&" "?") + "client_id=" (url-hexify-string client-id) + "&response_type=code" + "&redirect_uri=" (url-hexify-string (or redirect-uri "urn:ietf:wg:oauth:2.0:oob")) + (if scope (concat "&scope=" (url-hexify-string scope)) "") + (if state (concat "&state=" (url-hexify-string state)) "")))) + (browse-url url) + (read-string (concat "Follow the instruction on your default browser, or " + "visit:\n" url + "\nEnter the code your browser displayed: ")))) (defun oauth2-request-access-parse () "Parse the result of an OAuth request." -- 2.39.2 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0002-Add-parameters-required-by-Google-OAuth2-to-get-refr.patch >From 26ed9886bd9d3970d55cf76e4269cef3998503a7 Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Sun, 21 Jul 2024 14:52:02 -0700 Subject: [PATCH 2/6] Add parameters required by Google OAuth2 to get refresh_token * packages/oauth2/oauth2.el (oauth2-request-authorization): add `access_type=offline' and `prompt=consent' when requesting token to receive refresh_token. --- oauth2.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/oauth2.el b/oauth2.el index 3a3e50ad2b..9780ac3a1d 100644 --- a/oauth2.el +++ b/oauth2.el @@ -63,7 +63,9 @@ It returns the code provided by the service." "&response_type=code" "&redirect_uri=" (url-hexify-string (or redirect-uri "urn:ietf:wg:oauth:2.0:oob")) (if scope (concat "&scope=" (url-hexify-string scope)) "") - (if state (concat "&state=" (url-hexify-string state)) "")))) + (if state (concat "&state=" (url-hexify-string state)) "") + "&access_type=offline" + "&prompt=consent"))) (browse-url url) (read-string (concat "Follow the instruction on your default browser, or " "visit:\n" url -- 2.39.2 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0003-Encode-parameters-when-requesting-access.patch >From 59225412e1d06ae9e165cfde6a4a985cee4fc569 Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Sun, 21 Jul 2024 14:54:08 -0700 Subject: [PATCH 3/6] Encode parameters when requesting access * packages/oauth2/oauth2.el (oauth2-request-access): encode all parameters which may contain characters that breaks URL. --- oauth2.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/oauth2.el b/oauth2.el index 9780ac3a1d..b035742fc1 100644 --- a/oauth2.el +++ b/oauth2.el @@ -107,10 +107,10 @@ Return an `oauth2-token' structure." (oauth2-make-access-request token-url (concat - "client_id=" client-id + "client_id=" (url-hexify-string client-id) (when client-secret - (concat "&client_secret=" client-secret)) - "&code=" code + (concat "&client_secret=" (url-hexify-string client-secret))) + "&code=" (url-hexify-string code) "&redirect_uri=" (url-hexify-string (or redirect-uri "urn:ietf:wg:oauth:2.0:oob")) "&grant_type=authorization_code")))) (make-oauth2-token :client-id client-id -- 2.39.2 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0004-Support-storing-data-for-multiple-accounts-of-the-sa.patch >From e801af578e63c7e333e668bdfef05e4cf0802582 Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Sun, 28 Jul 2024 03:00:04 -0700 Subject: [PATCH 4/6] Support storing data for multiple accounts of the same provider Currently the plstore id computed by `oauth2-compute-id' only takes `auth-url', `token-url', and `scope' into account, which could be the same for the same provider (e.g. Gmail). This prevents storing information for multiple accounts of the same service for some providers. This patch adds `client-id' to the calculation of plstore id to make sure that it is unique for different accounts of the same provider. It also changes the hash function to sha512 to be more secure. * packages/oauth2/oauth2.el (oauth2-compute-id): add `client-id' as a parameter of `oauth2-compute-id' to ensure unique id amount multiple accounts of the same provider, and change hash function to sha512. --- oauth2.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/oauth2.el b/oauth2.el index b035742fc1..035971ac85 100644 --- a/oauth2.el +++ b/oauth2.el @@ -163,17 +163,17 @@ TOKEN should be obtained with `oauth2-request-access'." :group 'oauth2 :type 'file) -(defun oauth2-compute-id (auth-url token-url scope) +(defun oauth2-compute-id (auth-url token-url scope client-id) "Compute an unique id based on URLs. This allows to store the token in an unique way." - (secure-hash 'md5 (concat auth-url token-url scope))) + (secure-hash 'sha512 (concat auth-url token-url scope client-id))) ;;;###autoload (defun oauth2-auth-and-store (auth-url token-url scope client-id client-secret &optional redirect-uri state) "Request access to a resource and store it using `plstore'." ;; We store a MD5 sum of all URL (let* ((plstore (plstore-open oauth2-token-file)) - (id (oauth2-compute-id auth-url token-url scope)) + (id (oauth2-compute-id auth-url token-url scope client-id)) (plist (cdr (plstore-get plstore id)))) ;; Check if we found something matching this access (if plist -- 2.39.2 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0005-Add-debug-messages-and-provide-a-switch-variable-for.patch >From 55417ec61c91f6b4d8e16a0c9933fb178d7bb657 Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Sun, 28 Jul 2024 03:41:20 -0700 Subject: [PATCH 5/6] Add debug messages and provide a switch variable for enabling This helps debugging whether the authorization and refresh requests were successful and inspecting the responses. * packages/oauth2/oauth2.el: add support for debug messages and a switch variable for enabling. --- oauth2.el | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/oauth2.el b/oauth2.el index 035971ac85..ce7a835100 100644 --- a/oauth2.el +++ b/oauth2.el @@ -40,6 +40,7 @@ (require 'plstore) (require 'json) (require 'url-http) +(require 'pp) (defvar url-http-data) (defvar url-http-method) @@ -53,6 +54,14 @@ :link '(url-link :tag "Savannah" "https://git.savannah.gnu.org/cgit/emacs/elpa.git/tree/?h=externals/oauth2") :link '(url-link :tag "ELPA" "https://elpa.gnu.org/packages/oauth2.html")) +(defvar oauth2-debug nil + "Enable debug messages.") + +(defun oauth2--do-debug (&rest msg) + "Output debug messages when `oauth2-debug' is enabled." + (if oauth2-debug + (apply #'message msg))) + (defun oauth2-request-authorization (auth-url client-id &optional scope state redirect-uri) "Request OAuth authorization at AUTH-URL by launching `browse-url'. CLIENT-ID is the client id provided by the provider. @@ -79,6 +88,8 @@ It returns the code provided by the service." (defun oauth2-make-access-request (url data) "Make an access request to URL using DATA in POST." + (oauth2--do-debug "oauth2-make-access-request: url: %s" url) + (oauth2--do-debug "oauth2-make-access-request: data: %s" data) (let ((url-request-method "POST") (url-request-data data) (url-request-extra-headers @@ -86,6 +97,8 @@ It returns the code provided by the service." (with-current-buffer (url-retrieve-synchronously url) (let ((data (oauth2-request-access-parse))) (kill-buffer (current-buffer)) + (oauth2--do-debug "oauth2-make-access-request: response: %s" + (pp-to-string data)) data)))) (cl-defstruct oauth2-token -- 2.39.2 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0006-Add-NEWS-file-to-document-the-changes-to-plstore-id-.patch >From e8735da21ac82b0698edad1796ddf4a1b8eb4bb2 Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Tue, 30 Jul 2024 03:46:57 -0700 Subject: [PATCH 6/6] Add NEWS file to document the changes to plstore id generation --- NEWS | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 NEWS diff --git a/NEWS b/NEWS new file mode 100644 index 0000000000..6715a1914a --- /dev/null +++ b/NEWS @@ -0,0 +1,23 @@ +Summary of changes to oauth2.el +------------------------------- + +For changes of 0.16 and older or full changes please check the git +history of the repository of oauth2.el. + +* 0.17 + +** Changes to plstore id generation and needs to reacquire refresh_token + +The generation of plstore id used to include `auth-url', `token-url', +and `scope'. Now `client-id' is also included. This is required to +support multiple accounts of some providers which use the same +`auth-url', `token-url', and `scope' (e.g. Gmail), and hence the +generated plstore id is not unique amount accounts. Adding +`client-id' solves this problem. + +The hash function of calculating the plstore id has also changed from +MD5 to SHA512 to be more secure. + +As a result, users of oauth2.el will need to redo the authentication +process to get a new refresh_token when upgrading from older version +to 0.17. -- 2.39.2 --=-=-=-- From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Xiyue Deng Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 29 Aug 2024 07:01:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Philip Kaludercic Cc: bjorn.bidar@thaodan.de, Eli Zaretskii , fitzsim@fitzsim.org, rpluim@gmail.com, 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.172491481217098 (code B ref 72358); Thu, 29 Aug 2024 07:01:02 +0000 Received: (at 72358) by debbugs.gnu.org; 29 Aug 2024 07:00:12 +0000 Received: from localhost ([127.0.0.1]:50208 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sjZ8e-0004Rf-A5 for submit@debbugs.gnu.org; Thu, 29 Aug 2024 03:00:12 -0400 Received: from mail-ot1-f42.google.com ([209.85.210.42]:48528) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sjZ8b-0004QG-JN for 72358@debbugs.gnu.org; Thu, 29 Aug 2024 03:00:10 -0400 Received: by mail-ot1-f42.google.com with SMTP id 46e09a7af769-70f60d73436so131639a34.1 for <72358@debbugs.gnu.org>; Wed, 28 Aug 2024 23:59:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1724914688; x=1725519488; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id :reply-to; bh=7SwnYZ37Z9+2puHxikFFLAYnVN6/3k1uh0+GjTkpac8=; b=HzAaf6GJc13oZRJdvFhRbNmFZsBSplab9ivLc0d5F0qiKvIGhs89+1FFSh4vNedWjZ Be7bcgXfP64EzRmBnU2ooeBtaJ6+eaXSuKp4v7nRQD7871PfblLxSNPOrdLqTCVEOvRY UQnV5QUwmQ/b11gH6UFoWP/k6uCu0iu+/Y5mYenwb+DsjMTVvz/1QzWmygg4polEn1wD 6s0FAO7BR69FTaTNtan5ShNDCDncb3ncOnF/enj39Bo1lOsQw29joxNDsQI45p0F/dHv uoW1UJhUmHCZBeAqeDyJCAvN9O/7NYIxtxQN9XF9flAC19Knx7a3pAbUyolu2ZB399Dd C11w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724914688; x=1725519488; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7SwnYZ37Z9+2puHxikFFLAYnVN6/3k1uh0+GjTkpac8=; b=inHQyhdYK2rZbd8AZ5gPyFYrbldzXmf7QWzDB8bZ+7z3qU4ZUvTGo6a9jhzinMPpdm 1HHTSSG8ePmqPT6suSF47H3/IE9f1eBvnpgMVeKCXaNGUdK22TycSI5U6L+Hz0rYm+cZ XoU4uMMMVQHwLuuVm46SgAGv5nkC+2ZLxLtmsgvO9/fUGJnK1XCf8gH4yNcl9IrN5TmI qXM/Hlkj8c3972GmLTgVyhTsH2NbkHwcgr+/08dXQHtw9WXwvV6dDvXsGJx27pna/0N2 +7Otq3PXOLbAs+CMVtWB+nPLeReqnTRf6JsZb93ts4wOZ+fmmtJ7yVVhZpZujWGBELpw 3FBg== X-Forwarded-Encrypted: i=1; AJvYcCWKhiIU5CIb9Kroq3scTTCtqpEIOobjWhjGL2jnxO8KEFxXVTEMbNrHt7nFSH9Vr2GQMGh4Tw==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yz15NBJlGbNi564z1qpQLXoQ5NivMYbr/vzk/otoJJOGfX3HOMq vAl9qsY2s+WidjvDZH6Hv2fYEHyf/5c88ibA4tOdonCas9eSLHkEofIRJnIv X-Google-Smtp-Source: AGHT+IEx5kxab+sy0+SrnlLDb9NxZhwFaeRc9X3tuZ1XAiXMxeyHpRZnYwfZjh5CIDPlkFLKk5XtFg== X-Received: by 2002:a05:6358:61c2:b0:1b1:a810:85a5 with SMTP id e5c5f4694b2df-1b603c29ee4mr266671455d.12.1724914688384; Wed, 28 Aug 2024 23:58:08 -0700 (PDT) Received: from debian-hx90 (syn-076-094-249-045.res.spectrum.com. [76.94.249.45]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-715e56e4898sm518368b3a.179.2024.08.28.23.58.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Aug 2024 23:58:08 -0700 (PDT) From: Xiyue Deng In-Reply-To: <87seuxbk6f.fsf@debian-hx90.lan> (Xiyue Deng's message of "Wed, 21 Aug 2024 15:11:36 -0700") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <87ed7a8ye6.fsf@debian-hx90.lan> <87jzh2vt3y.fsf@gmail.com> <87frrp6ch8.fsf@debian-hx90.lan> <87ttg349yd.fsf@debian-hx90.lan> <86r0b6up8p.fsf@gnu.org> <87ikw4qdvx.fsf@debian-hx90.lan> <86plqbfzat.fsf@gnu.org> <877ccjecnc.fsf@debian-hx90.lan> <86wmkj8o29.fsf@gnu.org> <87wmk9busk.fsf@debian-hx90.lan> <87seuxacij.fsf@posteo.net> <87seuxbk6f.fsf@debian-hx90.lan> Date: Wed, 28 Aug 2024 23:58:05 -0700 Message-ID: <87a5gv6cjm.fsf@debian-hx90.lan> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 1.0 (+) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Xiyue Deng writes: > Hi Philip, > > Philip Kaludercic writes: > >> Xiyue Deng writes: >> >>> Eli Zaretskii writes: >>> >>>>> From: Xiyue Deng >>>>> Cc: Thomas Fitzsimmons , Bj=C3=B6rn Bidar >>>>> , rpluim@gmail.com, 72358@debbugs.gnu.org >>>>> Date: Wed, 14 Aug 2024 01:23:19 -0700 >>>>>=20 >>>>> >> It's been a few days since the last time I received feedback for >>>>> >> improvements regarding my patches. Is there any other feedbacks/r= eviews >>>>> >> I am expecting from the co-maintainers? Please also let me know w= hen >>>>> >> it's time to ask for merging and requesting a new tagged release. >>>>> > >>>>> > ?? The last message in this discussion was just yesterday evening, = and >>>>> > my understanding is that you are still discussing the issues and did >>>>> > not reach the final conclusion. If I'm mistaken, my apologies; >>>>>=20 >>>>> The recent communication was not related to my patches but to check >>>>> whether it is possible to support outlook.com OAuth2 login (and the >>>>> conclusion was no because refreshing access token was disabled as >>>>> confirmed by MS representative during an online chat.) >>>>>=20 >>>>> > please describe your conclusion and post the patch that you-all agr= ee >>>>> > would solve the issues, and let's take it from there. >>>>>=20 >>>>> I actually only received comments from Robert and I have updated my >>>>> patches according in [1][2] (also attached in EOM). >>>>>=20 >>>>> [1] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D72358#20 >>>>> [2] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D72358#44 >>>> >>>> Thanks. >>>> >>>> Philip, could you please DTRT here? This seems to be an ELPA package. >>> >>> Friendly ping. Please also let me know if there are more review >>> comments. >> >> I'm sorry, this was a rather long thread and I didn't have the time yet >> to follow up on it. Can you confirm that you want me to review the >> patches attached to this message: >> >> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D72358#20 >> >> ? > > Almost with a later update for patch 5. I am now attaching the latest > patches here to avoid any confusions. Thanks! Friendly ping. --=20 Xiyue Deng From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Philip Kaludercic Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 29 Aug 2024 14:16:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Xiyue Deng Cc: 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.17249409283575 (code B ref 72358); Thu, 29 Aug 2024 14:16:01 +0000 Received: (at 72358) by debbugs.gnu.org; 29 Aug 2024 14:15:28 +0000 Received: from localhost ([127.0.0.1]:51803 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sjfvr-0000va-NC for submit@debbugs.gnu.org; Thu, 29 Aug 2024 10:15:28 -0400 Received: from mout02.posteo.de ([185.67.36.66]:38659) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sjfvn-0000vG-50 for 72358@debbugs.gnu.org; Thu, 29 Aug 2024 10:15:26 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 7F994240101 for <72358@debbugs.gnu.org>; Thu, 29 Aug 2024 16:14:19 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1724940859; bh=xvHsiK2DtUpFMLLzq4S2rjfZA4VOvl4lCxzX1d0v7uc=; h=From:To:Cc:Subject:Autocrypt:OpenPGP:Date:Message-ID:MIME-Version: Content-Type:Content-Transfer-Encoding:From; b=Oo+/gciln3m+ZE/0oKO6P1sURM1aErArJn1JmpACkphscPKIuENGNWF4ZROMIoz5D TaKhkCli8OEWLEgHcxnO4tJ+MbiHE8tuPtMISnCVFeCyAhcvEBCs1Lxg4yibN4Z9ls Fc1ngGVEyaFW/lcKsvnwK11KYa2+CGS+N1y8ltKKUs9/cr5AZGYMsRE8I1GpBKwkaR JL1HHIoViCa/acZaU222V0blzwZHQSsHIG0m6LexNDnaxgfnlH7HM6POba2pl2EpHj ldxYXJeQcu6mHs/KnP3L8X2AbHHCSGoZLiQMWbH3OSf6ob17kKKuxCGgIKY7GTxXW8 wQ54Lm+vtBlng== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4WvjvZ3yn6z9rxB; Thu, 29 Aug 2024 16:14:18 +0200 (CEST) From: Philip Kaludercic In-Reply-To: <87seuxbk6f.fsf@debian-hx90.lan> (Xiyue Deng's message of "Wed, 21 Aug 2024 15:11:36 -0700") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <87ed7a8ye6.fsf@debian-hx90.lan> <87jzh2vt3y.fsf@gmail.com> <87frrp6ch8.fsf@debian-hx90.lan> <87ttg349yd.fsf@debian-hx90.lan> <86r0b6up8p.fsf@gnu.org> <87ikw4qdvx.fsf@debian-hx90.lan> <86plqbfzat.fsf@gnu.org> <877ccjecnc.fsf@debian-hx90.lan> <86wmkj8o29.fsf@gnu.org> <87wmk9busk.fsf@debian-hx90.lan> <87seuxacij.fsf@posteo.net> <87seuxbk6f.fsf@debian-hx90.lan> Autocrypt: addr=philipk@posteo.net; keydata= mDMEZBBQQhYJKwYBBAHaRw8BAQdAHJuofBrfqFh12uQu0Yi7mrl525F28eTmwUDflFNmdui0QlBo aWxpcCBLYWx1ZGVyY2ljIChnZW5lcmF0ZWQgYnkgYXV0b2NyeXB0LmVsKSA8cGhpbGlwa0Bwb3N0 ZW8ubmV0PoiWBBMWCAA+FiEEDg7HY17ghYlni8XN8xYDWXahwukFAmQQUEICGwMFCQHhM4AFCwkI BwIGFQoJCAsCBBYCAwECHgECF4AACgkQ8xYDWXahwulikAEA77hloUiSrXgFkUVJhlKBpLCHUjA0 mWZ9j9w5d08+jVwBAK6c4iGP7j+/PhbkxaEKa4V3MzIl7zJkcNNjHCXmvFcEuDgEZBBQQhIKKwYB BAGXVQEFAQEHQI5NLiLRjZy3OfSt1dhCmFyn+fN/QKELUYQetiaoe+MMAwEIB4h+BBgWCAAmFiEE Dg7HY17ghYlni8XN8xYDWXahwukFAmQQUEICGwwFCQHhM4AACgkQ8xYDWXahwukm+wEA8cml4JpK NeAu65rg+auKrPOP6TP/4YWRCTIvuYDm0joBALw98AMz7/qMHvSCeU/hw9PL6u6R2EScxtpKnWof z4oM OpenPGP: id=7126E1DE2F0CE35C770BED01F2C3CC513DB89F66; url="https://keys.openpgp.org/vks/v1/by-fingerprint/7126E1DE2F0CE35C770BED01F2C3CC513DB89F66"; preference=signencrypt Date: Thu, 29 Aug 2024 14:14:17 +0000 Message-ID: <87le0fquva.fsf@posteo.net> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Xiyue Deng writes: > Hi Philip, > > Philip Kaludercic writes: > >> Xiyue Deng writes: >> >>> Eli Zaretskii writes: >>> >>>>> From: Xiyue Deng >>>>> Cc: Thomas Fitzsimmons , Bj=C3=B6rn Bidar >>>>> , rpluim@gmail.com, 72358@debbugs.gnu.org >>>>> Date: Wed, 14 Aug 2024 01:23:19 -0700 >>>>>=20 >>>>> >> It's been a few days since the last time I received feedback for >>>>> >> improvements regarding my patches. Is there any other >>>>> >> feedbacks/reviews >>>>> >> I am expecting from the co-maintainers? Please also let me know w= hen >>>>> >> it's time to ask for merging and requesting a new tagged release. >>>>> > >>>>> > ?? The last message in this discussion was just yesterday evening, = and >>>>> > my understanding is that you are still discussing the issues and did >>>>> > not reach the final conclusion. If I'm mistaken, my apologies; >>>>>=20 >>>>> The recent communication was not related to my patches but to check >>>>> whether it is possible to support outlook.com OAuth2 login (and the >>>>> conclusion was no because refreshing access token was disabled as >>>>> confirmed by MS representative during an online chat.) >>>>>=20 >>>>> > please describe your conclusion and post the patch that you-all agr= ee >>>>> > would solve the issues, and let's take it from there. >>>>>=20 >>>>> I actually only received comments from Robert and I have updated my >>>>> patches according in [1][2] (also attached in EOM). >>>>>=20 >>>>> [1] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D72358#20 >>>>> [2] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D72358#44 >>>> >>>> Thanks. >>>> >>>> Philip, could you please DTRT here? This seems to be an ELPA package. >>> >>> Friendly ping. Please also let me know if there are more review >>> comments. >> >> I'm sorry, this was a rather long thread and I didn't have the time yet >> to follow up on it. Can you confirm that you want me to review the >> patches attached to this message: >> >> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D72358#20 >> >> ? > > Almost with a later update for patch 5. I am now attaching the latest > patches here to avoid any confusions. Thanks! > > --=20 > Xiyue Deng > > From 2b9e50cb0948e0b4f28883042109994ffa295d3d Mon Sep 17 00:00:00 2001 > From: Xiyue Deng > Date: Sun, 21 Jul 2024 14:50:56 -0700 > Subject: [PATCH 1/6] Show full authentication URL to let user choose how = to > visit it > > * packages/oauth2/oauth2.el (oauth2-request-authorization): show full > authentication URL in user prompt. Generally it would be nice if you could attach a "(Bug#72358)" to the end of each commit. Just add it like a new sentence. [...] authentication URL in user prompt. (Bug#72358) > --- > oauth2.el | 19 +++++++++++-------- > 1 file changed, 11 insertions(+), 8 deletions(-) > > diff --git a/oauth2.el b/oauth2.el > index 7da9702004..3a3e50ad2b 100644 > --- a/oauth2.el > +++ b/oauth2.el > @@ -57,14 +57,17 @@ > "Request OAuth authorization at AUTH-URL by launching `browse-url'. > CLIENT-ID is the client id provided by the provider. > It returns the code provided by the service." > - (browse-url (concat auth-url > - (if (string-match-p "\?" auth-url) "&" "?") > - "client_id=3D" (url-hexify-string client-id) > - "&response_type=3Dcode" > - "&redirect_uri=3D" (url-hexify-string (or redirect= -uri "urn:ietf:wg:oauth:2.0:oob")) > - (if scope (concat "&scope=3D" (url-hexify-string s= cope)) "") > - (if state (concat "&state=3D" (url-hexify-string s= tate)) ""))) > - (read-string "Enter the code your browser displayed: ")) > + (let ((url (concat auth-url > + (if (string-match-p "\?" auth-url) "&" "?") > + "client_id=3D" (url-hexify-string client-id) > + "&response_type=3Dcode" > + "&redirect_uri=3D" (url-hexify-string (or redirect-= uri "urn:ietf:wg:oauth:2.0:oob")) > + (if scope (concat "&scope=3D" (url-hexify-string sc= ope)) "") > + (if state (concat "&state=3D" (url-hexify-string st= ate)) "")))) > + (browse-url url) > + (read-string (concat "Follow the instruction on your default browser= , or " > + "visit:\n" url > + "\nEnter the code your browser displayed: ")))) LGTM. >=20=20 > (defun oauth2-request-access-parse () > "Parse the result of an OAuth request." > --=20 > 2.39.2 > > > From 26ed9886bd9d3970d55cf76e4269cef3998503a7 Mon Sep 17 00:00:00 2001 > From: Xiyue Deng > Date: Sun, 21 Jul 2024 14:52:02 -0700 > Subject: [PATCH 2/6] Add parameters required by Google OAuth2 to get > refresh_token > > * packages/oauth2/oauth2.el (oauth2-request-authorization): add > `access_type=3Doffline' and `prompt=3Dconsent' when requesting token to I wouldn't use `...' syntax in commit ChangeLog messages. > receive refresh_token. > --- > oauth2.el | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/oauth2.el b/oauth2.el > index 3a3e50ad2b..9780ac3a1d 100644 > --- a/oauth2.el > +++ b/oauth2.el > @@ -63,7 +63,9 @@ It returns the code provided by the service." > "&response_type=3Dcode" > "&redirect_uri=3D" (url-hexify-string (or redirect-= uri "urn:ietf:wg:oauth:2.0:oob")) > (if scope (concat "&scope=3D" (url-hexify-string sc= ope)) "") > - (if state (concat "&state=3D" (url-hexify-string st= ate)) "")))) > + (if state (concat "&state=3D" (url-hexify-string st= ate)) "") > + "&access_type=3Doffline" > + "&prompt=3Dconsent"))) You do what you say, but perhaps a comment explaining why you have these queries might be useful? > (browse-url url) > (read-string (concat "Follow the instruction on your default browser= , or " > "visit:\n" url > --=20 > 2.39.2 > > > From 59225412e1d06ae9e165cfde6a4a985cee4fc569 Mon Sep 17 00:00:00 2001 > From: Xiyue Deng > Date: Sun, 21 Jul 2024 14:54:08 -0700 > Subject: [PATCH 3/6] Encode parameters when requesting access > > * packages/oauth2/oauth2.el (oauth2-request-access): encode all > parameters which may contain characters that breaks URL. > --- > oauth2.el | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/oauth2.el b/oauth2.el > index 9780ac3a1d..b035742fc1 100644 > --- a/oauth2.el > +++ b/oauth2.el > @@ -107,10 +107,10 @@ Return an `oauth2-token' structure." > (oauth2-make-access-request > token-url > (concat > - "client_id=3D" client-id > + "client_id=3D" (url-hexify-string client-id) > (when client-secret > - (concat "&client_secret=3D" client-secret)) > - "&code=3D" code > + (concat "&client_secret=3D" (url-hexify-string client-se= cret))) > + "&code=3D" (url-hexify-string code) > "&redirect_uri=3D" (url-hexify-string (or redirect-uri "urn= :ietf:wg:oauth:2.0:oob")) > "&grant_type=3Dauthorization_code")))) > (make-oauth2-token :client-id client-id > --=20 > 2.39.2 1+ Though one might also consider using something like `url-encode-url' to generate the entire URL. > > > From e801af578e63c7e333e668bdfef05e4cf0802582 Mon Sep 17 00:00:00 2001 > From: Xiyue Deng > Date: Sun, 28 Jul 2024 03:00:04 -0700 > Subject: [PATCH 4/6] Support storing data for multiple accounts of the sa= me > provider > > Currently the plstore id computed by `oauth2-compute-id' only takes > `auth-url', `token-url', and `scope' into account, which could be the > same for the same provider (e.g. Gmail). This prevents storing > information for multiple accounts of the same service for some > providers. > > This patch adds `client-id' to the calculation of plstore id to make > sure that it is unique for different accounts of the same provider. > > It also changes the hash function to sha512 to be more secure. > > * packages/oauth2/oauth2.el (oauth2-compute-id): add `client-id' as a > parameter of `oauth2-compute-id' to ensure unique id amount multiple > accounts of the same provider, and change hash function to sha512. > --- > oauth2.el | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/oauth2.el b/oauth2.el > index b035742fc1..035971ac85 100644 > --- a/oauth2.el > +++ b/oauth2.el > @@ -163,17 +163,17 @@ TOKEN should be obtained with `oauth2-request-acces= s'." > :group 'oauth2 > :type 'file) >=20=20 > -(defun oauth2-compute-id (auth-url token-url scope) > +(defun oauth2-compute-id (auth-url token-url scope client-id) > "Compute an unique id based on URLs. > This allows to store the token in an unique way." > - (secure-hash 'md5 (concat auth-url token-url scope))) > + (secure-hash 'sha512 (concat auth-url token-url scope client-id))) >=20=20 > ;;;###autoload > (defun oauth2-auth-and-store (auth-url token-url scope client-id client-= secret &optional redirect-uri state) > "Request access to a resource and store it using `plstore'." > ;; We store a MD5 sum of all URL > (let* ((plstore (plstore-open oauth2-token-file)) > - (id (oauth2-compute-id auth-url token-url scope)) > + (id (oauth2-compute-id auth-url token-url scope client-id)) > (plist (cdr (plstore-get plstore id)))) > ;; Check if we found something matching this access > (if plist > --=20 > 2.39.2 LGTM > > From 55417ec61c91f6b4d8e16a0c9933fb178d7bb657 Mon Sep 17 00:00:00 2001 > From: Xiyue Deng > Date: Sun, 28 Jul 2024 03:41:20 -0700 > Subject: [PATCH 5/6] Add debug messages and provide a switch variable for > enabling > > This helps debugging whether the authorization and refresh requests > were successful and inspecting the responses. > > * packages/oauth2/oauth2.el: add support for debug messages and a > switch variable for enabling. > --- > oauth2.el | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/oauth2.el b/oauth2.el > index 035971ac85..ce7a835100 100644 > --- a/oauth2.el > +++ b/oauth2.el > @@ -40,6 +40,7 @@ > (require 'plstore) > (require 'json) > (require 'url-http) > +(require 'pp) >=20=20 > (defvar url-http-data) > (defvar url-http-method) > @@ -53,6 +54,14 @@ > :link '(url-link :tag "Savannah" "https://git.savannah.gnu.org/cgit/em= acs/elpa.git/tree/?h=3Dexternals/oauth2") > :link '(url-link :tag "ELPA" "https://elpa.gnu.org/packages/oauth2.htm= l")) >=20=20 > +(defvar oauth2-debug nil > + "Enable debug messages.") I'd slightly expand this comment in case someone wants to use something like `apropos-documentation'. Also, why is this not a user option? > + > +(defun oauth2--do-debug (&rest msg) > + "Output debug messages when `oauth2-debug' is enabled." > + (if oauth2-debug I'd use `when' here.=20=20 > + (apply #'message msg))) ... and perhaps prefix the message with a string like "[oauth2] ". I also notice that you manually mention the function issuing the debug message below. It is possible to infer this using `backtrace-frame' (but that is really something that should be added to the core, instead of packages having to re-implement it themselves.) > + > (defun oauth2-request-authorization (auth-url client-id &optional scope = state redirect-uri) > "Request OAuth authorization at AUTH-URL by launching `browse-url'. > CLIENT-ID is the client id provided by the provider. > @@ -79,6 +88,8 @@ It returns the code provided by the service." >=20=20 > (defun oauth2-make-access-request (url data) > "Make an access request to URL using DATA in POST." > + (oauth2--do-debug "oauth2-make-access-request: url: %s" url) > + (oauth2--do-debug "oauth2-make-access-request: data: %s" data) > (let ((url-request-method "POST") > (url-request-data data) > (url-request-extra-headers > @@ -86,6 +97,8 @@ It returns the code provided by the service." > (with-current-buffer (url-retrieve-synchronously url) > (let ((data (oauth2-request-access-parse))) > (kill-buffer (current-buffer)) > + (oauth2--do-debug "oauth2-make-access-request: response: %s" > + (pp-to-string data)) Is pp-to-string here really much better than prin1-to-string? Note that 'oauth2--do-debug' is a function, so the arguments are always evaluated. I have experienced pp being significantly slower than the core print functions, so this is something that is worth thinking about IMO. > data)))) >=20=20 > (cl-defstruct oauth2-token > --=20 > 2.39.2 > > > From e8735da21ac82b0698edad1796ddf4a1b8eb4bb2 Mon Sep 17 00:00:00 2001 > From: Xiyue Deng > Date: Tue, 30 Jul 2024 03:46:57 -0700 > Subject: [PATCH 6/6] Add NEWS file to document the changes to plstore id > generation > > --- > NEWS | 23 +++++++++++++++++++++++ > 1 file changed, 23 insertions(+) > create mode 100644 NEWS > > diff --git a/NEWS b/NEWS > new file mode 100644 > index 0000000000..6715a1914a > --- /dev/null > +++ b/NEWS > @@ -0,0 +1,23 @@ > +Summary of changes to oauth2.el > +------------------------------- > + > +For changes of 0.16 and older or full changes please check the git > +history of the repository of oauth2.el. > + > +* 0.17 > + > +** Changes to plstore id generation and needs to reacquire refresh_token > + > +The generation of plstore id used to include `auth-url', `token-url', > +and `scope'. Now `client-id' is also included. This is required to > +support multiple accounts of some providers which use the same > +`auth-url', `token-url', and `scope' (e.g. Gmail), and hence the > +generated plstore id is not unique amount accounts. Adding > +`client-id' solves this problem. > + > +The hash function of calculating the plstore id has also changed from > +MD5 to SHA512 to be more secure. > + > +As a result, users of oauth2.el will need to redo the authentication > +process to get a new refresh_token when upgrading from older version > +to 0.17. Perhaps you can add a file local variable to enable outline-mode? All in all the patches look more than fine though, nothing I mentioned is pressing. If you don't have the time and the changes are urgent, then I can also apply them as such. Xiyue Deng writes: [...] > Friendly ping. Friendly pong. --=20 Philip Kaludercic on peregrine From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Robert Pluim Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 29 Aug 2024 15:22:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Philip Kaludercic Cc: 72358@debbugs.gnu.org, Xiyue Deng Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.172494486411176 (code B ref 72358); Thu, 29 Aug 2024 15:22:02 +0000 Received: (at 72358) by debbugs.gnu.org; 29 Aug 2024 15:21:04 +0000 Received: from localhost ([127.0.0.1]:51902 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sjgxL-0002uA-Tv for submit@debbugs.gnu.org; Thu, 29 Aug 2024 11:21:04 -0400 Received: from mail-wm1-f53.google.com ([209.85.128.53]:61759) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sjgxJ-0002tI-0p for 72358@debbugs.gnu.org; Thu, 29 Aug 2024 11:21:02 -0400 Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-428e3129851so7388355e9.3 for <72358@debbugs.gnu.org>; Thu, 29 Aug 2024 08:20:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1724944739; x=1725549539; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id :reply-to; bh=hx7eD9SMVjv+ujV0Ov6Dr8vpVFi9Oc+82aK+X/7r2g0=; b=a7VN8Ar53eZnPPMq+2HmRTICa94p28d7YN4S1dag1y6Zb+CfBV4YelLsSAqI8UuoJk +O2f/0lsu/do+i/9gWGmo3RNR/ubd/5gTNvTcv1PLRbRS7dw8BAEsTxs6xBr0ktiNyvK 3TDCXCbrgoP4qkYABd9tZBe4LS5As20E96a+vq7/9QYJSEeBbQdcpXlTlOxuAnLgdwVn kO84mhqvGwHX0RAmKUEao2t+kQVnFW+XYkWBLi1ZMr9+8HvJxqbTkJwXYLzUI0igW/zT aw9vzjR0m2A9E2h0VnA4nPuHnLfwA7nf12enHheRqC37vvzraAoxd0u6YRPST7P/0seD Pz4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724944739; x=1725549539; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hx7eD9SMVjv+ujV0Ov6Dr8vpVFi9Oc+82aK+X/7r2g0=; b=JUQ6QjxSdxA+dHNgd8ft9DMoOa6hoIEo5NCfuXNjsUDXbwTRA3dGdsApJJIh/wD2My frfhgANIUPp2CoWaTsPr/uNMrIxtlQwwoXeVgo6BGlU+vPqGdFj1hK3tn7jQkms5kZCU f1RSqSO48GpdZYAF01/Ycv+wO5pMx3YsVA88KpZ43F/kIhMeJKyRVhsJS01+6zcuS600 YIN+qGu0yTZrm4exW2JCAsGswIJ1cmXqhngsydXj8lZQlIUqWdGEfZ0Ome0stHbtYoRd OrcJsTQwKSJkURzDxVDc1DeI42nLn5WNg2MPFlrkkqLo1ZPdg6wo5YeE4DkKuukwwygk S6Ow== X-Forwarded-Encrypted: i=1; AJvYcCUvBPpcr9xbf1BWPdAnFcEsxBqqc9c+m/ISvqpDYHHsqsZrcK7b/zj+qpdAili2V7rsT+5JEw==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yxfhk9APt0mvsTdnVCYtwznVfjhKtBqsNj9gTUKBIkPCRaORoxP Llh6QuS3FxyRvXgn3znuay/5hfVvGGJq7Yv21IfBDnB30t446sN9YtpBXA== X-Google-Smtp-Source: AGHT+IF1UBAt1RZjNCU9keiAy2usIGuV+gxIA6try9kGXDiiDcrnUXYRVOgl3p4Yu+ZkRQ1Cxc+q8g== X-Received: by 2002:a05:600c:4586:b0:427:9922:4526 with SMTP id 5b1f17b1804b1-42bb01ae423mr26018275e9.7.1724944738884; Thu, 29 Aug 2024 08:18:58 -0700 (PDT) Received: from rltb ([2a01:e0a:3f3:fb51:bbad:a24b:6515:8016]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-42ba641db12sm54507385e9.35.2024.08.29.08.18.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Aug 2024 08:18:58 -0700 (PDT) From: Robert Pluim In-Reply-To: <87le0fquva.fsf@posteo.net> (Philip Kaludercic's message of "Thu, 29 Aug 2024 14:14:17 +0000") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <87ed7a8ye6.fsf@debian-hx90.lan> <87jzh2vt3y.fsf@gmail.com> <87frrp6ch8.fsf@debian-hx90.lan> <87ttg349yd.fsf@debian-hx90.lan> <86r0b6up8p.fsf@gnu.org> <87ikw4qdvx.fsf@debian-hx90.lan> <86plqbfzat.fsf@gnu.org> <877ccjecnc.fsf@debian-hx90.lan> <86wmkj8o29.fsf@gnu.org> <87wmk9busk.fsf@debian-hx90.lan> <87seuxacij.fsf@posteo.net> <87seuxbk6f.fsf@debian-hx90.lan> <87le0fquva.fsf@posteo.net> Date: Thu, 29 Aug 2024 17:18:57 +0200 Message-ID: <87jzfzuzku.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) >>>>> On Thu, 29 Aug 2024 14:14:17 +0000, Philip Kaludercic said: >> +(defvar oauth2-debug nil >> + "Enable debug messages.") Philip> I'd slightly expand this comment in case someone wants to use s= omething Philip> like `apropos-documentation'. Also, why is this not a user opt= ion? Because I asked him to make it a `defvar' :-) I don=CA=BCt think debug options should be customizable, they=CA=BCre not user-level. Robert --=20 From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Xiyue Deng Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 30 Aug 2024 01:07:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Philip Kaludercic Cc: 72358@debbugs.gnu.org Received: via spool by 72358-submit@debbugs.gnu.org id=B72358.172497999215521 (code B ref 72358); Fri, 30 Aug 2024 01:07:02 +0000 Received: (at 72358) by debbugs.gnu.org; 30 Aug 2024 01:06:32 +0000 Received: from localhost ([127.0.0.1]:52263 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sjq5v-00042G-2X for submit@debbugs.gnu.org; Thu, 29 Aug 2024 21:06:32 -0400 Received: from mail-pl1-f175.google.com ([209.85.214.175]:59790) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sjq5q-00041y-Jw for 72358@debbugs.gnu.org; Thu, 29 Aug 2024 21:06:29 -0400 Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-201d5af11a4so12058025ad.3 for <72358@debbugs.gnu.org>; Thu, 29 Aug 2024 18:05:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1724979864; x=1725584664; darn=debbugs.gnu.org; h=mime-version:message-id:user-agent:references:date:in-reply-to :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=1xDyACwQ0z0tbGPQmato1mpvYpLKuBnZF87nnBGq/Hw=; b=nNDT/JjbVppCuLKGq8Cc08DeaBZUXWWOLBmhyL1YS/n5fz30oMGDF6EkeHRc1jV/kj G8RE3b2VaTdMg6cTNvDG2P1x7NxY9t1QDTUxR3UmGoqWNaGMiNbnglO/kUv8ROxOYoCu QqUfzrVBnqqAmGu2AtZucm+T86bjo5wvAPPiu9+Aw22wd+N0Crl9n3sU4B0180s2AP8U uc3PQo7E7QxnrXTD06+4kVnsvhJzNEOOKP806eo8+MvJUV2kwBETSQp/OTcShcm4WckP MjkbLdZrPrQS+wiWMOOt1Ci++q3pOXjWbpeZ1s6Jh5Oa7lKAL8n0vkOjTGmHl4yN51k/ wg8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724979864; x=1725584664; h=mime-version:message-id:user-agent:references:date:in-reply-to :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=1xDyACwQ0z0tbGPQmato1mpvYpLKuBnZF87nnBGq/Hw=; b=leQSGmtRIk2cB8meCgWZ1CwR+YkoTaSTVY0QK/nmCdjiu72bpx9s7e3T1WnFUgjO31 WE9bDldIj0qSFgdpJgq/0CyRvqiQsk22LZvcLnnOQMefILjHzB2WJ1SdqCDX3v+RstaI 5HZ3MXMZkl7RbdRohXjDE7BBY0zf1nLe2SBDqobbJbPB/mbbIAb3ymEWxMK94jbb8QHE nbKjbaE/POV3eG0ENrmjoI8uKe7TzqGA2yBhCBlMjIXEu83+An4dN5r5nWSRtl+BmszQ ftIaR/ZJTHwTdOcDiLco/dHjO6rmkTVHI2DroGY1bdF01EsxHUm/5pbDswBXQqZHdlz9 ncVQ== X-Gm-Message-State: AOJu0Yz6xWgR8K/NTv7BX1DjliNsU2SnHVY15ZEA4dL7j26ZgbTBbeb1 A3XrY3SZm6AM2SnsMIGgIZDmTUjld8H9ygc6Xxq/T6piYgo9d1NR0kOUYg== X-Google-Smtp-Source: AGHT+IEa9d0xOxjeJQuCHCPOwzm3mcpZG91jOF0xdvTdH0/qLjMRaOYzNi1KjiSAPIJaAmp7spQJTA== X-Received: by 2002:a17:902:e851:b0:202:3dcf:8c38 with SMTP id d9443c01a7336-2050c453f85mr49456785ad.44.1724979863769; Thu, 29 Aug 2024 18:04:23 -0700 (PDT) Received: from debian-hx90 (syn-076-094-249-045.res.spectrum.com. [76.94.249.45]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-205152b33fasm17114405ad.60.2024.08.29.18.04.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Aug 2024 18:04:23 -0700 (PDT) From: Xiyue Deng In-Reply-To: <87le0fquva.fsf@posteo.net> (Philip Kaludercic's message of "Thu, 29 Aug 2024 14:14:17 +0000") Date: Thu, 29 Aug 2024 16:54:41 -0700 References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <87ed7a8ye6.fsf@debian-hx90.lan> <87jzh2vt3y.fsf@gmail.com> <87frrp6ch8.fsf@debian-hx90.lan> <87ttg349yd.fsf@debian-hx90.lan> <86r0b6up8p.fsf@gnu.org> <87ikw4qdvx.fsf@debian-hx90.lan> <86plqbfzat.fsf@gnu.org> <877ccjecnc.fsf@debian-hx90.lan> <86wmkj8o29.fsf@gnu.org> <87wmk9busk.fsf@debian-hx90.lan> <87seuxacij.fsf@posteo.net> <87seuxbk6f.fsf@debian-hx90.lan> <87le0fquva.fsf@posteo.net> User-Agent: mu4e 1.12.6; emacs 29.4 Message-ID: <87r0a64y98.fsf@debian-hx90.lan> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 1.0 (+) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi Philip, Thanks for the review! Please see my replies below inline. Philip Kaludercic writes: > Xiyue Deng writes: > >> Hi Philip, >> >> Philip Kaludercic writes: >> >>> Xiyue Deng writes: >>> >>>> Eli Zaretskii writes: >>>> >>>>>> From: Xiyue Deng >>>>>> Cc: Thomas Fitzsimmons , Bj=C3=B6rn Bidar >>>>>> , rpluim@gmail.com, 72358@debbugs.gnu.org >>>>>> Date: Wed, 14 Aug 2024 01:23:19 -0700 >>>>>>=20 >>>>>> >> It's been a few days since the last time I received feedback for >>>>>> >> improvements regarding my patches. Is there any other >>>>>> >> feedbacks/reviews >>>>>> >> I am expecting from the co-maintainers? Please also let me know = when >>>>>> >> it's time to ask for merging and requesting a new tagged release. >>>>>> > >>>>>> > ?? The last message in this discussion was just yesterday evening,= and >>>>>> > my understanding is that you are still discussing the issues and d= id >>>>>> > not reach the final conclusion. If I'm mistaken, my apologies; >>>>>>=20 >>>>>> The recent communication was not related to my patches but to check >>>>>> whether it is possible to support outlook.com OAuth2 login (and the >>>>>> conclusion was no because refreshing access token was disabled as >>>>>> confirmed by MS representative during an online chat.) >>>>>>=20 >>>>>> > please describe your conclusion and post the patch that you-all ag= ree >>>>>> > would solve the issues, and let's take it from there. >>>>>>=20 >>>>>> I actually only received comments from Robert and I have updated my >>>>>> patches according in [1][2] (also attached in EOM). >>>>>>=20 >>>>>> [1] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D72358#20 >>>>>> [2] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D72358#44 >>>>> >>>>> Thanks. >>>>> >>>>> Philip, could you please DTRT here? This seems to be an ELPA package. >>>> >>>> Friendly ping. Please also let me know if there are more review >>>> comments. >>> >>> I'm sorry, this was a rather long thread and I didn't have the time yet >>> to follow up on it. Can you confirm that you want me to review the >>> patches attached to this message: >>> >>> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D72358#20 >>> >>> ? >> >> Almost with a later update for patch 5. I am now attaching the latest >> patches here to avoid any confusions. Thanks! >> >> --=20 >> Xiyue Deng >> >> From 2b9e50cb0948e0b4f28883042109994ffa295d3d Mon Sep 17 00:00:00 2001 >> From: Xiyue Deng >> Date: Sun, 21 Jul 2024 14:50:56 -0700 >> Subject: [PATCH 1/6] Show full authentication URL to let user choose how= to >> visit it >> >> * packages/oauth2/oauth2.el (oauth2-request-authorization): show full >> authentication URL in user prompt. > > Generally it would be nice if you could attach a "(Bug#72358)" to the > end of each commit. Just add it like a new sentence. > > [...] > authentication URL in user prompt. (Bug#72358) > Done for all patches. >> --- >> oauth2.el | 19 +++++++++++-------- >> 1 file changed, 11 insertions(+), 8 deletions(-) >> >> diff --git a/oauth2.el b/oauth2.el >> index 7da9702004..3a3e50ad2b 100644 >> --- a/oauth2.el >> +++ b/oauth2.el >> @@ -57,14 +57,17 @@ >> "Request OAuth authorization at AUTH-URL by launching `browse-url'. >> CLIENT-ID is the client id provided by the provider. >> It returns the code provided by the service." >> - (browse-url (concat auth-url >> - (if (string-match-p "\?" auth-url) "&" "?") >> - "client_id=3D" (url-hexify-string client-id) >> - "&response_type=3Dcode" >> - "&redirect_uri=3D" (url-hexify-string (or redirec= t-uri "urn:ietf:wg:oauth:2.0:oob")) >> - (if scope (concat "&scope=3D" (url-hexify-string = scope)) "") >> - (if state (concat "&state=3D" (url-hexify-string = state)) ""))) >> - (read-string "Enter the code your browser displayed: ")) >> + (let ((url (concat auth-url >> + (if (string-match-p "\?" auth-url) "&" "?") >> + "client_id=3D" (url-hexify-string client-id) >> + "&response_type=3Dcode" >> + "&redirect_uri=3D" (url-hexify-string (or redirect= -uri "urn:ietf:wg:oauth:2.0:oob")) >> + (if scope (concat "&scope=3D" (url-hexify-string s= cope)) "") >> + (if state (concat "&state=3D" (url-hexify-string s= tate)) "")))) >> + (browse-url url) >> + (read-string (concat "Follow the instruction on your default browse= r, or " >> + "visit:\n" url >> + "\nEnter the code your browser displayed: ")))) > > LGTM. > >>=20=20 >> (defun oauth2-request-access-parse () >> "Parse the result of an OAuth request." >> --=20 >> 2.39.2 >> >> >> From 26ed9886bd9d3970d55cf76e4269cef3998503a7 Mon Sep 17 00:00:00 2001 >> From: Xiyue Deng >> Date: Sun, 21 Jul 2024 14:52:02 -0700 >> Subject: [PATCH 2/6] Add parameters required by Google OAuth2 to get >> refresh_token >> >> * packages/oauth2/oauth2.el (oauth2-request-authorization): add >> `access_type=3Doffline' and `prompt=3Dconsent' when requesting token to > > I wouldn't use `...' syntax in commit ChangeLog messages. > Ah I saw this used in the texinfo doc extensively so I thought it was preferred. I have changed all these to double quotes, though do let me know if there is a better preference. >> receive refresh_token. >> --- >> oauth2.el | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/oauth2.el b/oauth2.el >> index 3a3e50ad2b..9780ac3a1d 100644 >> --- a/oauth2.el >> +++ b/oauth2.el >> @@ -63,7 +63,9 @@ It returns the code provided by the service." >> "&response_type=3Dcode" >> "&redirect_uri=3D" (url-hexify-string (or redirect= -uri "urn:ietf:wg:oauth:2.0:oob")) >> (if scope (concat "&scope=3D" (url-hexify-string s= cope)) "") >> - (if state (concat "&state=3D" (url-hexify-string s= tate)) "")))) >> + (if state (concat "&state=3D" (url-hexify-string s= tate)) "") >> + "&access_type=3Doffline" >> + "&prompt=3Dconsent"))) > > You do what you say, but perhaps a comment explaining why you have these > queries might be useful? > Added a comment above to explain the reasons. >> (browse-url url) >> (read-string (concat "Follow the instruction on your default browse= r, or " >> "visit:\n" url >> --=20 >> 2.39.2 >> >> >> From 59225412e1d06ae9e165cfde6a4a985cee4fc569 Mon Sep 17 00:00:00 2001 >> From: Xiyue Deng >> Date: Sun, 21 Jul 2024 14:54:08 -0700 >> Subject: [PATCH 3/6] Encode parameters when requesting access >> >> * packages/oauth2/oauth2.el (oauth2-request-access): encode all >> parameters which may contain characters that breaks URL. >> --- >> oauth2.el | 6 +++--- >> 1 file changed, 3 insertions(+), 3 deletions(-) >> >> diff --git a/oauth2.el b/oauth2.el >> index 9780ac3a1d..b035742fc1 100644 >> --- a/oauth2.el >> +++ b/oauth2.el >> @@ -107,10 +107,10 @@ Return an `oauth2-token' structure." >> (oauth2-make-access-request >> token-url >> (concat >> - "client_id=3D" client-id >> + "client_id=3D" (url-hexify-string client-id) >> (when client-secret >> - (concat "&client_secret=3D" client-secret)) >> - "&code=3D" code >> + (concat "&client_secret=3D" (url-hexify-string client-s= ecret))) >> + "&code=3D" (url-hexify-string code) >> "&redirect_uri=3D" (url-hexify-string (or redirect-uri "ur= n:ietf:wg:oauth:2.0:oob")) >> "&grant_type=3Dauthorization_code")))) >> (make-oauth2-token :client-id client-id >> --=20 >> 2.39.2 > > 1+ Though one might also consider using something like `url-encode-url' > to generate the entire URL. > It is indeed much cleaner. Changed accordingly. >> >> >> From e801af578e63c7e333e668bdfef05e4cf0802582 Mon Sep 17 00:00:00 2001 >> From: Xiyue Deng >> Date: Sun, 28 Jul 2024 03:00:04 -0700 >> Subject: [PATCH 4/6] Support storing data for multiple accounts of the s= ame >> provider >> >> Currently the plstore id computed by `oauth2-compute-id' only takes >> `auth-url', `token-url', and `scope' into account, which could be the >> same for the same provider (e.g. Gmail). This prevents storing >> information for multiple accounts of the same service for some >> providers. >> >> This patch adds `client-id' to the calculation of plstore id to make >> sure that it is unique for different accounts of the same provider. >> >> It also changes the hash function to sha512 to be more secure. >> >> * packages/oauth2/oauth2.el (oauth2-compute-id): add `client-id' as a >> parameter of `oauth2-compute-id' to ensure unique id amount multiple >> accounts of the same provider, and change hash function to sha512. >> --- >> oauth2.el | 6 +++--- >> 1 file changed, 3 insertions(+), 3 deletions(-) >> >> diff --git a/oauth2.el b/oauth2.el >> index b035742fc1..035971ac85 100644 >> --- a/oauth2.el >> +++ b/oauth2.el >> @@ -163,17 +163,17 @@ TOKEN should be obtained with `oauth2-request-acce= ss'." >> :group 'oauth2 >> :type 'file) >>=20=20 >> -(defun oauth2-compute-id (auth-url token-url scope) >> +(defun oauth2-compute-id (auth-url token-url scope client-id) >> "Compute an unique id based on URLs. >> This allows to store the token in an unique way." >> - (secure-hash 'md5 (concat auth-url token-url scope))) >> + (secure-hash 'sha512 (concat auth-url token-url scope client-id))) >>=20=20 >> ;;;###autoload >> (defun oauth2-auth-and-store (auth-url token-url scope client-id client= -secret &optional redirect-uri state) >> "Request access to a resource and store it using `plstore'." >> ;; We store a MD5 sum of all URL >> (let* ((plstore (plstore-open oauth2-token-file)) >> - (id (oauth2-compute-id auth-url token-url scope)) >> + (id (oauth2-compute-id auth-url token-url scope client-id)) >> (plist (cdr (plstore-get plstore id)))) >> ;; Check if we found something matching this access >> (if plist >> --=20 >> 2.39.2 > > LGTM > >> >> From 55417ec61c91f6b4d8e16a0c9933fb178d7bb657 Mon Sep 17 00:00:00 2001 >> From: Xiyue Deng >> Date: Sun, 28 Jul 2024 03:41:20 -0700 >> Subject: [PATCH 5/6] Add debug messages and provide a switch variable for >> enabling >> >> This helps debugging whether the authorization and refresh requests >> were successful and inspecting the responses. >> >> * packages/oauth2/oauth2.el: add support for debug messages and a >> switch variable for enabling. >> --- >> oauth2.el | 13 +++++++++++++ >> 1 file changed, 13 insertions(+) >> >> diff --git a/oauth2.el b/oauth2.el >> index 035971ac85..ce7a835100 100644 >> --- a/oauth2.el >> +++ b/oauth2.el >> @@ -40,6 +40,7 @@ >> (require 'plstore) >> (require 'json) >> (require 'url-http) >> +(require 'pp) >>=20=20 >> (defvar url-http-data) >> (defvar url-http-method) >> @@ -53,6 +54,14 @@ >> :link '(url-link :tag "Savannah" "https://git.savannah.gnu.org/cgit/e= macs/elpa.git/tree/?h=3Dexternals/oauth2") >> :link '(url-link :tag "ELPA" "https://elpa.gnu.org/packages/oauth2.ht= ml")) >>=20=20 >> +(defvar oauth2-debug nil >> + "Enable debug messages.") > > I'd slightly expand this comment in case someone wants to use something > like `apropos-documentation'. Expanded the doc string to explain the purpose. > Also, why is this not a user option? > As Robert mentioned in the follow-up mail it was his suggestion (thanks Robert!) Do let me know if `defcustom' is preferred. >> + >> +(defun oauth2--do-debug (&rest msg) >> + "Output debug messages when `oauth2-debug' is enabled." >> + (if oauth2-debug > > I'd use `when' here.=20=20 > Done >> + (apply #'message msg))) > > ... and perhaps prefix the message with a string like "[oauth2] ". > Done. I used `setcar' but let me know if there is a more elegant way to do this. > I also notice that you manually mention the function issuing the debug > message below. It is possible to infer this using `backtrace-frame' > (but that is really something that should be added to the core, instead > of packages having to re-implement it themselves.) > Added a let-bounded `func-name' by getting function name from backtrace-frame. And it would be great if there is a built-in macro like `__PRETTY_FUNCTION__' and `__LINE__'. >> + >> (defun oauth2-request-authorization (auth-url client-id &optional scope= state redirect-uri) >> "Request OAuth authorization at AUTH-URL by launching `browse-url'. >> CLIENT-ID is the client id provided by the provider. >> @@ -79,6 +88,8 @@ It returns the code provided by the service." >>=20=20 >> (defun oauth2-make-access-request (url data) >> "Make an access request to URL using DATA in POST." >> + (oauth2--do-debug "oauth2-make-access-request: url: %s" url) >> + (oauth2--do-debug "oauth2-make-access-request: data: %s" data) >> (let ((url-request-method "POST") >> (url-request-data data) >> (url-request-extra-headers >> @@ -86,6 +97,8 @@ It returns the code provided by the service." >> (with-current-buffer (url-retrieve-synchronously url) >> (let ((data (oauth2-request-access-parse))) >> (kill-buffer (current-buffer)) >> + (oauth2--do-debug "oauth2-make-access-request: response: %s" >> + (pp-to-string data)) > > Is pp-to-string here really much better than prin1-to-string? Note that > 'oauth2--do-debug' is a function, so the arguments are always evaluated. > I have experienced pp being significantly slower than the core print > functions, so this is something that is worth thinking about IMO. > It's just a personal preference. And it look like the values are mostly key-value pairs so they are not that hard to read through `prin1-to-string' so I changed to it. >> data)))) >>=20=20 >> (cl-defstruct oauth2-token >> --=20 >> 2.39.2 >> >> >> From e8735da21ac82b0698edad1796ddf4a1b8eb4bb2 Mon Sep 17 00:00:00 2001 >> From: Xiyue Deng >> Date: Tue, 30 Jul 2024 03:46:57 -0700 >> Subject: [PATCH 6/6] Add NEWS file to document the changes to plstore id >> generation >> >> --- >> NEWS | 23 +++++++++++++++++++++++ >> 1 file changed, 23 insertions(+) >> create mode 100644 NEWS >> >> diff --git a/NEWS b/NEWS >> new file mode 100644 >> index 0000000000..6715a1914a >> --- /dev/null >> +++ b/NEWS >> @@ -0,0 +1,23 @@ >> +Summary of changes to oauth2.el >> +------------------------------- >> + >> +For changes of 0.16 and older or full changes please check the git >> +history of the repository of oauth2.el. >> + >> +* 0.17 >> + >> +** Changes to plstore id generation and needs to reacquire refresh_token >> + >> +The generation of plstore id used to include `auth-url', `token-url', >> +and `scope'. Now `client-id' is also included. This is required to >> +support multiple accounts of some providers which use the same >> +`auth-url', `token-url', and `scope' (e.g. Gmail), and hence the >> +generated plstore id is not unique amount accounts. Adding >> +`client-id' solves this problem. >> + >> +The hash function of calculating the plstore id has also changed from >> +MD5 to SHA512 to be more secure. >> + >> +As a result, users of oauth2.el will need to redo the authentication >> +process to get a new refresh_token when upgrading from older version >> +to 0.17. > > Perhaps you can add a file local variable to enable outline-mode? > Done. Also improved the wording. > All in all the patches look more than fine though, nothing I mentioned > is pressing. If you don't have the time and the changes are urgent, > then I can also apply them as such. > > Xiyue Deng writes: > > [...] > >> Friendly ping. > > Friendly pong. The updated patches are attached. Thanks again! --=20 Xiyue Deng --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0001-Show-full-authentication-URL-to-let-user-choose-how-.patch >From dc1930f5b4828eb285cb28ad0138e67158003c22 Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Sun, 21 Jul 2024 14:50:56 -0700 Subject: [PATCH 1/6] Show full authentication URL to let user choose how to visit it * packages/oauth2/oauth2.el (oauth2-request-authorization): show full authentication URL in user prompt. (Bug#72358) --- oauth2.el | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/oauth2.el b/oauth2.el index 7da9702004..3a3e50ad2b 100644 --- a/oauth2.el +++ b/oauth2.el @@ -57,14 +57,17 @@ "Request OAuth authorization at AUTH-URL by launching `browse-url'. CLIENT-ID is the client id provided by the provider. It returns the code provided by the service." - (browse-url (concat auth-url - (if (string-match-p "\?" auth-url) "&" "?") - "client_id=" (url-hexify-string client-id) - "&response_type=code" - "&redirect_uri=" (url-hexify-string (or redirect-uri "urn:ietf:wg:oauth:2.0:oob")) - (if scope (concat "&scope=" (url-hexify-string scope)) "") - (if state (concat "&state=" (url-hexify-string state)) ""))) - (read-string "Enter the code your browser displayed: ")) + (let ((url (concat auth-url + (if (string-match-p "\?" auth-url) "&" "?") + "client_id=" (url-hexify-string client-id) + "&response_type=code" + "&redirect_uri=" (url-hexify-string (or redirect-uri "urn:ietf:wg:oauth:2.0:oob")) + (if scope (concat "&scope=" (url-hexify-string scope)) "") + (if state (concat "&state=" (url-hexify-string state)) "")))) + (browse-url url) + (read-string (concat "Follow the instruction on your default browser, or " + "visit:\n" url + "\nEnter the code your browser displayed: ")))) (defun oauth2-request-access-parse () "Parse the result of an OAuth request." -- 2.39.2 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0002-Add-parameters-required-by-Google-OAuth2-to-get-refr.patch >From 4f6628439bdee67025719314bab5b824c86d19e9 Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Sun, 21 Jul 2024 14:52:02 -0700 Subject: [PATCH 2/6] Add parameters required by Google OAuth2 to get refresh_token * packages/oauth2/oauth2.el (oauth2-request-authorization): add "access_type=offline" and "prompt=consent" when requesting token to receive refresh_token. (Bug#72358) --- oauth2.el | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/oauth2.el b/oauth2.el index 3a3e50ad2b..8371e73ffb 100644 --- a/oauth2.el +++ b/oauth2.el @@ -63,7 +63,11 @@ It returns the code provided by the service." "&response_type=code" "&redirect_uri=" (url-hexify-string (or redirect-uri "urn:ietf:wg:oauth:2.0:oob")) (if scope (concat "&scope=" (url-hexify-string scope)) "") - (if state (concat "&state=" (url-hexify-string state)) "")))) + (if state (concat "&state=" (url-hexify-string state)) "") + ;; The following two parameters are required for Gmail + ;; OAuth2 to generate the refresh token + "&access_type=offline" + "&prompt=consent"))) (browse-url url) (read-string (concat "Follow the instruction on your default browser, or " "visit:\n" url -- 2.39.2 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0003-Encode-URL-when-requesting-access.patch >From 5f2877930ac69bef64b2d53e7ded4913e13c50b6 Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Sun, 21 Jul 2024 14:54:08 -0700 Subject: [PATCH 3/6] Encode URL when requesting access * packages/oauth2/oauth2.el (oauth2-request-access): encode the whole URL to avoid having characters that breaks URL parsing. (Bug#72358) --- oauth2.el | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/oauth2.el b/oauth2.el index 8371e73ffb..54ca61e1cf 100644 --- a/oauth2.el +++ b/oauth2.el @@ -108,13 +108,14 @@ Return an `oauth2-token' structure." (let ((result (oauth2-make-access-request token-url - (concat - "client_id=" client-id - (when client-secret - (concat "&client_secret=" client-secret)) - "&code=" code - "&redirect_uri=" (url-hexify-string (or redirect-uri "urn:ietf:wg:oauth:2.0:oob")) - "&grant_type=authorization_code")))) + (url-encode-url + (concat + "client_id=" client-id + (when client-secret + (concat "&client_secret=" client-secret)) + "&code=" code + "&redirect_uri=" (or redirect-uri "urn:ietf:wg:oauth:2.0:oob") + "&grant_type=authorization_code"))))) (make-oauth2-token :client-id client-id :client-secret client-secret :access-token (cdr (assoc 'access_token result)) -- 2.39.2 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0004-Support-storing-data-for-multiple-accounts-of-the-sa.patch >From a5241f369f5ea255fcb6f36c0b52829745d71ca8 Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Sun, 28 Jul 2024 03:00:04 -0700 Subject: [PATCH 4/6] Support storing data for multiple accounts of the same provider Currently the plstore id computed by "oauth2-compute-id" only takes "auth-url", "token-url", and "scope" into account, which could be the same for the same provider (e.g. Gmail). This prevents storing information for multiple accounts of the same service for some providers. This patch adds "client-id" to the calculation of plstore id to make sure that it is unique for different accounts of the same provider. It also changes the hash function to sha512 to be more secure. * packages/oauth2/oauth2.el (oauth2-compute-id): add "client-id" as a parameter of "oauth2-compute-id" to ensure unique id amount multiple accounts of the same provider, and change hash function to sha512. (Bug#72358) --- oauth2.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/oauth2.el b/oauth2.el index 54ca61e1cf..c8011ebf9b 100644 --- a/oauth2.el +++ b/oauth2.el @@ -166,17 +166,17 @@ TOKEN should be obtained with `oauth2-request-access'." :group 'oauth2 :type 'file) -(defun oauth2-compute-id (auth-url token-url scope) +(defun oauth2-compute-id (auth-url token-url scope client-id) "Compute an unique id based on URLs. This allows to store the token in an unique way." - (secure-hash 'md5 (concat auth-url token-url scope))) + (secure-hash 'sha512 (concat auth-url token-url scope client-id))) ;;;###autoload (defun oauth2-auth-and-store (auth-url token-url scope client-id client-secret &optional redirect-uri state) "Request access to a resource and store it using `plstore'." ;; We store a MD5 sum of all URL (let* ((plstore (plstore-open oauth2-token-file)) - (id (oauth2-compute-id auth-url token-url scope)) + (id (oauth2-compute-id auth-url token-url scope client-id)) (plist (cdr (plstore-get plstore id)))) ;; Check if we found something matching this access (if plist -- 2.39.2 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0005-Add-debug-messages-and-provide-an-option-variable-fo.patch >From e2ece9aee7f43ec35789823576dc5390d3384dc6 Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Sun, 28 Jul 2024 03:41:20 -0700 Subject: [PATCH 5/6] Add debug messages and provide an option variable for enabling This helps debugging whether the authorization and refresh requests were successful and inspecting the responses. * packages/oauth2/oauth2.el: add support for debug messages and an option variable for enabling. (Bug#72358) --- oauth2.el | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/oauth2.el b/oauth2.el index c8011ebf9b..9c91bb08a1 100644 --- a/oauth2.el +++ b/oauth2.el @@ -53,6 +53,15 @@ :link '(url-link :tag "Savannah" "https://git.savannah.gnu.org/cgit/emacs/elpa.git/tree/?h=externals/oauth2") :link '(url-link :tag "ELPA" "https://elpa.gnu.org/packages/oauth2.html")) +(defvar oauth2-debug nil + "Enable verbose logging in oauth2 to help debugging.") + +(defun oauth2--do-debug (&rest msg) + "Output debug messages when `oauth2-debug' is enabled." + (when oauth2-debug + (setcar msg (concat "[oauth2] " (car msg))) + (apply #'message msg))) + (defun oauth2-request-authorization (auth-url client-id &optional scope state redirect-uri) "Request OAuth authorization at AUTH-URL by launching `browse-url'. CLIENT-ID is the client id provided by the provider. @@ -81,14 +90,18 @@ It returns the code provided by the service." (defun oauth2-make-access-request (url data) "Make an access request to URL using DATA in POST." - (let ((url-request-method "POST") - (url-request-data data) - (url-request-extra-headers - '(("Content-Type" . "application/x-www-form-urlencoded")))) - (with-current-buffer (url-retrieve-synchronously url) - (let ((data (oauth2-request-access-parse))) - (kill-buffer (current-buffer)) - data)))) + (let ((func-name (nth 1 (backtrace-frame 3)))) + (oauth2--do-debug "%s: url: %s" func-name url) + (oauth2--do-debug "%s: data: %s" func-name data) + (let ((url-request-method "POST") + (url-request-data data) + (url-request-extra-headers + '(("Content-Type" . "application/x-www-form-urlencoded")))) + (with-current-buffer (url-retrieve-synchronously url) + (let ((data (oauth2-request-access-parse))) + (kill-buffer (current-buffer)) + (oauth2--do-debug "%s: response: %s" func-name (prin1-to-string data)) + data))))) (cl-defstruct oauth2-token plstore -- 2.39.2 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0006-Add-NEWS-file-to-document-the-changes-to-plstore-id-.patch >From e99ec9b3f209312bfa0048c5ae94876e03654c18 Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Tue, 30 Jul 2024 03:46:57 -0700 Subject: [PATCH 6/6] Add NEWS file to document the changes to plstore id generation * Also add local variables to enable outline-mode. (Bug#72358) --- NEWS | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 NEWS diff --git a/NEWS b/NEWS new file mode 100644 index 0000000000..72b0606659 --- /dev/null +++ b/NEWS @@ -0,0 +1,27 @@ +Summary of changes to oauth2.el +------------------------------- + +(For changes of 0.16 and older please check the git history of the +repository of oauth2.el.) + +* 0.17 + +** Changes to plstore id generation and needs to reacquire refresh_token + +The generation of plstore id used to include `auth-url', `token-url', +and `scope'. Now `client-id' is also included. This is required to +support multiple accounts of some providers which use the same +`auth-url', `token-url', and `scope' (e.g. Gmail), or the generated +plstore id is not unique amount accounts. Adding `client-id' solves +this problem. + +The hash function of calculating the plstore id has also changed from +MD5 to SHA512 to be more secure. + +As a result, users of oauth2.el will need to redo the authentication +process to get a new refresh_token when upgrading from older version +to 0.17. + +# Local variables: +# mode: outline +# End: -- 2.39.2 --=-=-=-- From unknown Sat Jun 21 05:01:41 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Xiyue Deng Subject: bug#72358: closed (Re: bug#72358: 29.4; oauth2.el improvements) Message-ID: References: <87o75av65a.fsf@posteo.net> <87mslz8yzk.fsf@debian-hx90.lan> X-Gnu-PR-Message: they-closed 72358 X-Gnu-PR-Package: emacs Reply-To: 72358@debbugs.gnu.org Date: Fri, 30 Aug 2024 07:11:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1725001862-9256-1" This is a multi-part message in MIME format... ------------=_1725001862-9256-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #72358: 29.4; oauth2.el improvements which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 72358@debbugs.gnu.org. --=20 72358: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D72358 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1725001862-9256-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 72358-done) by debbugs.gnu.org; 30 Aug 2024 07:10:32 +0000 Received: from localhost ([127.0.0.1]:52412 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sjvmB-0002OP-AP for submit@debbugs.gnu.org; Fri, 30 Aug 2024 03:10:32 -0400 Received: from mout02.posteo.de ([185.67.36.66]:58437) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sjvm8-0002O7-0s for 72358-done@debbugs.gnu.org; Fri, 30 Aug 2024 03:10:29 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id A8DF7240101 for <72358-done@debbugs.gnu.org>; Fri, 30 Aug 2024 09:09:23 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1725001763; bh=yucEnRqggPNlWi3sklagg8KS00B9rWSWmCGdh8b/LMM=; h=From:To:Cc:Subject:Autocrypt:OpenPGP:Date:Message-ID:MIME-Version: Content-Type:From; b=VKOmY96uCBSne5wvQ+zf+qTQihvSdjL5EMpZAIP5rXdS2UNJrqjxhedvFnK9oNe35 Md1TPPnWKaVG+590yE/8in9oP7/lVjU73FX9BCyFi8fLGT11x0yBGuRfMk80VhTVBr UOi5VarXxDvtm4xoyBftQWt3WPNQG9v6T8SuikrIajuv3Z8i4VvQ9adHqB1TCIvHZe tkp6gjXfNU2YbM2Rr80hKRCkKqbx6PEf2SMwRn5YKTThIQ/Y0RheJcloxJ56WmVKoe OmGJwkKqbOtUEmmmbQMs1dh2iSheZ9vDpYH/2tSQEnEI8twTpWT47+VP0UZ6FbkCdW TSRA2++iQe2sw== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4Ww8Qp4fJJz9rxF; Fri, 30 Aug 2024 09:09:22 +0200 (CEST) From: Philip Kaludercic To: Xiyue Deng Subject: Re: bug#72358: 29.4; oauth2.el improvements In-Reply-To: <87r0a64y98.fsf@debian-hx90.lan> (Xiyue Deng's message of "Thu, 29 Aug 2024 16:54:41 -0700") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <87ed7a8ye6.fsf@debian-hx90.lan> <87jzh2vt3y.fsf@gmail.com> <87frrp6ch8.fsf@debian-hx90.lan> <87ttg349yd.fsf@debian-hx90.lan> <86r0b6up8p.fsf@gnu.org> <87ikw4qdvx.fsf@debian-hx90.lan> <86plqbfzat.fsf@gnu.org> <877ccjecnc.fsf@debian-hx90.lan> <86wmkj8o29.fsf@gnu.org> <87wmk9busk.fsf@debian-hx90.lan> <87seuxacij.fsf@posteo.net> <87seuxbk6f.fsf@debian-hx90.lan> <87le0fquva.fsf@posteo.net> <87r0a64y98.fsf@debian-hx90.lan> Autocrypt: addr=philipk@posteo.net; keydata= mDMEZBBQQhYJKwYBBAHaRw8BAQdAHJuofBrfqFh12uQu0Yi7mrl525F28eTmwUDflFNmdui0QlBo aWxpcCBLYWx1ZGVyY2ljIChnZW5lcmF0ZWQgYnkgYXV0b2NyeXB0LmVsKSA8cGhpbGlwa0Bwb3N0 ZW8ubmV0PoiWBBMWCAA+FiEEDg7HY17ghYlni8XN8xYDWXahwukFAmQQUEICGwMFCQHhM4AFCwkI BwIGFQoJCAsCBBYCAwECHgECF4AACgkQ8xYDWXahwulikAEA77hloUiSrXgFkUVJhlKBpLCHUjA0 mWZ9j9w5d08+jVwBAK6c4iGP7j+/PhbkxaEKa4V3MzIl7zJkcNNjHCXmvFcEuDgEZBBQQhIKKwYB BAGXVQEFAQEHQI5NLiLRjZy3OfSt1dhCmFyn+fN/QKELUYQetiaoe+MMAwEIB4h+BBgWCAAmFiEE Dg7HY17ghYlni8XN8xYDWXahwukFAmQQUEICGwwFCQHhM4AACgkQ8xYDWXahwukm+wEA8cml4JpK NeAu65rg+auKrPOP6TP/4YWRCTIvuYDm0joBALw98AMz7/qMHvSCeU/hw9PL6u6R2EScxtpKnWof z4oM OpenPGP: id=philipk@posteo.net; url="https://keys.openpgp.org/vks/v1/by-email/philipk@posteo.net"; preference=signencrypt Date: Fri, 30 Aug 2024 07:09:21 +0000 Message-ID: <87o75av65a.fsf@posteo.net> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 72358-done Cc: 72358-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Xiyue Deng writes: > Hi Philip, > > Thanks for the review! Please see my replies below inline. > [...] >>> From 2b9e50cb0948e0b4f28883042109994ffa295d3d Mon Sep 17 00:00:00 2001 >>> From: Xiyue Deng >>> Date: Sun, 21 Jul 2024 14:50:56 -0700 >>> Subject: [PATCH 1/6] Show full authentication URL to let user choose how to >>> visit it >>> >>> * packages/oauth2/oauth2.el (oauth2-request-authorization): show full >>> authentication URL in user prompt. >> >> Generally it would be nice if you could attach a "(Bug#72358)" to the >> end of each commit. Just add it like a new sentence. >> >> [...] >> authentication URL in user prompt. (Bug#72358) >> > > Done for all patches. 1+ >>> --- >>> oauth2.el | 19 +++++++++++-------- >>> 1 file changed, 11 insertions(+), 8 deletions(-) >>> >>> diff --git a/oauth2.el b/oauth2.el >>> index 7da9702004..3a3e50ad2b 100644 >>> --- a/oauth2.el >>> +++ b/oauth2.el >>> @@ -57,14 +57,17 @@ >>> "Request OAuth authorization at AUTH-URL by launching `browse-url'. >>> CLIENT-ID is the client id provided by the provider. >>> It returns the code provided by the service." >>> - (browse-url (concat auth-url >>> - (if (string-match-p "\?" auth-url) "&" "?") >>> - "client_id=" (url-hexify-string client-id) >>> - "&response_type=code" >>> - "&redirect_uri=" (url-hexify-string (or redirect-uri "urn:ietf:wg:oauth:2.0:oob")) >>> - (if scope (concat "&scope=" (url-hexify-string scope)) "") >>> - (if state (concat "&state=" (url-hexify-string state)) ""))) >>> - (read-string "Enter the code your browser displayed: ")) >>> + (let ((url (concat auth-url >>> + (if (string-match-p "\?" auth-url) "&" "?") >>> + "client_id=" (url-hexify-string client-id) >>> + "&response_type=code" >>> + "&redirect_uri=" (url-hexify-string (or redirect-uri "urn:ietf:wg:oauth:2.0:oob")) >>> + (if scope (concat "&scope=" (url-hexify-string scope)) "") >>> + (if state (concat "&state=" (url-hexify-string state)) "")))) >>> + (browse-url url) >>> + (read-string (concat "Follow the instruction on your default browser, or " >>> + "visit:\n" url >>> + "\nEnter the code your browser displayed: ")))) >> >> LGTM. >> >>> >>> (defun oauth2-request-access-parse () >>> "Parse the result of an OAuth request." >>> -- >>> 2.39.2 >>> >>> >>> From 26ed9886bd9d3970d55cf76e4269cef3998503a7 Mon Sep 17 00:00:00 2001 >>> From: Xiyue Deng >>> Date: Sun, 21 Jul 2024 14:52:02 -0700 >>> Subject: [PATCH 2/6] Add parameters required by Google OAuth2 to get >>> refresh_token >>> >>> * packages/oauth2/oauth2.el (oauth2-request-authorization): add >>> `access_type=offline' and `prompt=consent' when requesting token to >> >> I wouldn't use `...' syntax in commit ChangeLog messages. >> > > Ah I saw this used in the texinfo doc extensively so I thought it was > preferred. I have changed all these to double quotes, though do let me > know if there is a better preference. I think that double or single quotes are both fine. >>> receive refresh_token. >>> --- >>> oauth2.el | 4 +++- >>> 1 file changed, 3 insertions(+), 1 deletion(-) >>> >>> diff --git a/oauth2.el b/oauth2.el >>> index 3a3e50ad2b..9780ac3a1d 100644 >>> --- a/oauth2.el >>> +++ b/oauth2.el >>> @@ -63,7 +63,9 @@ It returns the code provided by the service." >>> "&response_type=code" >>> "&redirect_uri=" (url-hexify-string (or redirect-uri "urn:ietf:wg:oauth:2.0:oob")) >>> (if scope (concat "&scope=" (url-hexify-string scope)) "") >>> - (if state (concat "&state=" (url-hexify-string state)) "")))) >>> + (if state (concat "&state=" (url-hexify-string state)) "") >>> + "&access_type=offline" >>> + "&prompt=consent"))) >> >> You do what you say, but perhaps a comment explaining why you have these >> queries might be useful? >> > > Added a comment above to explain the reasons. 1+ >>> (browse-url url) >>> (read-string (concat "Follow the instruction on your default browser, or " >>> "visit:\n" url >>> -- >>> 2.39.2 >>> >>> >>> From 59225412e1d06ae9e165cfde6a4a985cee4fc569 Mon Sep 17 00:00:00 2001 >>> From: Xiyue Deng >>> Date: Sun, 21 Jul 2024 14:54:08 -0700 >>> Subject: [PATCH 3/6] Encode parameters when requesting access >>> >>> * packages/oauth2/oauth2.el (oauth2-request-access): encode all >>> parameters which may contain characters that breaks URL. >>> --- >>> oauth2.el | 6 +++--- >>> 1 file changed, 3 insertions(+), 3 deletions(-) >>> >>> diff --git a/oauth2.el b/oauth2.el >>> index 9780ac3a1d..b035742fc1 100644 >>> --- a/oauth2.el >>> +++ b/oauth2.el >>> @@ -107,10 +107,10 @@ Return an `oauth2-token' structure." >>> (oauth2-make-access-request >>> token-url >>> (concat >>> - "client_id=" client-id >>> + "client_id=" (url-hexify-string client-id) >>> (when client-secret >>> - (concat "&client_secret=" client-secret)) >>> - "&code=" code >>> + (concat "&client_secret=" (url-hexify-string client-secret))) >>> + "&code=" (url-hexify-string code) >>> "&redirect_uri=" (url-hexify-string (or redirect-uri "urn:ietf:wg:oauth:2.0:oob")) >>> "&grant_type=authorization_code")))) >>> (make-oauth2-token :client-id client-id >>> -- >>> 2.39.2 >> >> 1+ Though one might also consider using something like `url-encode-url' >> to generate the entire URL. >> > > It is indeed much cleaner. Changed accordingly. I am glad to hear that this was possible. >>> >>> >>> From e801af578e63c7e333e668bdfef05e4cf0802582 Mon Sep 17 00:00:00 2001 >>> From: Xiyue Deng >>> Date: Sun, 28 Jul 2024 03:00:04 -0700 >>> Subject: [PATCH 4/6] Support storing data for multiple accounts of the same >>> provider >>> >>> Currently the plstore id computed by `oauth2-compute-id' only takes >>> `auth-url', `token-url', and `scope' into account, which could be the >>> same for the same provider (e.g. Gmail). This prevents storing >>> information for multiple accounts of the same service for some >>> providers. >>> >>> This patch adds `client-id' to the calculation of plstore id to make >>> sure that it is unique for different accounts of the same provider. >>> >>> It also changes the hash function to sha512 to be more secure. >>> >>> * packages/oauth2/oauth2.el (oauth2-compute-id): add `client-id' as a >>> parameter of `oauth2-compute-id' to ensure unique id amount multiple >>> accounts of the same provider, and change hash function to sha512. >>> --- >>> oauth2.el | 6 +++--- >>> 1 file changed, 3 insertions(+), 3 deletions(-) >>> >>> diff --git a/oauth2.el b/oauth2.el >>> index b035742fc1..035971ac85 100644 >>> --- a/oauth2.el >>> +++ b/oauth2.el >>> @@ -163,17 +163,17 @@ TOKEN should be obtained with `oauth2-request-access'." >>> :group 'oauth2 >>> :type 'file) >>> >>> -(defun oauth2-compute-id (auth-url token-url scope) >>> +(defun oauth2-compute-id (auth-url token-url scope client-id) >>> "Compute an unique id based on URLs. >>> This allows to store the token in an unique way." >>> - (secure-hash 'md5 (concat auth-url token-url scope))) >>> + (secure-hash 'sha512 (concat auth-url token-url scope client-id))) >>> >>> ;;;###autoload >>> (defun oauth2-auth-and-store (auth-url token-url scope client-id client-secret &optional redirect-uri state) >>> "Request access to a resource and store it using `plstore'." >>> ;; We store a MD5 sum of all URL >>> (let* ((plstore (plstore-open oauth2-token-file)) >>> - (id (oauth2-compute-id auth-url token-url scope)) >>> + (id (oauth2-compute-id auth-url token-url scope client-id)) >>> (plist (cdr (plstore-get plstore id)))) >>> ;; Check if we found something matching this access >>> (if plist >>> -- >>> 2.39.2 >> >> LGTM >> >>> >>> From 55417ec61c91f6b4d8e16a0c9933fb178d7bb657 Mon Sep 17 00:00:00 2001 >>> From: Xiyue Deng >>> Date: Sun, 28 Jul 2024 03:41:20 -0700 >>> Subject: [PATCH 5/6] Add debug messages and provide a switch variable for >>> enabling >>> >>> This helps debugging whether the authorization and refresh requests >>> were successful and inspecting the responses. >>> >>> * packages/oauth2/oauth2.el: add support for debug messages and a >>> switch variable for enabling. >>> --- >>> oauth2.el | 13 +++++++++++++ >>> 1 file changed, 13 insertions(+) >>> >>> diff --git a/oauth2.el b/oauth2.el >>> index 035971ac85..ce7a835100 100644 >>> --- a/oauth2.el >>> +++ b/oauth2.el >>> @@ -40,6 +40,7 @@ >>> (require 'plstore) >>> (require 'json) >>> (require 'url-http) >>> +(require 'pp) >>> >>> (defvar url-http-data) >>> (defvar url-http-method) >>> @@ -53,6 +54,14 @@ >>> :link '(url-link :tag "Savannah" "https://git.savannah.gnu.org/cgit/emacs/elpa.git/tree/?h=externals/oauth2") >>> :link '(url-link :tag "ELPA" "https://elpa.gnu.org/packages/oauth2.html")) >>> >>> +(defvar oauth2-debug nil >>> + "Enable debug messages.") >> >> I'd slightly expand this comment in case someone wants to use something >> like `apropos-documentation'. > > Expanded the doc string to explain the purpose. > >> Also, why is this not a user option? >> > > As Robert mentioned in the follow-up mail it was his suggestion (thanks > Robert!) Do let me know if `defcustom' is preferred. No, some packages use user options, others regular variables so I guess it is up to the person with the strongest opinion on the topic to decide (which isn't me in this case). >>> + >>> +(defun oauth2--do-debug (&rest msg) >>> + "Output debug messages when `oauth2-debug' is enabled." >>> + (if oauth2-debug >> >> I'd use `when' here. >> > > Done > >>> + (apply #'message msg))) >> >> ... and perhaps prefix the message with a string like "[oauth2] ". >> > > Done. I used `setcar' but let me know if there is a more elegant way to > do this. No complains from my side, I find it rather elegant! >> I also notice that you manually mention the function issuing the debug >> message below. It is possible to infer this using `backtrace-frame' >> (but that is really something that should be added to the core, instead >> of packages having to re-implement it themselves.) >> > > Added a let-bounded `func-name' by getting function name from > backtrace-frame. And it would be great if there is a built-in macro > like `__PRETTY_FUNCTION__' and `__LINE__'. I know of nothing. >>> + >>> (defun oauth2-request-authorization (auth-url client-id &optional scope state redirect-uri) >>> "Request OAuth authorization at AUTH-URL by launching `browse-url'. >>> CLIENT-ID is the client id provided by the provider. >>> @@ -79,6 +88,8 @@ It returns the code provided by the service." >>> >>> (defun oauth2-make-access-request (url data) >>> "Make an access request to URL using DATA in POST." >>> + (oauth2--do-debug "oauth2-make-access-request: url: %s" url) >>> + (oauth2--do-debug "oauth2-make-access-request: data: %s" data) >>> (let ((url-request-method "POST") >>> (url-request-data data) >>> (url-request-extra-headers >>> @@ -86,6 +97,8 @@ It returns the code provided by the service." >>> (with-current-buffer (url-retrieve-synchronously url) >>> (let ((data (oauth2-request-access-parse))) >>> (kill-buffer (current-buffer)) >>> + (oauth2--do-debug "oauth2-make-access-request: response: %s" >>> + (pp-to-string data)) >> >> Is pp-to-string here really much better than prin1-to-string? Note that >> 'oauth2--do-debug' is a function, so the arguments are always evaluated. >> I have experienced pp being significantly slower than the core print >> functions, so this is something that is worth thinking about IMO. >> > > It's just a personal preference. And it look like the values are mostly > key-value pairs so they are not that hard to read through > `prin1-to-string' so I changed to it. 1+ >>> data)))) >>> >>> (cl-defstruct oauth2-token >>> -- >>> 2.39.2 >>> >>> >>> From e8735da21ac82b0698edad1796ddf4a1b8eb4bb2 Mon Sep 17 00:00:00 2001 >>> From: Xiyue Deng >>> Date: Tue, 30 Jul 2024 03:46:57 -0700 >>> Subject: [PATCH 6/6] Add NEWS file to document the changes to plstore id >>> generation >>> >>> --- >>> NEWS | 23 +++++++++++++++++++++++ >>> 1 file changed, 23 insertions(+) >>> create mode 100644 NEWS >>> >>> diff --git a/NEWS b/NEWS >>> new file mode 100644 >>> index 0000000000..6715a1914a >>> --- /dev/null >>> +++ b/NEWS >>> @@ -0,0 +1,23 @@ >>> +Summary of changes to oauth2.el >>> +------------------------------- >>> + >>> +For changes of 0.16 and older or full changes please check the git >>> +history of the repository of oauth2.el. >>> + >>> +* 0.17 >>> + >>> +** Changes to plstore id generation and needs to reacquire refresh_token >>> + >>> +The generation of plstore id used to include `auth-url', `token-url', >>> +and `scope'. Now `client-id' is also included. This is required to >>> +support multiple accounts of some providers which use the same >>> +`auth-url', `token-url', and `scope' (e.g. Gmail), and hence the >>> +generated plstore id is not unique amount accounts. Adding >>> +`client-id' solves this problem. >>> + >>> +The hash function of calculating the plstore id has also changed from >>> +MD5 to SHA512 to be more secure. >>> + >>> +As a result, users of oauth2.el will need to redo the authentication >>> +process to get a new refresh_token when upgrading from older version >>> +to 0.17. >> >> Perhaps you can add a file local variable to enable outline-mode? >> > > Done. Also improved the wording. > >> All in all the patches look more than fine though, nothing I mentioned >> is pressing. If you don't have the time and the changes are urgent, >> then I can also apply them as such. >> >> Xiyue Deng writes: >> >> [...] >> >>> Friendly ping. >> >> Friendly pong. > > The updated patches are attached. Thanks again! OK, this looks very good. I'll apply the changes and am closing the report. Thanks, -- Philip Kaludercic on peregrine ------------=_1725001862-9256-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 30 Jul 2024 02:19:59 +0000 Received: from localhost ([127.0.0.1]:46443 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sYcSx-00056r-Np for submit@debbugs.gnu.org; Mon, 29 Jul 2024 22:19:59 -0400 Received: from lists.gnu.org ([209.51.188.17]:34568) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sYcSs-00056g-N4 for submit@debbugs.gnu.org; Mon, 29 Jul 2024 22:19:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sYcSe-0002je-UD for bug-gnu-emacs@gnu.org; Mon, 29 Jul 2024 22:19:36 -0400 Received: from mail-qv1-xf30.google.com ([2607:f8b0:4864:20::f30]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1sYcSa-00069r-2d for bug-gnu-emacs@gnu.org; Mon, 29 Jul 2024 22:19:36 -0400 Received: by mail-qv1-xf30.google.com with SMTP id 6a1803df08f44-6b7a8cada97so19967756d6.3 for ; Mon, 29 Jul 2024 19:19:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1722305970; x=1722910770; darn=gnu.org; h=mime-version:message-id:date:subject:to:from:from:to:cc:subject :date:message-id:reply-to; bh=VQfVwWr3cwKivU35g3L04BA2GjxpnswiRkL9hoeoZgM=; b=YqcCfoT4HjgEDE949dKQ2qmeYzFZqVUKg9+tOpbhFpcRnamk4UIBaQ47JU+8Vt0Nhi ewLadtkOdqr+1auaiw3FpDRNz4WtUQpvHX6D8fUHiFX0y8gizklFbDKoTLYazghWgKdF ENqBkkofGzIuS8y8Wf2JTs9BaDRRPTTe+b9vuKZe/VVA9MRknZif5ROR84eFAQ3vi+ug uHnSM9cxCcFV+qSQfiT83EhujI3jdLpv/aOWJZz/BHYthtJX7bkbs39JqylyIk3icK4X jJeY9HUBjaamD6d8tN28kdrh+/qy9UJUUds2Wd5g1mDTdxLqTt4xm0/DeQEuriny7Ygo w7gQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722305970; x=1722910770; h=mime-version:message-id:date:subject:to:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=VQfVwWr3cwKivU35g3L04BA2GjxpnswiRkL9hoeoZgM=; b=KQ9qe7+xF4Ups04vRbLwEuTJO1Kv6WVO9ddc4JXXZ2B89YA1JOSsz2yfrRxB9z3WXD DrUpyM6hpJBToZY/9+qT3O3/SKK6OIS7tftALlTDmzGOVHEqiS+NQhggDe2DSShHe6GJ 3XbiN7+Y5XC9x6/vmeIgdRb/xYysSFqE9NONXJx7U8r8y3QLWjCNHgok2l/RK5XUVVyb G21Wz632syDJ0YOKeSVxqiGn4Lp9MGVrfIyHGI3EBM49ftM7lUnLZI2anReXVORCt4bU ywogJOmfaxzI+2apUM+1Ta2M5xifU9Y+31Xdq7XcQSt6cKyRaY94QaTd6RzokNG6BNqn Iwhg== X-Gm-Message-State: AOJu0YxEIYCPpZcdOdQOplpTFtYvGaKdh1D8Hx7DHOgUO05c+CRIiduU F9a36d/KDotkY7hK94+CkM3+q3qfMTX5dsotg6tHbCXPXcWJOLFCRDDlm1QChQqoSQ== X-Google-Smtp-Source: AGHT+IGZXboXiiVOS8VlBLMJJu9OT3lwGGAV/EkvaOtUWvL3mQxjci51t6Qk9Vf8dQst32jAUUdb1w== X-Received: by 2002:a17:90a:5e4c:b0:2c9:9b16:e004 with SMTP id 98e67ed59e1d1-2cf7e87e1efmr6884324a91.43.1722301923006; Mon, 29 Jul 2024 18:12:03 -0700 (PDT) Received: from debian-hx90 ([2603:8000:a400:cdc:d52f:6b4b:2d07:ca62]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2cf28ca6228sm9218012a91.34.2024.07.29.18.12.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Jul 2024 18:12:02 -0700 (PDT) From: Xiyue Deng To: bug-gnu-emacs@gnu.org Subject: 29.4; oauth2.el improvements Date: Mon, 29 Jul 2024 14:25:01 -0700 Message-ID: <87mslz8yzk.fsf@debian-hx90.lan> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Received-SPF: pass client-ip=2607:f8b0:4864:20::f30; envelope-from=manphiz@gmail.com; helo=mail-qv1-xf30.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_03_06=1.592, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: -0.3 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.3 (-) --=-=-= Content-Type: text/plain Hi, I have been trying out using oauth2.el to enable OAuth2-based authentication for email service providers and had some success for Gmail. During this process, I have made a few changes to oauth2.el that enables it to use with Gmail OAuth2 as well as some usability and debugging improvements, which I'm sharing below. This is a series of five patches, which are attached. The first patch shows the authentication URL in the minibuffer window alongside the prompt accepting the authorization code. This helps when a user has multiple accounts from the same provider but is logged into a different account than the one that the user is trying to set up. If the user use the link (or through `browse-url') it will use the active account instead of the one intended. By showing the URL in the minibuffer, the user can choose other ways to get the authorization code (e.g. using another browser, using private/encognito mode, etc.) The second patch adds the parameters `access_type=offline' and `prompt=consent' to the authorization URL, which is required for Gmail OAuth2 to get the refresh token. Without these 2 parameters, Gmail response will only contain the access token which expires in one hour. They should also be compatible with other OAuth2 authentication process. (Though I am currently having trouble to get outlook.com to work regardless of these parameters, which I'll ask in a separate thread.) Note that the second patch depends on the first patch as they modify the same part of the code. The third patch encodes the parameters for requesting refreshing access token, which is recommended because the client secret and other parameters may contain characters that may break parameter parsing. The fourth patch may need a bit of background: oauth2.el (optionally) uses plstore to save authentication data for future reuse, and the plstore id for an account is computed using a combination of `auth-url', `token-url', and `scope'. However, this combination of data doesn't guarantee uniqueness for accounts for a same provider, e.g. for Gmail, the three parameters are the same for different accounts, and hence storing a second account information will override the first one. This fourth patch adds `client-id' to the calculation of plstore id to ensure its uniqueness. This may cause a few concerns: - This will invalidate all existing entries and a user will have to redo the authorization process again to get a new refresh token. However, I think it's more important to ensure that oauth2.el works correctly for multiple accounts of the same provider, or a user may suffer from confusion when adding a new account invalidates a previous account. - Adding `client-id' to the calculation of plstore id may provoke suspicion of leaking it as the hash calculation uses md5. In most cases, requesting a refresh token requires both `client-id' and `client-secret', so without including the latter it should be safe. There are cases when requesting only the access token may work with `client-id' along. Still, I think this should not be a big concern as the data is combined with `auth-url', `token-url', and `scope' which provides sufficient salt. Alternatively, we can also choose to use a more secure hash function, e.g. SHA2 or better, given that existing entries will be invalidated anyway. The fifth patch adds debug messages when doing a URL query which records the request URL, the request data, and the response data, and provide a custom variable to enable this. This provides a way to help debugging the requests, and I find it handy when testing oauth2 against different providers. Please review and comment. TIA! In GNU Emacs 29.4 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.38, cairo version 1.16.0) of 2024-07-02, modified by Debian built on debian-hx90 System Description: Debian GNU/Linux 12 (bookworm) Configured using: 'configure --build x86_64-linux-gnu --prefix=/usr --sharedstatedir=/var/lib --libexecdir=/usr/libexec --localstatedir=/var/lib --infodir=/usr/share/info --mandir=/usr/share/man --with-libsystemd --with-pop=yes --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/29.4/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/29.4/site-lisp:/usr/share/emacs/site-lisp --with-sound=alsa --without-gconf --with-mailutils --with-native-compilation --build x86_64-linux-gnu --prefix=/usr --sharedstatedir=/var/lib --libexecdir=/usr/libexec --localstatedir=/var/lib --infodir=/usr/share/info --mandir=/usr/share/man --with-libsystemd --with-pop=yes --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/29.4/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/29.4/site-lisp:/usr/share/emacs/site-lisp --with-sound=alsa --without-gconf --with-mailutils --with-native-compilation --with-cairo --with-x=yes --with-x-toolkit=gtk3 --with-toolkit-scroll-bars 'CFLAGS=-g -O2 -ffile-prefix-map=/build/emacs-UNWIcy/emacs-29.4+1=. -fstack-protector-strong -Wformat -Werror=format-security -Wall' 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2' LDFLAGS=-Wl,-z,relro' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: VTerm Minor modes in effect: global-git-commit-mode: t magit-auto-revert-mode: t shell-dirtrack-mode: t mu4e-modeline-mode: t windmove-mode: t rcirc-track-minor-mode: t server-mode: t xclip-mode: t global-treesit-auto-mode: t treemacs-project-follow-mode: t treemacs-follow-mode: t treemacs-git-mode: t treemacs-fringe-indicator-mode: t corfu-terminal-mode: t corfu-popupinfo-mode: t corfu-echo-mode: t global-corfu-mode: t corfu-mode: t activities-tabs-mode: t activities-mode: t fido-vertical-mode: t icomplete-vertical-mode: t icomplete-mode: t fido-mode: t override-global-mode: t global-display-line-numbers-mode: t display-line-numbers-mode: t global-auto-revert-mode: t tooltip-mode: t global-eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t tool-bar-mode: t tab-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t buffer-read-only: t column-number-mode: t line-number-mode: t transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t Load-path shadows: /usr/share/emacs/site-lisp/elpa/debian-el-37.16/debian-autoloads hides /usr/share/emacs/site-lisp/elpa/gnuplot-0.8.1/debian-autoloads /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-section hides /usr/share/emacs/site-lisp/elpa/magit-section-3.3.0/magit-section /usr/share/emacs/site-lisp/elpa/ace-window-0.10.0/ace-window-autoloads hides /usr/share/emacs/site-lisp/elpa-src/ace-window-0.10.0/ace-window-autoloads /usr/share/emacs/site-lisp/elpa/ace-window-0.10.0/ace-window-pkg hides /usr/share/emacs/site-lisp/elpa-src/ace-window-0.10.0/ace-window-pkg /usr/share/emacs/site-lisp/elpa/ace-window-0.10.0/ace-window hides /usr/share/emacs/site-lisp/elpa-src/ace-window-0.10.0/ace-window /usr/share/emacs/site-lisp/elpa/activities-0.7/activities-autoloads hides /usr/share/emacs/site-lisp/elpa-src/activities-0.7/activities-autoloads /usr/share/emacs/site-lisp/elpa/activities-0.7/activities-pkg hides /usr/share/emacs/site-lisp/elpa-src/activities-0.7/activities-pkg /usr/share/emacs/site-lisp/elpa/activities-0.7/activities-list hides /usr/share/emacs/site-lisp/elpa-src/activities-0.7/activities-list /usr/share/emacs/site-lisp/elpa/activities-0.7/activities hides /usr/share/emacs/site-lisp/elpa-src/activities-0.7/activities /usr/share/emacs/site-lisp/elpa/activities-0.7/activities-tabs hides /usr/share/emacs/site-lisp/elpa-src/activities-0.7/activities-tabs /usr/share/emacs/site-lisp/elpa/apache-mode-2.2.0/apache-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/apache-mode-2.2.0/apache-mode-autoloads /usr/share/emacs/site-lisp/elpa/apache-mode-2.2.0/apache-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/apache-mode-2.2.0/apache-mode-pkg /usr/share/emacs/site-lisp/elpa/apache-mode-2.2.0/apache-mode hides /usr/share/emacs/site-lisp/elpa-src/apache-mode-2.2.0/apache-mode /usr/share/emacs/site-lisp/elpa/auctex-13.3/tex-info hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/tex-info /usr/share/emacs/site-lisp/elpa/auctex-13.3/latex-flymake hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/latex-flymake /usr/share/emacs/site-lisp/elpa/auctex-13.3/tex-site hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/tex-site /usr/share/emacs/site-lisp/elpa/auctex-13.3/texmathp hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/texmathp /usr/share/emacs/site-lisp/elpa/auctex-13.3/toolbar-x hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/toolbar-x /usr/share/emacs/site-lisp/elpa/auctex-13.3/tex-style hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/tex-style /usr/share/emacs/site-lisp/elpa/auctex-13.3/tex-font hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/tex-font /usr/share/emacs/site-lisp/elpa/auctex-13.3/tex-jp hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/tex-jp /usr/share/emacs/site-lisp/elpa/auctex-13.3/tex-mik hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/tex-mik /usr/share/emacs/site-lisp/elpa/auctex-13.3/plain-tex hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/plain-tex /usr/share/emacs/site-lisp/elpa/auctex-13.3/tex-fold hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/tex-fold /usr/share/emacs/site-lisp/elpa/auctex-13.3/tex-ispell hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/tex-ispell /usr/share/emacs/site-lisp/elpa/auctex-13.3/tex-bar hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/tex-bar /usr/share/emacs/site-lisp/elpa/auctex-13.3/preview-latex hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/preview-latex /usr/share/emacs/site-lisp/elpa/auctex-13.3/bib-cite hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/bib-cite /usr/share/emacs/site-lisp/elpa/auctex-13.3/preview hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/preview /usr/share/emacs/site-lisp/elpa/auctex-13.3/context-nl hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/context-nl /usr/share/emacs/site-lisp/elpa/auctex-13.3/auto-loads hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/auto-loads /usr/share/emacs/site-lisp/elpa/auctex-13.3/multi-prompt hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/multi-prompt /usr/share/emacs/site-lisp/elpa/auctex-13.3/context-en hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/context-en /usr/share/emacs/site-lisp/elpa/auctex-13.3/lpath hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/lpath /usr/share/emacs/site-lisp/elpa/auctex-13.3/auctex hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/auctex /usr/share/emacs/site-lisp/elpa/auctex-13.3/tex hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/tex /usr/share/emacs/site-lisp/elpa/auctex-13.3/auctex-autoloads hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/auctex-autoloads /usr/share/emacs/site-lisp/elpa/auctex-13.3/font-latex hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/font-latex /usr/share/emacs/site-lisp/elpa/auctex-13.3/auctex-pkg hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/auctex-pkg /usr/share/emacs/site-lisp/elpa/auctex-13.3/context hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/context /usr/share/emacs/site-lisp/elpa/auctex-13.3/latex hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/latex /usr/share/emacs/site-lisp/elpa/auctex-13.3/tex-wizard hides /usr/share/emacs/site-lisp/elpa-src/auctex-13.3/tex-wizard /usr/share/emacs/site-lisp/elpa/avy-0.5.0/avy hides /usr/share/emacs/site-lisp/elpa-src/avy-0.5.0/avy /usr/share/emacs/site-lisp/elpa/avy-0.5.0/avy-autoloads hides /usr/share/emacs/site-lisp/elpa-src/avy-0.5.0/avy-autoloads /usr/share/emacs/site-lisp/elpa/avy-0.5.0/avy-pkg hides /usr/share/emacs/site-lisp/elpa-src/avy-0.5.0/avy-pkg /usr/share/emacs/site-lisp/elpa/bazel-0/bazel-autoloads hides /usr/share/emacs/site-lisp/elpa-src/bazel-0/bazel-autoloads /usr/share/emacs/site-lisp/elpa/bazel-0/bazel hides /usr/share/emacs/site-lisp/elpa-src/bazel-0/bazel /usr/share/emacs/site-lisp/elpa/bazel-0/test hides /usr/share/emacs/site-lisp/elpa-src/bazel-0/test /usr/share/emacs/site-lisp/elpa/bazel-0/bazel-pkg hides /usr/share/emacs/site-lisp/elpa-src/bazel-0/bazel-pkg /usr/share/emacs/site-lisp/elpa/bison-mode-0.3/bison-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/bison-mode-0.3/bison-mode-pkg /usr/share/emacs/site-lisp/elpa/bison-mode-0.3/bison-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/bison-mode-0.3/bison-mode-autoloads /usr/share/emacs/site-lisp/elpa/bison-mode-0.3/bison-mode hides /usr/share/emacs/site-lisp/elpa-src/bison-mode-0.3/bison-mode /usr/share/emacs/site-lisp/elpa/boxquote-2.3/boxquote hides /usr/share/emacs/site-lisp/elpa-src/boxquote-2.3/boxquote /usr/share/emacs/site-lisp/elpa/boxquote-2.3/boxquote-autoloads hides /usr/share/emacs/site-lisp/elpa-src/boxquote-2.3/boxquote-autoloads /usr/share/emacs/site-lisp/elpa/boxquote-2.3/boxquote-pkg hides /usr/share/emacs/site-lisp/elpa-src/boxquote-2.3/boxquote-pkg /usr/share/emacs/site-lisp/elpa/buttercup-1.26/buttercup-pkg hides /usr/share/emacs/site-lisp/elpa-src/buttercup-1.26/buttercup-pkg /usr/share/emacs/site-lisp/elpa/buttercup-1.26/buttercup hides /usr/share/emacs/site-lisp/elpa-src/buttercup-1.26/buttercup /usr/share/emacs/site-lisp/elpa/buttercup-1.26/buttercup-autoloads hides /usr/share/emacs/site-lisp/elpa-src/buttercup-1.26/buttercup-autoloads /usr/share/emacs/site-lisp/elpa/buttercup-1.26/buttercup-compat hides /usr/share/emacs/site-lisp/elpa-src/buttercup-1.26/buttercup-compat /usr/share/emacs/site-lisp/elpa/cfrs-1.6.0/cfrs-pkg hides /usr/share/emacs/site-lisp/elpa-src/cfrs-1.6.0/cfrs-pkg /usr/share/emacs/site-lisp/elpa/cfrs-1.6.0/cfrs hides /usr/share/emacs/site-lisp/elpa-src/cfrs-1.6.0/cfrs /usr/share/emacs/site-lisp/elpa/cfrs-1.6.0/cfrs-autoloads hides /usr/share/emacs/site-lisp/elpa-src/cfrs-1.6.0/cfrs-autoloads /usr/share/emacs/site-lisp/elpa/clojure-mode-5.19.0/clojure-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/clojure-mode-5.19.0/clojure-mode-pkg /usr/share/emacs/site-lisp/elpa/clojure-mode-5.19.0/clojure-mode hides /usr/share/emacs/site-lisp/elpa-src/clojure-mode-5.19.0/clojure-mode /usr/share/emacs/site-lisp/elpa/clojure-mode-5.19.0/clojure-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/clojure-mode-5.19.0/clojure-mode-autoloads /usr/share/emacs/site-lisp/elpa/clojure-mode-extra-font-locking-3.0.0/clojure-mode-extra-font-locking-pkg hides /usr/share/emacs/site-lisp/elpa-src/clojure-mode-extra-font-locking-3.0.0/clojure-mode-extra-font-locking-pkg /usr/share/emacs/site-lisp/elpa/clojure-mode-extra-font-locking-3.0.0/clojure-mode-extra-font-locking-autoloads hides /usr/share/emacs/site-lisp/elpa-src/clojure-mode-extra-font-locking-3.0.0/clojure-mode-extra-font-locking-autoloads /usr/share/emacs/site-lisp/elpa/clojure-mode-extra-font-locking-3.0.0/clojure-mode-extra-font-locking hides /usr/share/emacs/site-lisp/elpa-src/clojure-mode-extra-font-locking-3.0.0/clojure-mode-extra-font-locking /usr/share/emacs/site-lisp/elpa/cmake-mode-3.29.0/cmake-mode hides /usr/share/emacs/site-lisp/elpa-src/cmake-mode-3.29.0/cmake-mode /usr/share/emacs/site-lisp/elpa/cmake-mode-3.29.0/cmake-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/cmake-mode-3.29.0/cmake-mode-autoloads /usr/share/emacs/site-lisp/elpa/cmake-mode-3.29.0/cmake-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/cmake-mode-3.29.0/cmake-mode-pkg /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-dabbrev hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-dabbrev /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-capf hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-capf /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-yasnippet hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-yasnippet /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-ispell hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-ispell /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-etags hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-etags /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-template hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-template /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-abbrev hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-abbrev /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-files hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-files /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-css hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-css /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-tests hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-tests /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-dabbrev-code hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-dabbrev-code /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-pkg hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-pkg /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-oddmuse hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-oddmuse /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-bbdb hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-bbdb /usr/share/emacs/site-lisp/elpa/company-0.10.2/company hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-clang hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-clang /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-nxml hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-nxml /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-gtags hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-gtags /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-tempo hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-tempo /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-autoloads hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-autoloads /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-cmake hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-cmake /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-tng hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-tng /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-elisp hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-elisp /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-semantic hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-semantic /usr/share/emacs/site-lisp/elpa/company-0.10.2/company-keywords hides /usr/share/emacs/site-lisp/elpa-src/company-0.10.2/company-keywords /usr/share/emacs/site-lisp/elpa/compat-29.1.4.5/compat-26 hides /usr/share/emacs/site-lisp/elpa-src/compat-29.1.4.5/compat-26 /usr/share/emacs/site-lisp/elpa/compat-29.1.4.5/compat-28 hides /usr/share/emacs/site-lisp/elpa-src/compat-29.1.4.5/compat-28 /usr/share/emacs/site-lisp/elpa/compat-29.1.4.5/compat-macs hides /usr/share/emacs/site-lisp/elpa-src/compat-29.1.4.5/compat-macs /usr/share/emacs/site-lisp/elpa/compat-29.1.4.5/compat-autoloads hides /usr/share/emacs/site-lisp/elpa-src/compat-29.1.4.5/compat-autoloads /usr/share/emacs/site-lisp/elpa/compat-29.1.4.5/compat-pkg hides /usr/share/emacs/site-lisp/elpa-src/compat-29.1.4.5/compat-pkg /usr/share/emacs/site-lisp/elpa/compat-29.1.4.5/compat-25 hides /usr/share/emacs/site-lisp/elpa-src/compat-29.1.4.5/compat-25 /usr/share/emacs/site-lisp/elpa/compat-29.1.4.5/compat-29 hides /usr/share/emacs/site-lisp/elpa-src/compat-29.1.4.5/compat-29 /usr/share/emacs/site-lisp/elpa/compat-29.1.4.5/compat-27 hides /usr/share/emacs/site-lisp/elpa-src/compat-29.1.4.5/compat-27 /usr/share/emacs/site-lisp/elpa/compat-29.1.4.5/compat hides /usr/share/emacs/site-lisp/elpa-src/compat-29.1.4.5/compat /usr/share/emacs/site-lisp/elpa/corfu-1.4/corfu hides /usr/share/emacs/site-lisp/elpa-src/corfu-1.4/corfu /usr/share/emacs/site-lisp/elpa/corfu-1.4/corfu-quick hides /usr/share/emacs/site-lisp/elpa-src/corfu-1.4/corfu-quick /usr/share/emacs/site-lisp/elpa/corfu-1.4/corfu-info hides /usr/share/emacs/site-lisp/elpa-src/corfu-1.4/corfu-info /usr/share/emacs/site-lisp/elpa/corfu-1.4/corfu-history hides /usr/share/emacs/site-lisp/elpa-src/corfu-1.4/corfu-history /usr/share/emacs/site-lisp/elpa/corfu-1.4/corfu-popupinfo hides /usr/share/emacs/site-lisp/elpa-src/corfu-1.4/corfu-popupinfo /usr/share/emacs/site-lisp/elpa/corfu-1.4/corfu-indexed hides /usr/share/emacs/site-lisp/elpa-src/corfu-1.4/corfu-indexed /usr/share/emacs/site-lisp/elpa/corfu-1.4/corfu-pkg hides /usr/share/emacs/site-lisp/elpa-src/corfu-1.4/corfu-pkg /usr/share/emacs/site-lisp/elpa/corfu-1.4/corfu-echo hides /usr/share/emacs/site-lisp/elpa-src/corfu-1.4/corfu-echo /usr/share/emacs/site-lisp/elpa/corfu-1.4/corfu-autoloads hides /usr/share/emacs/site-lisp/elpa-src/corfu-1.4/corfu-autoloads /usr/share/emacs/site-lisp/elpa/corfu-terminal-0.7/corfu-terminal-autoloads hides /usr/share/emacs/site-lisp/elpa-src/corfu-terminal-0.7/corfu-terminal-autoloads /usr/share/emacs/site-lisp/elpa/corfu-terminal-0.7/corfu-terminal-pkg hides /usr/share/emacs/site-lisp/elpa-src/corfu-terminal-0.7/corfu-terminal-pkg /usr/share/emacs/site-lisp/elpa/corfu-terminal-0.7/corfu-terminal hides /usr/share/emacs/site-lisp/elpa-src/corfu-terminal-0.7/corfu-terminal /usr/share/emacs/site-lisp/elpa/csv-mode-1.23/csv-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/csv-mode-1.23/csv-mode-autoloads /usr/share/emacs/site-lisp/elpa/csv-mode-1.23/csv-mode hides /usr/share/emacs/site-lisp/elpa-src/csv-mode-1.23/csv-mode /usr/share/emacs/site-lisp/elpa/csv-mode-1.23/csv-mode-tests hides /usr/share/emacs/site-lisp/elpa-src/csv-mode-1.23/csv-mode-tests /usr/share/emacs/site-lisp/elpa/csv-mode-1.23/csv-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/csv-mode-1.23/csv-mode-pkg /usr/share/emacs/site-lisp/elpa/dart-mode-1.0.7/dart-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/dart-mode-1.0.7/dart-mode-autoloads /usr/share/emacs/site-lisp/elpa/dart-mode-1.0.7/dart-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/dart-mode-1.0.7/dart-mode-pkg /usr/share/emacs/site-lisp/elpa/dart-mode-1.0.7/dart-mode hides /usr/share/emacs/site-lisp/elpa-src/dart-mode-1.0.7/dart-mode /usr/share/emacs/site-lisp/elpa/dash-2.19.1/dash hides /usr/share/emacs/site-lisp/elpa-src/dash-2.19.1/dash /usr/share/emacs/site-lisp/elpa/dash-2.19.1/dash-pkg hides /usr/share/emacs/site-lisp/elpa-src/dash-2.19.1/dash-pkg /usr/share/emacs/site-lisp/elpa/dash-2.19.1/dash-autoloads hides /usr/share/emacs/site-lisp/elpa-src/dash-2.19.1/dash-autoloads /usr/share/emacs/site-lisp/elpa/debian-el-37.16/debian-el-autoloads hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37.16/debian-el-autoloads /usr/share/emacs/site-lisp/elpa/debian-el-37.16/apt-sources hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37.16/apt-sources /usr/share/emacs/site-lisp/elpa/debian-el-37.16/debian-bug hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37.16/debian-bug /usr/share/emacs/site-lisp/elpa/debian-el-37.16/apt-utils hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37.16/apt-utils /usr/share/emacs/site-lisp/elpa/debian-el-37.16/debian-el-pkg hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37.16/debian-el-pkg /usr/share/emacs/site-lisp/elpa/debian-el-37.16/debian-autoloads hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37.16/debian-autoloads /usr/share/emacs/site-lisp/elpa/debian-el-37.16/gnus-BTS hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37.16/gnus-BTS /usr/share/emacs/site-lisp/elpa/debian-el-37.16/deb-view hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37.16/deb-view /usr/share/emacs/site-lisp/elpa/debian-el-37.16/debian-el hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37.16/debian-el /usr/share/emacs/site-lisp/elpa/debian-el-37.16/preseed hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37.16/preseed /usr/share/emacs/site-lisp/elpa/debpaste-0.1.5/debpaste hides /usr/share/emacs/site-lisp/elpa-src/debpaste-0.1.5/debpaste /usr/share/emacs/site-lisp/elpa/debpaste-0.1.5/debpaste-pkg hides /usr/share/emacs/site-lisp/elpa-src/debpaste-0.1.5/debpaste-pkg /usr/share/emacs/site-lisp/elpa/debpaste-0.1.5/debpaste-autoloads hides /usr/share/emacs/site-lisp/elpa-src/debpaste-0.1.5/debpaste-autoloads /usr/share/emacs/site-lisp/elpa/devscripts-40/devscripts hides /usr/share/emacs/site-lisp/elpa-src/devscripts-40/devscripts /usr/share/emacs/site-lisp/elpa/devscripts-40/devscripts-autoloads hides /usr/share/emacs/site-lisp/elpa-src/devscripts-40/devscripts-autoloads /usr/share/emacs/site-lisp/elpa/devscripts-40/pbuilder-mode hides /usr/share/emacs/site-lisp/elpa-src/devscripts-40/pbuilder-mode /usr/share/emacs/site-lisp/elpa/devscripts-40/devscripts-pkg hides /usr/share/emacs/site-lisp/elpa-src/devscripts-40/devscripts-pkg /usr/share/emacs/site-lisp/elpa/devscripts-40/pbuilder-log-view-mode hides /usr/share/emacs/site-lisp/elpa-src/devscripts-40/pbuilder-log-view-mode /usr/share/emacs/site-lisp/elpa/dockerfile-mode-1.7/dockerfile-mode hides /usr/share/emacs/site-lisp/elpa-src/dockerfile-mode-1.7/dockerfile-mode /usr/share/emacs/site-lisp/elpa/dockerfile-mode-1.7/dockerfile-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/dockerfile-mode-1.7/dockerfile-mode-autoloads /usr/share/emacs/site-lisp/elpa/dockerfile-mode-1.7/dockerfile-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/dockerfile-mode-1.7/dockerfile-mode-pkg /usr/share/emacs/site-lisp/elpa/dpkg-dev-el-37.16/debian-bts-control hides /usr/share/emacs/site-lisp/elpa-src/dpkg-dev-el-37.16/debian-bts-control /usr/share/emacs/site-lisp/elpa/dpkg-dev-el-37.16/debian-changelog-mode hides /usr/share/emacs/site-lisp/elpa-src/dpkg-dev-el-37.16/debian-changelog-mode /usr/share/emacs/site-lisp/elpa/dpkg-dev-el-37.16/debian-autopkgtest-control-mode hides /usr/share/emacs/site-lisp/elpa-src/dpkg-dev-el-37.16/debian-autopkgtest-control-mode /usr/share/emacs/site-lisp/elpa/dpkg-dev-el-37.16/dpkg-dev-el-autoloads hides /usr/share/emacs/site-lisp/elpa-src/dpkg-dev-el-37.16/dpkg-dev-el-autoloads /usr/share/emacs/site-lisp/elpa/dpkg-dev-el-37.16/dpkg-dev-el-pkg hides /usr/share/emacs/site-lisp/elpa-src/dpkg-dev-el-37.16/dpkg-dev-el-pkg /usr/share/emacs/site-lisp/elpa/dpkg-dev-el-37.16/dpkg-dev-el hides /usr/share/emacs/site-lisp/elpa-src/dpkg-dev-el-37.16/dpkg-dev-el /usr/share/emacs/site-lisp/elpa/dpkg-dev-el-37.16/debian-control-mode hides /usr/share/emacs/site-lisp/elpa-src/dpkg-dev-el-37.16/debian-control-mode /usr/share/emacs/site-lisp/elpa/dpkg-dev-el-37.16/debian-copyright hides /usr/share/emacs/site-lisp/elpa-src/dpkg-dev-el-37.16/debian-copyright /usr/share/emacs/site-lisp/elpa/dpkg-dev-el-37.16/readme-debian hides /usr/share/emacs/site-lisp/elpa-src/dpkg-dev-el-37.16/readme-debian /usr/share/emacs/site-lisp/elpa/exec-path-from-shell-2.1/exec-path-from-shell hides /usr/share/emacs/site-lisp/elpa-src/exec-path-from-shell-2.1/exec-path-from-shell /usr/share/emacs/site-lisp/elpa/exec-path-from-shell-2.1/exec-path-from-shell-autoloads hides /usr/share/emacs/site-lisp/elpa-src/exec-path-from-shell-2.1/exec-path-from-shell-autoloads /usr/share/emacs/site-lisp/elpa/exec-path-from-shell-2.1/exec-path-from-shell-pkg hides /usr/share/emacs/site-lisp/elpa-src/exec-path-from-shell-2.1/exec-path-from-shell-pkg /usr/share/emacs/site-lisp/elpa/format-all-0.6.0/format-all hides /usr/share/emacs/site-lisp/elpa-src/format-all-0.6.0/format-all /usr/share/emacs/site-lisp/elpa/format-all-0.6.0/format-all-pkg hides /usr/share/emacs/site-lisp/elpa-src/format-all-0.6.0/format-all-pkg /usr/share/emacs/site-lisp/elpa/format-all-0.6.0/format-all-autoloads hides /usr/share/emacs/site-lisp/elpa-src/format-all-0.6.0/format-all-autoloads /usr/share/emacs/site-lisp/elpa/git-commit-3.3.0/git-commit hides /usr/share/emacs/site-lisp/elpa-src/git-commit-3.3.0/git-commit /usr/share/emacs/site-lisp/elpa/git-commit-3.3.0/git-commit-autoloads hides /usr/share/emacs/site-lisp/elpa-src/git-commit-3.3.0/git-commit-autoloads /usr/share/emacs/site-lisp/elpa/git-commit-3.3.0/git-commit-pkg hides /usr/share/emacs/site-lisp/elpa-src/git-commit-3.3.0/git-commit-pkg /usr/share/emacs/site-lisp/elpa/git-modes-1.4.2/git-modes hides /usr/share/emacs/site-lisp/elpa-src/git-modes-1.4.2/git-modes /usr/share/emacs/site-lisp/elpa/git-modes-1.4.2/git-modes-pkg hides /usr/share/emacs/site-lisp/elpa-src/git-modes-1.4.2/git-modes-pkg /usr/share/emacs/site-lisp/elpa/git-modes-1.4.2/git-modes-autoloads hides /usr/share/emacs/site-lisp/elpa-src/git-modes-1.4.2/git-modes-autoloads /usr/share/emacs/site-lisp/elpa/gitattributes-mode-1.4.2/gitattributes-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/gitattributes-mode-1.4.2/gitattributes-mode-pkg /usr/share/emacs/site-lisp/elpa/gitattributes-mode-1.4.2/gitattributes-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/gitattributes-mode-1.4.2/gitattributes-mode-autoloads /usr/share/emacs/site-lisp/elpa/gitattributes-mode-1.4.2/gitattributes-mode hides /usr/share/emacs/site-lisp/elpa-src/gitattributes-mode-1.4.2/gitattributes-mode /usr/share/emacs/site-lisp/elpa/gitconfig-mode-1.4.2/gitconfig-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/gitconfig-mode-1.4.2/gitconfig-mode-autoloads /usr/share/emacs/site-lisp/elpa/gitconfig-mode-1.4.2/gitconfig-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/gitconfig-mode-1.4.2/gitconfig-mode-pkg /usr/share/emacs/site-lisp/elpa/gitconfig-mode-1.4.2/gitconfig-mode hides /usr/share/emacs/site-lisp/elpa-src/gitconfig-mode-1.4.2/gitconfig-mode /usr/share/emacs/site-lisp/elpa/gitignore-mode-1.4.2/gitignore-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/gitignore-mode-1.4.2/gitignore-mode-pkg /usr/share/emacs/site-lisp/elpa/gitignore-mode-1.4.2/gitignore-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/gitignore-mode-1.4.2/gitignore-mode-autoloads /usr/share/emacs/site-lisp/elpa/gitignore-mode-1.4.2/gitignore-mode hides /usr/share/emacs/site-lisp/elpa-src/gitignore-mode-1.4.2/gitignore-mode /usr/share/emacs/site-lisp/elpa/gnuplot-0.8.1/gnuplot hides /usr/share/emacs/site-lisp/elpa-src/gnuplot-0.8.1/gnuplot /usr/share/emacs/site-lisp/elpa/gnuplot-0.8.1/gnuplot-autoloads hides /usr/share/emacs/site-lisp/elpa-src/gnuplot-0.8.1/gnuplot-autoloads /usr/share/emacs/site-lisp/elpa/debian-el-37.16/debian-autoloads hides /usr/share/emacs/site-lisp/elpa-src/gnuplot-0.8.1/debian-autoloads /usr/share/emacs/site-lisp/elpa/gnuplot-0.8.1/gnuplot-pkg hides /usr/share/emacs/site-lisp/elpa-src/gnuplot-0.8.1/gnuplot-pkg /usr/share/emacs/site-lisp/elpa/gnuplot-0.8.1/gnuplot-context hides /usr/share/emacs/site-lisp/elpa-src/gnuplot-0.8.1/gnuplot-context /usr/share/emacs/site-lisp/elpa/gnuplot-0.8.1/gnuplot-gui hides /usr/share/emacs/site-lisp/elpa-src/gnuplot-0.8.1/gnuplot-gui /usr/share/emacs/site-lisp/elpa/go-mode-1.6.0/go-mode hides /usr/share/emacs/site-lisp/elpa-src/go-mode-1.6.0/go-mode /usr/share/emacs/site-lisp/elpa/go-mode-1.6.0/go-guru hides /usr/share/emacs/site-lisp/elpa-src/go-mode-1.6.0/go-guru /usr/share/emacs/site-lisp/elpa/go-mode-1.6.0/go-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/go-mode-1.6.0/go-mode-pkg /usr/share/emacs/site-lisp/elpa/go-mode-1.6.0/go-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/go-mode-1.6.0/go-mode-autoloads /usr/share/emacs/site-lisp/elpa/go-mode-1.6.0/go-rename hides /usr/share/emacs/site-lisp/elpa-src/go-mode-1.6.0/go-rename /usr/share/emacs/site-lisp/elpa/graphviz-dot-mode-0.4.2/graphviz-dot-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/graphviz-dot-mode-0.4.2/graphviz-dot-mode-autoloads /usr/share/emacs/site-lisp/elpa/graphviz-dot-mode-0.4.2/graphviz-dot-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/graphviz-dot-mode-0.4.2/graphviz-dot-mode-pkg /usr/share/emacs/site-lisp/elpa/graphviz-dot-mode-0.4.2/graphviz-dot-mode hides /usr/share/emacs/site-lisp/elpa-src/graphviz-dot-mode-0.4.2/graphviz-dot-mode /usr/share/emacs/site-lisp/elpa/ht-2.3/ht-pkg hides /usr/share/emacs/site-lisp/elpa-src/ht-2.3/ht-pkg /usr/share/emacs/site-lisp/elpa/ht-2.3/ht-autoloads hides /usr/share/emacs/site-lisp/elpa-src/ht-2.3/ht-autoloads /usr/share/emacs/site-lisp/elpa/ht-2.3/ht hides /usr/share/emacs/site-lisp/elpa-src/ht-2.3/ht /usr/share/emacs/site-lisp/elpa/hydra-0.15.0/hydra-ox hides /usr/share/emacs/site-lisp/elpa-src/hydra-0.15.0/hydra-ox /usr/share/emacs/site-lisp/elpa/hydra-0.15.0/hydra-autoloads hides /usr/share/emacs/site-lisp/elpa-src/hydra-0.15.0/hydra-autoloads /usr/share/emacs/site-lisp/elpa/hydra-0.15.0/hydra-pkg hides /usr/share/emacs/site-lisp/elpa-src/hydra-0.15.0/hydra-pkg /usr/share/emacs/site-lisp/elpa/hydra-0.15.0/hydra-examples hides /usr/share/emacs/site-lisp/elpa-src/hydra-0.15.0/hydra-examples /usr/share/emacs/site-lisp/elpa/hydra-0.15.0/hydra hides /usr/share/emacs/site-lisp/elpa-src/hydra-0.15.0/hydra /usr/share/emacs/site-lisp/elpa/inheritenv-0.2/inheritenv hides /usr/share/emacs/site-lisp/elpa-src/inheritenv-0.2/inheritenv /usr/share/emacs/site-lisp/elpa/inheritenv-0.2/inheritenv-autoloads hides /usr/share/emacs/site-lisp/elpa-src/inheritenv-0.2/inheritenv-autoloads /usr/share/emacs/site-lisp/elpa/inheritenv-0.2/inheritenv-pkg hides /usr/share/emacs/site-lisp/elpa-src/inheritenv-0.2/inheritenv-pkg /usr/share/emacs/site-lisp/elpa/inheritenv-0.2/inheritenv-tests hides /usr/share/emacs/site-lisp/elpa-src/inheritenv-0.2/inheritenv-tests /usr/share/emacs/site-lisp/elpa/language-id-0.20/language-id hides /usr/share/emacs/site-lisp/elpa-src/language-id-0.20/language-id /usr/share/emacs/site-lisp/elpa/language-id-0.20/language-id-pkg hides /usr/share/emacs/site-lisp/elpa-src/language-id-0.20/language-id-pkg /usr/share/emacs/site-lisp/elpa/language-id-0.20/language-id-autoloads hides /usr/share/emacs/site-lisp/elpa-src/language-id-0.20/language-id-autoloads /usr/share/emacs/site-lisp/elpa/lintian-0.1/lintian-pkg hides /usr/share/emacs/site-lisp/elpa-src/lintian-0.1/lintian-pkg /usr/share/emacs/site-lisp/elpa/lintian-0.1/lintian-autoloads hides /usr/share/emacs/site-lisp/elpa-src/lintian-0.1/lintian-autoloads /usr/share/emacs/site-lisp/elpa/lintian-0.1/lintian hides /usr/share/emacs/site-lisp/elpa-src/lintian-0.1/lintian /usr/share/emacs/site-lisp/elpa/lv-0.15.0/lv-autoloads hides /usr/share/emacs/site-lisp/elpa-src/lv-0.15.0/lv-autoloads /usr/share/emacs/site-lisp/elpa/lv-0.15.0/lv hides /usr/share/emacs/site-lisp/elpa-src/lv-0.15.0/lv /usr/share/emacs/site-lisp/elpa/lv-0.15.0/lv-pkg hides /usr/share/emacs/site-lisp/elpa-src/lv-0.15.0/lv-pkg /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-remote hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-remote /usr/share/emacs/site-lisp/elpa/magit-3.3.0/git-rebase hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/git-rebase /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-bisect hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-bisect /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-margin hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-margin /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-merge hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-merge /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-section hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-section /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-patch hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-patch /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-commit hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-commit /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-autoloads hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-autoloads /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-files hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-files /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-stash hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-stash /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-bookmark hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-bookmark /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-submodule hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-submodule /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-apply hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-apply /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-repos hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-repos /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-core hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-core /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-subtree hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-subtree /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-autorevert hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-autorevert /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-gitignore hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-gitignore /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-transient hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-transient /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-extras hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-extras /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-git hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-git /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-notes hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-notes /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-reflog hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-reflog /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-mode hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-mode /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-push hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-push /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-tag hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-tag /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-process hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-process /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-ediff hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-ediff /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-imenu hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-imenu /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-diff hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-diff /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-clone hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-clone /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-log hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-log /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-utils hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-utils /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-wip hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-wip /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-branch hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-branch /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-pull hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-pull /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-reset hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-reset /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-sequence hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-sequence /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-status hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-status /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-refs hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-refs /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-obsolete hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-obsolete /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-fetch hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-fetch /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-worktree hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-worktree /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-blame hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-blame /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-pkg hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-pkg /usr/share/emacs/site-lisp/elpa/magit-section-3.3.0/magit-section-autoloads hides /usr/share/emacs/site-lisp/elpa-src/magit-section-3.3.0/magit-section-autoloads /usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-section hides /usr/share/emacs/site-lisp/elpa-src/magit-section-3.3.0/magit-section /usr/share/emacs/site-lisp/elpa/magit-section-3.3.0/magit-section-pkg hides /usr/share/emacs/site-lisp/elpa-src/magit-section-3.3.0/magit-section-pkg /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/matlab-cgen hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/matlab-cgen /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/matlab-scan hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/matlab-scan /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/matlab-publish hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/matlab-publish /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/matlab hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/matlab /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/matlab-complete hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/matlab-complete /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/matlab-syntax hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/matlab-syntax /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/tlc hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/tlc /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/matlab-netshell hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/matlab-netshell /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/semantic-matlab hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/semantic-matlab /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/mlint hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/mlint /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/company-matlab-shell hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/company-matlab-shell /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/matlab-shell-gud hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/matlab-shell-gud /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/mlgud hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/mlgud /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/srecode-matlab hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/srecode-matlab /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/matlab-compat hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/matlab-compat /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/matlab-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/matlab-mode-pkg /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/matlab-maint hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/matlab-maint /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/cedet-matlab hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/cedet-matlab /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/matlab-topic hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/matlab-topic /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/linemark hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/linemark /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/matlab-shell hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/matlab-shell /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/semanticdb-matlab hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/semanticdb-matlab /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/matlab-load hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/matlab-load /usr/share/emacs/site-lisp/elpa/matlab-mode-4.0/matlab-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/matlab-mode-4.0/matlab-mode-autoloads /usr/share/emacs/site-lisp/elpa/meson-mode-0.2/meson-mode hides /usr/share/emacs/site-lisp/elpa-src/meson-mode-0.2/meson-mode /usr/share/emacs/site-lisp/elpa/meson-mode-0.2/utils hides /usr/share/emacs/site-lisp/elpa-src/meson-mode-0.2/utils /usr/share/emacs/site-lisp/elpa/meson-mode-0.2/meson-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/meson-mode-0.2/meson-mode-autoloads /usr/share/emacs/site-lisp/elpa/meson-mode-0.2/meson-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/meson-mode-0.2/meson-mode-pkg /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-draft hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-draft /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-modeline hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-modeline /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-view hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-view /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-message hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-message /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-helpers hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-helpers /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-pkg hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-pkg /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-bookmarks hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-bookmarks /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-thread hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-thread /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-mime-parts hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-mime-parts /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-server hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-server /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-query-items hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-query-items /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-contrib hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-contrib /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-window hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-window /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-config hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-config /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-autoloads hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-autoloads /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-icalendar hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-icalendar /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-mark hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-mark /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-headers hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-headers /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-org hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-org /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-contacts hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-contacts /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-speedbar hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-speedbar /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-obsolete hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-obsolete /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-vars hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-vars /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-actions hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-actions /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-main hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-main /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-search hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-search /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-notification hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-notification /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-context hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-context /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-compose hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-compose /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-lists hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-lists /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-folders hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-folders /usr/share/emacs/site-lisp/elpa/mu4e-1.12.5/mu4e-update hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.12.5/mu4e-update /usr/share/emacs/site-lisp/elpa/nginx-mode-1.1.9/nginx-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/nginx-mode-1.1.9/nginx-mode-autoloads /usr/share/emacs/site-lisp/elpa/nginx-mode-1.1.9/nginx-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/nginx-mode-1.1.9/nginx-mode-pkg /usr/share/emacs/site-lisp/elpa/nginx-mode-1.1.9/nginx-mode hides /usr/share/emacs/site-lisp/elpa-src/nginx-mode-1.1.9/nginx-mode /usr/share/emacs/site-lisp/elpa/paredit-26/paredit-autoloads hides /usr/share/emacs/site-lisp/elpa-src/paredit-26/paredit-autoloads /usr/share/emacs/site-lisp/elpa/paredit-26/paredit-pkg hides /usr/share/emacs/site-lisp/elpa-src/paredit-26/paredit-pkg /usr/share/emacs/site-lisp/elpa/paredit-26/paredit hides /usr/share/emacs/site-lisp/elpa-src/paredit-26/paredit /usr/share/emacs/site-lisp/elpa/persist-0.6.1/persist hides /usr/share/emacs/site-lisp/elpa-src/persist-0.6.1/persist /usr/share/emacs/site-lisp/elpa/persist-0.6.1/persist-pkg hides /usr/share/emacs/site-lisp/elpa-src/persist-0.6.1/persist-pkg /usr/share/emacs/site-lisp/elpa/persist-0.6.1/persist-autoloads hides /usr/share/emacs/site-lisp/elpa-src/persist-0.6.1/persist-autoloads /usr/share/emacs/site-lisp/elpa/pfuture-1.9/pfuture hides /usr/share/emacs/site-lisp/elpa-src/pfuture-1.9/pfuture /usr/share/emacs/site-lisp/elpa/pfuture-1.9/pfuture-autoloads hides /usr/share/emacs/site-lisp/elpa-src/pfuture-1.9/pfuture-autoloads /usr/share/emacs/site-lisp/elpa/pfuture-1.9/pfuture-pkg hides /usr/share/emacs/site-lisp/elpa-src/pfuture-1.9/pfuture-pkg /usr/share/emacs/site-lisp/elpa/po-mode-0.21/po-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/po-mode-0.21/po-mode-pkg /usr/share/emacs/site-lisp/elpa/po-mode-0.21/po-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/po-mode-0.21/po-mode-autoloads /usr/share/emacs/site-lisp/elpa/po-mode-0.21/po-mode hides /usr/share/emacs/site-lisp/elpa-src/po-mode-0.21/po-mode /usr/share/emacs/site-lisp/elpa/popon-0.13/popon hides /usr/share/emacs/site-lisp/elpa-src/popon-0.13/popon /usr/share/emacs/site-lisp/elpa/popon-0.13/popon-autoloads hides /usr/share/emacs/site-lisp/elpa-src/popon-0.13/popon-autoloads /usr/share/emacs/site-lisp/elpa/popon-0.13/popon-pkg hides /usr/share/emacs/site-lisp/elpa-src/popon-0.13/popon-pkg /usr/share/emacs/site-lisp/elpa/posframe-1.1.7/posframe-pkg hides /usr/share/emacs/site-lisp/elpa-src/posframe-1.1.7/posframe-pkg /usr/share/emacs/site-lisp/elpa/posframe-1.1.7/posframe-autoloads hides /usr/share/emacs/site-lisp/elpa-src/posframe-1.1.7/posframe-autoloads /usr/share/emacs/site-lisp/elpa/posframe-1.1.7/posframe hides /usr/share/emacs/site-lisp/elpa-src/posframe-1.1.7/posframe /usr/share/emacs/site-lisp/elpa/projectile-2.8.0/projectile-pkg hides /usr/share/emacs/site-lisp/elpa-src/projectile-2.8.0/projectile-pkg /usr/share/emacs/site-lisp/elpa/projectile-2.8.0/projectile-autoloads hides /usr/share/emacs/site-lisp/elpa-src/projectile-2.8.0/projectile-autoloads /usr/share/emacs/site-lisp/elpa/projectile-2.8.0/projectile hides /usr/share/emacs/site-lisp/elpa-src/projectile-2.8.0/projectile /usr/share/emacs/site-lisp/elpa/py-isort-2016.1/py-isort hides /usr/share/emacs/site-lisp/elpa-src/py-isort-2016.1/py-isort /usr/share/emacs/site-lisp/elpa/py-isort-2016.1/py-isort-autoloads hides /usr/share/emacs/site-lisp/elpa-src/py-isort-2016.1/py-isort-autoloads /usr/share/emacs/site-lisp/elpa/py-isort-2016.1/py-isort-pkg hides /usr/share/emacs/site-lisp/elpa-src/py-isort-2016.1/py-isort-pkg /usr/share/emacs/site-lisp/elpa/pyvenv-1.21/pyvenv hides /usr/share/emacs/site-lisp/elpa-src/pyvenv-1.21/pyvenv /usr/share/emacs/site-lisp/elpa/pyvenv-1.21/pyvenv-pkg hides /usr/share/emacs/site-lisp/elpa-src/pyvenv-1.21/pyvenv-pkg /usr/share/emacs/site-lisp/elpa/pyvenv-1.21/pyvenv-autoloads hides /usr/share/emacs/site-lisp/elpa-src/pyvenv-1.21/pyvenv-autoloads /usr/share/emacs/site-lisp/elpa/rust-mode-1.0.5/rust-common hides /usr/share/emacs/site-lisp/elpa-src/rust-mode-1.0.5/rust-common /usr/share/emacs/site-lisp/elpa/rust-mode-1.0.5/rust-mode-tests hides /usr/share/emacs/site-lisp/elpa-src/rust-mode-1.0.5/rust-mode-tests /usr/share/emacs/site-lisp/elpa/rust-mode-1.0.5/rust-mode-treesitter hides /usr/share/emacs/site-lisp/elpa-src/rust-mode-1.0.5/rust-mode-treesitter /usr/share/emacs/site-lisp/elpa/rust-mode-1.0.5/rust-cargo hides /usr/share/emacs/site-lisp/elpa-src/rust-mode-1.0.5/rust-cargo /usr/share/emacs/site-lisp/elpa/rust-mode-1.0.5/rust-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/rust-mode-1.0.5/rust-mode-autoloads /usr/share/emacs/site-lisp/elpa/rust-mode-1.0.5/rust-utils hides /usr/share/emacs/site-lisp/elpa-src/rust-mode-1.0.5/rust-utils /usr/share/emacs/site-lisp/elpa/rust-mode-1.0.5/rust-rustfmt hides /usr/share/emacs/site-lisp/elpa-src/rust-mode-1.0.5/rust-rustfmt /usr/share/emacs/site-lisp/elpa/rust-mode-1.0.5/rust-mode hides /usr/share/emacs/site-lisp/elpa-src/rust-mode-1.0.5/rust-mode /usr/share/emacs/site-lisp/elpa/rust-mode-1.0.5/rust-playpen hides /usr/share/emacs/site-lisp/elpa-src/rust-mode-1.0.5/rust-playpen /usr/share/emacs/site-lisp/elpa/rust-mode-1.0.5/rust-prog-mode hides /usr/share/emacs/site-lisp/elpa-src/rust-mode-1.0.5/rust-prog-mode /usr/share/emacs/site-lisp/elpa/rust-mode-1.0.5/rust-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/rust-mode-1.0.5/rust-mode-pkg /usr/share/emacs/site-lisp/elpa/rust-mode-1.0.5/rust-cargo-tests hides /usr/share/emacs/site-lisp/elpa-src/rust-mode-1.0.5/rust-cargo-tests /usr/share/emacs/site-lisp/elpa/rust-mode-1.0.5/rust-compile hides /usr/share/emacs/site-lisp/elpa-src/rust-mode-1.0.5/rust-compile /usr/share/emacs/site-lisp/elpa/s-1.12.0/s-autoloads hides /usr/share/emacs/site-lisp/elpa-src/s-1.12.0/s-autoloads /usr/share/emacs/site-lisp/elpa/s-1.12.0/s-pkg hides /usr/share/emacs/site-lisp/elpa-src/s-1.12.0/s-pkg /usr/share/emacs/site-lisp/elpa/s-1.12.0/s hides /usr/share/emacs/site-lisp/elpa-src/s-1.12.0/s /usr/share/emacs/site-lisp/elpa/scala-mode-1.1.0/scala-mode-map hides /usr/share/emacs/site-lisp/elpa-src/scala-mode-1.1.0/scala-mode-map /usr/share/emacs/site-lisp/elpa/scala-mode-1.1.0/scala-mode-indent hides /usr/share/emacs/site-lisp/elpa-src/scala-mode-1.1.0/scala-mode-indent /usr/share/emacs/site-lisp/elpa/scala-mode-1.1.0/scala-mode-syntax hides /usr/share/emacs/site-lisp/elpa-src/scala-mode-1.1.0/scala-mode-syntax /usr/share/emacs/site-lisp/elpa/scala-mode-1.1.0/scala-mode-lib hides /usr/share/emacs/site-lisp/elpa-src/scala-mode-1.1.0/scala-mode-lib /usr/share/emacs/site-lisp/elpa/scala-mode-1.1.0/scala-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/scala-mode-1.1.0/scala-mode-pkg /usr/share/emacs/site-lisp/elpa/scala-mode-1.1.0/scala-mode-prettify-symbols hides /usr/share/emacs/site-lisp/elpa-src/scala-mode-1.1.0/scala-mode-prettify-symbols /usr/share/emacs/site-lisp/elpa/scala-mode-1.1.0/scala-compile hides /usr/share/emacs/site-lisp/elpa-src/scala-mode-1.1.0/scala-compile /usr/share/emacs/site-lisp/elpa/scala-mode-1.1.0/scala-mode hides /usr/share/emacs/site-lisp/elpa-src/scala-mode-1.1.0/scala-mode /usr/share/emacs/site-lisp/elpa/scala-mode-1.1.0/scala-organise hides /usr/share/emacs/site-lisp/elpa-src/scala-mode-1.1.0/scala-organise /usr/share/emacs/site-lisp/elpa/scala-mode-1.1.0/scala-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/scala-mode-1.1.0/scala-mode-autoloads /usr/share/emacs/site-lisp/elpa/scala-mode-1.1.0/scala-mode-paragraph hides /usr/share/emacs/site-lisp/elpa-src/scala-mode-1.1.0/scala-mode-paragraph /usr/share/emacs/site-lisp/elpa/scala-mode-1.1.0/scala-mode-imenu hides /usr/share/emacs/site-lisp/elpa-src/scala-mode-1.1.0/scala-mode-imenu /usr/share/emacs/site-lisp/elpa/scala-mode-1.1.0/scala-mode-fontlock hides /usr/share/emacs/site-lisp/elpa-src/scala-mode-1.1.0/scala-mode-fontlock /usr/share/emacs/site-lisp/elpa/seq-2.24/seq-24 hides /usr/share/emacs/site-lisp/elpa-src/seq-2.24/seq-24 /usr/share/emacs/site-lisp/elpa/seq-2.24/seq-autoloads hides /usr/share/emacs/site-lisp/elpa-src/seq-2.24/seq-autoloads /usr/share/emacs/site-lisp/elpa/seq-2.24/seq hides /usr/share/emacs/site-lisp/elpa-src/seq-2.24/seq /usr/share/emacs/site-lisp/elpa/seq-2.24/seq-pkg hides /usr/share/emacs/site-lisp/elpa-src/seq-2.24/seq-pkg /usr/share/emacs/site-lisp/elpa/seq-2.24/seq-25 hides /usr/share/emacs/site-lisp/elpa-src/seq-2.24/seq-25 /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-project-follow-mode hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-project-follow-mode /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-dom hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-dom /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-follow-mode hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-follow-mode /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-logging hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-logging /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-autoloads hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-autoloads /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-compatibility hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-compatibility /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-async hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-async /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-themes hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-themes /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-mouse-interface hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-mouse-interface /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-tag-follow-mode hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-tag-follow-mode /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-bookmarks hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-bookmarks /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-fringe-indicator hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-fringe-indicator /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-filewatch-mode hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-filewatch-mode /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-interface hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-interface /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-tags hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-tags /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-visuals hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-visuals /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-core-utils hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-core-utils /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-peek-mode hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-peek-mode /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-annotations hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-annotations /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-icons hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-icons /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-persistence hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-persistence /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-diagnostics hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-diagnostics /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-scope hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-scope /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-extensions hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-extensions /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-rendering hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-rendering /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-customization hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-customization /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-file-management hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-file-management /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-faces hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-faces /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-macros hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-macros /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-git-commit-diff-mode hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-git-commit-diff-mode /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-treelib hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-treelib /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-hydras hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-hydras /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-pkg hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-pkg /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-header-line hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-header-line /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-icons-dired hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-icons-dired /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-workspaces hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-workspaces /usr/share/emacs/site-lisp/elpa/treemacs-3.1/treemacs-mode hides /usr/share/emacs/site-lisp/elpa-src/treemacs-3.1/treemacs-mode /usr/share/emacs/site-lisp/elpa/treemacs-magit-3.1/treemacs-magit hides /usr/share/emacs/site-lisp/elpa-src/treemacs-magit-3.1/treemacs-magit /usr/share/emacs/site-lisp/elpa/treemacs-magit-3.1/treemacs-magit-pkg hides /usr/share/emacs/site-lisp/elpa-src/treemacs-magit-3.1/treemacs-magit-pkg /usr/share/emacs/site-lisp/elpa/treemacs-magit-3.1/treemacs-magit-autoloads hides /usr/share/emacs/site-lisp/elpa-src/treemacs-magit-3.1/treemacs-magit-autoloads /usr/share/emacs/site-lisp/elpa/treemacs-projectile-3.1/treemacs-projectile-pkg hides /usr/share/emacs/site-lisp/elpa-src/treemacs-projectile-3.1/treemacs-projectile-pkg /usr/share/emacs/site-lisp/elpa/treemacs-projectile-3.1/treemacs-projectile-autoloads hides /usr/share/emacs/site-lisp/elpa-src/treemacs-projectile-3.1/treemacs-projectile-autoloads /usr/share/emacs/site-lisp/elpa/treemacs-projectile-3.1/treemacs-projectile hides /usr/share/emacs/site-lisp/elpa-src/treemacs-projectile-3.1/treemacs-projectile /usr/share/emacs/site-lisp/elpa/vterm-0.0.2/vterm-load-path hides /usr/share/emacs/site-lisp/elpa-src/vterm-0.0.2/vterm-load-path /usr/share/emacs/site-lisp/elpa/vterm-0.0.2/vterm hides /usr/share/emacs/site-lisp/elpa-src/vterm-0.0.2/vterm /usr/share/emacs/site-lisp/elpa/vterm-0.0.2/vterm-pkg hides /usr/share/emacs/site-lisp/elpa-src/vterm-0.0.2/vterm-pkg /usr/share/emacs/site-lisp/elpa/vterm-0.0.2/vterm-autoloads hides /usr/share/emacs/site-lisp/elpa-src/vterm-0.0.2/vterm-autoloads /usr/share/emacs/site-lisp/elpa/web-mode-17.3.13/web-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/web-mode-17.3.13/web-mode-pkg /usr/share/emacs/site-lisp/elpa/web-mode-17.3.13/web-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/web-mode-17.3.13/web-mode-autoloads /usr/share/emacs/site-lisp/elpa/web-mode-17.3.13/web-mode hides /usr/share/emacs/site-lisp/elpa-src/web-mode-17.3.13/web-mode /usr/share/emacs/site-lisp/elpa/with-editor-3.3.2/with-editor-pkg hides /usr/share/emacs/site-lisp/elpa-src/with-editor-3.3.2/with-editor-pkg /usr/share/emacs/site-lisp/elpa/with-editor-3.3.2/with-editor-autoloads hides /usr/share/emacs/site-lisp/elpa-src/with-editor-3.3.2/with-editor-autoloads /usr/share/emacs/site-lisp/elpa/with-editor-3.3.2/with-editor hides /usr/share/emacs/site-lisp/elpa-src/with-editor-3.3.2/with-editor /usr/share/emacs/site-lisp/elpa/xml-rpc-1.6.17/xml-rpc hides /usr/share/emacs/site-lisp/elpa-src/xml-rpc-1.6.17/xml-rpc /usr/share/emacs/site-lisp/elpa/xml-rpc-1.6.17/xml-rpc-pkg hides /usr/share/emacs/site-lisp/elpa-src/xml-rpc-1.6.17/xml-rpc-pkg /usr/share/emacs/site-lisp/elpa/xml-rpc-1.6.17/xml-rpc-autoloads hides /usr/share/emacs/site-lisp/elpa-src/xml-rpc-1.6.17/xml-rpc-autoloads /usr/share/emacs/site-lisp/elpa/yaml-mode-0.0.16/yaml-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/yaml-mode-0.0.16/yaml-mode-pkg /usr/share/emacs/site-lisp/elpa/yaml-mode-0.0.16/yaml-mode hides /usr/share/emacs/site-lisp/elpa-src/yaml-mode-0.0.16/yaml-mode /usr/share/emacs/site-lisp/elpa/yaml-mode-0.0.16/yaml-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/yaml-mode-0.0.16/yaml-mode-autoloads /usr/share/emacs/site-lisp/elpa/yasnippet-0.14.1/yasnippet-autoloads hides /usr/share/emacs/site-lisp/elpa-src/yasnippet-0.14.1/yasnippet-autoloads /usr/share/emacs/site-lisp/elpa/yasnippet-0.14.1/yasnippet-pkg hides /usr/share/emacs/site-lisp/elpa-src/yasnippet-0.14.1/yasnippet-pkg /usr/share/emacs/site-lisp/elpa/yasnippet-0.14.1/yasnippet hides /usr/share/emacs/site-lisp/elpa-src/yasnippet-0.14.1/yasnippet /usr/share/emacs/site-lisp/elpa/yasnippet-snippets-20220713/yasnippet-snippets hides /usr/share/emacs/site-lisp/elpa-src/yasnippet-snippets-20220713/yasnippet-snippets /usr/share/emacs/site-lisp/elpa/yasnippet-snippets-20220713/yasnippet-snippets-pkg hides /usr/share/emacs/site-lisp/elpa-src/yasnippet-snippets-20220713/yasnippet-snippets-pkg /usr/share/emacs/site-lisp/elpa/yasnippet-snippets-20220713/yasnippet-snippets-autoloads hides /usr/share/emacs/site-lisp/elpa-src/yasnippet-snippets-20220713/yasnippet-snippets-autoloads /usr/share/emacs/site-lisp/elpa/zenburn-theme-2.8.0/zenburn-theme hides /usr/share/emacs/site-lisp/elpa-src/zenburn-theme-2.8.0/zenburn-theme /usr/share/emacs/site-lisp/elpa/zenburn-theme-2.8.0/zenburn-theme-pkg hides /usr/share/emacs/site-lisp/elpa-src/zenburn-theme-2.8.0/zenburn-theme-pkg /usr/share/emacs/site-lisp/elpa/zenburn-theme-2.8.0/zenburn-theme-autoloads hides /usr/share/emacs/site-lisp/elpa-src/zenburn-theme-2.8.0/zenburn-theme-autoloads /usr/share/emacs/site-lisp/elpa/seq-2.24/seq hides /usr/share/emacs/29.4/lisp/emacs-lisp/seq Features: (shadow emacsbug novice debian-copyright shr-color json-ts-mode git-rebase reporter debian-bts-control vterm tramp tramp-loaddefs trampver tramp-integration files-x tramp-compat term ehelp vterm-module debian-changelog-mode debian-bug conf-mode make-mode goto-addr misearch multi-isearch url-queue magit-extras magit-bookmark magit-submodule magit-obsolete magit-blame magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit magit-sequence magit-notes magit-worktree magit-tag magit-merge magit-branch magit-reset magit-files magit-refs magit-status magit magit-repos magit-apply magit-wip magit-log which-func magit-diff git-commit log-edit add-log magit-core magit-autorevert magit-margin magit-transient magit-process with-editor shell magit-mode transient magit-git magit-section magit-utils crm smerge-mode diff mailalias face-remap dired-aux mm-archive qp sort gnus-cite mail-extr textsec uni-scripts idna-mapping ucs-normalize uni-confusable textsec-check gnus-async gnus-bcklg gnus-ml gnus-topic cursor-sensor timezone utf-7 url-cache nnfolder gnus-demon nnml ezgnus gnus-delay gnus-draft gnus-agent gnus-srvr gnus-score score-mode nnvirtual nntp gnus-cache nndraft nnmh auth-source-xoauth2-plugin oauth2 url-http url-auth url-gw plstore eglot external-completion array jsonrpc ert ewoc debug backtrace xref pcase imenu matlab matlab-scan matlab-syntax matlab-compat jka-compr mu4e mu4e-org org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-src ob-comint org-pcomplete pcomplete org-list org-footnote org-faces org-entities noutline outline ob-emacs-lisp ob-core ob-eval org-cycle org-table ol org-fold org-fold-core org-keys oc org-loaddefs find-func org-version org-compat org-macs format-spec mu4e-notification notifications mu4e-main smtpmail mu4e-view mu4e-mime-parts cal-menu calendar cal-loaddefs mu4e-headers mu4e-thread mu4e-actions mu4e-compose mu4e-draft gnus-msg gnus-art mm-uu mml2015 mm-view mml-smime smime dig gnus-sum gnus-group gnus-undo gnus-start gnus-dbus dbus gnus-cloud nnimap nnmail mail-source utf7 nnoo gnus-spec gnus-int gnus-range gnus-win gnus nnheader range mu4e-search mu4e-lists mu4e-bookmarks mu4e-mark mu4e-message shr pixel-fill kinsoku url-file svg xml dom flow-fill mule-util mu4e-contacts mu4e-update mu4e-folders mu4e-context mu4e-query-items mu4e-server mu4e-modeline mu4e-vars mu4e-helpers mu4e-config mu4e-window ido message sendmail yank-media rfc822 mml mml-sec gnus-util mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader mu4e-obsolete windmove flyspell ispell gnutls network-stream puny nsm epa-file epa derived epg rfc6068 epg-config rcirc parse-time iso8601 time-date term/xterm xterm comp comp-cstr server cap-words superword subword vc-hg vc-git diff-mode vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs log-view pcvs-util vc vc-dispatcher bug-reference disp-table whitespace yasnippet-snippets yasnippet cus-edit cus-start wid-edit init mu4e-debian-hx90 zenburn-theme xclip treesit-auto treesit treemacs-project-follow-mode treemacs-follow-mode treemacs-rendering treemacs-annotations treemacs-async treemacs-visuals treemacs-fringe-indicator pulse color treemacs-workspaces treemacs-dom treemacs-icons treemacs-themes treemacs-scope treemacs-core-utils treemacs-logging treemacs-customization pfuture inline ht s hl-line dash keychain-environment exec-path-from-shell corfu-terminal popon corfu-popupinfo corfu-echo corfu compat activities-tabs activities persist bookmark pp edmacro kmacro advice icomplete cus-load flymake-proc flymake project compile text-property-search comint ansi-osc ansi-color ring warnings icons thingatpt cl-extra help-mode use-package use-package-ensure use-package-delight use-package-diminish use-package-bind-key bind-key easy-mmode use-package-core display-line-numbers autorevert filenotify keychain-environment-autoloads treesit-auto-autoloads xclip-autoloads rx info debian-el dired dired-loaddefs finder-inf package browse-url url url-proxy url-privacy url-expand url-methods url-history url-cookie generate-lisp-file url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs password-cache json subr-x map byte-opt gv bytecomp byte-compile url-vars cl-loaddefs cl-lib rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic indonesian philippine cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget keymap hashtable-print-readable backquote threads dbusbind inotify lcms2 dynamic-setting system-font-setting font-render-setting cairo move-toolbar gtk x-toolkit xinput2 x multi-tty make-network-process native-compile emacs) Memory information: ((conses 16 1385704 157406) (symbols 48 42601 43) (strings 32 181071 16554) (string-bytes 1 5513742) (vectors 16 115417) (vector-slots 8 2872186 223315) (floats 8 1025 2197) (intervals 56 42184 12669) (buffers 984 116)) -- Xiyue Deng --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0001-Show-full-authentication-URL-to-let-user-choose-how-.patch >From 2b9e50cb0948e0b4f28883042109994ffa295d3d Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Sun, 21 Jul 2024 14:50:56 -0700 Subject: [PATCH 1/5] Show full authentication URL to let user choose how to visit it * packages/oauth2/oauth2.el (oauth2-request-authorization): show full authentication URL in user prompt. --- oauth2.el | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/oauth2.el b/oauth2.el index 7da9702004..3a3e50ad2b 100644 --- a/oauth2.el +++ b/oauth2.el @@ -57,14 +57,17 @@ "Request OAuth authorization at AUTH-URL by launching `browse-url'. CLIENT-ID is the client id provided by the provider. It returns the code provided by the service." - (browse-url (concat auth-url - (if (string-match-p "\?" auth-url) "&" "?") - "client_id=" (url-hexify-string client-id) - "&response_type=code" - "&redirect_uri=" (url-hexify-string (or redirect-uri "urn:ietf:wg:oauth:2.0:oob")) - (if scope (concat "&scope=" (url-hexify-string scope)) "") - (if state (concat "&state=" (url-hexify-string state)) ""))) - (read-string "Enter the code your browser displayed: ")) + (let ((url (concat auth-url + (if (string-match-p "\?" auth-url) "&" "?") + "client_id=" (url-hexify-string client-id) + "&response_type=code" + "&redirect_uri=" (url-hexify-string (or redirect-uri "urn:ietf:wg:oauth:2.0:oob")) + (if scope (concat "&scope=" (url-hexify-string scope)) "") + (if state (concat "&state=" (url-hexify-string state)) "")))) + (browse-url url) + (read-string (concat "Follow the instruction on your default browser, or " + "visit:\n" url + "\nEnter the code your browser displayed: ")))) (defun oauth2-request-access-parse () "Parse the result of an OAuth request." -- 2.39.2 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0002-Add-parameters-required-by-Google-OAuth2-to-get-refr.patch >From 26ed9886bd9d3970d55cf76e4269cef3998503a7 Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Sun, 21 Jul 2024 14:52:02 -0700 Subject: [PATCH 2/5] Add parameters required by Google OAuth2 to get refresh_token * packages/oauth2/oauth2.el (oauth2-request-authorization): add `access_type=offline' and `prompt=consent' when requesting token to receive refresh_token. --- oauth2.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/oauth2.el b/oauth2.el index 3a3e50ad2b..9780ac3a1d 100644 --- a/oauth2.el +++ b/oauth2.el @@ -63,7 +63,9 @@ It returns the code provided by the service." "&response_type=code" "&redirect_uri=" (url-hexify-string (or redirect-uri "urn:ietf:wg:oauth:2.0:oob")) (if scope (concat "&scope=" (url-hexify-string scope)) "") - (if state (concat "&state=" (url-hexify-string state)) "")))) + (if state (concat "&state=" (url-hexify-string state)) "") + "&access_type=offline" + "&prompt=consent"))) (browse-url url) (read-string (concat "Follow the instruction on your default browser, or " "visit:\n" url -- 2.39.2 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0003-Encode-parameters-when-requesting-access.patch >From 59225412e1d06ae9e165cfde6a4a985cee4fc569 Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Sun, 21 Jul 2024 14:54:08 -0700 Subject: [PATCH 3/5] Encode parameters when requesting access * packages/oauth2/oauth2.el (oauth2-request-access): encode all parameters which may contain characters that breaks URL. --- oauth2.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/oauth2.el b/oauth2.el index 9780ac3a1d..b035742fc1 100644 --- a/oauth2.el +++ b/oauth2.el @@ -107,10 +107,10 @@ Return an `oauth2-token' structure." (oauth2-make-access-request token-url (concat - "client_id=" client-id + "client_id=" (url-hexify-string client-id) (when client-secret - (concat "&client_secret=" client-secret)) - "&code=" code + (concat "&client_secret=" (url-hexify-string client-secret))) + "&code=" (url-hexify-string code) "&redirect_uri=" (url-hexify-string (or redirect-uri "urn:ietf:wg:oauth:2.0:oob")) "&grant_type=authorization_code")))) (make-oauth2-token :client-id client-id -- 2.39.2 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0004-Support-storing-data-for-multiple-accounts-of-the-sa.patch >From eb4afbc2f21c65417de5ca8e06309fd4c53cc1ab Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Sun, 28 Jul 2024 03:00:04 -0700 Subject: [PATCH 4/5] Support storing data for multiple accounts of the same provider Currently the plstore id computed by `oauth2-compute-id' only takes `auth-url', `token-url', and `scope' into account, which could be the same for the same provider (e.g. Gmail). This prevents storing information for multiple accounts of the same service for some providers. This patch adds `client-id' to the calculation of plstore id to make sure that it is unique for different accounts of the same provider. * packages/oauth2/oauth2.el (oauth2-compute-id): add `client-id' as a parameter of `oauth2-compute-id' to ensure unique id amount multiple accounts of the same provider. --- oauth2.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/oauth2.el b/oauth2.el index b035742fc1..ea012d4d38 100644 --- a/oauth2.el +++ b/oauth2.el @@ -163,17 +163,17 @@ TOKEN should be obtained with `oauth2-request-access'." :group 'oauth2 :type 'file) -(defun oauth2-compute-id (auth-url token-url scope) +(defun oauth2-compute-id (auth-url token-url scope client-id) "Compute an unique id based on URLs. This allows to store the token in an unique way." - (secure-hash 'md5 (concat auth-url token-url scope))) + (secure-hash 'md5 (concat auth-url token-url scope client-id))) ;;;###autoload (defun oauth2-auth-and-store (auth-url token-url scope client-id client-secret &optional redirect-uri state) "Request access to a resource and store it using `plstore'." ;; We store a MD5 sum of all URL (let* ((plstore (plstore-open oauth2-token-file)) - (id (oauth2-compute-id auth-url token-url scope)) + (id (oauth2-compute-id auth-url token-url scope client-id)) (plist (cdr (plstore-get plstore id)))) ;; Check if we found something matching this access (if plist -- 2.39.2 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0005-Add-debug-messages-and-provide-a-switch-for-enabling.patch >From 6cf0ab190d24b6fc2a7335d02a8aef29ab24c622 Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Sun, 28 Jul 2024 03:41:20 -0700 Subject: [PATCH 5/5] Add debug messages and provide a switch for enabling This helps debugging whether the authorization and refresh requests were successful and inspecting the responses. * packages/oauth2/oauth2.el: add debug message and option for enabling. --- oauth2.el | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/oauth2.el b/oauth2.el index ea012d4d38..06a880532e 100644 --- a/oauth2.el +++ b/oauth2.el @@ -40,6 +40,7 @@ (require 'plstore) (require 'json) (require 'url-http) +(require 'pp) (defvar url-http-data) (defvar url-http-method) @@ -53,6 +54,15 @@ :link '(url-link :tag "Savannah" "https://git.savannah.gnu.org/cgit/emacs/elpa.git/tree/?h=externals/oauth2") :link '(url-link :tag "ELPA" "https://elpa.gnu.org/packages/oauth2.html")) +(defcustom oauth2-debug nil + "Enable debug messages." + :type 'boolean) + +(defun oauth2--do-debug (&rest msg) + "Output debug messages when `oauth2-debug' is enabled." + (if oauth2-debug + (apply #'message msg))) + (defun oauth2-request-authorization (auth-url client-id &optional scope state redirect-uri) "Request OAuth authorization at AUTH-URL by launching `browse-url'. CLIENT-ID is the client id provided by the provider. @@ -79,6 +89,8 @@ It returns the code provided by the service." (defun oauth2-make-access-request (url data) "Make an access request to URL using DATA in POST." + (oauth2--do-debug "oauth2-make-access-request: url: %s" url) + (oauth2--do-debug "oauth2-make-access-request: data: %s" data) (let ((url-request-method "POST") (url-request-data data) (url-request-extra-headers @@ -86,6 +98,8 @@ It returns the code provided by the service." (with-current-buffer (url-retrieve-synchronously url) (let ((data (oauth2-request-access-parse))) (kill-buffer (current-buffer)) + (oauth2--do-debug "oauth2-make-access-request: response: %s" + (pp-to-string data)) data)))) (cl-defstruct oauth2-token -- 2.39.2 --=-=-=-- ------------=_1725001862-9256-1-- From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Xiyue Deng Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 30 Aug 2024 08:35:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Philip Kaludercic Cc: 72358-done@debbugs.gnu.org Received: via spool by 72358-done@debbugs.gnu.org id=D72358.172500689618394 (code D ref 72358); Fri, 30 Aug 2024 08:35:02 +0000 Received: (at 72358-done) by debbugs.gnu.org; 30 Aug 2024 08:34:56 +0000 Received: from localhost ([127.0.0.1]:52471 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sjx5r-0004mb-Ok for submit@debbugs.gnu.org; Fri, 30 Aug 2024 04:34:56 -0400 Received: from mail-pf1-f172.google.com ([209.85.210.172]:51417) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sjx5o-0004mI-H2 for 72358-done@debbugs.gnu.org; Fri, 30 Aug 2024 04:34:54 -0400 Received: by mail-pf1-f172.google.com with SMTP id d2e1a72fcca58-7141d7b270dso1261828b3a.2 for <72358-done@debbugs.gnu.org>; Fri, 30 Aug 2024 01:33:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1725006770; x=1725611570; darn=debbugs.gnu.org; h=mime-version:message-id:date:user-agent:references:in-reply-to :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=RzkUTbrW2FG1ELbe1HwAWikIFw5G+MElh7Bx45xWT9A=; b=UppIcaIxmkfMbUA8VwwTYY8lBKQDy5j/c+ylArfiVNuvIebIt5OavPr6gNkN0cpjGI LNImzrBnLPzKoOwBTzuOJV8R6UHSLuBhm8iJ26qMsWgryQ0CY9FXkKA1lo/GJ5vx7fdC PPNViKGTr1YTWIrKN1J0XAzMZSHKDzL/tqj0XRACsu3PD1PMKttEO14JIFOj07pOUjdG SXm64cNs07/IckUxn4xT2/Py3JZNuG27X0UTAlIvjNvOybln8h+JFY5KH3Ku/SuLGTDG 4ZjZ1nmacYXR7KUn5CHwkvRjpNvocY6RSmXxqQwelbtM5TVggZJfzQ2+EkXNyKcWAuII lPnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725006770; x=1725611570; h=mime-version:message-id:date:user-agent:references:in-reply-to :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=RzkUTbrW2FG1ELbe1HwAWikIFw5G+MElh7Bx45xWT9A=; b=pdRZMUWqHDkqWXodDK3bju5pNAw7bQwMyRr+dhN2xBodvYrJ0GTG2GG9bGA/m4+v+u hbPpK6MNuUTk19Uy0U8zJl6N7mxn7h8bBuuKe3PsRc5f0APt8JTa4dDGDl9T0aN8Eknl A/8jWgrXUp3Xu8HgK48IcNufGqNKzKPY9MMbsAXJIbY2dcmAEu9vGwsSWMFSqKINU/jK bzGPuJeT1czNOgZxjuvfWKIUKfrQOI4q0MkNKuIwD9EIwcj4wESb6G16RAo1U3R1u1eE yb+mHstx6VK9B1AAsmmhrJHVJx7O3Ohnwq7FUeIIFrFwPG23m20Y3UX1nHmUi9grx0/V 0dnA== X-Gm-Message-State: AOJu0YycmEfVy91HpUuIL3lzk+Z7bCsqzCa3ZSTWYpna4Jv0N4co+mTb NMz4WGCweM5J2Gx9X/bqNfeaf2odDK546OQgldbB9dfL0H/BhfyCRieMp6EK X-Google-Smtp-Source: AGHT+IHp29sp6Fv58saFhjVhfDwfHlcbHYE+eFks8aa26qyxShTImlGl8Fh6mM1g54qE8nnVteCEWQ== X-Received: by 2002:a05:6a00:3e0a:b0:704:2b6e:f10b with SMTP id d2e1a72fcca58-715dfc02a33mr6337539b3a.15.1725006769518; Fri, 30 Aug 2024 01:32:49 -0700 (PDT) Received: from debian-hx90 (syn-076-094-249-045.res.spectrum.com. [76.94.249.45]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-7d22e76e8cbsm2121602a12.20.2024.08.30.01.32.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 30 Aug 2024 01:32:48 -0700 (PDT) From: Xiyue Deng In-Reply-To: <87o75av65a.fsf@posteo.net> (Philip Kaludercic's message of "Fri, 30 Aug 2024 07:09:21 +0000") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <87ed7a8ye6.fsf@debian-hx90.lan> <87jzh2vt3y.fsf@gmail.com> <87frrp6ch8.fsf@debian-hx90.lan> <87ttg349yd.fsf@debian-hx90.lan> <86r0b6up8p.fsf@gnu.org> <87ikw4qdvx.fsf@debian-hx90.lan> <86plqbfzat.fsf@gnu.org> <877ccjecnc.fsf@debian-hx90.lan> <86wmkj8o29.fsf@gnu.org> <87wmk9busk.fsf@debian-hx90.lan> <87seuxacij.fsf@posteo.net> <87seuxbk6f.fsf@debian-hx90.lan> <87le0fquva.fsf@posteo.net> <87r0a64y98.fsf@debian-hx90.lan> <87o75av65a.fsf@posteo.net> User-Agent: mu4e 1.12.6; emacs 29.4 Date: Fri, 30 Aug 2024 01:32:46 -0700 Message-ID: <87msku4dht.fsf@debian-hx90.lan> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=-=-= Content-Type: text/plain Philip Kaludercic writes: > Xiyue Deng writes: > >> [..snip..] >> >> The updated patches are attached. Thanks again! > > OK, this looks very good. I'll apply the changes and am closing the > report. > > Thanks, Thanks a lot Philip! One last thing: I'd like to ask for a new release (0.17) with these changes if that's OK (patch attached.) Or let me know if I should create a new bug for that. -- Xiyue Deng --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0001-packages-oauth2-oauth2.el-update-version-to-0.17.patch >From e05c2bb372c712b809e31fe317ca993e63384207 Mon Sep 17 00:00:00 2001 From: Xiyue Deng Date: Fri, 30 Aug 2024 01:28:09 -0700 Subject: [PATCH] * packages/oauth2/oauth2.el: update version to 0.17 --- oauth2.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oauth2.el b/oauth2.el index 9c91bb08a1..87e0c39c5c 100644 --- a/oauth2.el +++ b/oauth2.el @@ -3,7 +3,7 @@ ;; Copyright (C) 2011-2021 Free Software Foundation, Inc ;; Author: Julien Danjou -;; Version: 0.16 +;; Version: 0.17 ;; Keywords: comm ;; Package-Requires: ((cl-lib "0.5") (nadvice "0.3")) -- 2.39.2 --=-=-=-- From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Philip Kaludercic Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 30 Aug 2024 10:09:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Xiyue Deng Cc: 72358-done@debbugs.gnu.org Received: via spool by 72358-done@debbugs.gnu.org id=D72358.172501253128910 (code D ref 72358); Fri, 30 Aug 2024 10:09:02 +0000 Received: (at 72358-done) by debbugs.gnu.org; 30 Aug 2024 10:08:51 +0000 Received: from localhost ([127.0.0.1]:52539 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sjyYl-0007WE-7X for submit@debbugs.gnu.org; Fri, 30 Aug 2024 06:08:51 -0400 Received: from mout02.posteo.de ([185.67.36.66]:56215) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sjyYi-0007Vx-Cg for 72358-done@debbugs.gnu.org; Fri, 30 Aug 2024 06:08:49 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 2297E240104 for <72358-done@debbugs.gnu.org>; Fri, 30 Aug 2024 12:07:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1725012464; bh=CPMS3JNYtUWm3zl51HUtGWnx/0MDrQopsSx4v0EJ6ko=; h=From:To:Cc:Subject:Autocrypt:OpenPGP:Date:Message-ID:MIME-Version: Content-Type:From; b=SnnLN0IPKRYSEsbU4TY0Jmvn7VTpPt49QRenAhCQVIPVAm9wc4ZaroCDvtxZF77P6 bxveiODXUaaC1ITJKP1r03cE2C7tEeXy6KDWnfd3RJ9yJKoTNRHnQ3Wgf2gDAUymbf gk4595xYFaP1P/OtJKXX3lTm8kLhsZFuX2wJZr27NY6d4ZCZcU1wBup+PmAGY/sHph 7Ocf4/C9hNUpaZ3zVfJir/WFYB/4NOpicByIYmtoFromnLFoyzjyHWi/tzEtb37KtD xmo1/rh4EIE3Expq4UZtaC6pxcnDuIW1a9lZWYI6gi8CWYXID7xkyHdsuWILP4MnT6 +XHpoinp3mrDQ== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4WwDNb471Dz6tm4; Fri, 30 Aug 2024 12:07:43 +0200 (CEST) From: Philip Kaludercic In-Reply-To: <87msku4dht.fsf@debian-hx90.lan> (Xiyue Deng's message of "Fri, 30 Aug 2024 01:32:46 -0700") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <87ed7a8ye6.fsf@debian-hx90.lan> <87jzh2vt3y.fsf@gmail.com> <87frrp6ch8.fsf@debian-hx90.lan> <87ttg349yd.fsf@debian-hx90.lan> <86r0b6up8p.fsf@gnu.org> <87ikw4qdvx.fsf@debian-hx90.lan> <86plqbfzat.fsf@gnu.org> <877ccjecnc.fsf@debian-hx90.lan> <86wmkj8o29.fsf@gnu.org> <87wmk9busk.fsf@debian-hx90.lan> <87seuxacij.fsf@posteo.net> <87seuxbk6f.fsf@debian-hx90.lan> <87le0fquva.fsf@posteo.net> <87r0a64y98.fsf@debian-hx90.lan> <87o75av65a.fsf@posteo.net> <87msku4dht.fsf@debian-hx90.lan> Autocrypt: addr=philipk@posteo.net; keydata= mDMEZBBQQhYJKwYBBAHaRw8BAQdAHJuofBrfqFh12uQu0Yi7mrl525F28eTmwUDflFNmdui0QlBo aWxpcCBLYWx1ZGVyY2ljIChnZW5lcmF0ZWQgYnkgYXV0b2NyeXB0LmVsKSA8cGhpbGlwa0Bwb3N0 ZW8ubmV0PoiWBBMWCAA+FiEEDg7HY17ghYlni8XN8xYDWXahwukFAmQQUEICGwMFCQHhM4AFCwkI BwIGFQoJCAsCBBYCAwECHgECF4AACgkQ8xYDWXahwulikAEA77hloUiSrXgFkUVJhlKBpLCHUjA0 mWZ9j9w5d08+jVwBAK6c4iGP7j+/PhbkxaEKa4V3MzIl7zJkcNNjHCXmvFcEuDgEZBBQQhIKKwYB BAGXVQEFAQEHQI5NLiLRjZy3OfSt1dhCmFyn+fN/QKELUYQetiaoe+MMAwEIB4h+BBgWCAAmFiEE Dg7HY17ghYlni8XN8xYDWXahwukFAmQQUEICGwwFCQHhM4AACgkQ8xYDWXahwukm+wEA8cml4JpK NeAu65rg+auKrPOP6TP/4YWRCTIvuYDm0joBALw98AMz7/qMHvSCeU/hw9PL6u6R2EScxtpKnWof z4oM OpenPGP: id=philipk@posteo.net; url="https://keys.openpgp.org/vks/v1/by-email/philipk@posteo.net"; preference=signencrypt Date: Fri, 30 Aug 2024 10:07:42 +0000 Message-ID: <87frqmuxw1.fsf@posteo.net> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Xiyue Deng writes: > Philip Kaludercic writes: > >> Xiyue Deng writes: >> >>> [..snip..] >>> >>> The updated patches are attached. Thanks again! >> >> OK, this looks very good. I'll apply the changes and am closing the >> report. >> >> Thanks, > > Thanks a lot Philip! One last thing: I'd like to ask for a new release > (0.17) with these changes if that's OK (patch attached.) Of course, I forgot to ask if this should trigger a new release or not, that's my bad. > Or let me know > if I should create a new bug for that. Nah, not for something as simple as this. I'll apply it straight away. -- Philip Kaludercic on peregrine From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Xiyue Deng Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 30 Aug 2024 21:16:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Philip Kaludercic Cc: 72358-done@debbugs.gnu.org Received: via spool by 72358-done@debbugs.gnu.org id=D72358.172505251915601 (code D ref 72358); Fri, 30 Aug 2024 21:16:02 +0000 Received: (at 72358-done) by debbugs.gnu.org; 30 Aug 2024 21:15:19 +0000 Received: from localhost ([127.0.0.1]:53503 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sk8xj-00043Y-2u for submit@debbugs.gnu.org; Fri, 30 Aug 2024 17:15:19 -0400 Received: from mail-pl1-f173.google.com ([209.85.214.173]:49474) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sk8xg-00043G-8b for 72358-done@debbugs.gnu.org; Fri, 30 Aug 2024 17:15:17 -0400 Received: by mail-pl1-f173.google.com with SMTP id d9443c01a7336-202146e93f6so22555185ad.3 for <72358-done@debbugs.gnu.org>; Fri, 30 Aug 2024 14:14:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1725052393; x=1725657193; darn=debbugs.gnu.org; h=mime-version:message-id:date:user-agent:references:in-reply-to :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=UNr3r8uLZ8K52OqxkGvD5WvmzydmYSBWP3AOK3Ifj+I=; b=DgWlodhc942csu5lk0LTyqBb/4ilv1C7/+XFaDb3nV7ZwR5987pFMtRgmMrOMuvnpb g2JhhE5nfMN5ygeWZrPeAig9typIttTbxX819U78VFx0s5wZ+v00da56dZpkVi90aqfe fxVU/uvkEteHiLfzn4DdGsAJ4r/3T/LxbhDoKtqSxWVEACTt+/HTRxY2wsdyZNODaOo2 nROqZmcsGyh/DjoZWqkOEZJ5FYzWZlCwCIjxFDR+y9SPCGyV4g11PIX9rk1wOixTvuI9 5UTKh/DxXxczNxj9BwgeNtg6pyUYWCG5miSilLsmmW7zsioMMvbip+wuCTsiXth3dxYy D7cA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725052393; x=1725657193; h=mime-version:message-id:date:user-agent:references:in-reply-to :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=UNr3r8uLZ8K52OqxkGvD5WvmzydmYSBWP3AOK3Ifj+I=; b=BqEC8MtY17yveAFkLfzZ3DttAdguTWIvFQWM3ZwTzFS4RMiOHj6UQBscURbCh8VKVJ YnTz6pIMyHe6EZzEGWij4jA+xT5s8noQIajBY8Mu1m4C/UJrzbG4lN6QBNY/1574YsJz GfzccEpN25By/Tgruk0aSkLFZSMe+L9tKkRpewjyyAiU2uj+l1/2D6EbUtpib6pmabRr a7ccKM7kOO8uqQwweEhM7DUR+jrfdws3VEDwaFKgo2skI17j6nmSLjmG2sjAaIP5yMlS 9nZBvvQ07f8l5IqsU8cJJ9Issg8ewlzORZmETMFmj6mbS5GheGlhBbMrZu8PjUYlwAwl rRIw== X-Gm-Message-State: AOJu0Yyi7nIvfuYY9+7A5K6rvgG4U2ymvbsaSRdBoOw6Au437I7O/+5n MLNb/j371zecdOPenmZmV/eF9Fo2O1ij3db1KXoqQuTda4/UDuG7DiKu70k1 X-Google-Smtp-Source: AGHT+IELTriUFZOmw9MdrdBkb+DldS819tOyHLpMt79duqc5ohe5gfP+GpZifRaeM5yv8PbnvkH44g== X-Received: by 2002:a17:902:ecc9:b0:205:3450:cdc9 with SMTP id d9443c01a7336-2053450d170mr27382955ad.36.1725052392421; Fri, 30 Aug 2024 14:13:12 -0700 (PDT) Received: from debian-hx90 (syn-076-094-249-045.res.spectrum.com. [76.94.249.45]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-205152b14b9sm30961775ad.20.2024.08.30.14.13.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 30 Aug 2024 14:13:12 -0700 (PDT) From: Xiyue Deng In-Reply-To: <87frqmuxw1.fsf@posteo.net> (Philip Kaludercic's message of "Fri, 30 Aug 2024 10:07:42 +0000") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <87ed7a8ye6.fsf@debian-hx90.lan> <87jzh2vt3y.fsf@gmail.com> <87frrp6ch8.fsf@debian-hx90.lan> <87ttg349yd.fsf@debian-hx90.lan> <86r0b6up8p.fsf@gnu.org> <87ikw4qdvx.fsf@debian-hx90.lan> <86plqbfzat.fsf@gnu.org> <877ccjecnc.fsf@debian-hx90.lan> <86wmkj8o29.fsf@gnu.org> <87wmk9busk.fsf@debian-hx90.lan> <87seuxacij.fsf@posteo.net> <87seuxbk6f.fsf@debian-hx90.lan> <87le0fquva.fsf@posteo.net> <87r0a64y98.fsf@debian-hx90.lan> <87o75av65a.fsf@posteo.net> <87msku4dht.fsf@debian-hx90.lan> <87frqmuxw1.fsf@posteo.net> User-Agent: mu4e 1.12.6; emacs 29.4 Date: Fri, 30 Aug 2024 14:13:09 -0700 Message-ID: <87ikvh4suy.fsf@debian-hx90.lan> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Philip Kaludercic writes: > Xiyue Deng writes: > >> Philip Kaludercic writes: >> >>> Xiyue Deng writes: >>> >>>> [..snip..] >>>> >>>> The updated patches are attached. Thanks again! >>> >>> OK, this looks very good. I'll apply the changes and am closing the >>> report. >>> >>> Thanks, >> >> Thanks a lot Philip! One last thing: I'd like to ask for a new release >> (0.17) with these changes if that's OK (patch attached.) > > Of course, I forgot to ask if this should trigger a new release or not, > that's my bad. > >> Or let me know >> if I should create a new bug for that. > > Nah, not for something as simple as this. I'll apply it straight away. Thanks very much, Philip! -- Xiyue Deng From unknown Sat Jun 21 05:01:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#72358: 29.4; oauth2.el improvements Resent-From: Xiyue Deng Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 03 Sep 2024 18:11:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 72358-done@debbugs.gnu.org Received: via spool by 72358-done@debbugs.gnu.org id=D72358.172538703914662 (code D ref 72358); Tue, 03 Sep 2024 18:11:01 +0000 Received: (at 72358-done) by debbugs.gnu.org; 3 Sep 2024 18:10:39 +0000 Received: from localhost ([127.0.0.1]:60956 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1slXzD-0003oQ-Jh for submit@debbugs.gnu.org; Tue, 03 Sep 2024 14:10:39 -0400 Received: from mail-pl1-f177.google.com ([209.85.214.177]:47286) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1slXzC-0003oC-4h for 72358-done@debbugs.gnu.org; Tue, 03 Sep 2024 14:10:38 -0400 Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-2054e22ce3fso24448365ad.2 for <72358-done@debbugs.gnu.org>; Tue, 03 Sep 2024 11:09:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1725386909; x=1725991709; darn=debbugs.gnu.org; h=mime-version:message-id:date:user-agent:references:in-reply-to :subject:to:from:from:to:cc:subject:date:message-id:reply-to; bh=9L0JaFQMQEgsW2LBUZcp7BPsMEQCBMAote80ZUXgg4E=; b=k3Awa48txVqac6qXvYFbfJxvSG9aPX1L3puI81uXxS9TBvrue1i6pXbDKOtX8iuibh 4XogjP6DCufmv0/7cYlkiJFGF0WVLPs/oJjNxzCJD1YoAcWwZWDUAjdAWB+n506cuhf7 j7UChRbz1D4UzrNI5Jyjy+pVr0d2QQU8916NLCSc5sh7g5tSJKJUxS1VPnjL77hty7IT jzSabhtRMkgl78pwVVn0k7LIDblpS4NGgh1mgWLN5uMbQ+7yFm1CqfnSE8jJVgxO3fs9 h1pvy6D/r7sUY6/Wg20T+CyyKM30q++WSlzEPxk/RcgMrrIuGB377pqVGcUQbG3zbW22 moXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725386909; x=1725991709; h=mime-version:message-id:date:user-agent:references:in-reply-to :subject:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=9L0JaFQMQEgsW2LBUZcp7BPsMEQCBMAote80ZUXgg4E=; b=NepwG8wIiZ1g4i7CFirNNrjF2uMWzMtn1zLPD+N/unI1ayawds1dk4lbt6QXfxRaMq pzhm97jl13XhhxJRKHO37JodWk/wDgNw7aCxPEerOn4GYZYighoW87i10fpUiZNeKLYR M/qMLJSVa0JzKOrOUPkuMZ/c8eUc8FLJTM4JtSZvgAS7D0fwPkJcbWLqcxRrquAH2rkr A4tsDmFFvv8JzBEPmedm4i3Ro95fHpgTIzWWYqce/VNE+i7oQyA0cdZVg20TXkWSBqFV kswmCK5VuBrREhcbA6fCqdEeXK0ynPr/AYc+G08hsOOebWnA4GsPI8/OIdz2zmHptPu2 lzYg== X-Gm-Message-State: AOJu0YwymWr8kVnuUf9mEuBBEJoAa17Rd+WKIm+ipXJZAPQ5eUsHkh4Q 1K+90lpOxveAmZTdGaIluXr/QPDE5BjeaZRwXyLJB0yGqOmNnYkba0WbXg== X-Google-Smtp-Source: AGHT+IEx0+o7sCAVPaCswCj9vyzsRoWQJ3PzSeqftdV035738Gmnmso6VcJKYziKr3QWxSabZzABbA== X-Received: by 2002:a17:902:db12:b0:205:4531:54d with SMTP id d9443c01a7336-20699af1129mr39582265ad.30.1725386908587; Tue, 03 Sep 2024 11:08:28 -0700 (PDT) Received: from debian-hx90 (syn-076-094-249-045.res.spectrum.com. [76.94.249.45]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-206ae913cf1sm1373075ad.28.2024.09.03.11.08.27 for <72358-done@debbugs.gnu.org> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Sep 2024 11:08:28 -0700 (PDT) From: Xiyue Deng In-Reply-To: <87ikvh4suy.fsf@debian-hx90.lan> (Xiyue Deng's message of "Fri, 30 Aug 2024 14:13:09 -0700") References: <87mslz8yzk.fsf@debian-hx90.lan> <87frrr725m.fsf@gmail.com> <87ed7a8ye6.fsf@debian-hx90.lan> <87jzh2vt3y.fsf@gmail.com> <87frrp6ch8.fsf@debian-hx90.lan> <87ttg349yd.fsf@debian-hx90.lan> <86r0b6up8p.fsf@gnu.org> <87ikw4qdvx.fsf@debian-hx90.lan> <86plqbfzat.fsf@gnu.org> <877ccjecnc.fsf@debian-hx90.lan> <86wmkj8o29.fsf@gnu.org> <87wmk9busk.fsf@debian-hx90.lan> <87seuxacij.fsf@posteo.net> <87seuxbk6f.fsf@debian-hx90.lan> <87le0fquva.fsf@posteo.net> <87r0a64y98.fsf@debian-hx90.lan> <87o75av65a.fsf@posteo.net> <87msku4dht.fsf@debian-hx90.lan> <87frqmuxw1.fsf@posteo.net> <87ikvh4suy.fsf@debian-hx90.lan> User-Agent: mu4e 1.12.6; emacs 29.4 Date: Tue, 03 Sep 2024 11:08:25 -0700 Message-ID: <87seugk3ty.fsf@debian-hx90.lan> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) In case anyone is interested, I have filed bug#72992[1] where I posted my code to enable xoauth2 support for nnimap and smtpmail as I promised. I am also trying to gather feedback on how it can be improved. Comments welcome! [1] https://lists.gnu.org/archive/html/bug-gnu-emacs/2024-09/msg00089.html -- Xiyue Deng