Skip to content

Commit e4593c5

Browse files
Add more openssl stubs
Co-authored-by: Christoph M. Becker <cmbecker69@gmx.de>
1 parent 9241037 commit e4593c5

File tree

3 files changed

+195
-121
lines changed

3 files changed

+195
-121
lines changed

ext/openssl/openssl.c

Lines changed: 8 additions & 121 deletions
Original file line numberDiff line numberDiff line change
@@ -130,119 +130,6 @@ PHP_FUNCTION(openssl_pkey_derive);
130130
PHP_FUNCTION(openssl_random_pseudo_bytes);
131131

132132
/* {{{ arginfo */
133-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pkcs12_export_to_file, 0, 0, 4)
134-
ZEND_ARG_INFO(0, x509)
135-
ZEND_ARG_INFO(0, filename)
136-
ZEND_ARG_INFO(0, priv_key)
137-
ZEND_ARG_INFO(0, pass)
138-
ZEND_ARG_INFO(0, args) /* array */
139-
ZEND_END_ARG_INFO()
140-
141-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pkcs12_export, 0, 0, 4)
142-
ZEND_ARG_INFO(0, x509)
143-
ZEND_ARG_INFO(1, out)
144-
ZEND_ARG_INFO(0, priv_key)
145-
ZEND_ARG_INFO(0, pass)
146-
ZEND_ARG_INFO(0, args) /* array */
147-
ZEND_END_ARG_INFO()
148-
149-
ZEND_BEGIN_ARG_INFO(arginfo_openssl_pkcs12_read, 0)
150-
ZEND_ARG_INFO(0, PKCS12)
151-
ZEND_ARG_INFO(1, certs) /* array */
152-
ZEND_ARG_INFO(0, pass)
153-
ZEND_END_ARG_INFO()
154-
155-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_csr_export_to_file, 0, 0, 2)
156-
ZEND_ARG_INFO(0, csr)
157-
ZEND_ARG_INFO(0, outfilename)
158-
ZEND_ARG_INFO(0, notext)
159-
ZEND_END_ARG_INFO()
160-
161-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_csr_export, 0, 0, 2)
162-
ZEND_ARG_INFO(0, csr)
163-
ZEND_ARG_INFO(1, out)
164-
ZEND_ARG_INFO(0, notext)
165-
ZEND_END_ARG_INFO()
166-
167-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_csr_sign, 0, 0, 4)
168-
ZEND_ARG_INFO(0, csr)
169-
ZEND_ARG_INFO(0, x509)
170-
ZEND_ARG_INFO(0, priv_key)
171-
ZEND_ARG_INFO(0, days)
172-
ZEND_ARG_INFO(0, config_args) /* array */
173-
ZEND_ARG_INFO(0, serial)
174-
ZEND_END_ARG_INFO()
175-
176-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_csr_new, 0, 0, 2)
177-
ZEND_ARG_INFO(0, dn) /* array */
178-
ZEND_ARG_INFO(1, privkey)
179-
ZEND_ARG_INFO(0, configargs)
180-
ZEND_ARG_INFO(0, extraattribs)
181-
ZEND_END_ARG_INFO()
182-
183-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_csr_get_subject, 0, 0, 1)
184-
ZEND_ARG_INFO(0, csr)
185-
ZEND_ARG_INFO(0, use_shortnames)
186-
ZEND_END_ARG_INFO()
187-
188-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_csr_get_public_key, 0, 0, 1)
189-
ZEND_ARG_INFO(0, csr)
190-
ZEND_ARG_INFO(0, use_shortnames)
191-
ZEND_END_ARG_INFO()
192-
193-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pkey_new, 0, 0, 0)
194-
ZEND_ARG_INFO(0, configargs) /* array */
195-
ZEND_END_ARG_INFO()
196-
197-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pkey_export_to_file, 0, 0, 2)
198-
ZEND_ARG_INFO(0, key)
199-
ZEND_ARG_INFO(0, outfilename)
200-
ZEND_ARG_INFO(0, passphrase)
201-
ZEND_ARG_INFO(0, config_args) /* array */
202-
ZEND_END_ARG_INFO()
203-
204-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pkey_export, 0, 0, 2)
205-
ZEND_ARG_INFO(0, key)
206-
ZEND_ARG_INFO(1, out)
207-
ZEND_ARG_INFO(0, passphrase)
208-
ZEND_ARG_INFO(0, config_args) /* array */
209-
ZEND_END_ARG_INFO()
210-
211-
ZEND_BEGIN_ARG_INFO(arginfo_openssl_pkey_get_public, 0)
212-
ZEND_ARG_INFO(0, cert)
213-
ZEND_END_ARG_INFO()
214-
215-
ZEND_BEGIN_ARG_INFO(arginfo_openssl_pkey_free, 0)
216-
ZEND_ARG_INFO(0, key)
217-
ZEND_END_ARG_INFO()
218-
219-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pkey_get_private, 0, 0, 1)
220-
ZEND_ARG_INFO(0, key)
221-
ZEND_ARG_INFO(0, passphrase)
222-
ZEND_END_ARG_INFO()
223-
224-
ZEND_BEGIN_ARG_INFO(arginfo_openssl_pkey_get_details, 0)
225-
ZEND_ARG_INFO(0, key)
226-
ZEND_END_ARG_INFO()
227-
228-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pbkdf2, 0, 0, 4)
229-
ZEND_ARG_INFO(0, password)
230-
ZEND_ARG_INFO(0, salt)
231-
ZEND_ARG_INFO(0, key_length)
232-
ZEND_ARG_INFO(0, iterations)
233-
ZEND_ARG_INFO(0, digest_algorithm)
234-
ZEND_END_ARG_INFO()
235-
236-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pkcs7_verify, 0, 0, 2)
237-
ZEND_ARG_INFO(0, filename)
238-
ZEND_ARG_INFO(0, flags)
239-
ZEND_ARG_INFO(0, signerscerts)
240-
ZEND_ARG_INFO(0, cainfo) /* array */
241-
ZEND_ARG_INFO(0, extracerts)
242-
ZEND_ARG_INFO(0, content)
243-
ZEND_ARG_INFO(0, pk7)
244-
ZEND_END_ARG_INFO()
245-
246133
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pkcs7_encrypt, 0, 0, 4)
247134
ZEND_ARG_INFO(0, infile)
248135
ZEND_ARG_INFO(0, outfile)
@@ -3646,7 +3533,7 @@ PHP_FUNCTION(openssl_csr_new)
36463533
}
36473534
/* }}} */
36483535

