X509_OBJECT_GET0_X509(3)

NAME
X509_OBJECT_get_type, X509_OBJECT_new, X509_OBJECT_up_ref_count, X509_OBJECT_free_contents, X509_OBJECT_free, X509_OBJECT_get0_X509, X509_OBJECT_get0_X509_CRL, X509_OBJECT_idx_by_subject, X509_OBJECT_retrieve_by_subject, X509_OBJECT_retrieve_match - certificate, CRL, private key, and string wrapper for certificate stores

SYNOPSIS
#include <openssl/x509_vfy.h>
X509_LOOKUP_TYPE
X509_OBJECT_get_type(const X509_OBJECT *obj);
X509_OBJECT *
X509_OBJECT_new(void);
int
X509_OBJECT_up_ref_count(X509_OBJECT *obj);
void
X509_OBJECT_free_contents(X509_OBJECT *obj);
void
X509_OBJECT_free(X509_OBJECT *obj);
X509 *
X509_OBJECT_get0_X509(const X509_OBJECT *obj);
X509_CRL *
X509_OBJECT_get0_X509_CRL(X509_OBJECT *obj);
int
X509_OBJECT_idx_by_subject(STACK_OF(X509_OBJECT) *stack, X509_LOOKUP_TYPE type, X509_NAME *name);
X509_OBJECT *
X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *stack, X509_LOOKUP_TYPE type, X509_NAME *name);
X509_OBJECT *
X509_OBJECT_retrieve_match(STACK_OF(X509_OBJECT) *stack, X509_OBJECT *obj);

DESCRIPTION
The X509_OBJECT structure is a shallow wrapper around one X509 certificate object or one X509_CRL certificate revocation list object. The type of object stored at any given time can be inspected with X509_OBJECT_get_type().

Each X509_STORE object uses one stack of X509_OBJECT structures as its main storage area.

X509_OBJECT_new() allocates a new X509_OBJECT structure. It sets the object type to X509_LU_NONE and the pointer to the certificate or CRL to NULL.

If obj contains an X509 certificate or an X509_CRL certificate revocation list, X509_OBJECT_up_ref_count() increments the reference count of that inner object by 1. Otherwise, no action occurs.

If obj contains an X509 certificate, X509_OBJECT_free_contents() calls X509_free(3) on that inner object. If obj contains an X509_CRL certificate revocation list, it calls X509_CRL_free(3) on that inner list. Otherwise, no action occurs. X509_OBJECT_free_contents() does not free obj itself.

X509_OBJECT_free() calls X509_OBJECT_free_contents() and then frees the storage used for the obj itself.

If type is X509_LU_X509, X509_OBJECT_idx_by_subject() and X509_OBJECT_retrieve_by_subject() search the given stack for a certificate with the subject name. If type is X509_LU_CRL, they search for a certificate revocation list with the issuer name instead.

If obj contains a certificate, X509_OBJECT_retrieve_match() searches the given stack for a certificate with a matching subject name; if it contains a certificate revocation list, it searches for a certificate revocation list with a matching issuer name instead; otherwise, it searches for an X509_OBJECT with a matching type.

RETURN VALUES
X509_OBJECT_get_type() returns X509_LU_X509 if obj contains a certificate, X509_LU_CRL if it contains a certificate revocation list, or X509_LU_NONE if it contains neither.

X509_OBJECT_up_ref_count() returns 1 on success and 0 on failure.

X509_OBJECT_new() returns the new object or NULL if memory allocation fails.

X509_OBJECT_get0_X509() returns an internal pointer to the certificate contained in obj or NULL if obj is NULL or contains no certificate.

X509_OBJECT_get0_X509_CRL() returns an internal pointer to the certificate revocation list contained in obj or NULL if obj is NULL or contains no certificate revocation list.

X509_OBJECT_idx_by_subject() returns the zero-based index of the first matching certificate or revocation list in the stack or -1 if type is neither X509_LU_X509 nor X509_LU_CRL or if no match is found.

X509_OBJECT_retrieve_by_subject() returns the first matching certificate or revocation list in the stack or NULL if type is neither X509_LU_X509 nor X509_LU_CRL or if no match is found.

X509_OBJECT_retrieve_match() returns the first matching X509_OBJECT or NULL if stack or obj is NULL or no match is found.

SEE ALSO
STACK_OF(3), X509_CRL_new(3), X509_LOOKUP_new(3), X509_NAME_new(3), X509_new(3), X509_STORE_get0_objects(3), X509_STORE_get_by_subject(3), X509_STORE_load_locations(3), X509_STORE_new(3)

HISTORY
X509_OBJECT_up_ref_count() and X509_OBJECT_free_contents() first appeared in SSLeay 0.8.0 and have been available since OpenBSD 2.4.

X509_OBJECT_idx_by_subject(), X509_OBJECT_retrieve_by_subject(), and X509_OBJECT_retrieve_match() first appeared in OpenSSL 0.9.6 and have been available since OpenBSD 2.9.

X509_OBJECT_get_type(), X509_OBJECT_get0_X509(), and X509_OBJECT_get0_X509_CRL() first appeared in OpenSSL 1.1.0 and have been available since OpenBSD 6.3.

X509_OBJECT_new() and X509_OBJECT_free() first appeared in OpenSSL 1.1.0 and have been available since OpenBSD 7.1.