summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/openssl/openssl.c129
-rw-r--r--ext/openssl/openssl.stub.php79
-rw-r--r--ext/openssl/openssl_arginfo.h108
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()