1 /* This is a generated file, edit the .stub.php file instead.
2  * Stub hash: e172b900040a9d9ac98207c638fdeb3a0c6a13e6 */
3 
4 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_aead_aes256gcm_is_available, 0, 0, _IS_BOOL, 0)
5 ZEND_END_ARG_INFO()
6 
7 #if defined(HAVE_AESGCM)
8 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_sodium_crypto_aead_aes256gcm_decrypt, 0, 4, MAY_BE_STRING|MAY_BE_FALSE)
9 	ZEND_ARG_TYPE_INFO(0, ciphertext, IS_STRING, 0)
10 	ZEND_ARG_TYPE_INFO(0, additional_data, IS_STRING, 0)
11 	ZEND_ARG_TYPE_INFO(0, nonce, IS_STRING, 0)
12 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
13 ZEND_END_ARG_INFO()
14 #endif
15 
16 #if defined(HAVE_AESGCM)
17 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_aead_aes256gcm_encrypt, 0, 4, IS_STRING, 0)
18 	ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
19 	ZEND_ARG_TYPE_INFO(0, additional_data, IS_STRING, 0)
20 	ZEND_ARG_TYPE_INFO(0, nonce, IS_STRING, 0)
21 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
22 ZEND_END_ARG_INFO()
23 #endif
24 
25 #if defined(HAVE_AESGCM)
26 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_aead_aes256gcm_keygen, 0, 0, IS_STRING, 0)
27 ZEND_END_ARG_INFO()
28 #endif
29 
30 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_sodium_crypto_aead_chacha20poly1305_decrypt, 0, 4, MAY_BE_STRING|MAY_BE_FALSE)
31 	ZEND_ARG_TYPE_INFO(0, ciphertext, IS_STRING, 0)
32 	ZEND_ARG_TYPE_INFO(0, additional_data, IS_STRING, 0)
33 	ZEND_ARG_TYPE_INFO(0, nonce, IS_STRING, 0)
34 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
35 ZEND_END_ARG_INFO()
36 
37 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_aead_chacha20poly1305_encrypt, 0, 4, IS_STRING, 0)
38 	ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
39 	ZEND_ARG_TYPE_INFO(0, additional_data, IS_STRING, 0)
40 	ZEND_ARG_TYPE_INFO(0, nonce, IS_STRING, 0)
41 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
42 ZEND_END_ARG_INFO()
43 
44 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_aead_chacha20poly1305_keygen, 0, 0, IS_STRING, 0)
45 ZEND_END_ARG_INFO()
46 
47 #define arginfo_sodium_crypto_aead_chacha20poly1305_ietf_decrypt arginfo_sodium_crypto_aead_chacha20poly1305_decrypt
48 
49 #define arginfo_sodium_crypto_aead_chacha20poly1305_ietf_encrypt arginfo_sodium_crypto_aead_chacha20poly1305_encrypt
50 
51 #define arginfo_sodium_crypto_aead_chacha20poly1305_ietf_keygen arginfo_sodium_crypto_aead_chacha20poly1305_keygen
52 
53 #if defined(crypto_aead_xchacha20poly1305_IETF_NPUBBYTES)
54 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_sodium_crypto_aead_xchacha20poly1305_ietf_decrypt, 0, 4, MAY_BE_STRING|MAY_BE_FALSE)
55 	ZEND_ARG_TYPE_INFO(0, ciphertext, IS_STRING, 0)
56 	ZEND_ARG_TYPE_INFO(0, additional_data, IS_STRING, 0)
57 	ZEND_ARG_TYPE_INFO(0, nonce, IS_STRING, 0)
58 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
59 ZEND_END_ARG_INFO()
60 #endif
61 
62 #if defined(crypto_aead_xchacha20poly1305_IETF_NPUBBYTES)
63 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_aead_xchacha20poly1305_ietf_keygen, 0, 0, IS_STRING, 0)
64 ZEND_END_ARG_INFO()
65 #endif
66 
67 #if defined(crypto_aead_xchacha20poly1305_IETF_NPUBBYTES)
68 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_aead_xchacha20poly1305_ietf_encrypt, 0, 4, IS_STRING, 0)
69 	ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
70 	ZEND_ARG_TYPE_INFO(0, additional_data, IS_STRING, 0)
71 	ZEND_ARG_TYPE_INFO(0, nonce, IS_STRING, 0)
72 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
73 ZEND_END_ARG_INFO()
74 #endif
75 
76 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_auth, 0, 2, IS_STRING, 0)
77 	ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
78 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
79 ZEND_END_ARG_INFO()
80 
81 #define arginfo_sodium_crypto_auth_keygen arginfo_sodium_crypto_aead_chacha20poly1305_keygen
82 
83 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_auth_verify, 0, 3, _IS_BOOL, 0)
84 	ZEND_ARG_TYPE_INFO(0, mac, IS_STRING, 0)
85 	ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
86 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
87 ZEND_END_ARG_INFO()
88 
89 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_box, 0, 3, IS_STRING, 0)
90 	ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
91 	ZEND_ARG_TYPE_INFO(0, nonce, IS_STRING, 0)
92 	ZEND_ARG_TYPE_INFO(0, key_pair, IS_STRING, 0)
93 ZEND_END_ARG_INFO()
94 
95 #define arginfo_sodium_crypto_box_keypair arginfo_sodium_crypto_aead_chacha20poly1305_keygen
96 
97 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_box_seed_keypair, 0, 1, IS_STRING, 0)
98 	ZEND_ARG_TYPE_INFO(0, seed, IS_STRING, 0)
99 ZEND_END_ARG_INFO()
100 
101 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_box_keypair_from_secretkey_and_publickey, 0, 2, IS_STRING, 0)
102 	ZEND_ARG_TYPE_INFO(0, secret_key, IS_STRING, 0)
103 	ZEND_ARG_TYPE_INFO(0, public_key, IS_STRING, 0)
104 ZEND_END_ARG_INFO()
105 
106 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_sodium_crypto_box_open, 0, 3, MAY_BE_STRING|MAY_BE_FALSE)
107 	ZEND_ARG_TYPE_INFO(0, ciphertext, IS_STRING, 0)
108 	ZEND_ARG_TYPE_INFO(0, nonce, IS_STRING, 0)
109 	ZEND_ARG_TYPE_INFO(0, key_pair, IS_STRING, 0)
110 ZEND_END_ARG_INFO()
111 
112 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_box_publickey, 0, 1, IS_STRING, 0)
113 	ZEND_ARG_TYPE_INFO(0, key_pair, IS_STRING, 0)
114 ZEND_END_ARG_INFO()
115 
116 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_box_publickey_from_secretkey, 0, 1, IS_STRING, 0)
117 	ZEND_ARG_TYPE_INFO(0, secret_key, IS_STRING, 0)
118 ZEND_END_ARG_INFO()
119 
120 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_box_seal, 0, 2, IS_STRING, 0)
121 	ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
122 	ZEND_ARG_TYPE_INFO(0, public_key, IS_STRING, 0)
123 ZEND_END_ARG_INFO()
124 
125 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_sodium_crypto_box_seal_open, 0, 2, MAY_BE_STRING|MAY_BE_FALSE)
126 	ZEND_ARG_TYPE_INFO(0, ciphertext, IS_STRING, 0)
127 	ZEND_ARG_TYPE_INFO(0, key_pair, IS_STRING, 0)
128 ZEND_END_ARG_INFO()
129 
130 #define arginfo_sodium_crypto_box_secretkey arginfo_sodium_crypto_box_publickey
131 
132 #if defined(crypto_core_ristretto255_HASHBYTES)
133 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_core_ristretto255_add, 0, 2, IS_STRING, 0)
134 	ZEND_ARG_TYPE_INFO(0, p, IS_STRING, 0)
135 	ZEND_ARG_TYPE_INFO(0, q, IS_STRING, 0)
136 ZEND_END_ARG_INFO()
137 #endif
138 
139 #if defined(crypto_core_ristretto255_HASHBYTES)
140 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_core_ristretto255_from_hash, 0, 1, IS_STRING, 0)
141 	ZEND_ARG_TYPE_INFO(0, s, IS_STRING, 0)
142 ZEND_END_ARG_INFO()
143 #endif
144 
145 #if defined(crypto_core_ristretto255_HASHBYTES)
146 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_core_ristretto255_is_valid_point, 0, 1, _IS_BOOL, 0)
147 	ZEND_ARG_TYPE_INFO(0, s, IS_STRING, 0)
148 ZEND_END_ARG_INFO()
149 #endif
150 
151 #if defined(crypto_core_ristretto255_HASHBYTES)
152 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_core_ristretto255_random, 0, 0, IS_STRING, 0)
153 ZEND_END_ARG_INFO()
154 #endif
155 
156 #if defined(crypto_core_ristretto255_HASHBYTES)
157 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_core_ristretto255_scalar_add, 0, 2, IS_STRING, 0)
158 	ZEND_ARG_TYPE_INFO(0, x, IS_STRING, 0)
159 	ZEND_ARG_TYPE_INFO(0, y, IS_STRING, 0)
160 ZEND_END_ARG_INFO()
161 #endif
162 
163 #if defined(crypto_core_ristretto255_HASHBYTES)
164 #define arginfo_sodium_crypto_core_ristretto255_scalar_complement arginfo_sodium_crypto_core_ristretto255_from_hash
165 #endif
166 
167 #if defined(crypto_core_ristretto255_HASHBYTES)
168 #define arginfo_sodium_crypto_core_ristretto255_scalar_invert arginfo_sodium_crypto_core_ristretto255_from_hash
169 #endif
170 
171 #if defined(crypto_core_ristretto255_HASHBYTES)
172 #define arginfo_sodium_crypto_core_ristretto255_scalar_mul arginfo_sodium_crypto_core_ristretto255_scalar_add
173 #endif
174 
175 #if defined(crypto_core_ristretto255_HASHBYTES)
176 #define arginfo_sodium_crypto_core_ristretto255_scalar_negate arginfo_sodium_crypto_core_ristretto255_from_hash
177 #endif
178 
179 #if defined(crypto_core_ristretto255_HASHBYTES)
180 #define arginfo_sodium_crypto_core_ristretto255_scalar_random arginfo_sodium_crypto_core_ristretto255_random
181 #endif
182 
183 #if defined(crypto_core_ristretto255_HASHBYTES)
184 #define arginfo_sodium_crypto_core_ristretto255_scalar_reduce arginfo_sodium_crypto_core_ristretto255_from_hash
185 #endif
186 
187 #if defined(crypto_core_ristretto255_HASHBYTES)
188 #define arginfo_sodium_crypto_core_ristretto255_scalar_sub arginfo_sodium_crypto_core_ristretto255_scalar_add
189 #endif
190 
191 #if defined(crypto_core_ristretto255_HASHBYTES)
192 #define arginfo_sodium_crypto_core_ristretto255_sub arginfo_sodium_crypto_core_ristretto255_add
193 #endif
194 
195 #define arginfo_sodium_crypto_kx_keypair arginfo_sodium_crypto_aead_chacha20poly1305_keygen
196 
197 #define arginfo_sodium_crypto_kx_publickey arginfo_sodium_crypto_box_publickey
198 
199 #define arginfo_sodium_crypto_kx_secretkey arginfo_sodium_crypto_box_publickey
200 
201 #define arginfo_sodium_crypto_kx_seed_keypair arginfo_sodium_crypto_box_seed_keypair
202 
203 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_kx_client_session_keys, 0, 2, IS_ARRAY, 0)
204 	ZEND_ARG_TYPE_INFO(0, client_key_pair, IS_STRING, 0)
205 	ZEND_ARG_TYPE_INFO(0, server_key, IS_STRING, 0)
206 ZEND_END_ARG_INFO()
207 
208 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_kx_server_session_keys, 0, 2, IS_ARRAY, 0)
209 	ZEND_ARG_TYPE_INFO(0, server_key_pair, IS_STRING, 0)
210 	ZEND_ARG_TYPE_INFO(0, client_key, IS_STRING, 0)
211 ZEND_END_ARG_INFO()
212 
213 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_generichash, 0, 1, IS_STRING, 0)
214 	ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
215 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, key, IS_STRING, 0, "\"\"")
216 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, length, IS_LONG, 0, "SODIUM_CRYPTO_GENERICHASH_BYTES")
217 ZEND_END_ARG_INFO()
218 
219 #define arginfo_sodium_crypto_generichash_keygen arginfo_sodium_crypto_aead_chacha20poly1305_keygen
220 
221 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_generichash_init, 0, 0, IS_STRING, 0)
222 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, key, IS_STRING, 0, "\"\"")
223 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, length, IS_LONG, 0, "SODIUM_CRYPTO_GENERICHASH_BYTES")
224 ZEND_END_ARG_INFO()
225 
226 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_generichash_update, 0, 2, _IS_BOOL, 0)
227 	ZEND_ARG_TYPE_INFO(1, state, IS_STRING, 0)
228 	ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
229 ZEND_END_ARG_INFO()
230 
231 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_generichash_final, 0, 1, IS_STRING, 0)
232 	ZEND_ARG_TYPE_INFO(1, state, IS_STRING, 0)
233 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, length, IS_LONG, 0, "SODIUM_CRYPTO_GENERICHASH_BYTES")
234 ZEND_END_ARG_INFO()
235 
236 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_kdf_derive_from_key, 0, 4, IS_STRING, 0)
237 	ZEND_ARG_TYPE_INFO(0, subkey_length, IS_LONG, 0)
238 	ZEND_ARG_TYPE_INFO(0, subkey_id, IS_LONG, 0)
239 	ZEND_ARG_TYPE_INFO(0, context, IS_STRING, 0)
240 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
241 ZEND_END_ARG_INFO()
242 
243 #define arginfo_sodium_crypto_kdf_keygen arginfo_sodium_crypto_aead_chacha20poly1305_keygen
244 
245 #if defined(crypto_pwhash_SALTBYTES)
246 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_pwhash, 0, 5, IS_STRING, 0)
247 	ZEND_ARG_TYPE_INFO(0, length, IS_LONG, 0)
248 	ZEND_ARG_TYPE_INFO(0, password, IS_STRING, 0)
249 	ZEND_ARG_TYPE_INFO(0, salt, IS_STRING, 0)
250 	ZEND_ARG_TYPE_INFO(0, opslimit, IS_LONG, 0)
251 	ZEND_ARG_TYPE_INFO(0, memlimit, IS_LONG, 0)
252 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, algo, IS_LONG, 0, "SODIUM_CRYPTO_PWHASH_ALG_DEFAULT")
253 ZEND_END_ARG_INFO()
254 #endif
255 
256 #if defined(crypto_pwhash_SALTBYTES)
257 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_pwhash_str, 0, 3, IS_STRING, 0)
258 	ZEND_ARG_TYPE_INFO(0, password, IS_STRING, 0)
259 	ZEND_ARG_TYPE_INFO(0, opslimit, IS_LONG, 0)
260 	ZEND_ARG_TYPE_INFO(0, memlimit, IS_LONG, 0)
261 ZEND_END_ARG_INFO()
262 #endif
263 
264 #if defined(crypto_pwhash_SALTBYTES)
265 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_pwhash_str_verify, 0, 2, _IS_BOOL, 0)
266 	ZEND_ARG_TYPE_INFO(0, hash, IS_STRING, 0)
267 	ZEND_ARG_TYPE_INFO(0, password, IS_STRING, 0)
268 ZEND_END_ARG_INFO()
269 #endif
270 
271 #if SODIUM_LIBRARY_VERSION_MAJOR > 9 || (SODIUM_LIBRARY_VERSION_MAJOR == 9 && SODIUM_LIBRARY_VERSION_MINOR >= 6)
272 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_pwhash_str_needs_rehash, 0, 3, _IS_BOOL, 0)
273 	ZEND_ARG_TYPE_INFO(0, password, IS_STRING, 0)
274 	ZEND_ARG_TYPE_INFO(0, opslimit, IS_LONG, 0)
275 	ZEND_ARG_TYPE_INFO(0, memlimit, IS_LONG, 0)
276 ZEND_END_ARG_INFO()
277 #endif
278 
279 #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES)
280 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_pwhash_scryptsalsa208sha256, 0, 5, IS_STRING, 0)
281 	ZEND_ARG_TYPE_INFO(0, length, IS_LONG, 0)
282 	ZEND_ARG_TYPE_INFO(0, password, IS_STRING, 0)
283 	ZEND_ARG_TYPE_INFO(0, salt, IS_STRING, 0)
284 	ZEND_ARG_TYPE_INFO(0, opslimit, IS_LONG, 0)
285 	ZEND_ARG_TYPE_INFO(0, memlimit, IS_LONG, 0)
286 ZEND_END_ARG_INFO()
287 #endif
288 
289 #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES)
290 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_pwhash_scryptsalsa208sha256_str, 0, 3, IS_STRING, 0)
291 	ZEND_ARG_TYPE_INFO(0, password, IS_STRING, 0)
292 	ZEND_ARG_TYPE_INFO(0, opslimit, IS_LONG, 0)
293 	ZEND_ARG_TYPE_INFO(0, memlimit, IS_LONG, 0)
294 ZEND_END_ARG_INFO()
295 #endif
296 
297 #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES)
298 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_pwhash_scryptsalsa208sha256_str_verify, 0, 2, _IS_BOOL, 0)
299 	ZEND_ARG_TYPE_INFO(0, hash, IS_STRING, 0)
300 	ZEND_ARG_TYPE_INFO(0, password, IS_STRING, 0)
301 ZEND_END_ARG_INFO()
302 #endif
303 
304 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_scalarmult, 0, 2, IS_STRING, 0)
305 	ZEND_ARG_TYPE_INFO(0, n, IS_STRING, 0)
306 	ZEND_ARG_TYPE_INFO(0, p, IS_STRING, 0)
307 ZEND_END_ARG_INFO()
308 
309 #if defined(crypto_core_ristretto255_HASHBYTES)
310 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_scalarmult_ristretto255, 0, 2, IS_STRING, 0)
311 	ZEND_ARG_TYPE_INFO(0, n, IS_STRING, 0)
312 	ZEND_ARG_TYPE_INFO(0, p, IS_STRING, 0)
313 ZEND_END_ARG_INFO()
314 #endif
315 
316 #if defined(crypto_core_ristretto255_HASHBYTES)
317 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_scalarmult_ristretto255_base, 0, 1, IS_STRING, 0)
318 	ZEND_ARG_TYPE_INFO(0, n, IS_STRING, 0)
319 ZEND_END_ARG_INFO()
320 #endif
321 
322 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_secretbox, 0, 3, IS_STRING, 0)
323 	ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
324 	ZEND_ARG_TYPE_INFO(0, nonce, IS_STRING, 0)
325 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
326 ZEND_END_ARG_INFO()
327 
328 #define arginfo_sodium_crypto_secretbox_keygen arginfo_sodium_crypto_aead_chacha20poly1305_keygen
329 
330 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_sodium_crypto_secretbox_open, 0, 3, MAY_BE_STRING|MAY_BE_FALSE)
331 	ZEND_ARG_TYPE_INFO(0, ciphertext, IS_STRING, 0)
332 	ZEND_ARG_TYPE_INFO(0, nonce, IS_STRING, 0)
333 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
334 ZEND_END_ARG_INFO()
335 
336 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
337 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_secretstream_xchacha20poly1305_keygen, 0, 0, IS_STRING, 0)
338 ZEND_END_ARG_INFO()
339 #endif
340 
341 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
342 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_secretstream_xchacha20poly1305_init_push, 0, 1, IS_ARRAY, 0)
343 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
344 ZEND_END_ARG_INFO()
345 #endif
346 
347 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
348 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_secretstream_xchacha20poly1305_push, 0, 2, IS_STRING, 0)
349 	ZEND_ARG_TYPE_INFO(1, state, IS_STRING, 0)
350 	ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
351 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, additional_data, IS_STRING, 0, "\"\"")
352 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, tag, IS_LONG, 0, "SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_MESSAGE")
353 ZEND_END_ARG_INFO()
354 #endif
355 
356 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
357 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_secretstream_xchacha20poly1305_init_pull, 0, 2, IS_STRING, 0)
358 	ZEND_ARG_TYPE_INFO(0, header, IS_STRING, 0)
359 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
360 ZEND_END_ARG_INFO()
361 #endif
362 
363 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
364 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_sodium_crypto_secretstream_xchacha20poly1305_pull, 0, 2, MAY_BE_ARRAY|MAY_BE_FALSE)
365 	ZEND_ARG_TYPE_INFO(1, state, IS_STRING, 0)
366 	ZEND_ARG_TYPE_INFO(0, ciphertext, IS_STRING, 0)
367 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, additional_data, IS_STRING, 0, "\"\"")
368 ZEND_END_ARG_INFO()
369 #endif
370 
371 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
372 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_secretstream_xchacha20poly1305_rekey, 0, 1, IS_VOID, 0)
373 	ZEND_ARG_TYPE_INFO(1, state, IS_STRING, 0)
374 ZEND_END_ARG_INFO()
375 #endif
376 
377 #define arginfo_sodium_crypto_shorthash arginfo_sodium_crypto_auth
378 
379 #define arginfo_sodium_crypto_shorthash_keygen arginfo_sodium_crypto_aead_chacha20poly1305_keygen
380 
381 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_sign, 0, 2, IS_STRING, 0)
382 	ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
383 	ZEND_ARG_TYPE_INFO(0, secret_key, IS_STRING, 0)
384 ZEND_END_ARG_INFO()
385 
386 #define arginfo_sodium_crypto_sign_detached arginfo_sodium_crypto_sign
387 
388 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_sign_ed25519_pk_to_curve25519, 0, 1, IS_STRING, 0)
389 	ZEND_ARG_TYPE_INFO(0, public_key, IS_STRING, 0)
390 ZEND_END_ARG_INFO()
391 
392 #define arginfo_sodium_crypto_sign_ed25519_sk_to_curve25519 arginfo_sodium_crypto_box_publickey_from_secretkey
393 
394 #define arginfo_sodium_crypto_sign_keypair arginfo_sodium_crypto_aead_chacha20poly1305_keygen
395 
396 #define arginfo_sodium_crypto_sign_keypair_from_secretkey_and_publickey arginfo_sodium_crypto_box_keypair_from_secretkey_and_publickey
397 
398 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_sodium_crypto_sign_open, 0, 2, MAY_BE_STRING|MAY_BE_FALSE)
399 	ZEND_ARG_TYPE_INFO(0, signed_message, IS_STRING, 0)
400 	ZEND_ARG_TYPE_INFO(0, public_key, IS_STRING, 0)
401 ZEND_END_ARG_INFO()
402 
403 #define arginfo_sodium_crypto_sign_publickey arginfo_sodium_crypto_box_publickey
404 
405 #define arginfo_sodium_crypto_sign_secretkey arginfo_sodium_crypto_box_publickey
406 
407 #define arginfo_sodium_crypto_sign_publickey_from_secretkey arginfo_sodium_crypto_box_publickey_from_secretkey
408 
409 #define arginfo_sodium_crypto_sign_seed_keypair arginfo_sodium_crypto_box_seed_keypair
410 
411 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_sign_verify_detached, 0, 3, _IS_BOOL, 0)
412 	ZEND_ARG_TYPE_INFO(0, signature, IS_STRING, 0)
413 	ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
414 	ZEND_ARG_TYPE_INFO(0, public_key, IS_STRING, 0)
415 ZEND_END_ARG_INFO()
416 
417 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_stream, 0, 3, IS_STRING, 0)
418 	ZEND_ARG_TYPE_INFO(0, length, IS_LONG, 0)
419 	ZEND_ARG_TYPE_INFO(0, nonce, IS_STRING, 0)
420 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
421 ZEND_END_ARG_INFO()
422 
423 #define arginfo_sodium_crypto_stream_keygen arginfo_sodium_crypto_aead_chacha20poly1305_keygen
424 
425 #define arginfo_sodium_crypto_stream_xor arginfo_sodium_crypto_secretbox
426 
427 #if defined(crypto_stream_xchacha20_KEYBYTES)
428 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_stream_xchacha20, 0, 3, IS_STRING, 0)
429 	ZEND_ARG_TYPE_INFO(0, length, IS_LONG, 0)
430 	ZEND_ARG_TYPE_INFO(0, nonce, IS_STRING, 0)
431 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
432 ZEND_END_ARG_INFO()
433 #endif
434 
435 #if defined(crypto_stream_xchacha20_KEYBYTES)
436 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_stream_xchacha20_keygen, 0, 0, IS_STRING, 0)
437 ZEND_END_ARG_INFO()
438 #endif
439 
440 #if defined(crypto_stream_xchacha20_KEYBYTES)
441 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_stream_xchacha20_xor, 0, 3, IS_STRING, 0)
442 	ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
443 	ZEND_ARG_TYPE_INFO(0, nonce, IS_STRING, 0)
444 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
445 ZEND_END_ARG_INFO()
446 #endif
447 
448 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_add, 0, 2, IS_VOID, 0)
449 	ZEND_ARG_TYPE_INFO(1, string1, IS_STRING, 0)
450 	ZEND_ARG_TYPE_INFO(0, string2, IS_STRING, 0)
451 ZEND_END_ARG_INFO()
452 
453 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_compare, 0, 2, IS_LONG, 0)
454 	ZEND_ARG_TYPE_INFO(0, string1, IS_STRING, 0)
455 	ZEND_ARG_TYPE_INFO(0, string2, IS_STRING, 0)
456 ZEND_END_ARG_INFO()
457 
458 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_increment, 0, 1, IS_VOID, 0)
459 	ZEND_ARG_TYPE_INFO(1, string, IS_STRING, 0)
460 ZEND_END_ARG_INFO()
461 
462 #define arginfo_sodium_memcmp arginfo_sodium_compare
463 
464 #define arginfo_sodium_memzero arginfo_sodium_increment
465 
466 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_pad, 0, 2, IS_STRING, 0)
467 	ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0)
468 	ZEND_ARG_TYPE_INFO(0, block_size, IS_LONG, 0)
469 ZEND_END_ARG_INFO()
470 
471 #define arginfo_sodium_unpad arginfo_sodium_pad
472 
473 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_bin2hex, 0, 1, IS_STRING, 0)
474 	ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0)
475 ZEND_END_ARG_INFO()
476 
477 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_hex2bin, 0, 1, IS_STRING, 0)
478 	ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0)
479 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, ignore, IS_STRING, 0, "\"\"")
480 ZEND_END_ARG_INFO()
481 
482 #if defined(sodium_base64_VARIANT_ORIGINAL)
483 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_bin2base64, 0, 2, IS_STRING, 0)
484 	ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0)
485 	ZEND_ARG_TYPE_INFO(0, id, IS_LONG, 0)
486 ZEND_END_ARG_INFO()
487 #endif
488 
489 #if defined(sodium_base64_VARIANT_ORIGINAL)
490 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_base642bin, 0, 2, IS_STRING, 0)
491 	ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0)
492 	ZEND_ARG_TYPE_INFO(0, id, IS_LONG, 0)
493 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, ignore, IS_STRING, 0, "\"\"")
494 ZEND_END_ARG_INFO()
495 #endif
496 
497 #define arginfo_sodium_crypto_scalarmult_base arginfo_sodium_crypto_box_publickey_from_secretkey
498 
499 
500 ZEND_FUNCTION(sodium_crypto_aead_aes256gcm_is_available);
501 #if defined(HAVE_AESGCM)
502 ZEND_FUNCTION(sodium_crypto_aead_aes256gcm_decrypt);
503 #endif
504 #if defined(HAVE_AESGCM)
505 ZEND_FUNCTION(sodium_crypto_aead_aes256gcm_encrypt);
506 #endif
507 #if defined(HAVE_AESGCM)
508 ZEND_FUNCTION(sodium_crypto_aead_aes256gcm_keygen);
509 #endif
510 ZEND_FUNCTION(sodium_crypto_aead_chacha20poly1305_decrypt);
511 ZEND_FUNCTION(sodium_crypto_aead_chacha20poly1305_encrypt);
512 ZEND_FUNCTION(sodium_crypto_aead_chacha20poly1305_keygen);
513 ZEND_FUNCTION(sodium_crypto_aead_chacha20poly1305_ietf_decrypt);
514 ZEND_FUNCTION(sodium_crypto_aead_chacha20poly1305_ietf_encrypt);
515 ZEND_FUNCTION(sodium_crypto_aead_chacha20poly1305_ietf_keygen);
516 #if defined(crypto_aead_xchacha20poly1305_IETF_NPUBBYTES)
517 ZEND_FUNCTION(sodium_crypto_aead_xchacha20poly1305_ietf_decrypt);
518 #endif
519 #if defined(crypto_aead_xchacha20poly1305_IETF_NPUBBYTES)
520 ZEND_FUNCTION(sodium_crypto_aead_xchacha20poly1305_ietf_keygen);
521 #endif
522 #if defined(crypto_aead_xchacha20poly1305_IETF_NPUBBYTES)
523 ZEND_FUNCTION(sodium_crypto_aead_xchacha20poly1305_ietf_encrypt);
524 #endif
525 ZEND_FUNCTION(sodium_crypto_auth);
526 ZEND_FUNCTION(sodium_crypto_auth_keygen);
527 ZEND_FUNCTION(sodium_crypto_auth_verify);
528 ZEND_FUNCTION(sodium_crypto_box);
529 ZEND_FUNCTION(sodium_crypto_box_keypair);
530 ZEND_FUNCTION(sodium_crypto_box_seed_keypair);
531 ZEND_FUNCTION(sodium_crypto_box_keypair_from_secretkey_and_publickey);
532 ZEND_FUNCTION(sodium_crypto_box_open);
533 ZEND_FUNCTION(sodium_crypto_box_publickey);
534 ZEND_FUNCTION(sodium_crypto_box_publickey_from_secretkey);
535 ZEND_FUNCTION(sodium_crypto_box_seal);
536 ZEND_FUNCTION(sodium_crypto_box_seal_open);
537 ZEND_FUNCTION(sodium_crypto_box_secretkey);
538 #if defined(crypto_core_ristretto255_HASHBYTES)
539 ZEND_FUNCTION(sodium_crypto_core_ristretto255_add);
540 #endif
541 #if defined(crypto_core_ristretto255_HASHBYTES)
542 ZEND_FUNCTION(sodium_crypto_core_ristretto255_from_hash);
543 #endif
544 #if defined(crypto_core_ristretto255_HASHBYTES)
545 ZEND_FUNCTION(sodium_crypto_core_ristretto255_is_valid_point);
546 #endif
547 #if defined(crypto_core_ristretto255_HASHBYTES)
548 ZEND_FUNCTION(sodium_crypto_core_ristretto255_random);
549 #endif
550 #if defined(crypto_core_ristretto255_HASHBYTES)
551 ZEND_FUNCTION(sodium_crypto_core_ristretto255_scalar_add);
552 #endif
553 #if defined(crypto_core_ristretto255_HASHBYTES)
554 ZEND_FUNCTION(sodium_crypto_core_ristretto255_scalar_complement);
555 #endif
556 #if defined(crypto_core_ristretto255_HASHBYTES)
557 ZEND_FUNCTION(sodium_crypto_core_ristretto255_scalar_invert);
558 #endif
559 #if defined(crypto_core_ristretto255_HASHBYTES)
560 ZEND_FUNCTION(sodium_crypto_core_ristretto255_scalar_mul);
561 #endif
562 #if defined(crypto_core_ristretto255_HASHBYTES)
563 ZEND_FUNCTION(sodium_crypto_core_ristretto255_scalar_negate);
564 #endif
565 #if defined(crypto_core_ristretto255_HASHBYTES)
566 ZEND_FUNCTION(sodium_crypto_core_ristretto255_scalar_random);
567 #endif
568 #if defined(crypto_core_ristretto255_HASHBYTES)
569 ZEND_FUNCTION(sodium_crypto_core_ristretto255_scalar_reduce);
570 #endif
571 #if defined(crypto_core_ristretto255_HASHBYTES)
572 ZEND_FUNCTION(sodium_crypto_core_ristretto255_scalar_sub);
573 #endif
574 #if defined(crypto_core_ristretto255_HASHBYTES)
575 ZEND_FUNCTION(sodium_crypto_core_ristretto255_sub);
576 #endif
577 ZEND_FUNCTION(sodium_crypto_kx_keypair);
578 ZEND_FUNCTION(sodium_crypto_kx_publickey);
579 ZEND_FUNCTION(sodium_crypto_kx_secretkey);
580 ZEND_FUNCTION(sodium_crypto_kx_seed_keypair);
581 ZEND_FUNCTION(sodium_crypto_kx_client_session_keys);
582 ZEND_FUNCTION(sodium_crypto_kx_server_session_keys);
583 ZEND_FUNCTION(sodium_crypto_generichash);
584 ZEND_FUNCTION(sodium_crypto_generichash_keygen);
585 ZEND_FUNCTION(sodium_crypto_generichash_init);
586 ZEND_FUNCTION(sodium_crypto_generichash_update);
587 ZEND_FUNCTION(sodium_crypto_generichash_final);
588 ZEND_FUNCTION(sodium_crypto_kdf_derive_from_key);
589 ZEND_FUNCTION(sodium_crypto_kdf_keygen);
590 #if defined(crypto_pwhash_SALTBYTES)
591 ZEND_FUNCTION(sodium_crypto_pwhash);
592 #endif
593 #if defined(crypto_pwhash_SALTBYTES)
594 ZEND_FUNCTION(sodium_crypto_pwhash_str);
595 #endif
596 #if defined(crypto_pwhash_SALTBYTES)
597 ZEND_FUNCTION(sodium_crypto_pwhash_str_verify);
598 #endif
599 #if SODIUM_LIBRARY_VERSION_MAJOR > 9 || (SODIUM_LIBRARY_VERSION_MAJOR == 9 && SODIUM_LIBRARY_VERSION_MINOR >= 6)
600 ZEND_FUNCTION(sodium_crypto_pwhash_str_needs_rehash);
601 #endif
602 #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES)
603 ZEND_FUNCTION(sodium_crypto_pwhash_scryptsalsa208sha256);
604 #endif
605 #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES)
606 ZEND_FUNCTION(sodium_crypto_pwhash_scryptsalsa208sha256_str);
607 #endif
608 #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES)
609 ZEND_FUNCTION(sodium_crypto_pwhash_scryptsalsa208sha256_str_verify);
610 #endif
611 ZEND_FUNCTION(sodium_crypto_scalarmult);
612 #if defined(crypto_core_ristretto255_HASHBYTES)
613 ZEND_FUNCTION(sodium_crypto_scalarmult_ristretto255);
614 #endif
615 #if defined(crypto_core_ristretto255_HASHBYTES)
616 ZEND_FUNCTION(sodium_crypto_scalarmult_ristretto255_base);
617 #endif
618 ZEND_FUNCTION(sodium_crypto_secretbox);
619 ZEND_FUNCTION(sodium_crypto_secretbox_keygen);
620 ZEND_FUNCTION(sodium_crypto_secretbox_open);
621 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
622 ZEND_FUNCTION(sodium_crypto_secretstream_xchacha20poly1305_keygen);
623 #endif
624 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
625 ZEND_FUNCTION(sodium_crypto_secretstream_xchacha20poly1305_init_push);
626 #endif
627 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
628 ZEND_FUNCTION(sodium_crypto_secretstream_xchacha20poly1305_push);
629 #endif
630 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
631 ZEND_FUNCTION(sodium_crypto_secretstream_xchacha20poly1305_init_pull);
632 #endif
633 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
634 ZEND_FUNCTION(sodium_crypto_secretstream_xchacha20poly1305_pull);
635 #endif
636 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
637 ZEND_FUNCTION(sodium_crypto_secretstream_xchacha20poly1305_rekey);
638 #endif
639 ZEND_FUNCTION(sodium_crypto_shorthash);
640 ZEND_FUNCTION(sodium_crypto_shorthash_keygen);
641 ZEND_FUNCTION(sodium_crypto_sign);
642 ZEND_FUNCTION(sodium_crypto_sign_detached);
643 ZEND_FUNCTION(sodium_crypto_sign_ed25519_pk_to_curve25519);
644 ZEND_FUNCTION(sodium_crypto_sign_ed25519_sk_to_curve25519);
645 ZEND_FUNCTION(sodium_crypto_sign_keypair);
646 ZEND_FUNCTION(sodium_crypto_sign_keypair_from_secretkey_and_publickey);
647 ZEND_FUNCTION(sodium_crypto_sign_open);
648 ZEND_FUNCTION(sodium_crypto_sign_publickey);
649 ZEND_FUNCTION(sodium_crypto_sign_secretkey);
650 ZEND_FUNCTION(sodium_crypto_sign_publickey_from_secretkey);
651 ZEND_FUNCTION(sodium_crypto_sign_seed_keypair);
652 ZEND_FUNCTION(sodium_crypto_sign_verify_detached);
653 ZEND_FUNCTION(sodium_crypto_stream);
654 ZEND_FUNCTION(sodium_crypto_stream_keygen);
655 ZEND_FUNCTION(sodium_crypto_stream_xor);
656 #if defined(crypto_stream_xchacha20_KEYBYTES)
657 ZEND_FUNCTION(sodium_crypto_stream_xchacha20);
658 #endif
659 #if defined(crypto_stream_xchacha20_KEYBYTES)
660 ZEND_FUNCTION(sodium_crypto_stream_xchacha20_keygen);
661 #endif
662 #if defined(crypto_stream_xchacha20_KEYBYTES)
663 ZEND_FUNCTION(sodium_crypto_stream_xchacha20_xor);
664 #endif
665 ZEND_FUNCTION(sodium_add);
666 ZEND_FUNCTION(sodium_compare);
667 ZEND_FUNCTION(sodium_increment);
668 ZEND_FUNCTION(sodium_memcmp);
669 ZEND_FUNCTION(sodium_memzero);
670 ZEND_FUNCTION(sodium_pad);
671 ZEND_FUNCTION(sodium_unpad);
672 ZEND_FUNCTION(sodium_bin2hex);
673 ZEND_FUNCTION(sodium_hex2bin);
674 #if defined(sodium_base64_VARIANT_ORIGINAL)
675 ZEND_FUNCTION(sodium_bin2base64);
676 #endif
677 #if defined(sodium_base64_VARIANT_ORIGINAL)
678 ZEND_FUNCTION(sodium_base642bin);
679 #endif
680 
681 
682 static const zend_function_entry ext_functions[] = {
683 	ZEND_FE(sodium_crypto_aead_aes256gcm_is_available, arginfo_sodium_crypto_aead_aes256gcm_is_available)
684 #if defined(HAVE_AESGCM)
685 	ZEND_FE(sodium_crypto_aead_aes256gcm_decrypt, arginfo_sodium_crypto_aead_aes256gcm_decrypt)
686 #endif
687 #if defined(HAVE_AESGCM)
688 	ZEND_FE(sodium_crypto_aead_aes256gcm_encrypt, arginfo_sodium_crypto_aead_aes256gcm_encrypt)
689 #endif
690 #if defined(HAVE_AESGCM)
691 	ZEND_FE(sodium_crypto_aead_aes256gcm_keygen, arginfo_sodium_crypto_aead_aes256gcm_keygen)
692 #endif
693 	ZEND_FE(sodium_crypto_aead_chacha20poly1305_decrypt, arginfo_sodium_crypto_aead_chacha20poly1305_decrypt)
694 	ZEND_FE(sodium_crypto_aead_chacha20poly1305_encrypt, arginfo_sodium_crypto_aead_chacha20poly1305_encrypt)
695 	ZEND_FE(sodium_crypto_aead_chacha20poly1305_keygen, arginfo_sodium_crypto_aead_chacha20poly1305_keygen)
696 	ZEND_FE(sodium_crypto_aead_chacha20poly1305_ietf_decrypt, arginfo_sodium_crypto_aead_chacha20poly1305_ietf_decrypt)
697 	ZEND_FE(sodium_crypto_aead_chacha20poly1305_ietf_encrypt, arginfo_sodium_crypto_aead_chacha20poly1305_ietf_encrypt)
698 	ZEND_FE(sodium_crypto_aead_chacha20poly1305_ietf_keygen, arginfo_sodium_crypto_aead_chacha20poly1305_ietf_keygen)
699 #if defined(crypto_aead_xchacha20poly1305_IETF_NPUBBYTES)
700 	ZEND_FE(sodium_crypto_aead_xchacha20poly1305_ietf_decrypt, arginfo_sodium_crypto_aead_xchacha20poly1305_ietf_decrypt)
701 #endif
702 #if defined(crypto_aead_xchacha20poly1305_IETF_NPUBBYTES)
703 	ZEND_FE(sodium_crypto_aead_xchacha20poly1305_ietf_keygen, arginfo_sodium_crypto_aead_xchacha20poly1305_ietf_keygen)
704 #endif
705 #if defined(crypto_aead_xchacha20poly1305_IETF_NPUBBYTES)
706 	ZEND_FE(sodium_crypto_aead_xchacha20poly1305_ietf_encrypt, arginfo_sodium_crypto_aead_xchacha20poly1305_ietf_encrypt)
707 #endif
708 	ZEND_FE(sodium_crypto_auth, arginfo_sodium_crypto_auth)
709 	ZEND_FE(sodium_crypto_auth_keygen, arginfo_sodium_crypto_auth_keygen)
710 	ZEND_FE(sodium_crypto_auth_verify, arginfo_sodium_crypto_auth_verify)
711 	ZEND_FE(sodium_crypto_box, arginfo_sodium_crypto_box)
712 	ZEND_FE(sodium_crypto_box_keypair, arginfo_sodium_crypto_box_keypair)
713 	ZEND_FE(sodium_crypto_box_seed_keypair, arginfo_sodium_crypto_box_seed_keypair)
714 	ZEND_FE(sodium_crypto_box_keypair_from_secretkey_and_publickey, arginfo_sodium_crypto_box_keypair_from_secretkey_and_publickey)
715 	ZEND_FE(sodium_crypto_box_open, arginfo_sodium_crypto_box_open)
716 	ZEND_FE(sodium_crypto_box_publickey, arginfo_sodium_crypto_box_publickey)
717 	ZEND_FE(sodium_crypto_box_publickey_from_secretkey, arginfo_sodium_crypto_box_publickey_from_secretkey)
718 	ZEND_FE(sodium_crypto_box_seal, arginfo_sodium_crypto_box_seal)
719 	ZEND_FE(sodium_crypto_box_seal_open, arginfo_sodium_crypto_box_seal_open)
720 	ZEND_FE(sodium_crypto_box_secretkey, arginfo_sodium_crypto_box_secretkey)
721 #if defined(crypto_core_ristretto255_HASHBYTES)
722 	ZEND_FE(sodium_crypto_core_ristretto255_add, arginfo_sodium_crypto_core_ristretto255_add)
723 #endif
724 #if defined(crypto_core_ristretto255_HASHBYTES)
725 	ZEND_FE(sodium_crypto_core_ristretto255_from_hash, arginfo_sodium_crypto_core_ristretto255_from_hash)
726 #endif
727 #if defined(crypto_core_ristretto255_HASHBYTES)
728 	ZEND_FE(sodium_crypto_core_ristretto255_is_valid_point, arginfo_sodium_crypto_core_ristretto255_is_valid_point)
729 #endif
730 #if defined(crypto_core_ristretto255_HASHBYTES)
731 	ZEND_FE(sodium_crypto_core_ristretto255_random, arginfo_sodium_crypto_core_ristretto255_random)
732 #endif
733 #if defined(crypto_core_ristretto255_HASHBYTES)
734 	ZEND_FE(sodium_crypto_core_ristretto255_scalar_add, arginfo_sodium_crypto_core_ristretto255_scalar_add)
735 #endif
736 #if defined(crypto_core_ristretto255_HASHBYTES)
737 	ZEND_FE(sodium_crypto_core_ristretto255_scalar_complement, arginfo_sodium_crypto_core_ristretto255_scalar_complement)
738 #endif
739 #if defined(crypto_core_ristretto255_HASHBYTES)
740 	ZEND_FE(sodium_crypto_core_ristretto255_scalar_invert, arginfo_sodium_crypto_core_ristretto255_scalar_invert)
741 #endif
742 #if defined(crypto_core_ristretto255_HASHBYTES)
743 	ZEND_FE(sodium_crypto_core_ristretto255_scalar_mul, arginfo_sodium_crypto_core_ristretto255_scalar_mul)
744 #endif
745 #if defined(crypto_core_ristretto255_HASHBYTES)
746 	ZEND_FE(sodium_crypto_core_ristretto255_scalar_negate, arginfo_sodium_crypto_core_ristretto255_scalar_negate)
747 #endif
748 #if defined(crypto_core_ristretto255_HASHBYTES)
749 	ZEND_FE(sodium_crypto_core_ristretto255_scalar_random, arginfo_sodium_crypto_core_ristretto255_scalar_random)
750 #endif
751 #if defined(crypto_core_ristretto255_HASHBYTES)
752 	ZEND_FE(sodium_crypto_core_ristretto255_scalar_reduce, arginfo_sodium_crypto_core_ristretto255_scalar_reduce)
753 #endif
754 #if defined(crypto_core_ristretto255_HASHBYTES)
755 	ZEND_FE(sodium_crypto_core_ristretto255_scalar_sub, arginfo_sodium_crypto_core_ristretto255_scalar_sub)
756 #endif
757 #if defined(crypto_core_ristretto255_HASHBYTES)
758 	ZEND_FE(sodium_crypto_core_ristretto255_sub, arginfo_sodium_crypto_core_ristretto255_sub)
759 #endif
760 	ZEND_FE(sodium_crypto_kx_keypair, arginfo_sodium_crypto_kx_keypair)
761 	ZEND_FE(sodium_crypto_kx_publickey, arginfo_sodium_crypto_kx_publickey)
762 	ZEND_FE(sodium_crypto_kx_secretkey, arginfo_sodium_crypto_kx_secretkey)
763 	ZEND_FE(sodium_crypto_kx_seed_keypair, arginfo_sodium_crypto_kx_seed_keypair)
764 	ZEND_FE(sodium_crypto_kx_client_session_keys, arginfo_sodium_crypto_kx_client_session_keys)
765 	ZEND_FE(sodium_crypto_kx_server_session_keys, arginfo_sodium_crypto_kx_server_session_keys)
766 	ZEND_FE(sodium_crypto_generichash, arginfo_sodium_crypto_generichash)
767 	ZEND_FE(sodium_crypto_generichash_keygen, arginfo_sodium_crypto_generichash_keygen)
768 	ZEND_FE(sodium_crypto_generichash_init, arginfo_sodium_crypto_generichash_init)
769 	ZEND_FE(sodium_crypto_generichash_update, arginfo_sodium_crypto_generichash_update)
770 	ZEND_FE(sodium_crypto_generichash_final, arginfo_sodium_crypto_generichash_final)
771 	ZEND_FE(sodium_crypto_kdf_derive_from_key, arginfo_sodium_crypto_kdf_derive_from_key)
772 	ZEND_FE(sodium_crypto_kdf_keygen, arginfo_sodium_crypto_kdf_keygen)
773 #if defined(crypto_pwhash_SALTBYTES)
774 	ZEND_FE(sodium_crypto_pwhash, arginfo_sodium_crypto_pwhash)
775 #endif
776 #if defined(crypto_pwhash_SALTBYTES)
777 	ZEND_FE(sodium_crypto_pwhash_str, arginfo_sodium_crypto_pwhash_str)
778 #endif
779 #if defined(crypto_pwhash_SALTBYTES)
780 	ZEND_FE(sodium_crypto_pwhash_str_verify, arginfo_sodium_crypto_pwhash_str_verify)
781 #endif
782 #if SODIUM_LIBRARY_VERSION_MAJOR > 9 || (SODIUM_LIBRARY_VERSION_MAJOR == 9 && SODIUM_LIBRARY_VERSION_MINOR >= 6)
783 	ZEND_FE(sodium_crypto_pwhash_str_needs_rehash, arginfo_sodium_crypto_pwhash_str_needs_rehash)
784 #endif
785 #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES)
786 	ZEND_FE(sodium_crypto_pwhash_scryptsalsa208sha256, arginfo_sodium_crypto_pwhash_scryptsalsa208sha256)
787 #endif
788 #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES)
789 	ZEND_FE(sodium_crypto_pwhash_scryptsalsa208sha256_str, arginfo_sodium_crypto_pwhash_scryptsalsa208sha256_str)
790 #endif
791 #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES)
792 	ZEND_FE(sodium_crypto_pwhash_scryptsalsa208sha256_str_verify, arginfo_sodium_crypto_pwhash_scryptsalsa208sha256_str_verify)
793 #endif
794 	ZEND_FE(sodium_crypto_scalarmult, arginfo_sodium_crypto_scalarmult)
795 #if defined(crypto_core_ristretto255_HASHBYTES)
796 	ZEND_FE(sodium_crypto_scalarmult_ristretto255, arginfo_sodium_crypto_scalarmult_ristretto255)
797 #endif
798 #if defined(crypto_core_ristretto255_HASHBYTES)
799 	ZEND_FE(sodium_crypto_scalarmult_ristretto255_base, arginfo_sodium_crypto_scalarmult_ristretto255_base)
800 #endif
801 	ZEND_FE(sodium_crypto_secretbox, arginfo_sodium_crypto_secretbox)
802 	ZEND_FE(sodium_crypto_secretbox_keygen, arginfo_sodium_crypto_secretbox_keygen)
803 	ZEND_FE(sodium_crypto_secretbox_open, arginfo_sodium_crypto_secretbox_open)
804 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
805 	ZEND_FE(sodium_crypto_secretstream_xchacha20poly1305_keygen, arginfo_sodium_crypto_secretstream_xchacha20poly1305_keygen)
806 #endif
807 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
808 	ZEND_FE(sodium_crypto_secretstream_xchacha20poly1305_init_push, arginfo_sodium_crypto_secretstream_xchacha20poly1305_init_push)
809 #endif
810 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
811 	ZEND_FE(sodium_crypto_secretstream_xchacha20poly1305_push, arginfo_sodium_crypto_secretstream_xchacha20poly1305_push)
812 #endif
813 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
814 	ZEND_FE(sodium_crypto_secretstream_xchacha20poly1305_init_pull, arginfo_sodium_crypto_secretstream_xchacha20poly1305_init_pull)
815 #endif
816 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
817 	ZEND_FE(sodium_crypto_secretstream_xchacha20poly1305_pull, arginfo_sodium_crypto_secretstream_xchacha20poly1305_pull)
818 #endif
819 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
820 	ZEND_FE(sodium_crypto_secretstream_xchacha20poly1305_rekey, arginfo_sodium_crypto_secretstream_xchacha20poly1305_rekey)
821 #endif
822 	ZEND_FE(sodium_crypto_shorthash, arginfo_sodium_crypto_shorthash)
823 	ZEND_FE(sodium_crypto_shorthash_keygen, arginfo_sodium_crypto_shorthash_keygen)
824 	ZEND_FE(sodium_crypto_sign, arginfo_sodium_crypto_sign)
825 	ZEND_FE(sodium_crypto_sign_detached, arginfo_sodium_crypto_sign_detached)
826 	ZEND_FE(sodium_crypto_sign_ed25519_pk_to_curve25519, arginfo_sodium_crypto_sign_ed25519_pk_to_curve25519)
827 	ZEND_FE(sodium_crypto_sign_ed25519_sk_to_curve25519, arginfo_sodium_crypto_sign_ed25519_sk_to_curve25519)
828 	ZEND_FE(sodium_crypto_sign_keypair, arginfo_sodium_crypto_sign_keypair)
829 	ZEND_FE(sodium_crypto_sign_keypair_from_secretkey_and_publickey, arginfo_sodium_crypto_sign_keypair_from_secretkey_and_publickey)
830 	ZEND_FE(sodium_crypto_sign_open, arginfo_sodium_crypto_sign_open)
831 	ZEND_FE(sodium_crypto_sign_publickey, arginfo_sodium_crypto_sign_publickey)
832 	ZEND_FE(sodium_crypto_sign_secretkey, arginfo_sodium_crypto_sign_secretkey)
833 	ZEND_FE(sodium_crypto_sign_publickey_from_secretkey, arginfo_sodium_crypto_sign_publickey_from_secretkey)
834 	ZEND_FE(sodium_crypto_sign_seed_keypair, arginfo_sodium_crypto_sign_seed_keypair)
835 	ZEND_FE(sodium_crypto_sign_verify_detached, arginfo_sodium_crypto_sign_verify_detached)
836 	ZEND_FE(sodium_crypto_stream, arginfo_sodium_crypto_stream)
837 	ZEND_FE(sodium_crypto_stream_keygen, arginfo_sodium_crypto_stream_keygen)
838 	ZEND_FE(sodium_crypto_stream_xor, arginfo_sodium_crypto_stream_xor)
839 #if defined(crypto_stream_xchacha20_KEYBYTES)
840 	ZEND_FE(sodium_crypto_stream_xchacha20, arginfo_sodium_crypto_stream_xchacha20)
841 #endif
842 #if defined(crypto_stream_xchacha20_KEYBYTES)
843 	ZEND_FE(sodium_crypto_stream_xchacha20_keygen, arginfo_sodium_crypto_stream_xchacha20_keygen)
844 #endif
845 #if defined(crypto_stream_xchacha20_KEYBYTES)
846 	ZEND_FE(sodium_crypto_stream_xchacha20_xor, arginfo_sodium_crypto_stream_xchacha20_xor)
847 #endif
848 	ZEND_FE(sodium_add, arginfo_sodium_add)
849 	ZEND_FE(sodium_compare, arginfo_sodium_compare)
850 	ZEND_FE(sodium_increment, arginfo_sodium_increment)
851 	ZEND_FE(sodium_memcmp, arginfo_sodium_memcmp)
852 	ZEND_FE(sodium_memzero, arginfo_sodium_memzero)
853 	ZEND_FE(sodium_pad, arginfo_sodium_pad)
854 	ZEND_FE(sodium_unpad, arginfo_sodium_unpad)
855 	ZEND_FE(sodium_bin2hex, arginfo_sodium_bin2hex)
856 	ZEND_FE(sodium_hex2bin, arginfo_sodium_hex2bin)
857 #if defined(sodium_base64_VARIANT_ORIGINAL)
858 	ZEND_FE(sodium_bin2base64, arginfo_sodium_bin2base64)
859 #endif
860 #if defined(sodium_base64_VARIANT_ORIGINAL)
861 	ZEND_FE(sodium_base642bin, arginfo_sodium_base642bin)
862 #endif
863 	ZEND_FALIAS(sodium_crypto_scalarmult_base, sodium_crypto_box_publickey_from_secretkey, arginfo_sodium_crypto_scalarmult_base)
864 	ZEND_FE_END
865 };
866 
867 
868 static const zend_function_entry class_SodiumException_methods[] = {
869 	ZEND_FE_END
870 };
871 
register_class_SodiumException(zend_class_entry * class_entry_Exception)872 static zend_class_entry *register_class_SodiumException(zend_class_entry *class_entry_Exception)
873 {
874 	zend_class_entry ce, *class_entry;
875 
876 	INIT_CLASS_ENTRY(ce, "SodiumException", class_SodiumException_methods);
877 	class_entry = zend_register_internal_class_ex(&ce, class_entry_Exception);
878 
879 	return class_entry;
880 }
881