php8.5
Home/ Manual/ openssl / functions/ openssl_x509_checkpurpose

openssl_x509_checkpurpose

PHP function Edit on GitHub ✎

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

Verifies if a certificate can be used for a particular purpose

Description

openssl_x509_checkpurpose(OpenSSLCertificate|string $certificate, int $purpose, array $ca_info = [], string|null $untrusted_certificates_file = null): bool|int

openssl_x509_checkpurpose() examines a certificate to see if it can be used for the specified purpose.

Parameters

certificate

The examined certificate.

purpose
ConstantDescription
X509_PURPOSE_SSL_CLIENTCan the certificate be used for the client side of an SSL connection?
X509_PURPOSE_SSL_SERVERCan the certificate be used for the server side of an SSL connection?
X509_PURPOSE_NS_SSL_SERVERCan the cert be used for Netscape SSL server?
X509_PURPOSE_SMIME_SIGNCan the cert be used to sign S/MIME email?
X509_PURPOSE_SMIME_ENCRYPTCan the cert be used to encrypt S/MIME email?
X509_PURPOSE_CRL_SIGNCan the cert be used to sign a certificate revocation list (CRL)?
X509_PURPOSE_ANYCan the cert be used for Any/All purposes?

These options are not bitfields - you may specify one only!

ca_info

ca_info should be an array of trusted CA files/dirs as described in Certificate Verification.

untrusted_certificates_file

If specified, this should be the name of a PEM encoded file holding certificates that can be used to help verify the certificate, although no trust is placed in the certificates that come from that file.

Return Values

Returns true if the certificate can be used for the intended purpose, false if it cannot, or -1 on error.

Warning

Both true and -1 are truthy, so a plain truth test such as if (openssl_x509_checkpurpose(...)) treats an error as a successful verification. The result must be compared strictly against true.

Changelog

VersionDescription
8.0.0certificate accepts an OpenSSLCertificate instance now; previously, a Resource of type OpenSSL X.509 was accepted.
8.0.0untrusted_certificates_file is nullable now.

Source: reference/openssl/functions/openssl-x509-checkpurpose.xml · from the official PHP manual (php/doc-en)