3649-
/* {{{ proto mixed openssl_csr_get_subject(mixed csr)
3536+
/* {{{ proto mixed openssl_csr_get_subject(mixed csr [, bool use_shortnames = TRUE])
36503537
Returns the subject of a CERT or FALSE on error */
36513538
PHP_FUNCTION(openssl_csr_get_subject)
36523539
{
@@ -3677,7 +3564,7 @@ PHP_FUNCTION(openssl_csr_get_subject)
36773564
}
36783565
/* }}} */
36793566

3680-
/* {{{ proto mixed openssl_csr_get_public_key(mixed csr)
3567+
/* {{{ proto mixed openssl_csr_get_public_key(mixed csr [, bool use_shortnames = TRUE])
36813568
Returns the subject of a CERT or FALSE on error */
36823569
PHP_FUNCTION(openssl_csr_get_public_key)
36833570
{
@@ -4338,7 +4225,7 @@ static zend_bool php_openssl_pkey_init_dh(DH *dh, zval *data)
43384225
}
43394226
/* }}} */
43404227

4341-
/* {{{ proto resource openssl_pkey_new([array configargs])
4228+
/* {{{ proto mixed openssl_pkey_new([array configargs])
43424229
Generates a new private key */
43434230
PHP_FUNCTION(openssl_pkey_new)
43444231
{
@@ -4551,7 +4438,7 @@ PHP_FUNCTION(openssl_pkey_new)
45514438
}
45524439
/* }}} */
45534440

4554-
/* {{{ proto bool openssl_pkey_export_to_file(mixed key, string outfilename [, string passphrase, array config_args)
4441+
/* {{{ proto bool openssl_pkey_export_to_file(mixed key, string outfilename [, string passphrase [, array config_args]])
45554442
Gets an exportable representation of a key into a file */
45564443
PHP_FUNCTION(openssl_pkey_export_to_file)
45574444
{
@@ -4724,7 +4611,7 @@ PHP_FUNCTION(openssl_pkey_export)
47244611
}
47254612
/* }}} */
47264613

