unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Nikolaos Chatzikonstantinou <nchatz314@gmail.com>
To: Robert Pluim <rpluim@gmail.com>
Cc: 50507@debbugs.gnu.org, Lars Ingebrigtsen <larsi@gnus.org>,
	Eli Zaretskii <eliz@gnu.org>
Subject: bug#50507: New function in Emacs GnuTLS implementation
Date: Thu, 29 Sep 2022 09:44:09 -0400	[thread overview]
Message-ID: <CAAQmekceNXaHov89sYi=_BgyULwd3WqmKBD86rRWuEK8K1fWPw@mail.gmail.com> (raw)
In-Reply-To: <87a66id03q.fsf@gmail.com>

On Thu, Sep 29, 2022 at 5:02 AM Robert Pluim <rpluim@gmail.com> wrote:
>
> >>>>> On Wed, 28 Sep 2022 23:09:46 -0400, Nikolaos Chatzikonstantinou <nchatz314@gmail.com> said:
>
>     Nikolaos> From b11707c423773f6234746991222acd80ab3f708c Mon Sep 17 00:00:00 2001
>     Nikolaos> From: Nikolaos Chatzikonstantinou <nchatz314@gmail.com>
>     Nikolaos> Date: Mon, 26 Sep 2022 11:08:18 -0400
>     Nikolaos> Subject: [PATCH] add :pass and :flags to gnutls-boot for :keylist
>
>     Nikolaos> +   corresponds to a GnuTLS C flag, the ORed result is to be passed to
>     Nikolaos> +   the function gnutls_certificate_set_x509_key_file2() as its last
>     Nikolaos> +   argument.
>     Nikolaos> +*/
>     Nikolaos> +static unsigned int
>     Nikolaos> +key_file2_aux (Lisp_Object flags)
>     Nikolaos> +{
>     Nikolaos> +  unsigned int rv = 0;
>     Nikolaos> +  Lisp_Object tail;
>     Nikolaos> +  for (tail = flags; CONSP (tail); tail = XCDR (tail))
>
> We have some convenience macros in lisp.h for traversing lists, one of
> which is FOR_EACH_TAIL. The reason to prefer it is that it will detect
> circular lists, which is good practice since this list will come from
> the user level, so it could be anything :-)

Good point. I opted for FOR_EACH_TAIL_SAFE, which seems even better
for this case. As documented in ChangeLog.3, it's the right one when
the operation is idempotent, which an OR of flags is. (repeated flags
do not alter the result.)

>     Nikolaos> +The :pass and :flags keys are ignored with old versions of GnuTLS, and
>     Nikolaos> +:flags is ignored if :pass is not specified.
>     Nikolaos> +
>
> Maybe mention that not specifying :flags or passing :flags nil means
> passing '0' to the GnuTLS function?

Yes, and on that note, I discovered two things. One, the value 0 is
special; it has meaning but it is not an enumeration constant. I
documented this appropriately. Two, the password may be NULL instead
of a string.

How can I differentiate between `:pass nil` and not specifying
`:pass`? I would like to do this because in the former case I'm
calling ...key_file2() and in the latter I'm calling the original
...key_file().

>     Nikolaos> +  DEFSYM (Qgnutls_pkcs_plain, "GNUTLS_PKCS_PLAIN");
<removed a few more such lines>
>     Nikolaos> +  DEFSYM (Qgnutls_pkcs_pbes2_gost_cpd, "GNUTLS_PKCS_PBES2_GOST_CPD");
>
> All this is kind of awkward, but apart from doing DEFVAR_LISP Iʼm not
> aware of how to define a lisp level symbol with a value (it would
> allow you to simplify `key_file2_aux', since you could just extract
> the values directly from the symbols).

I am now comparing against intern("GNUTLS_PKCS_PLAIN") and so on.

I will hold off the submission of the final patch until I figure out
the :pass issue that I mentioned above.

Regards,
Nikolaos Chatzikonstantinou





  reply	other threads:[~2022-09-29 13:44 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-10 10:39 bug#50507: New function in Emacs GnuTLS implementation Nikolaos Chatzikonstantinou
2021-09-10 12:39 ` Eli Zaretskii
2021-09-11 15:28   ` Nikolaos Chatzikonstantinou
2021-09-11 15:34     ` Eli Zaretskii
2021-09-11 15:52       ` Eli Zaretskii
2022-08-25 15:07     ` Lars Ingebrigtsen
2022-09-14 15:51       ` Nikolaos Chatzikonstantinou
2022-09-15  7:09         ` Lars Ingebrigtsen
2022-09-26  9:56           ` Nikolaos Chatzikonstantinou
2022-09-26 11:03             ` Lars Ingebrigtsen
2022-09-26 15:43               ` Nikolaos Chatzikonstantinou
2022-09-26 17:19                 ` Robert Pluim
2022-09-26 21:39                   ` Nikolaos Chatzikonstantinou
2022-09-27  6:29                     ` Eli Zaretskii
2022-09-28 12:15                   ` Nikolaos Chatzikonstantinou
2022-09-28 13:11                     ` Robert Pluim
2022-09-29  3:09                       ` Nikolaos Chatzikonstantinou
2022-09-29  8:17                         ` Eli Zaretskii
2022-09-29 12:35                           ` Nikolaos Chatzikonstantinou
2022-09-29 13:08                             ` Eli Zaretskii
2022-09-29  9:02                         ` Robert Pluim
2022-09-29 13:44                           ` Nikolaos Chatzikonstantinou [this message]
2022-09-29 14:08                             ` Robert Pluim
2022-09-30 10:04                               ` Nikolaos Chatzikonstantinou
2022-09-30 10:47                                 ` Eli Zaretskii
2022-09-30 13:01                                   ` Nikolaos Chatzikonstantinou
2022-09-30 13:37                                     ` Eli Zaretskii
2022-09-30 13:49                                       ` Nikolaos Chatzikonstantinou
2022-09-30 14:32                                         ` Robert Pluim
2022-09-30 16:22                                           ` Nikolaos Chatzikonstantinou
2022-10-03  7:40                                             ` Robert Pluim
2022-10-03 13:00                                               ` Nikolaos Chatzikonstantinou
2022-10-03 13:19                                                 ` Robert Pluim
2022-10-05 14:20                                                   ` Nikolaos Chatzikonstantinou
2022-12-23 15:46                                                   ` Nikolaos Chatzikonstantinou
2022-12-29  9:01                                                     ` Eli Zaretskii
2022-12-29 17:03                                                       ` Robert Pluim
2022-12-29 17:18                                                         ` Eli Zaretskii
2022-12-30 16:41                                                           ` Robert Pluim
2022-12-31  7:33                                                             ` Eli Zaretskii
2023-01-02 10:24                                                               ` Robert Pluim
2022-12-30 20:45 ` Mattias Engdegård
2022-12-30 22:59   ` Nikolaos Chatzikonstantinou
2022-12-31  7:28     ` Eli Zaretskii
2022-12-31  7:25   ` Eli Zaretskii
2022-12-31  8:58     ` Colin Baxter
2022-12-31  9:44     ` Mattias Engdegård

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAAQmekceNXaHov89sYi=_BgyULwd3WqmKBD86rRWuEK8K1fWPw@mail.gmail.com' \
    --to=nchatz314@gmail.com \
    --cc=50507@debbugs.gnu.org \
    --cc=eliz@gnu.org \
    --cc=larsi@gnus.org \
    --cc=rpluim@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).