ScotlandPHP 2016


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

openssl_x509_checkpurposeVerifies if a certificate can be used for a particular purpose


int openssl_x509_checkpurpose ( mixed $x509cert , int $purpose [, array $cainfo = array() [, string $untrustedfile ]] )

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



The examined certificate.


openssl_x509_checkpurpose() purposes
Constant Description
X509_PURPOSE_SSL_CLIENT Can the certificate be used for the client side of an SSL connection?
X509_PURPOSE_SSL_SERVER Can the certificate be used for the server side of an SSL connection?
X509_PURPOSE_NS_SSL_SERVER Can the cert be used for Netscape SSL server?
X509_PURPOSE_SMIME_SIGN Can the cert be used to sign S/MIME email?
X509_PURPOSE_SMIME_ENCRYPT Can the cert be used to encrypt S/MIME email?
X509_PURPOSE_CRL_SIGN Can the cert be used to sign a certificate revocation list (CRL)?
X509_PURPOSE_ANY Can the cert be used for Any/All purposes?
These options are not bitfields - you may specify one only!


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


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.

Valorile întoarse

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

add a note add a note

User Contributed Notes 2 notes

adr at NOSPAM dot entropymatrix dot com
3 years ago
The following is an example usage of openssl_x509_checkpurpose. It is equivalent to the openssl verify command as follows:
openssl verify -CApath $openssl_cadir -purpose sslserver $openssl_crtfile


$x509_res = openssl_x509_read(file_get_contents($openssl_crtfile));
$x509_res)) {
'x509 cert could not be read'."\n";
$valid = openssl_x509_checkpurpose($x509_res,X509_PURPOSE_SSL_SERVER,array($openssl_cadir));
if (
$valid === true) {
'Certificate is valid for use as SSL server'."\n";
} else {
'Certificate validation returned'.$valid."\n";
chaoszcat at gmail dot com
4 years ago
Few days ago I dual boot my system into Windows 8 and play around with it, and then I boot it back to windows 7, and all of sudden this function fails by returning me 0 all the time.

Spent almost two hours digging google for no result, I almost end my research.

Then (I don't know why) I did a system time update (synchronize with, and all of sudden, this function returns me 1 (true).

It's true that when I boot back to Windows 7 my time has been screwed by a few hours later than my current time, and I did a manual change on it. I doubt this has anything to do with this function?

Hope it helps.

Keywords: google discovery, openid, discovery
Platform: Windows 7 64bit, PHP 5.3.13
To Top