| =pod |
| |
| =head1 NAME |
| |
| X509_STORE_set_lookup_crls_cb, |
| X509_STORE_set_verify_func, |
| X509_STORE_get_cleanup, |
| X509_STORE_set_cleanup, |
| X509_STORE_get_lookup_crls, |
| X509_STORE_set_lookup_crls, |
| X509_STORE_get_lookup_certs, |
| X509_STORE_set_lookup_certs, |
| X509_STORE_get_check_policy, |
| X509_STORE_set_check_policy, |
| X509_STORE_get_cert_crl, |
| X509_STORE_set_cert_crl, |
| X509_STORE_get_check_crl, |
| X509_STORE_set_check_crl, |
| X509_STORE_get_get_crl, |
| X509_STORE_set_get_crl, |
| X509_STORE_get_check_revocation, |
| X509_STORE_set_check_revocation, |
| X509_STORE_get_check_issued, |
| X509_STORE_set_check_issued, |
| X509_STORE_CTX_get1_issuer, |
| X509_STORE_get_get_issuer, |
| X509_STORE_set_get_issuer, |
| X509_STORE_CTX_get_verify, |
| X509_STORE_set_verify, |
| X509_STORE_get_verify_cb, |
| X509_STORE_set_verify_cb_func, X509_STORE_set_verify_cb, |
| X509_STORE_CTX_cert_crl_fn, X509_STORE_CTX_check_crl_fn, |
| X509_STORE_CTX_check_issued_fn, X509_STORE_CTX_check_policy_fn, |
| X509_STORE_CTX_check_revocation_fn, X509_STORE_CTX_cleanup_fn, |
| X509_STORE_CTX_get_crl_fn, X509_STORE_CTX_get_issuer_fn, |
| X509_STORE_CTX_lookup_certs_fn, X509_STORE_CTX_lookup_crls_fn |
| - set verification callback |
| |
| =head1 SYNOPSIS |
| |
| #include <openssl/x509_vfy.h> |
| |
| typedef int (*X509_STORE_CTX_get_issuer_fn)(X509 **issuer, |
| X509_STORE_CTX *ctx, X509 *x); |
| typedef int (*X509_STORE_CTX_check_issued_fn)(X509_STORE_CTX *ctx, |
| X509 *x, X509 *issuer); |
| typedef int (*X509_STORE_CTX_check_revocation_fn)(X509_STORE_CTX *ctx); |
| typedef int (*X509_STORE_CTX_get_crl_fn)(X509_STORE_CTX *ctx, |
| X509_CRL **crl, X509 *x); |
| typedef int (*X509_STORE_CTX_check_crl_fn)(X509_STORE_CTX *ctx, X509_CRL *crl); |
| typedef int (*X509_STORE_CTX_cert_crl_fn)(X509_STORE_CTX *ctx, |
| X509_CRL *crl, X509 *x); |
| typedef int (*X509_STORE_CTX_check_policy_fn)(X509_STORE_CTX *ctx); |
| typedef STACK_OF(X509) *(*X509_STORE_CTX_lookup_certs_fn)(X509_STORE_CTX *ctx, |
| const X509_NAME *nm); |
| typedef STACK_OF(X509_CRL) *(*X509_STORE_CTX_lookup_crls_fn)(const |
| X509_STORE_CTX *ctx, |
| const X509_NAME *nm); |
| typedef int (*X509_STORE_CTX_cleanup_fn)(X509_STORE_CTX *ctx); |
| |
| void X509_STORE_set_verify_cb(X509_STORE *ctx, |
| X509_STORE_CTX_verify_cb verify_cb); |
| X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE_CTX *ctx); |
| |
| void X509_STORE_set_verify(X509_STORE *ctx, X509_STORE_CTX_verify_fn verify); |
| X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); |
| |
| int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); |
| X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE_CTX *ctx); |
| void X509_STORE_set_get_issuer(X509_STORE *ctx, |
| X509_STORE_CTX_get_issuer_fn get_issuer); |
| |
| void X509_STORE_set_check_issued(X509_STORE *ctx, |
| X509_STORE_CTX_check_issued_fn check_issued); |
| X509_STORE_CTX_check_issued_fn |
| X509_STORE_get_check_issued(const X509_STORE_CTX *ctx); |
| |
| void X509_STORE_set_check_revocation(X509_STORE *ctx, |
| X509_STORE_CTX_check_revocation_fn check_revocation); |
| X509_STORE_CTX_check_revocation_fn |
| X509_STORE_get_check_revocation(const X509_STORE_CTX *ctx); |
| |
| void X509_STORE_set_get_crl(X509_STORE *ctx, |
| X509_STORE_CTX_get_crl_fn get_crl); |
| X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE_CTX *ctx); |
| |
| void X509_STORE_set_check_crl(X509_STORE *ctx, |
| X509_STORE_CTX_check_crl_fn check_crl); |
| X509_STORE_CTX_check_crl_fn |
| X509_STORE_get_check_crl(const X509_STORE_CTX *ctx); |
| |
| void X509_STORE_set_cert_crl(X509_STORE *ctx, |
| X509_STORE_CTX_cert_crl_fn cert_crl); |
| X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE_CTX *ctx); |
| |
| void X509_STORE_set_check_policy(X509_STORE *ctx, |
| X509_STORE_CTX_check_policy_fn check_policy); |
| X509_STORE_CTX_check_policy_fn |
| X509_STORE_get_check_policy(const X509_STORE_CTX *ctx); |
| |
| void X509_STORE_set_lookup_certs(X509_STORE *ctx, |
| X509_STORE_CTX_lookup_certs_fn lookup_certs); |
| X509_STORE_CTX_lookup_certs_fn |
| X509_STORE_get_lookup_certs(const X509_STORE_CTX *ctx); |
| |
| void X509_STORE_set_lookup_crls(X509_STORE *ctx, |
| X509_STORE_CTX_lookup_crls_fn lookup_crls); |
| X509_STORE_CTX_lookup_crls_fn |
| X509_STORE_get_lookup_crls(const X509_STORE_CTX *ctx); |
| |
| void X509_STORE_set_cleanup(X509_STORE *ctx, |
| X509_STORE_CTX_cleanup_fn cleanup); |
| X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE_CTX *ctx); |
| |
| /* Aliases */ |
| void X509_STORE_set_verify_cb_func(X509_STORE *st, |
| X509_STORE_CTX_verify_cb verify_cb); |
| void X509_STORE_set_verify_func(X509_STORE *ctx, |
| X509_STORE_CTX_verify_fn verify); |
| void X509_STORE_set_lookup_crls_cb(X509_STORE *ctx, |
| X509_STORE_CTX_lookup_crls_fn lookup_crls); |
| |
| =head1 DESCRIPTION |
| |
| X509_STORE_set_verify_cb() sets the verification callback of I<ctx> to |
| I<verify_cb> overwriting the previous callback. |
| The callback assigned with this function becomes a default for the one |
| that can be assigned directly to the corresponding B<X509_STORE_CTX>, |
| please see L<X509_STORE_CTX_set_verify_cb(3)> for further information. |
| |
| X509_STORE_set_verify() sets the final chain verification function for |
| I<ctx> to I<verify>. |
| Its purpose is to go through the chain of certificates and check that |
| all signatures are valid and that the current time is within the |
| limits of each certificate's first and last validity time. |
| The final chain verification functions must return 0 on failure and 1 |
| on success. |
| I<If no chain verification function is provided, the internal default |
| function will be used instead.> |
| |
| X509_STORE_CTX_get1_issuer() tries to find a certificate from the I<store> |
| component of I<ctx> with a subject name matching the issuer name of I<x>. |
| On success it assigns to I<*issuer> the first match that is currently valid, |
| or at least the most recently expired match if there is no currently valid one. |
| If the function returns 1 the caller is responsible for freeing I<*issuer>. |
| |
| X509_STORE_set_get_issuer() sets the function I<get_issuer> |
| to get the "best" candidate issuer certificate of the given certificate I<x>. |
| When such a certificate is found, I<get_issuer> must up-ref and assign it |
| to I<*issuer> and then return 1. |
| Otherwise I<get_issuer> must return 0 if not found and -1 (or 0) on failure. |
| If X509_STORE_set_get_issuer() is not used or I<get_issuer> is NULL |
| then X509_STORE_CTX_get1_issuer() is used as the default implementation. |
| |
| X509_STORE_set_check_issued() sets the function to check that a given |
| certificate I<x> is issued by the issuer certificate I<issuer>. |
| This function must return 0 on failure (among others if I<x> hasn't |
| been issued with I<issuer>) and 1 on success. |
| I<If no function to get the issuer is provided, the internal default |
| function will be used instead.> |
| |
| X509_STORE_set_check_revocation() sets the revocation checking |
| function. |
| Its purpose is to look through the final chain and check the |
| revocation status for each certificate. |
| It must return 0 on failure and 1 on success. |
| I<If no function to get the issuer is provided, the internal default |
| function will be used instead.> |
| |
| X509_STORE_set_get_crl() sets the function to get the crl for a given |
| certificate I<x>. |
| When found, the crl must be assigned to I<*crl>. |
| This function must return 0 on failure and 1 on success. |
| I<If no function to get the issuer is provided, the internal default |
| function will be used instead.> |
| |
| X509_STORE_set_check_crl() sets the function to check the validity of |
| the given I<crl>. |
| This function must return 0 on failure and 1 on success. |
| I<If no function to get the issuer is provided, the internal default |
| function will be used instead.> |
| |
| X509_STORE_set_cert_crl() sets the function to check the revocation |
| status of the given certificate I<x> against the given I<crl>. |
| This function must return 0 on failure and 1 on success. |
| I<If no function to get the issuer is provided, the internal default |
| function will be used instead.> |
| |
| X509_STORE_set_check_policy() sets the function to check the policies |
| of all the certificates in the final chain.. |
| This function must return 0 on failure and 1 on success. |
| I<If no function to get the issuer is provided, the internal default |
| function will be used instead.> |
| |
| X509_STORE_set_lookup_certs() and X509_STORE_set_lookup_crls() set the |
| functions to look up all the certs or all the CRLs that match the |
| given name I<nm>. |
| These functions return NULL on failure and a pointer to a stack of |
| certificates (B<X509>) or to a stack of CRLs (B<X509_CRL>) on |
| success. |
| I<If no function to get the issuer is provided, the internal default |
| function will be used instead.> |
| |
| X509_STORE_set_cleanup() sets the final cleanup function, which is |
| called when the context (B<X509_STORE_CTX>) is being torn down. |
| This function doesn't return any value. |
| I<If no function to get the issuer is provided, the internal default |
| function will be used instead.> |
| |
| X509_STORE_get_verify_cb(), X509_STORE_CTX_get_verify(), |
| X509_STORE_get_get_issuer(), X509_STORE_get_check_issued(), |
| X509_STORE_get_check_revocation(), X509_STORE_get_get_crl(), |
| X509_STORE_get_check_crl(), X509_STORE_set_verify(), |
| X509_STORE_set_get_issuer(), X509_STORE_get_cert_crl(), |
| X509_STORE_get_check_policy(), X509_STORE_get_lookup_certs(), |
| X509_STORE_get_lookup_crls() and X509_STORE_get_cleanup() all return |
| the function pointer assigned with X509_STORE_set_check_issued(), |
| X509_STORE_set_check_revocation(), X509_STORE_set_get_crl(), |
| X509_STORE_set_check_crl(), X509_STORE_set_cert_crl(), |
| X509_STORE_set_check_policy(), X509_STORE_set_lookup_certs(), |
| X509_STORE_set_lookup_crls() and X509_STORE_set_cleanup(), or NULL if |
| no assignment has been made. |
| |
| X509_STORE_set_verify_cb_func(), X509_STORE_set_verify_func() and |
| X509_STORE_set_lookup_crls_cb() are aliases for |
| X509_STORE_set_verify_cb(), X509_STORE_set_verify() and |
| X509_STORE_set_lookup_crls, available as macros for backward |
| compatibility. |
| |
| =head1 NOTES |
| |
| All the callbacks from a B<X509_STORE> are inherited by the |
| corresponding B<X509_STORE_CTX> structure when it is initialized. |
| See L<X509_STORE_CTX_set_verify_cb(3)> for further details. |
| |
| =head1 BUGS |
| |
| The macro version of this function was the only one available before |
| OpenSSL 1.0.0. |
| |
| =head1 RETURN VALUES |
| |
| The X509_STORE_set_*() functions do not return a value. |
| |
| The X509_STORE_get_*() functions return a pointer of the appropriate |
| function type. |
| |
| X509_STORE_CTX_get1_issuer() returns |
| 1 if a suitable certificate is found, 0 if not found, -1 on other error. |
| |
| =head1 SEE ALSO |
| |
| L<X509_STORE_CTX_set_verify_cb(3)>, L<X509_STORE_CTX_get0_chain(3)>, |
| L<X509_STORE_CTX_verify_cb(3)>, L<X509_STORE_CTX_verify_fn(3)>, |
| L<CMS_verify(3)> |
| |
| =head1 HISTORY |
| |
| The X509_STORE_set_verify_cb() function was added in OpenSSL 1.0.0. |
| |
| The functions |
| X509_STORE_set_verify_cb(), X509_STORE_get_verify_cb(), |
| X509_STORE_set_verify(), X509_STORE_CTX_get_verify(), |
| X509_STORE_set_get_issuer(), X509_STORE_get_get_issuer(), |
| X509_STORE_set_check_issued(), X509_STORE_get_check_issued(), |
| X509_STORE_set_check_revocation(), X509_STORE_get_check_revocation(), |
| X509_STORE_set_get_crl(), X509_STORE_get_get_crl(), |
| X509_STORE_set_check_crl(), X509_STORE_get_check_crl(), |
| X509_STORE_set_cert_crl(), X509_STORE_get_cert_crl(), |
| X509_STORE_set_check_policy(), X509_STORE_get_check_policy(), |
| X509_STORE_set_lookup_certs(), X509_STORE_get_lookup_certs(), |
| X509_STORE_set_lookup_crls(), X509_STORE_get_lookup_crls(), |
| X509_STORE_set_cleanup() and X509_STORE_get_cleanup() |
| were added in OpenSSL 1.1.0. |
| |
| =head1 COPYRIGHT |
| |
| Copyright 2009-2021 The OpenSSL Project Authors. All Rights Reserved. |
| |
| Licensed under the Apache License 2.0 (the "License"). You may not use |
| this file except in compliance with the License. You can obtain a copy |
| in the file LICENSE in the source distribution or at |
| L<https://www.openssl.org/source/license.html>. |
| |
| =cut |