Re: NULL first parameter of X509V3_EXT_conf?

Viktor Dukhovni <[email protected]>
Newsgroups gmane.comp.encryption.openssl.user
Message-ID <[email protected]>
On Tue, Sep 17, 2024 at 12:59:03AM +0200, Matěj Cepl wrote:

>     X509.new_extension('subjectKeyIdentifier', sub_key_id)
>     print('This next bit seq faults.')
>     X509.new_extension('authorityKeyIdentifier', 'keyid')

It would be helpful to post the code behind the `new_extension' method,

> X509.new_extension() is just a very thin layer over
> X509V3_EXT_conf()

That is, in more detail than the much too terse sentence above.

> and it seems that OpenSSL crashes in this
> function when it is called for the second time with the first
> parameter (`conf`) set to `NULL`.

The `conf` argument to this (deprecated legacy) function is expected to
a parsed configuration (as an LHASH table), which in principle can be
filled in via, e.g.,

    LHASH_OF(CONF_VALUE) *CONF_load(LHASH_OF(CONF_VALUE) *conf, const char *file,
                                    long *eline)

however, that function expects you to pass in a (typically initially
empty) hash table, and here you're on your own:

    #include <openssl/conf.h>

    LHASH_OF(CONF_VALUE) *lh = lh_CONF_VALUE_new(<hash_func>, <cmp_func>);

so you'd need to provide the hash and comparison functions for a
CONF_VALUE...

But this is of course heading in the wrong direction.  You should not be
using the never documented and deprecated X509V3_EXT_conf() in the first
place.

> Any idea what I am missing?

You can start by switching to X509V3_EXT_nconf(), which should tolerate
a NULL `conf` argument, if your extension is self-contained, and needs
no supporting configuration.

In some cases, you don't need either conf or nconf.  For example:

    https://github.com/vdukhovni/postfix/blob/090083cc2fe397a8a1946b7bcbfa7a341d4b5595/postfix/src/tls/tls_dane.c#L1273-L1354

When you do need conf settings from some file, consider:

    https://github.com/openssl/openssl/blob/27abf142f640cf175e7690529660ebeb9a3875a9/apps/x509.c#L717-L731
    https://github.com/openssl/openssl/blob/27abf142f640cf175e7690529660ebeb9a3875a9/apps/lib/apps.c#L406-L421
    https://github.com/openssl/openssl/blob/27abf142f640cf175e7690529660ebeb9a3875a9/apps/lib/apps.c#L369-L393

Where the work is ultimately done by NCONF_new_ex() and
NCONF_load_bio(), with a suitable BIO open for the config file.

-- 
    Viktor.

-- 
You received this message because you are subscribed to the Google Groups "openssl-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openssl-users+unsubscribe-MCmKBN63+Bmbup2nOX2J7Q@public.gmane.org
To view this discussion on the web visit https://groups.google.com/a/openssl.org/d/msgid/openssl-users/ZukS9v1s4D8wdTUo%40chardros.imrryr.org.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.