Blame doc/man3/X509_LOOKUP_meth_new.pod

Packit Service 084de1
=pod
Packit Service 084de1
Packit Service 084de1
=head1 NAME
Packit Service 084de1
Packit Service 084de1
X509_LOOKUP_METHOD,
Packit Service 084de1
X509_LOOKUP_meth_new, X509_LOOKUP_meth_free, X509_LOOKUP_meth_set_new_item,
Packit Service 084de1
X509_LOOKUP_meth_get_new_item, X509_LOOKUP_meth_set_free,
Packit Service 084de1
X509_LOOKUP_meth_get_free, X509_LOOKUP_meth_set_init,
Packit Service 084de1
X509_LOOKUP_meth_get_init, X509_LOOKUP_meth_set_shutdown,
Packit Service 084de1
X509_LOOKUP_meth_get_shutdown,
Packit Service 084de1
X509_LOOKUP_ctrl_fn, X509_LOOKUP_meth_set_ctrl, X509_LOOKUP_meth_get_ctrl,
Packit Service 084de1
X509_LOOKUP_get_by_subject_fn, X509_LOOKUP_meth_set_get_by_subject,
Packit Service 084de1
X509_LOOKUP_meth_get_get_by_subject,
Packit Service 084de1
X509_LOOKUP_get_by_issuer_serial_fn, X509_LOOKUP_meth_set_get_by_issuer_serial,
Packit Service 084de1
X509_LOOKUP_meth_get_get_by_issuer_serial,
Packit Service 084de1
X509_LOOKUP_get_by_fingerprint_fn, X509_LOOKUP_meth_set_get_by_fingerprint,
Packit Service 084de1
X509_LOOKUP_meth_get_get_by_fingerprint,
Packit Service 084de1
X509_LOOKUP_get_by_alias_fn, X509_LOOKUP_meth_set_get_by_alias,
Packit Service 084de1
X509_LOOKUP_meth_get_get_by_alias,
Packit Service 084de1
X509_OBJECT_set1_X509, X509_OBJECT_set1_X509_CRL
Packit Service 084de1
- Routines to build up X509_LOOKUP methods
Packit Service 084de1
Packit Service 084de1
=head1 SYNOPSIS
Packit Service 084de1
Packit Service 084de1
 #include <openssl/x509_vfy.h>
Packit Service 084de1
Packit Service 084de1
 typedef x509_lookup_method_st X509_LOOKUP_METHOD;
Packit Service 084de1
Packit Service 084de1
 X509_LOOKUP_METHOD *X509_LOOKUP_meth_new(const char *name);
Packit Service 084de1
 void X509_LOOKUP_meth_free(X509_LOOKUP_METHOD *method);
Packit Service 084de1
Packit Service 084de1
 int X509_LOOKUP_meth_set_new_item(X509_LOOKUP_METHOD *method,
Packit Service 084de1
                                   int (*new_item) (X509_LOOKUP *ctx));
Packit Service 084de1
 int (*X509_LOOKUP_meth_get_new_item(const X509_LOOKUP_METHOD* method))
Packit Service 084de1
     (X509_LOOKUP *ctx);
Packit Service 084de1
Packit Service 084de1
 int X509_LOOKUP_meth_set_free(X509_LOOKUP_METHOD *method,
Packit Service 084de1
                               void (*free) (X509_LOOKUP *ctx));
Packit Service 084de1
 void (*X509_LOOKUP_meth_get_free(const X509_LOOKUP_METHOD* method))
Packit Service 084de1
     (X509_LOOKUP *ctx);
Packit Service 084de1
Packit Service 084de1
 int X509_LOOKUP_meth_set_init(X509_LOOKUP_METHOD *method,
Packit Service 084de1
                               int (*init) (X509_LOOKUP *ctx));
Packit Service 084de1
 int (*X509_LOOKUP_meth_get_init(const X509_LOOKUP_METHOD* method))
Packit Service 084de1
     (X509_LOOKUP *ctx);
Packit Service 084de1
Packit Service 084de1
 int X509_LOOKUP_meth_set_shutdown(X509_LOOKUP_METHOD *method,
Packit Service 084de1
                                   int (*shutdown) (X509_LOOKUP *ctx));
Packit Service 084de1
 int (*X509_LOOKUP_meth_get_shutdown(const X509_LOOKUP_METHOD* method))
Packit Service 084de1
     (X509_LOOKUP *ctx);
Packit Service 084de1
Packit Service 084de1
 typedef int (*X509_LOOKUP_ctrl_fn)(X509_LOOKUP *ctx, int cmd, const char *argc,
Packit Service 084de1
                                    long argl, char **ret);
Packit Service 084de1
 int X509_LOOKUP_meth_set_ctrl(X509_LOOKUP_METHOD *method,
Packit Service 084de1
     X509_LOOKUP_ctrl_fn ctrl_fn);
Packit Service 084de1
 X509_LOOKUP_ctrl_fn X509_LOOKUP_meth_get_ctrl(const X509_LOOKUP_METHOD *method);
