Skip to content

Commit 5dd5f1b

Browse files
committed
Finish OpenSSL arginfo stubs
1 parent 8ea2be3 commit 5dd5f1b

File tree

3 files changed

+261
-178
lines changed

3 files changed

+261
-178
lines changed

ext/openssl/openssl.c

Lines changed: 2 additions & 178 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525

2626
#include "php.h"
2727
#include "php_ini.h"
28-
#include "openssl_arginfo.h"
2928
#include "php_openssl.h"
3029
#include "zend_exceptions.h"
3130

@@ -84,6 +83,8 @@
8483
#define HAVE_EVP_PKEY_EC 1
8584
#endif
8685

86+
#include "openssl_arginfo.h"
87+
8788
ZEND_DECLARE_MODULE_GLOBALS(openssl)
8889

8990
/* FIXME: Use the openssl constants instead of
@@ -129,183 +130,6 @@ PHP_FUNCTION(openssl_dh_compute_key);
129130
PHP_FUNCTION(openssl_pkey_derive);
130131
PHP_FUNCTION(openssl_random_pseudo_bytes);
131132

132-
/* {{{ arginfo */
133-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pkcs7_encrypt, 0, 0, 4)
134-
ZEND_ARG_INFO(0, infile)
135-
ZEND_ARG_INFO(0, outfile)
136-
ZEND_ARG_INFO(0, recipcerts)
137-
ZEND_ARG_INFO(0, headers) /* array */
138-
ZEND_ARG_INFO(0, flags)
139-
ZEND_ARG_INFO(0, cipher)
140-
ZEND_END_ARG_INFO()
141-
142-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pkcs7_sign, 0, 0, 5)
143-
ZEND_ARG_INFO(0, infile)
144-
ZEND_ARG_INFO(0, outfile)
145-
ZEND_ARG_INFO(0, signcert)
146-
ZEND_ARG_INFO(0, signkey)
147-
ZEND_ARG_INFO(0, headers) /* array */
148-
ZEND_ARG_INFO(0, flags)
149-
ZEND_ARG_INFO(0, extracertsfilename)
150-
ZEND_END_ARG_INFO()
151-
152-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pkcs7_decrypt, 0, 0, 3)
153-
ZEND_ARG_INFO(0, infilename)
154-
ZEND_ARG_INFO(0, outfilename)
155-
ZEND_ARG_INFO(0, recipcert)
156-
ZEND_ARG_INFO(0, recipkey)
157-
ZEND_END_ARG_INFO()
158-
159-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pkcs7_read, 0, 0, 2)
160-
ZEND_ARG_INFO(0, infilename)
161-
ZEND_ARG_INFO(1, certs)
162-
ZEND_END_ARG_INFO()
163-
164-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_private_encrypt, 0, 0, 3)
165-
ZEND_ARG_INFO(0, data)
166-
ZEND_ARG_INFO(1, crypted)
167-
ZEND_ARG_INFO(0, key)
168-
ZEND_ARG_INFO(0, padding)
169-
ZEND_END_ARG_INFO()
170-
171-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_private_decrypt, 0, 0, 3)
172-
ZEND_ARG_INFO(0, data)
173-
ZEND_ARG_INFO(1, crypted)
174-
ZEND_ARG_INFO(0, key)
175-
ZEND_ARG_INFO(0, padding)
176-
ZEND_END_ARG_INFO()
177-
178-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_public_encrypt, 0, 0, 3)
179-
ZEND_ARG_INFO(0, data)
180-
ZEND_ARG_INFO(1, crypted)
181-
ZEND_ARG_INFO(0, key)
182-
ZEND_ARG_INFO(0, padding)
183-
ZEND_END_ARG_INFO()
184-
185-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_public_decrypt, 0, 0, 3)
186-
ZEND_ARG_INFO(0, data)
187-
ZEND_ARG_INFO(1, crypted)
188-
ZEND_ARG_INFO(0, key)
189-
ZEND_ARG_INFO(0, padding)
190-
ZEND_END_ARG_INFO()
191-
192-
ZEND_BEGIN_ARG_INFO(arginfo_openssl_error_string, 0)
193-
ZEND_END_ARG_INFO()
194-
195-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_sign, 0, 0, 3)
196-
ZEND_ARG_INFO(0, data)
197-
ZEND_ARG_INFO(1, signature)
198-
ZEND_ARG_INFO(0, key)
199-
ZEND_ARG_INFO(0, method)
200-
ZEND_END_ARG_INFO()
201-
202-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_verify, 0, 0, 3)
203-
ZEND_ARG_INFO(0, data)
204-
ZEND_ARG_INFO(0, signature)
205-
ZEND_ARG_INFO(0, key)
206-
ZEND_ARG_INFO(0, method)
207-
ZEND_END_ARG_INFO()
208-
209-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_seal, 0, 0, 4)
210-
ZEND_ARG_INFO(0, data)
211-
ZEND_ARG_INFO(1, sealdata)
212-
ZEND_ARG_INFO(1, ekeys) /* array */
213-
ZEND_ARG_INFO(0, pubkeys) /* array */
214-
ZEND_ARG_INFO(0, method)
215-
ZEND_ARG_INFO(1, iv)
216-
ZEND_END_ARG_INFO()
217-
218-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_open, 0, 0, 4)
219-
ZEND_ARG_INFO(0, data)
220-
ZEND_ARG_INFO(1, opendata)
221-
ZEND_ARG_INFO(0, ekey)
222-
ZEND_ARG_INFO(0, privkey)
223-
ZEND_ARG_INFO(0, method)
224-
ZEND_ARG_INFO(0, iv)
225-
ZEND_END_ARG_INFO()
226-
227-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_get_md_methods, 0, 0, 0)
228-
ZEND_ARG_INFO(0, aliases)
229-
ZEND_END_ARG_INFO()
230-
231-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_get_cipher_methods, 0, 0, 0)
232-
ZEND_ARG_INFO(0, aliases)
233-
ZEND_END_ARG_INFO()
234-
235-
#ifdef HAVE_EVP_PKEY_EC
236-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_get_curve_names, 0, 0, 0)
237-
ZEND_END_ARG_INFO()
238-
#endif
239-
240-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_digest, 0, 0, 2)
241-
ZEND_ARG_INFO(0, data)
242-
ZEND_ARG_INFO(0, method)
243-
ZEND_ARG_INFO(0, raw_output)
244-
ZEND_END_ARG_INFO()
245-
246-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_encrypt, 0, 0, 3)
247-
ZEND_ARG_INFO(0, data)
248-
ZEND_ARG_INFO(0, method)
249-
ZEND_ARG_INFO(0, password)
250-
ZEND_ARG_INFO(0, options)
251-
ZEND_ARG_INFO(0, iv)
252-
ZEND_ARG_INFO(1, tag)
253-
ZEND_ARG_INFO(0, aad)
254-
ZEND_ARG_INFO(0, tag_length)
255-
ZEND_END_ARG_INFO()
256-
257-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_decrypt, 0, 0, 3)
258-
ZEND_ARG_INFO(0, data)
259-
ZEND_ARG_INFO(0, method)
260-
ZEND_ARG_INFO(0, password)
261-
ZEND_ARG_INFO(0, options)
262-
ZEND_ARG_INFO(0, iv)
263-
ZEND_ARG_INFO(0, tag)
264-
ZEND_ARG_INFO(0, aad)
265-
ZEND_END_ARG_INFO()
266-
267-
ZEND_BEGIN_ARG_INFO(arginfo_openssl_cipher_iv_length, 0)
268-
ZEND_ARG_INFO(0, method)
269-
ZEND_END_ARG_INFO()
270-
271-
ZEND_BEGIN_ARG_INFO(arginfo_openssl_dh_compute_key, 0)
272-
ZEND_ARG_INFO(0, pub_key)
273-
ZEND_ARG_INFO(0, dh_key)
274-
ZEND_END_ARG_INFO()
275-
276-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_pkey_derive, 0, 0, 2)
277-
ZEND_ARG_INFO(0, peer_pub_key)
278-
ZEND_ARG_INFO(0, priv_key)
279-
ZEND_ARG_INFO(0, keylen)
280-
ZEND_END_ARG_INFO()
281-
282-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_random_pseudo_bytes, 0, 0, 1)
283-
ZEND_ARG_INFO(0, length)
284-
ZEND_ARG_INFO(1, result_is_strong)
285-
ZEND_END_ARG_INFO()
286-
287-
ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_spki_new, 0, 0, 2)
288-
ZEND_ARG_INFO(0, privkey)
289-
ZEND_ARG_INFO(0, challenge)
290-
ZEND_ARG_INFO(0, algo)
291-
ZEND_END_ARG_INFO()
292-
293-
ZEND_BEGIN_ARG_INFO(arginfo_openssl_spki_verify, 0)
294-
ZEND_ARG_INFO(0, spki)
295-
ZEND_END_ARG_INFO()
296-
297-
ZEND_BEGIN_ARG_INFO(arginfo_openssl_spki_export, 0)
298-
ZEND_ARG_INFO(0, spki)
299-
ZEND_END_ARG_INFO()
300-
301-
ZEND_BEGIN_ARG_INFO(arginfo_openssl_spki_export_challenge, 0)
302-
ZEND_ARG_INFO(0, spki)
303-
ZEND_END_ARG_INFO()
304-
305-
ZEND_BEGIN_ARG_INFO(arginfo_openssl_get_cert_locations, 0)
306-
ZEND_END_ARG_INFO()
307-
/* }}} */
308-
309133
/* {{{ openssl_functions[]
310134
*/
311135
static const zend_function_entry openssl_functions[] = {

ext/openssl/openssl.stub.php

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,3 +101,106 @@ function openssl_pbkdf2(string $password, string $salt, int $key_length, int $it
101101

102102
/** @return bool|int */
103103
function openssl_pkcs7_verify(string $filename, int $flags, string $signerscerts = UNKNOWN, array $cainfo = UNKNOWN, string $extracerts = UNKNOWN, string $content = UNKNOWN, string $pk7 = UNKNOWN) {}
104+
105+
/** @param resource|string|array $recipcerts */
106+
function openssl_pkcs7_encrypt(string $infile, string $outfile, $recipcerts, ?array $headers, int $flags = 0, int $cipher = OPENSSL_CIPHER_RC2_40): bool {}
107+
108+
/**
109+
* @param resource|string $signcert
110+
* @param resource|string|array $signkey
111+
*/
112+
function openssl_pkcs7_sign(string $infile, string $outfile, $signcert, $signkey, ?array $headers, int $flags = PKCS7_DETACHED, ?string $extracertsfilename = null): bool {}
113+
114+
/**
115+
* @param resource|string $recipcert
116+
* @param resource|string|array $recipkey
117+
*/
118+
function openssl_pkcs7_decrypt(string $infilename, string $outfilename, $recipcert, $recipkey = UNKNOWN): bool {}
119+
120+
function openssl_pkcs7_read(string $infilename, &$certs): bool {}
121+
122+
/** @param resource|string|array $key */
123+
function openssl_private_encrypt(string $data, &$crypted, $key, int $padding = OPENSSL_PKCS1_PADDING): bool {}
124+
125+
/** @param resource|string|array $key */
126+
function openssl_private_decrypt(string $data, &$crypted, $key, int $padding = OPENSSL_PKCS1_PADDING): bool {}
127+
128+
/** @param resource|string|array $key */
129+
function openssl_public_encrypt(string $data, &$crypted, $key, int $padding = OPENSSL_PKCS1_PADDING): bool {}
130+
131+
/** @param resource|string|array $key */
132+
function openssl_public_decrypt(string $data, &$crypted, $key, int $padding = OPENSSL_PKCS1_PADDING): bool {}
133+
134+
/** @return string|false */
135+
function openssl_error_string() {}
136+
137+
/**
138+
* @param resource|string|array $key
139+
* @param int|string $method
140+
*/
141+
function openssl_sign(string $data, &$signature, $key, $method = OPENSSL_ALGO_SHA1): bool {}
142+
143+
/**
144+
* @param resource|string|array $key
145+
* @param int|string $method
146+
* @return int|false
147+
*/
148+
function openssl_verify(string $data, string $signature, $key, $method = OPENSSL_ALGO_SHA1) {}
149+
150+
/** @return int|false */
151+
function openssl_seal(string $data, &$sealdata, &$ekeys, array $pubkeys, string $method = UNKNOWN, &$iv = UNKNOWN) {}
152+
153+
/** @param resource|string|array $privkey */
154+
function openssl_open(string $data, &$opendata, string $ekey, $privkey, string $method = UNKNOWN, string $iv = UNKNOWN): bool {}
155+
156+
function openssl_get_md_methods($aliases = false): array {}
157+
158+
function openssl_get_cipher_methods($aliases = false): array {}
159+
160+
#ifdef HAVE_EVP_PKEY_EC
161+
/** @return array|false */
162+
function openssl_get_curve_names() {}
163+
#endif
164+
165+
/** @return string|false */
166+
function openssl_digest(string $data, string $method, bool $raw_output = false) {}
167+
168+
/** @return string|false */
169+
function openssl_encrypt(string $data, string $method, string $password, int $options = 0, string $iv = '', &$tag = UNKNOWN, string $aad = '', int $tag_length = 16) {}
170+
171+
/** @return string|false */
172+
function openssl_decrypt(string $data, string $method, string $password, int $options = 0, string $iv = '', string $tag = UNKNOWN, string $aad = '') {}
173+
174+
/** @return int|false */
175+
function openssl_cipher_iv_length(string $method) {}
176+
177+
/**
178+
* @param resource $dh_key
179+
* @return string|false
180+
*/
181+
function openssl_dh_compute_key(string $pub_key, $dh_key) {}
182+
183+
/**
184+
* @param resource|string|array $peer_pub_key
185+
* @param resource|string|array $priv_key
186+
* @return string|false
187+
*/
188+
function openssl_pkey_derive($peer_pub_key, $priv_key, int $keylen = 0) {}
189+
190+
function openssl_random_pseudo_bytes(int $length, &$result_is_strong = UNKNOWN): string {}
191+
192+
/**
193+
* @param resource $privkey
194+
* @return string|false
195+
*/
196+
function openssl_spki_new($privkey, string $challenge, int $algo = OPENSSL_ALGO_MD5) {}
197+
198+
function openssl_spki_verify(string $spki): bool {}
199+
200+
/** @return string|false */
201+
function openssl_spki_export(string $spki) {}
202+
203+
/** @return string|false */
204+
function openssl_spki_export_challenge(string $spki) {}
205+
206+
function openssl_get_cert_locations(): array {}

0 commit comments

Comments
 (0)