On Thu, Sep 29, 2022 at 10:08 AM Robert Pluim wrote: > > >>>>> On Thu, 29 Sep 2022 09:44:09 -0400, Nikolaos Chatzikonstantinou said: > 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? > > Nikolaos> Yes, and on that note, I discovered two things. One, the value 0 is > Nikolaos> special; it has meaning but it is not an enumeration constant. I > Nikolaos> documented this appropriately. Two, the password may be NULL instead > Nikolaos> of a string. > > OK. I guess youʼre mapping ':pass nil' to that? Yes. > Nikolaos> + DEFSYM (Qgnutls_pkcs_plain, "GNUTLS_PKCS_PLAIN"); > Nikolaos> > 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). > > Nikolaos> I am now comparing against intern("GNUTLS_PKCS_PLAIN") and so on. > > I guess thatʼs another option, but itʼs not the preferred > solution. Anyway, letʼs not let the perfect be the enemy of the good. I went with intern. There were some additional #if checks to avoid dynamically loading the symbol on library Windows if it is not available. I used plist_member() to differentiate between `:pass nil` and not specifying `:pass`, and I documented this in the docstrings. Regards, Nikolaos Chatzikonstantinou