diff options
-rw-r--r-- | ext/openssl/openssl.c | 129 | ||||
-rw-r--r-- | ext/openssl/openssl.stub.php | 79 | ||||
-rw-r--r-- | ext/openssl/openssl_arginfo.h | 108 |
3 files changed, 195 insertions, 121 deletions
diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c index 912c57f709..4aadd68dfa 100644 --- a/ext/openssl/openssl.c +++ b/ext/openssl/openssl.c @@ -130,119 +130,6 @@ PHP_FUNCTION(openssl_pkey_derive); PHP_FUNCTION(openssl_random_pseudo_bytes); /* {{{ arginfo */ -ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pkcs12_export_to_file, 0, 0, 4) - ZEND_ARG_INFO(0, x509) - ZEND_ARG_INFO(0, filename) - ZEND_ARG_INFO(0, priv_key) - ZEND_ARG_INFO(0, pass) - ZEND_ARG_INFO(0, args) /* array */ -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pkcs12_export, 0, 0, 4) - ZEND_ARG_INFO(0, x509) - ZEND_ARG_INFO(1, out) - ZEND_ARG_INFO(0, priv_key) - ZEND_ARG_INFO(0, pass) - ZEND_ARG_INFO(0, args) /* array */ -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_openssl_pkcs12_read, 0) - ZEND_ARG_INFO(0, PKCS12) - ZEND_ARG_INFO(1, certs) /* array */ - ZEND_ARG_INFO(0, pass) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_csr_export_to_file, 0, 0, 2) - ZEND_ARG_INFO(0, csr) - ZEND_ARG_INFO(0, outfilename) - ZEND_ARG_INFO(0, notext) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_csr_export, 0, 0, 2) - ZEND_ARG_INFO(0, csr) - ZEND_ARG_INFO(1, out) - ZEND_ARG_INFO(0, notext) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_csr_sign, 0, 0, 4) - ZEND_ARG_INFO(0, csr) - ZEND_ARG_INFO(0, x509) - ZEND_ARG_INFO(0, priv_key) - ZEND_ARG_INFO(0, days) - ZEND_ARG_INFO(0, config_args) /* array */ - ZEND_ARG_INFO(0, serial) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_csr_new, 0, 0, 2) - ZEND_ARG_INFO(0, dn) /* array */ - ZEND_ARG_INFO(1, privkey) - ZEND_ARG_INFO(0, configargs) - ZEND_ARG_INFO(0, extraattribs) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_csr_get_subject, 0, 0, 1) - ZEND_ARG_INFO(0, csr) - ZEND_ARG_INFO(0, use_shortnames) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_csr_get_public_key, 0, 0, 1) - ZEND_ARG_INFO(0, csr) - ZEND_ARG_INFO(0, use_shortnames) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pkey_new, 0, 0, 0) - ZEND_ARG_INFO(0, configargs) /* array */ -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pkey_export_to_file, 0, 0, 2) - ZEND_ARG_INFO(0, key) - ZEND_ARG_INFO(0, outfilename) - ZEND_ARG_INFO(0, passphrase) - ZEND_ARG_INFO(0, config_args) /* array */ -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pkey_export, 0, 0, 2) - ZEND_ARG_INFO(0, key) - ZEND_ARG_INFO(1, out) - ZEND_ARG_INFO(0, passphrase) - ZEND_ARG_INFO(0, config_args) /* array */ -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_openssl_pkey_get_public, 0) - ZEND_ARG_INFO(0, cert) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_openssl_pkey_free, 0) - ZEND_ARG_INFO(0, key) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pkey_get_private, 0, 0, 1) - ZEND_ARG_INFO(0, key) - ZEND_ARG_INFO(0, passphrase) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_openssl_pkey_get_details, 0) - ZEND_ARG_INFO(0, key) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pbkdf2, 0, 0, 4) - ZEND_ARG_INFO(0, password) - ZEND_ARG_INFO(0, salt) - ZEND_ARG_INFO(0, key_length) - ZEND_ARG_INFO(0, iterations) - ZEND_ARG_INFO(0, digest_algorithm) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pkcs7_verify, 0, 0, 2) - ZEND_ARG_INFO(0, filename) - ZEND_ARG_INFO(0, flags) - ZEND_ARG_INFO(0, signerscerts) - ZEND_ARG_INFO(0, cainfo) /* array */ - ZEND_ARG_INFO(0, extracerts) - ZEND_ARG_INFO(0, content) - ZEND_ARG_INFO(0, pk7) -ZEND_END_ARG_INFO() - ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pkcs7_encrypt, 0, 0, 4) ZEND_ARG_INFO(0, infile) ZEND_ARG_INFO(0, outfile) @@ -3646,7 +3533,7 @@ PHP_FUNCTION(openssl_csr_new) } /* }}} */ -/* {{{ proto mixed openssl_csr_get_subject(mixed csr) +/* {{{ proto mixed openssl_csr_get_subject(mixed csr [, bool use_shortnames = TRUE]) Returns the subject of a CERT or FALSE on error */ PHP_FUNCTION(openssl_csr_get_subject) { @@ -3677,7 +3564,7 @@ PHP_FUNCTION(openssl_csr_get_subject) } /* }}} */ -/* {{{ proto mixed openssl_csr_get_public_key(mixed csr) +/* {{{ proto mixed openssl_csr_get_public_key(mixed csr [, bool use_shortnames = TRUE]) Returns the subject of a CERT or FALSE on error */ PHP_FUNCTION(openssl_csr_get_public_key) { @@ -4338,7 +4225,7 @@ static zend_bool php_openssl_pkey_init_dh(DH *dh, zval *data) } /* }}} */ -/* {{{ proto resource openssl_pkey_new([array configargs]) +/* {{{ proto mixed openssl_pkey_new([array configargs]) Generates a new private key */ PHP_FUNCTION(openssl_pkey_new) { @@ -4551,7 +4438,7 @@ clean_exit: } /* }}} */ -/* {{{ proto bool openssl_pkey_export_to_file(mixed key, string outfilename [, string passphrase, array config_args) +/* {{{ proto bool openssl_pkey_export_to_file(mixed key, string outfilename [, string passphrase [, array config_args]]) Gets an exportable representation of a key into a file */ PHP_FUNCTION(openssl_pkey_export_to_file) { @@ -4724,7 +4611,7 @@ PHP_FUNCTION(openssl_pkey_export) } /* }}} */ -/* {{{ proto int openssl_pkey_get_public(mixed cert) +/* {{{ proto mixed openssl_pkey_get_public(mixed cert) Gets public key from X.509 certificate */ PHP_FUNCTION(openssl_pkey_get_public) { @@ -4761,7 +4648,7 @@ PHP_FUNCTION(openssl_pkey_free) } /* }}} */ -/* {{{ proto int openssl_pkey_get_private(string key [, string passphrase]) +/* {{{ proto mixed openssl_pkey_get_private(string key [, string passphrase]) Gets private keys */ PHP_FUNCTION(openssl_pkey_get_private) { @@ -4787,7 +4674,7 @@ PHP_FUNCTION(openssl_pkey_get_private) /* }}} */ -/* {{{ proto resource openssl_pkey_get_details(resource key) +/* {{{ proto mixed openssl_pkey_get_details(resource key) returns an array with the key details (bits, pkey, type)*/ PHP_FUNCTION(openssl_pkey_get_details) { @@ -5056,7 +4943,7 @@ PHP_FUNCTION(openssl_pkey_derive) /* }}} */ -/* {{{ proto string openssl_pbkdf2(string password, string salt, int key_length, int iterations [, string digest_method = "sha1"]) +/* {{{ proto mixed openssl_pbkdf2(string password, string salt, int key_length, int iterations [, string digest_method = "sha1"]) Generates a PKCS5 v2 PBKDF2 string, defaults to sha1 */ PHP_FUNCTION(openssl_pbkdf2) { diff --git a/ext/openssl/openssl.stub.php b/ext/openssl/openssl.stub.php index 23acc5f47c..0e4854fa5d 100644 --- a/ext/openssl/openssl.stub.php +++ b/ext/openssl/openssl.stub.php @@ -22,3 +22,82 @@ function openssl_x509_read($cert) {} /** @return false|void */ function openssl_x509_free($x509) {} + +/** + * @param resource|string $x509cert + * @param resource|string|array $priv_key + */ +function openssl_pkcs12_export_to_file($x509cert, string $filename, $priv_key, string $pass, array $args = UNKNOWN): bool {} + +/** + * @param resource|string $x509 + * @param resource|string|array $priv_key + */ +function openssl_pkcs12_export($x509 , &$out, $priv_key, string $pass, array $args = UNKNOWN): bool {} + +function openssl_pkcs12_read(string $pkcs12, &$certs, string $pass): bool {} + +/** @param resource $csr */ +function openssl_csr_export_to_file($csr, string $outfilename, bool $notext = true): bool {} + +/** @param resource $csr */ +function openssl_csr_export($csr, &$out, bool $notext = true): bool {} + +/** + * @param resource|string $csr + * @param resource|string $cacert + * @param resource|string|array $priv_key + * @return resource|false + */ +function openssl_csr_sign($csr, $cacert = null, $priv_key, int $days, ?array $config_args = null, int $serial = 0) {} + +/** @return resource|false */ +function openssl_csr_new(array $dn, &$privkey, ?array $configargs = null, ?array $extraattribs = null) {} + +/** + * @param resource|string $csr + * @return array|false + */ +function openssl_csr_get_subject($csr, bool $use_shortnames = true) {} + +/** + * @param resource|string $csr + * @return resource|false + */ +function openssl_csr_get_public_key($csr, bool $use_shortnames = true) {} + +/** @return resource|false */ +function openssl_pkey_new(?array $configargs = null) {} + +/** @param resource|string|array $key */ +function openssl_pkey_export_to_file($key, string $outfilename, ?string $passphrase = null, ?array $configargs = null): bool {} + +/** @param resource|string|array $key */ +function openssl_pkey_export($key, &$out, ?string $passphrase = null, ?array $configargs = null): bool {} + +/** + * @param resource|string|array $cert + * @return resource|false + */ +function openssl_pkey_get_public($cert) {} + +/** @param resource $key */ +function openssl_pkey_free($key): void {} + +/** + * @param resource|string|array $key + * @return resource|false + */ +function openssl_pkey_get_private($key, string $passphrase = UNKNOWN) {} + +/** + * @param resource $key + * @return array|false + */ +function openssl_pkey_get_details($key) {} + +/** @return string|false */ +function openssl_pbkdf2(string $password, string $salt, int $key_length, int $iterations, string $digest_algorithm = 'sha1') {} + +/** @return bool|int */ +function openssl_pkcs7_verify(string $filename, int $flags, string $signerscerts = UNKNOWN, array $cainfo = UNKNOWN, string $extracerts = UNKNOWN, string $content = UNKNOWN, string $pk7 = UNKNOWN) {} diff --git a/ext/openssl/openssl_arginfo.h b/ext/openssl/openssl_arginfo.h index ed104a2ffa..6c386450f5 100644 --- a/ext/openssl/openssl_arginfo.h +++ b/ext/openssl/openssl_arginfo.h @@ -47,3 +47,111 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_x509_free, 0, 0, 1) ZEND_ARG_INFO(0, x509) ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_openssl_pkcs12_export_to_file, 0, 4, _IS_BOOL, 0) + ZEND_ARG_INFO(0, x509cert) + ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0) + ZEND_ARG_INFO(0, priv_key) + ZEND_ARG_TYPE_INFO(0, pass, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, args, IS_ARRAY, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_openssl_pkcs12_export, 0, 4, _IS_BOOL, 0) + ZEND_ARG_INFO(0, x509) + ZEND_ARG_INFO(1, out) + ZEND_ARG_INFO(0, priv_key) + ZEND_ARG_TYPE_INFO(0, pass, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, args, IS_ARRAY, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_openssl_pkcs12_read, 0, 3, _IS_BOOL, 0) + ZEND_ARG_TYPE_INFO(0, pkcs12, IS_STRING, 0) + ZEND_ARG_INFO(1, certs) + ZEND_ARG_TYPE_INFO(0, pass, IS_STRING, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_openssl_csr_export_to_file, 0, 2, _IS_BOOL, 0) + ZEND_ARG_INFO(0, csr) + ZEND_ARG_TYPE_INFO(0, outfilename, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, notext, _IS_BOOL, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_openssl_csr_export, 0, 2, _IS_BOOL, 0) + ZEND_ARG_INFO(0, csr) + ZEND_ARG_INFO(1, out) + ZEND_ARG_TYPE_INFO(0, notext, _IS_BOOL, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_csr_sign, 0, 0, 4) + ZEND_ARG_INFO(0, csr) + ZEND_ARG_INFO(0, cacert) + ZEND_ARG_INFO(0, priv_key) + ZEND_ARG_TYPE_INFO(0, days, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, config_args, IS_ARRAY, 1) + ZEND_ARG_TYPE_INFO(0, serial, IS_LONG, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_csr_new, 0, 0, 2) + ZEND_ARG_TYPE_INFO(0, dn, IS_ARRAY, 0) + ZEND_ARG_INFO(1, privkey) + ZEND_ARG_TYPE_INFO(0, configargs, IS_ARRAY, 1) + ZEND_ARG_TYPE_INFO(0, extraattribs, IS_ARRAY, 1) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_csr_get_subject, 0, 0, 1) + ZEND_ARG_INFO(0, csr) + ZEND_ARG_TYPE_INFO(0, use_shortnames, _IS_BOOL, 0) +ZEND_END_ARG_INFO() + +#define arginfo_openssl_csr_get_public_key arginfo_openssl_csr_get_subject + +ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pkey_new, 0, 0, 0) + ZEND_ARG_TYPE_INFO(0, configargs, IS_ARRAY, 1) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_openssl_pkey_export_to_file, 0, 2, _IS_BOOL, 0) + ZEND_ARG_INFO(0, key) + ZEND_ARG_TYPE_INFO(0, outfilename, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, passphrase, IS_STRING, 1) + ZEND_ARG_TYPE_INFO(0, configargs, IS_ARRAY, 1) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_openssl_pkey_export, 0, 2, _IS_BOOL, 0) + ZEND_ARG_INFO(0, key) + ZEND_ARG_INFO(1, out) + ZEND_ARG_TYPE_INFO(0, passphrase, IS_STRING, 1) + ZEND_ARG_TYPE_INFO(0, configargs, IS_ARRAY, 1) +ZEND_END_ARG_INFO() + +#define arginfo_openssl_pkey_get_public arginfo_openssl_x509_read + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_openssl_pkey_free, 0, 1, IS_VOID, 0) + ZEND_ARG_INFO(0, key) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pkey_get_private, 0, 0, 1) + ZEND_ARG_INFO(0, key) + ZEND_ARG_TYPE_INFO(0, passphrase, IS_STRING, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pkey_get_details, 0, 0, 1) + ZEND_ARG_INFO(0, key) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pbkdf2, 0, 0, 4) + ZEND_ARG_TYPE_INFO(0, password, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, salt, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, key_length, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, iterations, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, digest_algorithm, IS_STRING, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pkcs7_verify, 0, 0, 2) + ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, flags, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, signerscerts, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, cainfo, IS_ARRAY, 0) + ZEND_ARG_TYPE_INFO(0, extracerts, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, content, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, pk7, IS_STRING, 0) +ZEND_END_ARG_INFO() |