4727-
/* {{{ proto int openssl_pkey_get_public(mixed cert)
4614+
/* {{{ proto mixed openssl_pkey_get_public(mixed cert)
47284615
Gets public key from X.509 certificate */
47294616
PHP_FUNCTION(openssl_pkey_get_public)
47304617
{
@@ -4761,7 +4648,7 @@ PHP_FUNCTION(openssl_pkey_free)
47614648
}
47624649
/* }}} */
47634650

4764-
/* {{{ proto int openssl_pkey_get_private(string key [, string passphrase])
4651+
/* {{{ proto mixed openssl_pkey_get_private(string key [, string passphrase])
47654652
Gets private keys */
47664653
PHP_FUNCTION(openssl_pkey_get_private)
47674654
{
@@ -4787,7 +4674,7 @@ PHP_FUNCTION(openssl_pkey_get_private)
47874674

47884675
/* }}} */
47894676

4790-
/* {{{ proto resource openssl_pkey_get_details(resource key)
4677+
/* {{{ proto mixed openssl_pkey_get_details(resource key)
47914678
returns an array with the key details (bits, pkey, type)*/
47924679
PHP_FUNCTION(openssl_pkey_get_details)
47934680
{
@@ -5056,7 +4943,7 @@ PHP_FUNCTION(openssl_pkey_derive)
50564943
/* }}} */
50574944

50584945

5059-
/* {{{ proto string openssl_pbkdf2(string password, string salt, int key_length, int iterations [, string digest_method = "sha1"])
4946+
/* {{{ proto mixed openssl_pbkdf2(string password, string salt, int key_length, int iterations [, string digest_method = "sha1"])
50604947
Generates a PKCS5 v2 PBKDF2 string, defaults to sha1 */
50614948
PHP_FUNCTION(openssl_pbkdf2)
50624949
{

ext/openssl/openssl.stub.php

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,82 @@ function openssl_x509_read($cert) {}
2222

2323
/** @return false|void */
2424
function openssl_x509_free($x509) {}
25+
26+
/**
27+
* @param resource|string $x509cert
28+
* @param resource|string|array $priv_key
29+
*/
30+
function openssl_pkcs12_export_to_file($x509cert, string $filename, $priv_key, string $pass, array $args = UNKNOWN): bool {}
31+
32+
/**
33+
* @param resource|string $x509
34+
* @param resource|string|array $priv_key
35+
*/
36+
function openssl_pkcs12_export($x509 , &$out, $priv_key, string $pass, array $args = UNKNOWN): bool {}
37+
38+
function openssl_pkcs12_read(string $pkcs12, &$certs, string $pass): bool {}
39+
40+
/** @param resource $csr */
41+
function openssl_csr_export_to_file($csr, string $outfilename, bool $notext = true): bool {}
42+
43+
/** @param resource $csr */
44+
function openssl_csr_export($csr, &$out, bool $notext = true): bool {}
45+
46+
/**
47+
* @param resource|string $csr
48+
* @param resource|string $cacert
49+
* @param resource|string|array $priv_key
50+
* @return resource|false
51+
*/
52+
function openssl_csr_sign($csr, $cacert = null, $priv_key, int $days, ?array $config_args = null, int $serial = 0) {}
53+
54+
/** @return resource|false */
55+
function openssl_csr_new(array $dn, &$privkey, ?array $configargs = null, ?array $extraattribs = null) {}
56+
57+
/**
58+
* @param resource|string $csr
59+
* @return array|false
60+
*/
61+
function openssl_csr_get_subject($csr, bool $use_shortnames = true) {}
62+
63+
/**
64+
* @param resource|string $csr
65+
* @return resource|false
66+
*/
67+
function openssl_csr_get_public_key($csr, bool $use_shortnames = true) {}
68+
69+
/** @return resource|false */
70+
function openssl_pkey_new(?array $configargs = null) {}
71+
72+
/** @param resource|string|array $key */
73+
function openssl_pkey_export_to_file($key, string $outfilename, ?string $passphrase = null, ?array $configargs = null): bool {}
74+
75+
/** @param resource|string|array $key */
76+
function openssl_pkey_export($key, &$out, ?string $passphrase = null, ?array $configargs = null): bool {}
77+
78+
/**
79+
* @param resource|string|array $cert
80+
* @return resource|false
81+
*/
82+
function openssl_pkey_get_public($cert) {}
83+
84+
/** @param resource $key */
85+
function openssl_pkey_free($key): void {}
86+
87+
/**
88+
* @param resource|string|array $key
89+
* @return resource|false
90+
*/
91+
function openssl_pkey_get_private($key, string $passphrase = UNKNOWN) {}
92+
93+
/**
94+
* @param resource $key
95+
* @return array|false
96+
*/
97+
function openssl_pkey_get_details($key) {}
98+
99+
/** @return string|false */
100+
function openssl_pbkdf2(string $password, string $salt, int $key_length, int $iterations, string $digest_algorithm = 'sha1') {}
101+
102+
/** @return bool|int */
103+
function openssl_pkcs7_verify(string $filename, int $flags, string $signerscerts = UNKNOWN, array $cainfo = UNKNOWN, string $extracerts = UNKNOWN, string $content = UNKNOWN, string $pk7 = UNKNOWN) {}

ext/openssl/openssl_arginfo.h

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,3 +47,111 @@ ZEND_END_ARG_INFO()
4747
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_x509_free, 0, 0, 1)
4848
ZEND_ARG_INFO(0, x509)
4949
ZEND_END_ARG_INFO()
50+
51+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_openssl_pkcs12_export_to_file, 0, 4, _IS_BOOL, 0)
52+
ZEND_ARG_INFO(0, x509cert)
53+
ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
54+
ZEND_ARG_INFO(0, priv_key)
55+
ZEND_ARG_TYPE_INFO(0, pass, IS_STRING, 0)
56+
ZEND_ARG_TYPE_INFO(0, args, IS_ARRAY, 0)
57+
ZEND_END_ARG_INFO()
58+
59+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_openssl_pkcs12_export, 0, 4, _IS_BOOL, 0)
60+
ZEND_ARG_INFO(0, x509)
61+
ZEND_ARG_INFO(1, out)
62+
ZEND_ARG_INFO(0, priv_key)
63+
ZEND_ARG_TYPE_INFO(0, pass, IS_STRING, 0)
64+
ZEND_ARG_TYPE_INFO(0, args, IS_ARRAY, 0)
65+
ZEND_END_ARG_INFO()
66+
67+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_openssl_pkcs12_read, 0, 3, _IS_BOOL, 0)
68+
ZEND_ARG_TYPE_INFO(0, pkcs12, IS_STRING, 0)
69+
ZEND_ARG_INFO(1, certs)
70+
ZEND_ARG_TYPE_INFO(0, pass, IS_STRING, 0)
71+
ZEND_END_ARG_INFO()
72+
73+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_openssl_csr_export_to_file, 0, 2, _IS_BOOL, 0)
74+
ZEND_ARG_INFO(0, csr)
75+
ZEND_ARG_TYPE_INFO(0, outfilename, IS_STRING, 0)
76+
ZEND_ARG_TYPE_INFO(0, notext, _IS_BOOL, 0)
77+
ZEND_END_ARG_INFO()
78+
79+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_openssl_csr_export, 0, 2, _IS_BOOL, 0)
80+
ZEND_ARG_INFO(0, csr)
81+
ZEND_ARG_INFO(1, out)
82+
ZEND_ARG_TYPE_INFO(0, notext, _IS_BOOL, 0)
83+
ZEND_END_ARG_INFO()
84+
85+
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_csr_sign, 0, 0, 4)
86+
ZEND_ARG_INFO(0, csr)
87+
ZEND_ARG_INFO(0, cacert)
88+
ZEND_ARG_INFO(0, priv_key)
89+
ZEND_ARG_TYPE_INFO(0, days, IS_LONG, 0)
90+
ZEND_ARG_TYPE_INFO(0, config_args, IS_ARRAY, 1)
91+
ZEND_ARG_TYPE_INFO(0, serial, IS_LONG, 0)
92+
ZEND_END_ARG_INFO()
93+
94+
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_csr_new, 0, 0, 2)
95+
ZEND_ARG_TYPE_INFO(0, dn, IS_ARRAY, 0)
96+
ZEND_ARG_INFO(1, privkey)
97+
ZEND_ARG_TYPE_INFO(0, configargs, IS_ARRAY, 1)
98+
ZEND_ARG_TYPE_INFO(0, extraattribs, IS_ARRAY, 1)
99+
ZEND_END_ARG_INFO()
100+
101+
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_csr_get_subject, 0, 0, 1)
102+
ZEND_ARG_INFO(0, csr)
103+
ZEND_ARG_TYPE_INFO(0, use_shortnames, _IS_BOOL, 0)
104+
ZEND_END_ARG_INFO()
105+
106+
#define arginfo_openssl_csr_get_public_key arginfo_openssl_csr_get_subject
107+
108+
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pkey_new, 0, 0, 0)
109+
ZEND_ARG_TYPE_INFO(0, configargs, IS_ARRAY, 1)
110+
ZEND_END_ARG_INFO()
111+
112+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_openssl_pkey_export_to_file, 0, 2, _IS_BOOL, 0)
113+
ZEND_ARG_INFO(0, key)
114+
ZEND_ARG_TYPE_INFO(0, outfilename, IS_STRING, 0)
115+
ZEND_ARG_TYPE_INFO(0, passphrase, IS_STRING, 1)
116+
ZEND_ARG_TYPE_INFO(0, configargs, IS_ARRAY, 1)
117+
ZEND_END_ARG_INFO()
118+
119+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_openssl_pkey_export, 0, 2, _IS_BOOL, 0)
120+
ZEND_ARG_INFO(0, key)
121+
ZEND_ARG_INFO(1, out)
122+
ZEND_ARG_TYPE_INFO(0, passphrase, IS_STRING, 1)
123+
ZEND_ARG_TYPE_INFO(0, configargs, IS_ARRAY, 1)
124+
ZEND_END_ARG_INFO()
125+
126+
#define arginfo_openssl_pkey_get_public arginfo_openssl_x509_read
127+
128+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_openssl_pkey_free, 0, 1, IS_VOID, 0)
129+
ZEND_ARG_INFO(0, key)
130+
ZEND_END_ARG_INFO()
131+
132+
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pkey_get_private, 0, 0, 1)
133+
ZEND_ARG_INFO(0, key)
134+
ZEND_ARG_TYPE_INFO(0, passphrase, IS_STRING, 0)
135+
ZEND_END_ARG_INFO()
136+
137+
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pkey_get_details, 0, 0, 1)
138+
ZEND_ARG_INFO(0, key)
139+
ZEND_END_ARG_INFO()
140+
141+
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pbkdf2, 0, 0, 4)
142+
ZEND_ARG_TYPE_INFO(0, password, IS_STRING, 0)
143+
ZEND_ARG_TYPE_INFO(0, salt, IS_STRING, 0)
144+
ZEND_ARG_TYPE_INFO(0, key_length, IS_LONG, 0)
145+
ZEND_ARG_TYPE_INFO(0, iterations, IS_LONG, 0)
146+
ZEND_ARG_TYPE_INFO(0, digest_algorithm, IS_STRING, 0)
147+
ZEND_END_ARG_INFO()
148+
149+
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pkcs7_verify, 0, 0, 2)
150+
ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
151+
ZEND_ARG_TYPE_INFO(0, flags, IS_LONG, 0)
152+
ZEND_ARG_TYPE_INFO(0, signerscerts, IS_STRING, 0)
153+
ZEND_ARG_TYPE_INFO(0, cainfo, IS_ARRAY, 0)
154+
ZEND_ARG_TYPE_INFO(0, extracerts, IS_STRING, 0)
155+
ZEND_ARG_TYPE_INFO(0, content, IS_STRING, 0)
156+
ZEND_ARG_TYPE_INFO(0, pk7, IS_STRING, 0)
157+
ZEND_END_ARG_INFO()

0 commit comments

Comments
 (0)