Packit Service 084de1
Packit Service 084de1
 typedef int (*X509_LOOKUP_get_by_subject_fn)(X509_LOOKUP *ctx,
Packit Service 084de1
                                              X509_LOOKUP_TYPE type,
Packit Service 084de1
                                              X509_NAME *name,
Packit Service 084de1
                                              X509_OBJECT *ret);
Packit Service 084de1
 int X509_LOOKUP_meth_set_get_by_subject(X509_LOOKUP_METHOD *method,
Packit Service 084de1
     X509_LOOKUP_get_by_subject_fn fn);
Packit Service 084de1
 X509_LOOKUP_get_by_subject_fn X509_LOOKUP_meth_get_get_by_subject(
Packit Service 084de1
     const X509_LOOKUP_METHOD *method);
Packit Service 084de1
Packit Service 084de1
 typedef int (*X509_LOOKUP_get_by_issuer_serial_fn)(X509_LOOKUP *ctx,
Packit Service 084de1
                                                    X509_LOOKUP_TYPE type,
Packit Service 084de1
                                                    X509_NAME *name,
Packit Service 084de1
                                                    ASN1_INTEGER *serial,
Packit Service 084de1
                                                    X509_OBJECT *ret);
Packit Service 084de1
 int X509_LOOKUP_meth_set_get_by_issuer_serial(
Packit Service 084de1
     X509_LOOKUP_METHOD *method, X509_LOOKUP_get_by_issuer_serial_fn fn);
Packit Service 084de1
 X509_LOOKUP_get_by_issuer_serial_fn X509_LOOKUP_meth_get_get_by_issuer_serial(
Packit Service 084de1
     const X509_LOOKUP_METHOD *method);
Packit Service 084de1
Packit Service 084de1
 typedef int (*X509_LOOKUP_get_by_fingerprint_fn)(X509_LOOKUP *ctx,
Packit Service 084de1
                                                  X509_LOOKUP_TYPE type,
Packit Service 084de1
                                                  const unsigned char* bytes,
Packit Service 084de1
                                                  int len,
Packit Service 084de1
                                                  X509_OBJECT *ret);
Packit Service 084de1
 int X509_LOOKUP_meth_set_get_by_fingerprint(X509_LOOKUP_METHOD *method,
Packit Service 084de1
     X509_LOOKUP_get_by_fingerprint_fn fn);
Packit Service 084de1
 X509_LOOKUP_get_by_fingerprint_fn X509_LOOKUP_meth_get_get_by_fingerprint(
Packit Service 084de1
     const X509_LOOKUP_METHOD *method);
Packit Service 084de1
Packit Service 084de1
 typedef int (*X509_LOOKUP_get_by_alias_fn)(X509_LOOKUP *ctx,
Packit Service 084de1
                                            X509_LOOKUP_TYPE type,
Packit Service 084de1
                                            const char *str,
Packit Service 084de1
                                            int len,
Packit Service 084de1
                                            X509_OBJECT *ret);
Packit Service 084de1
 int X509_LOOKUP_meth_set_get_by_alias(X509_LOOKUP_METHOD *method,
Packit Service 084de1
     X509_LOOKUP_get_by_alias_fn fn);
Packit Service 084de1
 X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias(
Packit Service 084de1
     const X509_LOOKUP_METHOD *method);
Packit Service 084de1
Packit Service 084de1
 int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj);
Packit Service 084de1
 int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj);
Packit Service 084de1
Packit Service 084de1
=head1 DESCRIPTION
Packit Service 084de1
Packit Service 084de1
The B<X509_LOOKUP_METHOD> type is a structure used for the implementation of new
Packit Service 084de1
X509_LOOKUP types. It provides a set of functions used by OpenSSL for the
Packit Service 084de1
implementation of various X509 and X509_CRL lookup capabilities. One instance
Packit Service 084de1
of an X509_LOOKUP_METHOD can be associated to many instantiations of an
Packit Service 084de1
B<X509_LOOKUP> structure.
Packit Service 084de1
Packit Service 084de1
X509_LOOKUP_meth_new() creates a new B<X509_LOOKUP_METHOD> structure. It should
Packit Service 084de1
be given a human-readable string containing a brief description of the lookup
Packit Service 084de1
method.
Packit Service 084de1
Packit Service 084de1
X509_LOOKUP_meth_free() destroys a B<X509_LOOKUP_METHOD> structure.
Packit Service 084de1
Packit Service 084de1
X509_LOOKUP_get_new_item() and X509_LOOKUP_set_new_item() get and set the
Packit Service 084de1
function that is called when an B<X509_LOOKUP> object is created with
Packit Service 084de1
X509_LOOKUP_new(). If an X509_LOOKUP_METHOD requires any per-X509_LOOKUP
Packit Service 084de1
specific data, the supplied new_item function should allocate this data and
Packit Service 084de1
invoke L<X509_LOOKUP_set_method_data(3)>.
Packit Service 084de1
Packit Service 084de1
X509_LOOKUP_get_free() and X509_LOOKUP_set_free() get and set the function
Packit Service 084de1
that is used to free any method data that was allocated and set from within
Packit Service 084de1
new_item function.
Packit Service 084de1
Packit Service 084de1
X509_LOOKUP_meth_get_init() and X509_LOOKUP_meth_set_init() get and set the
Packit Service 084de1
function that is used to initialize the method data that was set with
Packit Service 084de1
L<X509_LOOKUP_set_method_data(3)> as part of the new_item routine.
Packit Service 084de1
Packit Service 084de1
X509_LOOKUP_meth_get_shutdown() and X509_LOOKUP_meth_set_shutdown() get and set
Packit Service 084de1
the function that is used to shut down the method data whose state was
Packit Service 084de1
previously initialized in the init function.
Packit Service 084de1
Packit Service 084de1
X509_LOOKUP_meth_get_ctrl() and X509_LOOKUP_meth_set_ctrl() get and set a
Packit Service 084de1
function to be used to handle arbitrary control commands issued by
Packit Service 084de1
X509_LOOKUP_ctrl(). The control function is given the X509_LOOKUP
Packit Service 084de1
B<ctx>, along with the arguments passed by X509_LOOKUP_ctrl. B<cmd> is
Packit Service 084de1
an arbitrary integer that defines some operation. B<argc> is a pointer
Packit Service 084de1
to an array of characters. B<argl> is an integer. B<ret>, if set,
Packit Service 084de1
points to a location where any return data should be written to. How
Packit Service 084de1
B<argc> and B<argl> are used depends entirely on the control function.
Packit Service 084de1
Packit Service 084de1
Packit Service 084de1
X509_LOOKUP_set_get_by_subject(), X509_LOOKUP_set_get_by_issuer_serial(),
Packit Service 084de1
X509_LOOKUP_set_get_by_fingerprint(), X509_LOOKUP_set_get_by_alias() set
Packit Service 084de1
the functions used to retrieve an X509 or X509_CRL object by the object's
Packit Service 084de1
subject, issuer, fingerprint, and alias respectively. These functions are given
Packit Service 084de1
the X509_LOOKUP context, the type of the X509_OBJECT being requested, parameters
Packit Service 084de1
related to the lookup, and an X509_OBJECT that will receive the requested
Packit Service 084de1
object.
Packit Service 084de1
Packit Service 084de1
Implementations must add objects they find to the B<X509_STORE> object
Packit Service 084de1
using X509_STORE_add_cert() or X509_STORE_add_crl().  This increments
Packit Service 084de1
its reference count.  However, the X509_STORE_CTX_get_by_subject()
Packit Service 084de1
function also increases the reference count which leads to one too
Packit Service 084de1
many references being held.  Therefore applications should
Packit Service 084de1
additionally call X509_free() or X509_CRL_free() to decrement the
Packit Service 084de1
reference count again.
Packit Service 084de1
Packit Service 084de1
Implementations should also use either X509_OBJECT_set1_X509() or
Packit Service 084de1
X509_OBJECT_set1_X509_CRL() to set the result.  Note that this also
Packit Service 084de1
increments the result's reference count.
Packit Service 084de1
Packit Service 084de1
Any method data that was created as a result of the new_item function
Packit Service 084de1
set by X509_LOOKUP_meth_set_new_item() can be accessed with
Packit Service 084de1
L<X509_LOOKUP_get_method_data(3)>. The B<X509_STORE> object that owns the
Packit Service 084de1
X509_LOOKUP may be accessed with L<X509_LOOKUP_get_store(3)>. Successful
Packit Service 084de1
lookups should return 1, and unsuccessful lookups should return 0.
Packit Service 084de1
Packit Service 084de1
X509_LOOKUP_get_get_by_subject(), X509_LOOKUP_get_get_by_issuer_serial(),
Packit Service 084de1
X509_LOOKUP_get_get_by_fingerprint(), X509_LOOKUP_get_get_by_alias() retrieve
Packit Service 084de1
the function set by the corresponding setter.
Packit Service 084de1
Packit Service 084de1
=head1 RETURN VALUES
Packit Service 084de1
Packit Service 084de1
The B<X509_LOOKUP_meth_set> functions return 1 on success or 0 on error.
Packit Service 084de1
Packit Service 084de1
The B<X509_LOOKUP_meth_get> functions return the corresponding function
Packit Service 084de1
pointers.
Packit Service 084de1
Packit Service 084de1
=head1 SEE ALSO
Packit Service 084de1
Packit Service 084de1
L<X509_STORE_new(3)>, L<SSL_CTX_set_cert_store(3)>
Packit Service 084de1
Packit Service 084de1
=head1 HISTORY
Packit Service 084de1
Packit Service 084de1
The functions described here were added in OpenSSL 1.1.0i.
Packit Service 084de1
Packit Service 084de1
=head1 COPYRIGHT
Packit Service 084de1
Packit Service 084de1
Copyright 2018-2020 The OpenSSL Project Authors. All Rights Reserved.
Packit Service 084de1
Packit Service 084de1
Licensed under the OpenSSL license (the "License").  You may not use
Packit Service 084de1
this file except in compliance with the License.  You can obtain a copy
Packit Service 084de1
in the file LICENSE in the source distribution or at
Packit Service 084de1
L<https://www.openssl.org/source/license.html>.
Packit Service 084de1
Packit Service 084de1
=cut