xref: /php-src/ext/sodium/libsodium_arginfo.h (revision f2e199e8)
1 /* This is a generated file, edit the .stub.php file instead.
2  * Stub hash: 89cbb449ee6146dc8d50ba4bb1e76f83444a2db2 */
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 #if defined(crypto_aead_aegis128l_KEYBYTES)
31 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_sodium_crypto_aead_aegis128l_decrypt, 0, 4, MAY_BE_STRING|MAY_BE_FALSE)
32 	ZEND_ARG_TYPE_INFO(0, ciphertext, IS_STRING, 0)
33 	ZEND_ARG_TYPE_INFO(0, additional_data, IS_STRING, 0)
34 	ZEND_ARG_TYPE_INFO(0, nonce, IS_STRING, 0)
35 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
36 ZEND_END_ARG_INFO()
37 #endif
38 
39 #if defined(crypto_aead_aegis128l_KEYBYTES)
40 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_aead_aegis128l_encrypt, 0, 4, IS_STRING, 0)
41 	ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
42 	ZEND_ARG_TYPE_INFO(0, additional_data, IS_STRING, 0)
43 	ZEND_ARG_TYPE_INFO(0, nonce, IS_STRING, 0)
44 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
45 ZEND_END_ARG_INFO()
46 #endif
47 
48 #if defined(crypto_aead_aegis128l_KEYBYTES)
49 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_aead_aegis128l_keygen, 0, 0, IS_STRING, 0)
50 ZEND_END_ARG_INFO()
51 #endif
52 
53 #if defined(crypto_aead_aegis256_KEYBYTES)
54 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_sodium_crypto_aead_aegis256_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_aegis256_KEYBYTES)
63 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_aead_aegis256_encrypt, 0, 4, IS_STRING, 0)
64 	ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
65 	ZEND_ARG_TYPE_INFO(0, additional_data, IS_STRING, 0)
66 	ZEND_ARG_TYPE_INFO(0, nonce, IS_STRING, 0)
67 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
68 ZEND_END_ARG_INFO()
69 #endif
70 
71 #if defined(crypto_aead_aegis256_KEYBYTES)
72 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_aead_aegis256_keygen, 0, 0, IS_STRING, 0)
73 ZEND_END_ARG_INFO()
74 #endif
75 
76 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_sodium_crypto_aead_chacha20poly1305_decrypt, 0, 4, MAY_BE_STRING|MAY_BE_FALSE)
77 	ZEND_ARG_TYPE_INFO(0, ciphertext, IS_STRING, 0)
78 	ZEND_ARG_TYPE_INFO(0, additional_data, IS_STRING, 0)
79 	ZEND_ARG_TYPE_INFO(0, nonce, IS_STRING, 0)
80 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
81 ZEND_END_ARG_INFO()
82 
83 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_aead_chacha20poly1305_encrypt, 0, 4, IS_STRING, 0)
84 	ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
85 	ZEND_ARG_TYPE_INFO(0, additional_data, IS_STRING, 0)
86 	ZEND_ARG_TYPE_INFO(0, nonce, IS_STRING, 0)
87 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
88 ZEND_END_ARG_INFO()
89 
90 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_aead_chacha20poly1305_keygen, 0, 0, IS_STRING, 0)
91 ZEND_END_ARG_INFO()
92 
93 #define arginfo_sodium_crypto_aead_chacha20poly1305_ietf_decrypt arginfo_sodium_crypto_aead_chacha20poly1305_decrypt
94 
95 #define arginfo_sodium_crypto_aead_chacha20poly1305_ietf_encrypt arginfo_sodium_crypto_aead_chacha20poly1305_encrypt
96 
97 #define arginfo_sodium_crypto_aead_chacha20poly1305_ietf_keygen arginfo_sodium_crypto_aead_chacha20poly1305_keygen
98 
99 #if defined(crypto_aead_xchacha20poly1305_IETF_NPUBBYTES)
100 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_sodium_crypto_aead_xchacha20poly1305_ietf_decrypt, 0, 4, MAY_BE_STRING|MAY_BE_FALSE)
101 	ZEND_ARG_TYPE_INFO(0, ciphertext, IS_STRING, 0)
102 	ZEND_ARG_TYPE_INFO(0, additional_data, IS_STRING, 0)
103 	ZEND_ARG_TYPE_INFO(0, nonce, IS_STRING, 0)
104 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
105 ZEND_END_ARG_INFO()
106 #endif
107 
108 #if defined(crypto_aead_xchacha20poly1305_IETF_NPUBBYTES)
109 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_aead_xchacha20poly1305_ietf_keygen, 0, 0, IS_STRING, 0)
110 ZEND_END_ARG_INFO()
111 #endif
112 
113 #if defined(crypto_aead_xchacha20poly1305_IETF_NPUBBYTES)
114 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_aead_xchacha20poly1305_ietf_encrypt, 0, 4, IS_STRING, 0)
115 	ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
116 	ZEND_ARG_TYPE_INFO(0, additional_data, IS_STRING, 0)
117 	ZEND_ARG_TYPE_INFO(0, nonce, IS_STRING, 0)
118 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
119 ZEND_END_ARG_INFO()
120 #endif
121 
122 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_auth, 0, 2, IS_STRING, 0)
123 	ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
124 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
125 ZEND_END_ARG_INFO()
126 
127 #define arginfo_sodium_crypto_auth_keygen arginfo_sodium_crypto_aead_chacha20poly1305_keygen
128 
129 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_auth_verify, 0, 3, _IS_BOOL, 0)
130 	ZEND_ARG_TYPE_INFO(0, mac, IS_STRING, 0)
131 	ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
132 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
133 ZEND_END_ARG_INFO()
134 
135 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_box, 0, 3, IS_STRING, 0)
136 	ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
137 	ZEND_ARG_TYPE_INFO(0, nonce, IS_STRING, 0)
138 	ZEND_ARG_TYPE_INFO(0, key_pair, IS_STRING, 0)
139 ZEND_END_ARG_INFO()
140 
141 #define arginfo_sodium_crypto_box_keypair arginfo_sodium_crypto_aead_chacha20poly1305_keygen
142 
143 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_box_seed_keypair, 0, 1, IS_STRING, 0)
144 	ZEND_ARG_TYPE_INFO(0, seed, IS_STRING, 0)
145 ZEND_END_ARG_INFO()
146 
147 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_box_keypair_from_secretkey_and_publickey, 0, 2, IS_STRING, 0)
148 	ZEND_ARG_TYPE_INFO(0, secret_key, IS_STRING, 0)
149 	ZEND_ARG_TYPE_INFO(0, public_key, IS_STRING, 0)
150 ZEND_END_ARG_INFO()
151 
152 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_sodium_crypto_box_open, 0, 3, MAY_BE_STRING|MAY_BE_FALSE)
153 	ZEND_ARG_TYPE_INFO(0, ciphertext, IS_STRING, 0)
154 	ZEND_ARG_TYPE_INFO(0, nonce, IS_STRING, 0)
155 	ZEND_ARG_TYPE_INFO(0, key_pair, IS_STRING, 0)
156 ZEND_END_ARG_INFO()
157 
158 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_box_publickey, 0, 1, IS_STRING, 0)
159 	ZEND_ARG_TYPE_INFO(0, key_pair, IS_STRING, 0)
160 ZEND_END_ARG_INFO()
161 
162 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_box_publickey_from_secretkey, 0, 1, IS_STRING, 0)
163 	ZEND_ARG_TYPE_INFO(0, secret_key, IS_STRING, 0)
164 ZEND_END_ARG_INFO()
165 
166 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_box_seal, 0, 2, IS_STRING, 0)
167 	ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
168 	ZEND_ARG_TYPE_INFO(0, public_key, IS_STRING, 0)
169 ZEND_END_ARG_INFO()
170 
171 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_sodium_crypto_box_seal_open, 0, 2, MAY_BE_STRING|MAY_BE_FALSE)
172 	ZEND_ARG_TYPE_INFO(0, ciphertext, IS_STRING, 0)
173 	ZEND_ARG_TYPE_INFO(0, key_pair, IS_STRING, 0)
174 ZEND_END_ARG_INFO()
175 
176 #define arginfo_sodium_crypto_box_secretkey arginfo_sodium_crypto_box_publickey
177 
178 #if defined(crypto_core_ristretto255_HASHBYTES)
179 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_core_ristretto255_add, 0, 2, IS_STRING, 0)
180 	ZEND_ARG_TYPE_INFO(0, p, IS_STRING, 0)
181 	ZEND_ARG_TYPE_INFO(0, q, IS_STRING, 0)
182 ZEND_END_ARG_INFO()
183 #endif
184 
185 #if defined(crypto_core_ristretto255_HASHBYTES)
186 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_core_ristretto255_from_hash, 0, 1, IS_STRING, 0)
187 	ZEND_ARG_TYPE_INFO(0, s, IS_STRING, 0)
188 ZEND_END_ARG_INFO()
189 #endif
190 
191 #if defined(crypto_core_ristretto255_HASHBYTES)
192 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_core_ristretto255_is_valid_point, 0, 1, _IS_BOOL, 0)
193 	ZEND_ARG_TYPE_INFO(0, s, IS_STRING, 0)
194 ZEND_END_ARG_INFO()
195 #endif
196 
197 #if defined(crypto_core_ristretto255_HASHBYTES)
198 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_core_ristretto255_random, 0, 0, IS_STRING, 0)
199 ZEND_END_ARG_INFO()
200 #endif
201 
202 #if defined(crypto_core_ristretto255_HASHBYTES)
203 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_core_ristretto255_scalar_add, 0, 2, IS_STRING, 0)
204 	ZEND_ARG_TYPE_INFO(0, x, IS_STRING, 0)
205 	ZEND_ARG_TYPE_INFO(0, y, IS_STRING, 0)
206 ZEND_END_ARG_INFO()
207 #endif
208 
209 #if defined(crypto_core_ristretto255_HASHBYTES)
210 #define arginfo_sodium_crypto_core_ristretto255_scalar_complement arginfo_sodium_crypto_core_ristretto255_from_hash
211 #endif
212 
213 #if defined(crypto_core_ristretto255_HASHBYTES)
214 #define arginfo_sodium_crypto_core_ristretto255_scalar_invert arginfo_sodium_crypto_core_ristretto255_from_hash
215 #endif
216 
217 #if defined(crypto_core_ristretto255_HASHBYTES)
218 #define arginfo_sodium_crypto_core_ristretto255_scalar_mul arginfo_sodium_crypto_core_ristretto255_scalar_add
219 #endif
220 
221 #if defined(crypto_core_ristretto255_HASHBYTES)
222 #define arginfo_sodium_crypto_core_ristretto255_scalar_negate arginfo_sodium_crypto_core_ristretto255_from_hash
223 #endif
224 
225 #if defined(crypto_core_ristretto255_HASHBYTES)
226 #define arginfo_sodium_crypto_core_ristretto255_scalar_random arginfo_sodium_crypto_core_ristretto255_random
227 #endif
228 
229 #if defined(crypto_core_ristretto255_HASHBYTES)
230 #define arginfo_sodium_crypto_core_ristretto255_scalar_reduce arginfo_sodium_crypto_core_ristretto255_from_hash
231 #endif
232 
233 #if defined(crypto_core_ristretto255_HASHBYTES)
234 #define arginfo_sodium_crypto_core_ristretto255_scalar_sub arginfo_sodium_crypto_core_ristretto255_scalar_add
235 #endif
236 
237 #if defined(crypto_core_ristretto255_HASHBYTES)
238 #define arginfo_sodium_crypto_core_ristretto255_sub arginfo_sodium_crypto_core_ristretto255_add
239 #endif
240 
241 #define arginfo_sodium_crypto_kx_keypair arginfo_sodium_crypto_aead_chacha20poly1305_keygen
242 
243 #define arginfo_sodium_crypto_kx_publickey arginfo_sodium_crypto_box_publickey
244 
245 #define arginfo_sodium_crypto_kx_secretkey arginfo_sodium_crypto_box_publickey
246 
247 #define arginfo_sodium_crypto_kx_seed_keypair arginfo_sodium_crypto_box_seed_keypair
248 
249 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_kx_client_session_keys, 0, 2, IS_ARRAY, 0)
250 	ZEND_ARG_TYPE_INFO(0, client_key_pair, IS_STRING, 0)
251 	ZEND_ARG_TYPE_INFO(0, server_key, IS_STRING, 0)
252 ZEND_END_ARG_INFO()
253 
254 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_kx_server_session_keys, 0, 2, IS_ARRAY, 0)
255 	ZEND_ARG_TYPE_INFO(0, server_key_pair, IS_STRING, 0)
256 	ZEND_ARG_TYPE_INFO(0, client_key, IS_STRING, 0)
257 ZEND_END_ARG_INFO()
258 
259 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_generichash, 0, 1, IS_STRING, 0)
260 	ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
261 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, key, IS_STRING, 0, "\"\"")
262 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, length, IS_LONG, 0, "SODIUM_CRYPTO_GENERICHASH_BYTES")
263 ZEND_END_ARG_INFO()
264 
265 #define arginfo_sodium_crypto_generichash_keygen arginfo_sodium_crypto_aead_chacha20poly1305_keygen
266 
267 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_generichash_init, 0, 0, IS_STRING, 0)
268 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, key, IS_STRING, 0, "\"\"")
269 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, length, IS_LONG, 0, "SODIUM_CRYPTO_GENERICHASH_BYTES")
270 ZEND_END_ARG_INFO()
271 
272 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_generichash_update, 0, 2, IS_TRUE, 0)
273 	ZEND_ARG_TYPE_INFO(1, state, IS_STRING, 0)
274 	ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
275 ZEND_END_ARG_INFO()
276 
277 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_generichash_final, 0, 1, IS_STRING, 0)
278 	ZEND_ARG_TYPE_INFO(1, state, IS_STRING, 0)
279 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, length, IS_LONG, 0, "SODIUM_CRYPTO_GENERICHASH_BYTES")
280 ZEND_END_ARG_INFO()
281 
282 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_kdf_derive_from_key, 0, 4, IS_STRING, 0)
283 	ZEND_ARG_TYPE_INFO(0, subkey_length, IS_LONG, 0)
284 	ZEND_ARG_TYPE_INFO(0, subkey_id, IS_LONG, 0)
285 	ZEND_ARG_TYPE_INFO(0, context, IS_STRING, 0)
286 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
287 ZEND_END_ARG_INFO()
288 
289 #define arginfo_sodium_crypto_kdf_keygen arginfo_sodium_crypto_aead_chacha20poly1305_keygen
290 
291 #if defined(crypto_pwhash_SALTBYTES)
292 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_pwhash, 0, 5, IS_STRING, 0)
293 	ZEND_ARG_TYPE_INFO(0, length, IS_LONG, 0)
294 	ZEND_ARG_TYPE_INFO(0, password, IS_STRING, 0)
295 	ZEND_ARG_TYPE_INFO(0, salt, IS_STRING, 0)
296 	ZEND_ARG_TYPE_INFO(0, opslimit, IS_LONG, 0)
297 	ZEND_ARG_TYPE_INFO(0, memlimit, IS_LONG, 0)
298 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, algo, IS_LONG, 0, "SODIUM_CRYPTO_PWHASH_ALG_DEFAULT")
299 ZEND_END_ARG_INFO()
300 #endif
301 
302 #if defined(crypto_pwhash_SALTBYTES)
303 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_pwhash_str, 0, 3, IS_STRING, 0)
304 	ZEND_ARG_TYPE_INFO(0, password, IS_STRING, 0)
305 	ZEND_ARG_TYPE_INFO(0, opslimit, IS_LONG, 0)
306 	ZEND_ARG_TYPE_INFO(0, memlimit, IS_LONG, 0)
307 ZEND_END_ARG_INFO()
308 #endif
309 
310 #if defined(crypto_pwhash_SALTBYTES)
311 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_pwhash_str_verify, 0, 2, _IS_BOOL, 0)
312 	ZEND_ARG_TYPE_INFO(0, hash, IS_STRING, 0)
313 	ZEND_ARG_TYPE_INFO(0, password, IS_STRING, 0)
314 ZEND_END_ARG_INFO()
315 #endif
316 
317 #if SODIUM_LIBRARY_VERSION_MAJOR > 9 || (SODIUM_LIBRARY_VERSION_MAJOR == 9 && SODIUM_LIBRARY_VERSION_MINOR >= 6)
318 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_pwhash_str_needs_rehash, 0, 3, _IS_BOOL, 0)
319 	ZEND_ARG_TYPE_INFO(0, password, IS_STRING, 0)
320 	ZEND_ARG_TYPE_INFO(0, opslimit, IS_LONG, 0)
321 	ZEND_ARG_TYPE_INFO(0, memlimit, IS_LONG, 0)
322 ZEND_END_ARG_INFO()
323 #endif
324 
325 #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES)
326 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_pwhash_scryptsalsa208sha256, 0, 5, IS_STRING, 0)
327 	ZEND_ARG_TYPE_INFO(0, length, IS_LONG, 0)
328 	ZEND_ARG_TYPE_INFO(0, password, IS_STRING, 0)
329 	ZEND_ARG_TYPE_INFO(0, salt, IS_STRING, 0)
330 	ZEND_ARG_TYPE_INFO(0, opslimit, IS_LONG, 0)
331 	ZEND_ARG_TYPE_INFO(0, memlimit, IS_LONG, 0)
332 ZEND_END_ARG_INFO()
333 #endif
334 
335 #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES)
336 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_pwhash_scryptsalsa208sha256_str, 0, 3, IS_STRING, 0)
337 	ZEND_ARG_TYPE_INFO(0, password, IS_STRING, 0)
338 	ZEND_ARG_TYPE_INFO(0, opslimit, IS_LONG, 0)
339 	ZEND_ARG_TYPE_INFO(0, memlimit, IS_LONG, 0)
340 ZEND_END_ARG_INFO()
341 #endif
342 
343 #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES)
344 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_pwhash_scryptsalsa208sha256_str_verify, 0, 2, _IS_BOOL, 0)
345 	ZEND_ARG_TYPE_INFO(0, hash, IS_STRING, 0)
346 	ZEND_ARG_TYPE_INFO(0, password, IS_STRING, 0)
347 ZEND_END_ARG_INFO()
348 #endif
349 
350 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_scalarmult, 0, 2, IS_STRING, 0)
351 	ZEND_ARG_TYPE_INFO(0, n, IS_STRING, 0)
352 	ZEND_ARG_TYPE_INFO(0, p, IS_STRING, 0)
353 ZEND_END_ARG_INFO()
354 
355 #if defined(crypto_core_ristretto255_HASHBYTES)
356 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_scalarmult_ristretto255, 0, 2, IS_STRING, 0)
357 	ZEND_ARG_TYPE_INFO(0, n, IS_STRING, 0)
358 	ZEND_ARG_TYPE_INFO(0, p, IS_STRING, 0)
359 ZEND_END_ARG_INFO()
360 #endif
361 
362 #if defined(crypto_core_ristretto255_HASHBYTES)
363 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_scalarmult_ristretto255_base, 0, 1, IS_STRING, 0)
364 	ZEND_ARG_TYPE_INFO(0, n, IS_STRING, 0)
365 ZEND_END_ARG_INFO()
366 #endif
367 
368 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_secretbox, 0, 3, IS_STRING, 0)
369 	ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
370 	ZEND_ARG_TYPE_INFO(0, nonce, IS_STRING, 0)
371 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
372 ZEND_END_ARG_INFO()
373 
374 #define arginfo_sodium_crypto_secretbox_keygen arginfo_sodium_crypto_aead_chacha20poly1305_keygen
375 
376 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_sodium_crypto_secretbox_open, 0, 3, MAY_BE_STRING|MAY_BE_FALSE)
377 	ZEND_ARG_TYPE_INFO(0, ciphertext, IS_STRING, 0)
378 	ZEND_ARG_TYPE_INFO(0, nonce, IS_STRING, 0)
379 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
380 ZEND_END_ARG_INFO()
381 
382 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
383 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_secretstream_xchacha20poly1305_keygen, 0, 0, IS_STRING, 0)
384 ZEND_END_ARG_INFO()
385 #endif
386 
387 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
388 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_secretstream_xchacha20poly1305_init_push, 0, 1, IS_ARRAY, 0)
389 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
390 ZEND_END_ARG_INFO()
391 #endif
392 
393 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
394 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_secretstream_xchacha20poly1305_push, 0, 2, IS_STRING, 0)
395 	ZEND_ARG_TYPE_INFO(1, state, IS_STRING, 0)
396 	ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
397 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, additional_data, IS_STRING, 0, "\"\"")
398 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, tag, IS_LONG, 0, "SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_MESSAGE")
399 ZEND_END_ARG_INFO()
400 #endif
401 
402 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
403 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_secretstream_xchacha20poly1305_init_pull, 0, 2, IS_STRING, 0)
404 	ZEND_ARG_TYPE_INFO(0, header, IS_STRING, 0)
405 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
406 ZEND_END_ARG_INFO()
407 #endif
408 
409 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
410 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_sodium_crypto_secretstream_xchacha20poly1305_pull, 0, 2, MAY_BE_ARRAY|MAY_BE_FALSE)
411 	ZEND_ARG_TYPE_INFO(1, state, IS_STRING, 0)
412 	ZEND_ARG_TYPE_INFO(0, ciphertext, IS_STRING, 0)
413 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, additional_data, IS_STRING, 0, "\"\"")
414 ZEND_END_ARG_INFO()
415 #endif
416 
417 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
418 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_secretstream_xchacha20poly1305_rekey, 0, 1, IS_VOID, 0)
419 	ZEND_ARG_TYPE_INFO(1, state, IS_STRING, 0)
420 ZEND_END_ARG_INFO()
421 #endif
422 
423 #define arginfo_sodium_crypto_shorthash arginfo_sodium_crypto_auth
424 
425 #define arginfo_sodium_crypto_shorthash_keygen arginfo_sodium_crypto_aead_chacha20poly1305_keygen
426 
427 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_sign, 0, 2, IS_STRING, 0)
428 	ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
429 	ZEND_ARG_TYPE_INFO(0, secret_key, IS_STRING, 0)
430 ZEND_END_ARG_INFO()
431 
432 #define arginfo_sodium_crypto_sign_detached arginfo_sodium_crypto_sign
433 
434 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_sign_ed25519_pk_to_curve25519, 0, 1, IS_STRING, 0)
435 	ZEND_ARG_TYPE_INFO(0, public_key, IS_STRING, 0)
436 ZEND_END_ARG_INFO()
437 
438 #define arginfo_sodium_crypto_sign_ed25519_sk_to_curve25519 arginfo_sodium_crypto_box_publickey_from_secretkey
439 
440 #define arginfo_sodium_crypto_sign_keypair arginfo_sodium_crypto_aead_chacha20poly1305_keygen
441 
442 #define arginfo_sodium_crypto_sign_keypair_from_secretkey_and_publickey arginfo_sodium_crypto_box_keypair_from_secretkey_and_publickey
443 
444 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_sodium_crypto_sign_open, 0, 2, MAY_BE_STRING|MAY_BE_FALSE)
445 	ZEND_ARG_TYPE_INFO(0, signed_message, IS_STRING, 0)
446 	ZEND_ARG_TYPE_INFO(0, public_key, IS_STRING, 0)
447 ZEND_END_ARG_INFO()
448 
449 #define arginfo_sodium_crypto_sign_publickey arginfo_sodium_crypto_box_publickey
450 
451 #define arginfo_sodium_crypto_sign_secretkey arginfo_sodium_crypto_box_publickey
452 
453 #define arginfo_sodium_crypto_sign_publickey_from_secretkey arginfo_sodium_crypto_box_publickey_from_secretkey
454 
455 #define arginfo_sodium_crypto_sign_seed_keypair arginfo_sodium_crypto_box_seed_keypair
456 
457 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_sign_verify_detached, 0, 3, _IS_BOOL, 0)
458 	ZEND_ARG_TYPE_INFO(0, signature, IS_STRING, 0)
459 	ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
460 	ZEND_ARG_TYPE_INFO(0, public_key, IS_STRING, 0)
461 ZEND_END_ARG_INFO()
462 
463 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_stream, 0, 3, IS_STRING, 0)
464 	ZEND_ARG_TYPE_INFO(0, length, IS_LONG, 0)
465 	ZEND_ARG_TYPE_INFO(0, nonce, IS_STRING, 0)
466 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
467 ZEND_END_ARG_INFO()
468 
469 #define arginfo_sodium_crypto_stream_keygen arginfo_sodium_crypto_aead_chacha20poly1305_keygen
470 
471 #define arginfo_sodium_crypto_stream_xor arginfo_sodium_crypto_secretbox
472 
473 #if defined(crypto_stream_xchacha20_KEYBYTES)
474 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_stream_xchacha20, 0, 3, IS_STRING, 0)
475 	ZEND_ARG_TYPE_INFO(0, length, IS_LONG, 0)
476 	ZEND_ARG_TYPE_INFO(0, nonce, IS_STRING, 0)
477 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
478 ZEND_END_ARG_INFO()
479 #endif
480 
481 #if defined(crypto_stream_xchacha20_KEYBYTES)
482 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_stream_xchacha20_keygen, 0, 0, IS_STRING, 0)
483 ZEND_END_ARG_INFO()
484 #endif
485 
486 #if defined(crypto_stream_xchacha20_KEYBYTES)
487 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_stream_xchacha20_xor, 0, 3, IS_STRING, 0)
488 	ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
489 	ZEND_ARG_TYPE_INFO(0, nonce, IS_STRING, 0)
490 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
491 ZEND_END_ARG_INFO()
492 #endif
493 
494 #if defined(crypto_stream_xchacha20_KEYBYTES)
495 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_stream_xchacha20_xor_ic, 0, 4, IS_STRING, 0)
496 	ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
497 	ZEND_ARG_TYPE_INFO(0, nonce, IS_STRING, 0)
498 	ZEND_ARG_TYPE_INFO(0, counter, IS_LONG, 0)
499 	ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
500 ZEND_END_ARG_INFO()
501 #endif
502 
503 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_add, 0, 2, IS_VOID, 0)
504 	ZEND_ARG_TYPE_INFO(1, string1, IS_STRING, 0)
505 	ZEND_ARG_TYPE_INFO(0, string2, IS_STRING, 0)
506 ZEND_END_ARG_INFO()
507 
508 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_compare, 0, 2, IS_LONG, 0)
509 	ZEND_ARG_TYPE_INFO(0, string1, IS_STRING, 0)
510 	ZEND_ARG_TYPE_INFO(0, string2, IS_STRING, 0)
511 ZEND_END_ARG_INFO()
512 
513 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_increment, 0, 1, IS_VOID, 0)
514 	ZEND_ARG_TYPE_INFO(1, string, IS_STRING, 0)
515 ZEND_END_ARG_INFO()
516 
517 #define arginfo_sodium_memcmp arginfo_sodium_compare
518 
519 #define arginfo_sodium_memzero arginfo_sodium_increment
520 
521 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_pad, 0, 2, IS_STRING, 0)
522 	ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0)
523 	ZEND_ARG_TYPE_INFO(0, block_size, IS_LONG, 0)
524 ZEND_END_ARG_INFO()
525 
526 #define arginfo_sodium_unpad arginfo_sodium_pad
527 
528 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_bin2hex, 0, 1, IS_STRING, 0)
529 	ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0)
530 ZEND_END_ARG_INFO()
531 
532 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_hex2bin, 0, 1, IS_STRING, 0)
533 	ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0)
534 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, ignore, IS_STRING, 0, "\"\"")
535 ZEND_END_ARG_INFO()
536 
537 #if defined(sodium_base64_VARIANT_ORIGINAL)
538 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_bin2base64, 0, 2, IS_STRING, 0)
539 	ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0)
540 	ZEND_ARG_TYPE_INFO(0, id, IS_LONG, 0)
541 ZEND_END_ARG_INFO()
542 #endif
543 
544 #if defined(sodium_base64_VARIANT_ORIGINAL)
545 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_base642bin, 0, 2, IS_STRING, 0)
546 	ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0)
547 	ZEND_ARG_TYPE_INFO(0, id, IS_LONG, 0)
548 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, ignore, IS_STRING, 0, "\"\"")
549 ZEND_END_ARG_INFO()
550 #endif
551 
552 #define arginfo_sodium_crypto_scalarmult_base arginfo_sodium_crypto_box_publickey_from_secretkey
553 
554 ZEND_FUNCTION(sodium_crypto_aead_aes256gcm_is_available);
555 #if defined(HAVE_AESGCM)
556 ZEND_FUNCTION(sodium_crypto_aead_aes256gcm_decrypt);
557 #endif
558 #if defined(HAVE_AESGCM)
559 ZEND_FUNCTION(sodium_crypto_aead_aes256gcm_encrypt);
560 #endif
561 #if defined(HAVE_AESGCM)
562 ZEND_FUNCTION(sodium_crypto_aead_aes256gcm_keygen);
563 #endif
564 #if defined(crypto_aead_aegis128l_KEYBYTES)
565 ZEND_FUNCTION(sodium_crypto_aead_aegis128l_decrypt);
566 #endif
567 #if defined(crypto_aead_aegis128l_KEYBYTES)
568 ZEND_FUNCTION(sodium_crypto_aead_aegis128l_encrypt);
569 #endif
570 #if defined(crypto_aead_aegis128l_KEYBYTES)
571 ZEND_FUNCTION(sodium_crypto_aead_aegis128l_keygen);
572 #endif
573 #if defined(crypto_aead_aegis256_KEYBYTES)
574 ZEND_FUNCTION(sodium_crypto_aead_aegis256_decrypt);
575 #endif
576 #if defined(crypto_aead_aegis256_KEYBYTES)
577 ZEND_FUNCTION(sodium_crypto_aead_aegis256_encrypt);
578 #endif
579 #if defined(crypto_aead_aegis256_KEYBYTES)
580 ZEND_FUNCTION(sodium_crypto_aead_aegis256_keygen);
581 #endif
582 ZEND_FUNCTION(sodium_crypto_aead_chacha20poly1305_decrypt);
583 ZEND_FUNCTION(sodium_crypto_aead_chacha20poly1305_encrypt);
584 ZEND_FUNCTION(sodium_crypto_aead_chacha20poly1305_keygen);
585 ZEND_FUNCTION(sodium_crypto_aead_chacha20poly1305_ietf_decrypt);
586 ZEND_FUNCTION(sodium_crypto_aead_chacha20poly1305_ietf_encrypt);
587 ZEND_FUNCTION(sodium_crypto_aead_chacha20poly1305_ietf_keygen);
588 #if defined(crypto_aead_xchacha20poly1305_IETF_NPUBBYTES)
589 ZEND_FUNCTION(sodium_crypto_aead_xchacha20poly1305_ietf_decrypt);
590 #endif
591 #if defined(crypto_aead_xchacha20poly1305_IETF_NPUBBYTES)
592 ZEND_FUNCTION(sodium_crypto_aead_xchacha20poly1305_ietf_keygen);
593 #endif
594 #if defined(crypto_aead_xchacha20poly1305_IETF_NPUBBYTES)
595 ZEND_FUNCTION(sodium_crypto_aead_xchacha20poly1305_ietf_encrypt);
596 #endif
597 ZEND_FUNCTION(sodium_crypto_auth);
598 ZEND_FUNCTION(sodium_crypto_auth_keygen);
599 ZEND_FUNCTION(sodium_crypto_auth_verify);
600 ZEND_FUNCTION(sodium_crypto_box);
601 ZEND_FUNCTION(sodium_crypto_box_keypair);
602 ZEND_FUNCTION(sodium_crypto_box_seed_keypair);
603 ZEND_FUNCTION(sodium_crypto_box_keypair_from_secretkey_and_publickey);
604 ZEND_FUNCTION(sodium_crypto_box_open);
605 ZEND_FUNCTION(sodium_crypto_box_publickey);
606 ZEND_FUNCTION(sodium_crypto_box_publickey_from_secretkey);
607 ZEND_FUNCTION(sodium_crypto_box_seal);
608 ZEND_FUNCTION(sodium_crypto_box_seal_open);
609 ZEND_FUNCTION(sodium_crypto_box_secretkey);
610 #if defined(crypto_core_ristretto255_HASHBYTES)
611 ZEND_FUNCTION(sodium_crypto_core_ristretto255_add);
612 #endif
613 #if defined(crypto_core_ristretto255_HASHBYTES)
614 ZEND_FUNCTION(sodium_crypto_core_ristretto255_from_hash);
615 #endif
616 #if defined(crypto_core_ristretto255_HASHBYTES)
617 ZEND_FUNCTION(sodium_crypto_core_ristretto255_is_valid_point);
618 #endif
619 #if defined(crypto_core_ristretto255_HASHBYTES)
620 ZEND_FUNCTION(sodium_crypto_core_ristretto255_random);
621 #endif
622 #if defined(crypto_core_ristretto255_HASHBYTES)
623 ZEND_FUNCTION(sodium_crypto_core_ristretto255_scalar_add);
624 #endif
625 #if defined(crypto_core_ristretto255_HASHBYTES)
626 ZEND_FUNCTION(sodium_crypto_core_ristretto255_scalar_complement);
627 #endif
628 #if defined(crypto_core_ristretto255_HASHBYTES)
629 ZEND_FUNCTION(sodium_crypto_core_ristretto255_scalar_invert);
630 #endif
631 #if defined(crypto_core_ristretto255_HASHBYTES)
632 ZEND_FUNCTION(sodium_crypto_core_ristretto255_scalar_mul);
633 #endif
634 #if defined(crypto_core_ristretto255_HASHBYTES)
635 ZEND_FUNCTION(sodium_crypto_core_ristretto255_scalar_negate);
636 #endif
637 #if defined(crypto_core_ristretto255_HASHBYTES)
638 ZEND_FUNCTION(sodium_crypto_core_ristretto255_scalar_random);
639 #endif
640 #if defined(crypto_core_ristretto255_HASHBYTES)
641 ZEND_FUNCTION(sodium_crypto_core_ristretto255_scalar_reduce);
642 #endif
643 #if defined(crypto_core_ristretto255_HASHBYTES)
644 ZEND_FUNCTION(sodium_crypto_core_ristretto255_scalar_sub);
645 #endif
646 #if defined(crypto_core_ristretto255_HASHBYTES)
647 ZEND_FUNCTION(sodium_crypto_core_ristretto255_sub);
648 #endif
649 ZEND_FUNCTION(sodium_crypto_kx_keypair);
650 ZEND_FUNCTION(sodium_crypto_kx_publickey);
651 ZEND_FUNCTION(sodium_crypto_kx_secretkey);
652 ZEND_FUNCTION(sodium_crypto_kx_seed_keypair);
653 ZEND_FUNCTION(sodium_crypto_kx_client_session_keys);
654 ZEND_FUNCTION(sodium_crypto_kx_server_session_keys);
655 ZEND_FUNCTION(sodium_crypto_generichash);
656 ZEND_FUNCTION(sodium_crypto_generichash_keygen);
657 ZEND_FUNCTION(sodium_crypto_generichash_init);
658 ZEND_FUNCTION(sodium_crypto_generichash_update);
659 ZEND_FUNCTION(sodium_crypto_generichash_final);
660 ZEND_FUNCTION(sodium_crypto_kdf_derive_from_key);
661 ZEND_FUNCTION(sodium_crypto_kdf_keygen);
662 #if defined(crypto_pwhash_SALTBYTES)
663 ZEND_FUNCTION(sodium_crypto_pwhash);
664 #endif
665 #if defined(crypto_pwhash_SALTBYTES)
666 ZEND_FUNCTION(sodium_crypto_pwhash_str);
667 #endif
668 #if defined(crypto_pwhash_SALTBYTES)
669 ZEND_FUNCTION(sodium_crypto_pwhash_str_verify);
670 #endif
671 #if SODIUM_LIBRARY_VERSION_MAJOR > 9 || (SODIUM_LIBRARY_VERSION_MAJOR == 9 && SODIUM_LIBRARY_VERSION_MINOR >= 6)
672 ZEND_FUNCTION(sodium_crypto_pwhash_str_needs_rehash);
673 #endif
674 #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES)
675 ZEND_FUNCTION(sodium_crypto_pwhash_scryptsalsa208sha256);
676 #endif
677 #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES)
678 ZEND_FUNCTION(sodium_crypto_pwhash_scryptsalsa208sha256_str);
679 #endif
680 #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES)
681 ZEND_FUNCTION(sodium_crypto_pwhash_scryptsalsa208sha256_str_verify);
682 #endif
683 ZEND_FUNCTION(sodium_crypto_scalarmult);
684 #if defined(crypto_core_ristretto255_HASHBYTES)
685 ZEND_FUNCTION(sodium_crypto_scalarmult_ristretto255);
686 #endif
687 #if defined(crypto_core_ristretto255_HASHBYTES)
688 ZEND_FUNCTION(sodium_crypto_scalarmult_ristretto255_base);
689 #endif
690 ZEND_FUNCTION(sodium_crypto_secretbox);
691 ZEND_FUNCTION(sodium_crypto_secretbox_keygen);
692 ZEND_FUNCTION(sodium_crypto_secretbox_open);
693 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
694 ZEND_FUNCTION(sodium_crypto_secretstream_xchacha20poly1305_keygen);
695 #endif
696 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
697 ZEND_FUNCTION(sodium_crypto_secretstream_xchacha20poly1305_init_push);
698 #endif
699 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
700 ZEND_FUNCTION(sodium_crypto_secretstream_xchacha20poly1305_push);
701 #endif
702 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
703 ZEND_FUNCTION(sodium_crypto_secretstream_xchacha20poly1305_init_pull);
704 #endif
705 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
706 ZEND_FUNCTION(sodium_crypto_secretstream_xchacha20poly1305_pull);
707 #endif
708 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
709 ZEND_FUNCTION(sodium_crypto_secretstream_xchacha20poly1305_rekey);
710 #endif
711 ZEND_FUNCTION(sodium_crypto_shorthash);
712 ZEND_FUNCTION(sodium_crypto_shorthash_keygen);
713 ZEND_FUNCTION(sodium_crypto_sign);
714 ZEND_FUNCTION(sodium_crypto_sign_detached);
715 ZEND_FUNCTION(sodium_crypto_sign_ed25519_pk_to_curve25519);
716 ZEND_FUNCTION(sodium_crypto_sign_ed25519_sk_to_curve25519);
717 ZEND_FUNCTION(sodium_crypto_sign_keypair);
718 ZEND_FUNCTION(sodium_crypto_sign_keypair_from_secretkey_and_publickey);
719 ZEND_FUNCTION(sodium_crypto_sign_open);
720 ZEND_FUNCTION(sodium_crypto_sign_publickey);
721 ZEND_FUNCTION(sodium_crypto_sign_secretkey);
722 ZEND_FUNCTION(sodium_crypto_sign_publickey_from_secretkey);
723 ZEND_FUNCTION(sodium_crypto_sign_seed_keypair);
724 ZEND_FUNCTION(sodium_crypto_sign_verify_detached);
725 ZEND_FUNCTION(sodium_crypto_stream);
726 ZEND_FUNCTION(sodium_crypto_stream_keygen);
727 ZEND_FUNCTION(sodium_crypto_stream_xor);
728 #if defined(crypto_stream_xchacha20_KEYBYTES)
729 ZEND_FUNCTION(sodium_crypto_stream_xchacha20);
730 #endif
731 #if defined(crypto_stream_xchacha20_KEYBYTES)
732 ZEND_FUNCTION(sodium_crypto_stream_xchacha20_keygen);
733 #endif
734 #if defined(crypto_stream_xchacha20_KEYBYTES)
735 ZEND_FUNCTION(sodium_crypto_stream_xchacha20_xor);
736 #endif
737 #if defined(crypto_stream_xchacha20_KEYBYTES)
738 ZEND_FUNCTION(sodium_crypto_stream_xchacha20_xor_ic);
739 #endif
740 ZEND_FUNCTION(sodium_add);
741 ZEND_FUNCTION(sodium_compare);
742 ZEND_FUNCTION(sodium_increment);
743 ZEND_FUNCTION(sodium_memcmp);
744 ZEND_FUNCTION(sodium_memzero);
745 ZEND_FUNCTION(sodium_pad);
746 ZEND_FUNCTION(sodium_unpad);
747 ZEND_FUNCTION(sodium_bin2hex);
748 ZEND_FUNCTION(sodium_hex2bin);
749 #if defined(sodium_base64_VARIANT_ORIGINAL)
750 ZEND_FUNCTION(sodium_bin2base64);
751 #endif
752 #if defined(sodium_base64_VARIANT_ORIGINAL)
753 ZEND_FUNCTION(sodium_base642bin);
754 #endif
755 
756 static const zend_function_entry ext_functions[] = {
757 	ZEND_FE(sodium_crypto_aead_aes256gcm_is_available, arginfo_sodium_crypto_aead_aes256gcm_is_available)
758 #if defined(HAVE_AESGCM)
759 	ZEND_FE(sodium_crypto_aead_aes256gcm_decrypt, arginfo_sodium_crypto_aead_aes256gcm_decrypt)
760 #endif
761 #if defined(HAVE_AESGCM)
762 	ZEND_FE(sodium_crypto_aead_aes256gcm_encrypt, arginfo_sodium_crypto_aead_aes256gcm_encrypt)
763 #endif
764 #if defined(HAVE_AESGCM)
765 	ZEND_FE(sodium_crypto_aead_aes256gcm_keygen, arginfo_sodium_crypto_aead_aes256gcm_keygen)
766 #endif
767 #if defined(crypto_aead_aegis128l_KEYBYTES)
768 	ZEND_FE(sodium_crypto_aead_aegis128l_decrypt, arginfo_sodium_crypto_aead_aegis128l_decrypt)
769 #endif
770 #if defined(crypto_aead_aegis128l_KEYBYTES)
771 	ZEND_FE(sodium_crypto_aead_aegis128l_encrypt, arginfo_sodium_crypto_aead_aegis128l_encrypt)
772 #endif
773 #if defined(crypto_aead_aegis128l_KEYBYTES)
774 	ZEND_FE(sodium_crypto_aead_aegis128l_keygen, arginfo_sodium_crypto_aead_aegis128l_keygen)
775 #endif
776 #if defined(crypto_aead_aegis256_KEYBYTES)
777 	ZEND_FE(sodium_crypto_aead_aegis256_decrypt, arginfo_sodium_crypto_aead_aegis256_decrypt)
778 #endif
779 #if defined(crypto_aead_aegis256_KEYBYTES)
780 	ZEND_FE(sodium_crypto_aead_aegis256_encrypt, arginfo_sodium_crypto_aead_aegis256_encrypt)
781 #endif
782 #if defined(crypto_aead_aegis256_KEYBYTES)
783 	ZEND_FE(sodium_crypto_aead_aegis256_keygen, arginfo_sodium_crypto_aead_aegis256_keygen)
784 #endif
785 	ZEND_FE(sodium_crypto_aead_chacha20poly1305_decrypt, arginfo_sodium_crypto_aead_chacha20poly1305_decrypt)
786 	ZEND_FE(sodium_crypto_aead_chacha20poly1305_encrypt, arginfo_sodium_crypto_aead_chacha20poly1305_encrypt)
787 	ZEND_FE(sodium_crypto_aead_chacha20poly1305_keygen, arginfo_sodium_crypto_aead_chacha20poly1305_keygen)
788 	ZEND_FE(sodium_crypto_aead_chacha20poly1305_ietf_decrypt, arginfo_sodium_crypto_aead_chacha20poly1305_ietf_decrypt)
789 	ZEND_FE(sodium_crypto_aead_chacha20poly1305_ietf_encrypt, arginfo_sodium_crypto_aead_chacha20poly1305_ietf_encrypt)
790 	ZEND_FE(sodium_crypto_aead_chacha20poly1305_ietf_keygen, arginfo_sodium_crypto_aead_chacha20poly1305_ietf_keygen)
791 #if defined(crypto_aead_xchacha20poly1305_IETF_NPUBBYTES)
792 	ZEND_FE(sodium_crypto_aead_xchacha20poly1305_ietf_decrypt, arginfo_sodium_crypto_aead_xchacha20poly1305_ietf_decrypt)
793 #endif
794 #if defined(crypto_aead_xchacha20poly1305_IETF_NPUBBYTES)
795 	ZEND_FE(sodium_crypto_aead_xchacha20poly1305_ietf_keygen, arginfo_sodium_crypto_aead_xchacha20poly1305_ietf_keygen)
796 #endif
797 #if defined(crypto_aead_xchacha20poly1305_IETF_NPUBBYTES)
798 	ZEND_FE(sodium_crypto_aead_xchacha20poly1305_ietf_encrypt, arginfo_sodium_crypto_aead_xchacha20poly1305_ietf_encrypt)
799 #endif
800 	ZEND_FE(sodium_crypto_auth, arginfo_sodium_crypto_auth)
801 	ZEND_FE(sodium_crypto_auth_keygen, arginfo_sodium_crypto_auth_keygen)
802 	ZEND_FE(sodium_crypto_auth_verify, arginfo_sodium_crypto_auth_verify)
803 	ZEND_FE(sodium_crypto_box, arginfo_sodium_crypto_box)
804 	ZEND_FE(sodium_crypto_box_keypair, arginfo_sodium_crypto_box_keypair)
805 	ZEND_FE(sodium_crypto_box_seed_keypair, arginfo_sodium_crypto_box_seed_keypair)
806 	ZEND_FE(sodium_crypto_box_keypair_from_secretkey_and_publickey, arginfo_sodium_crypto_box_keypair_from_secretkey_and_publickey)
807 	ZEND_FE(sodium_crypto_box_open, arginfo_sodium_crypto_box_open)
808 	ZEND_FE(sodium_crypto_box_publickey, arginfo_sodium_crypto_box_publickey)
809 	ZEND_FE(sodium_crypto_box_publickey_from_secretkey, arginfo_sodium_crypto_box_publickey_from_secretkey)
810 	ZEND_FE(sodium_crypto_box_seal, arginfo_sodium_crypto_box_seal)
811 	ZEND_FE(sodium_crypto_box_seal_open, arginfo_sodium_crypto_box_seal_open)
812 	ZEND_FE(sodium_crypto_box_secretkey, arginfo_sodium_crypto_box_secretkey)
813 #if defined(crypto_core_ristretto255_HASHBYTES)
814 	ZEND_FE(sodium_crypto_core_ristretto255_add, arginfo_sodium_crypto_core_ristretto255_add)
815 #endif
816 #if defined(crypto_core_ristretto255_HASHBYTES)
817 	ZEND_FE(sodium_crypto_core_ristretto255_from_hash, arginfo_sodium_crypto_core_ristretto255_from_hash)
818 #endif
819 #if defined(crypto_core_ristretto255_HASHBYTES)
820 	ZEND_FE(sodium_crypto_core_ristretto255_is_valid_point, arginfo_sodium_crypto_core_ristretto255_is_valid_point)
821 #endif
822 #if defined(crypto_core_ristretto255_HASHBYTES)
823 	ZEND_FE(sodium_crypto_core_ristretto255_random, arginfo_sodium_crypto_core_ristretto255_random)
824 #endif
825 #if defined(crypto_core_ristretto255_HASHBYTES)
826 	ZEND_FE(sodium_crypto_core_ristretto255_scalar_add, arginfo_sodium_crypto_core_ristretto255_scalar_add)
827 #endif
828 #if defined(crypto_core_ristretto255_HASHBYTES)
829 	ZEND_FE(sodium_crypto_core_ristretto255_scalar_complement, arginfo_sodium_crypto_core_ristretto255_scalar_complement)
830 #endif
831 #if defined(crypto_core_ristretto255_HASHBYTES)
832 	ZEND_FE(sodium_crypto_core_ristretto255_scalar_invert, arginfo_sodium_crypto_core_ristretto255_scalar_invert)
833 #endif
834 #if defined(crypto_core_ristretto255_HASHBYTES)
835 	ZEND_FE(sodium_crypto_core_ristretto255_scalar_mul, arginfo_sodium_crypto_core_ristretto255_scalar_mul)
836 #endif
837 #if defined(crypto_core_ristretto255_HASHBYTES)
838 	ZEND_FE(sodium_crypto_core_ristretto255_scalar_negate, arginfo_sodium_crypto_core_ristretto255_scalar_negate)
839 #endif
840 #if defined(crypto_core_ristretto255_HASHBYTES)
841 	ZEND_FE(sodium_crypto_core_ristretto255_scalar_random, arginfo_sodium_crypto_core_ristretto255_scalar_random)
842 #endif
843 #if defined(crypto_core_ristretto255_HASHBYTES)
844 	ZEND_FE(sodium_crypto_core_ristretto255_scalar_reduce, arginfo_sodium_crypto_core_ristretto255_scalar_reduce)
845 #endif
846 #if defined(crypto_core_ristretto255_HASHBYTES)
847 	ZEND_FE(sodium_crypto_core_ristretto255_scalar_sub, arginfo_sodium_crypto_core_ristretto255_scalar_sub)
848 #endif
849 #if defined(crypto_core_ristretto255_HASHBYTES)
850 	ZEND_FE(sodium_crypto_core_ristretto255_sub, arginfo_sodium_crypto_core_ristretto255_sub)
851 #endif
852 	ZEND_FE(sodium_crypto_kx_keypair, arginfo_sodium_crypto_kx_keypair)
853 	ZEND_FE(sodium_crypto_kx_publickey, arginfo_sodium_crypto_kx_publickey)
854 	ZEND_FE(sodium_crypto_kx_secretkey, arginfo_sodium_crypto_kx_secretkey)
855 	ZEND_FE(sodium_crypto_kx_seed_keypair, arginfo_sodium_crypto_kx_seed_keypair)
856 	ZEND_FE(sodium_crypto_kx_client_session_keys, arginfo_sodium_crypto_kx_client_session_keys)
857 	ZEND_FE(sodium_crypto_kx_server_session_keys, arginfo_sodium_crypto_kx_server_session_keys)
858 	ZEND_FE(sodium_crypto_generichash, arginfo_sodium_crypto_generichash)
859 	ZEND_FE(sodium_crypto_generichash_keygen, arginfo_sodium_crypto_generichash_keygen)
860 	ZEND_FE(sodium_crypto_generichash_init, arginfo_sodium_crypto_generichash_init)
861 	ZEND_FE(sodium_crypto_generichash_update, arginfo_sodium_crypto_generichash_update)
862 	ZEND_FE(sodium_crypto_generichash_final, arginfo_sodium_crypto_generichash_final)
863 	ZEND_FE(sodium_crypto_kdf_derive_from_key, arginfo_sodium_crypto_kdf_derive_from_key)
864 	ZEND_FE(sodium_crypto_kdf_keygen, arginfo_sodium_crypto_kdf_keygen)
865 #if defined(crypto_pwhash_SALTBYTES)
866 	ZEND_FE(sodium_crypto_pwhash, arginfo_sodium_crypto_pwhash)
867 #endif
868 #if defined(crypto_pwhash_SALTBYTES)
869 	ZEND_FE(sodium_crypto_pwhash_str, arginfo_sodium_crypto_pwhash_str)
870 #endif
871 #if defined(crypto_pwhash_SALTBYTES)
872 	ZEND_FE(sodium_crypto_pwhash_str_verify, arginfo_sodium_crypto_pwhash_str_verify)
873 #endif
874 #if SODIUM_LIBRARY_VERSION_MAJOR > 9 || (SODIUM_LIBRARY_VERSION_MAJOR == 9 && SODIUM_LIBRARY_VERSION_MINOR >= 6)
875 	ZEND_FE(sodium_crypto_pwhash_str_needs_rehash, arginfo_sodium_crypto_pwhash_str_needs_rehash)
876 #endif
877 #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES)
878 	ZEND_FE(sodium_crypto_pwhash_scryptsalsa208sha256, arginfo_sodium_crypto_pwhash_scryptsalsa208sha256)
879 #endif
880 #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES)
881 	ZEND_FE(sodium_crypto_pwhash_scryptsalsa208sha256_str, arginfo_sodium_crypto_pwhash_scryptsalsa208sha256_str)
882 #endif
883 #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES)
884 	ZEND_FE(sodium_crypto_pwhash_scryptsalsa208sha256_str_verify, arginfo_sodium_crypto_pwhash_scryptsalsa208sha256_str_verify)
885 #endif
886 	ZEND_FE(sodium_crypto_scalarmult, arginfo_sodium_crypto_scalarmult)
887 #if defined(crypto_core_ristretto255_HASHBYTES)
888 	ZEND_FE(sodium_crypto_scalarmult_ristretto255, arginfo_sodium_crypto_scalarmult_ristretto255)
889 #endif
890 #if defined(crypto_core_ristretto255_HASHBYTES)
891 	ZEND_FE(sodium_crypto_scalarmult_ristretto255_base, arginfo_sodium_crypto_scalarmult_ristretto255_base)
892 #endif
893 	ZEND_FE(sodium_crypto_secretbox, arginfo_sodium_crypto_secretbox)
894 	ZEND_FE(sodium_crypto_secretbox_keygen, arginfo_sodium_crypto_secretbox_keygen)
895 	ZEND_FE(sodium_crypto_secretbox_open, arginfo_sodium_crypto_secretbox_open)
896 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
897 	ZEND_FE(sodium_crypto_secretstream_xchacha20poly1305_keygen, arginfo_sodium_crypto_secretstream_xchacha20poly1305_keygen)
898 #endif
899 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
900 	ZEND_FE(sodium_crypto_secretstream_xchacha20poly1305_init_push, arginfo_sodium_crypto_secretstream_xchacha20poly1305_init_push)
901 #endif
902 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
903 	ZEND_FE(sodium_crypto_secretstream_xchacha20poly1305_push, arginfo_sodium_crypto_secretstream_xchacha20poly1305_push)
904 #endif
905 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
906 	ZEND_FE(sodium_crypto_secretstream_xchacha20poly1305_init_pull, arginfo_sodium_crypto_secretstream_xchacha20poly1305_init_pull)
907 #endif
908 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
909 	ZEND_FE(sodium_crypto_secretstream_xchacha20poly1305_pull, arginfo_sodium_crypto_secretstream_xchacha20poly1305_pull)
910 #endif
911 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
912 	ZEND_FE(sodium_crypto_secretstream_xchacha20poly1305_rekey, arginfo_sodium_crypto_secretstream_xchacha20poly1305_rekey)
913 #endif
914 	ZEND_FE(sodium_crypto_shorthash, arginfo_sodium_crypto_shorthash)
915 	ZEND_FE(sodium_crypto_shorthash_keygen, arginfo_sodium_crypto_shorthash_keygen)
916 	ZEND_FE(sodium_crypto_sign, arginfo_sodium_crypto_sign)
917 	ZEND_FE(sodium_crypto_sign_detached, arginfo_sodium_crypto_sign_detached)
918 	ZEND_FE(sodium_crypto_sign_ed25519_pk_to_curve25519, arginfo_sodium_crypto_sign_ed25519_pk_to_curve25519)
919 	ZEND_FE(sodium_crypto_sign_ed25519_sk_to_curve25519, arginfo_sodium_crypto_sign_ed25519_sk_to_curve25519)
920 	ZEND_FE(sodium_crypto_sign_keypair, arginfo_sodium_crypto_sign_keypair)
921 	ZEND_FE(sodium_crypto_sign_keypair_from_secretkey_and_publickey, arginfo_sodium_crypto_sign_keypair_from_secretkey_and_publickey)
922 	ZEND_FE(sodium_crypto_sign_open, arginfo_sodium_crypto_sign_open)
923 	ZEND_FE(sodium_crypto_sign_publickey, arginfo_sodium_crypto_sign_publickey)
924 	ZEND_FE(sodium_crypto_sign_secretkey, arginfo_sodium_crypto_sign_secretkey)
925 	ZEND_FE(sodium_crypto_sign_publickey_from_secretkey, arginfo_sodium_crypto_sign_publickey_from_secretkey)
926 	ZEND_FE(sodium_crypto_sign_seed_keypair, arginfo_sodium_crypto_sign_seed_keypair)
927 	ZEND_FE(sodium_crypto_sign_verify_detached, arginfo_sodium_crypto_sign_verify_detached)
928 	ZEND_FE(sodium_crypto_stream, arginfo_sodium_crypto_stream)
929 	ZEND_FE(sodium_crypto_stream_keygen, arginfo_sodium_crypto_stream_keygen)
930 	ZEND_FE(sodium_crypto_stream_xor, arginfo_sodium_crypto_stream_xor)
931 #if defined(crypto_stream_xchacha20_KEYBYTES)
932 	ZEND_FE(sodium_crypto_stream_xchacha20, arginfo_sodium_crypto_stream_xchacha20)
933 #endif
934 #if defined(crypto_stream_xchacha20_KEYBYTES)
935 	ZEND_FE(sodium_crypto_stream_xchacha20_keygen, arginfo_sodium_crypto_stream_xchacha20_keygen)
936 #endif
937 #if defined(crypto_stream_xchacha20_KEYBYTES)
938 	ZEND_FE(sodium_crypto_stream_xchacha20_xor, arginfo_sodium_crypto_stream_xchacha20_xor)
939 #endif
940 #if defined(crypto_stream_xchacha20_KEYBYTES)
941 	ZEND_FE(sodium_crypto_stream_xchacha20_xor_ic, arginfo_sodium_crypto_stream_xchacha20_xor_ic)
942 #endif
943 	ZEND_FE(sodium_add, arginfo_sodium_add)
944 	ZEND_FE(sodium_compare, arginfo_sodium_compare)
945 	ZEND_FE(sodium_increment, arginfo_sodium_increment)
946 	ZEND_FE(sodium_memcmp, arginfo_sodium_memcmp)
947 	ZEND_FE(sodium_memzero, arginfo_sodium_memzero)
948 	ZEND_FE(sodium_pad, arginfo_sodium_pad)
949 	ZEND_FE(sodium_unpad, arginfo_sodium_unpad)
950 	ZEND_FE(sodium_bin2hex, arginfo_sodium_bin2hex)
951 	ZEND_FE(sodium_hex2bin, arginfo_sodium_hex2bin)
952 #if defined(sodium_base64_VARIANT_ORIGINAL)
953 	ZEND_FE(sodium_bin2base64, arginfo_sodium_bin2base64)
954 #endif
955 #if defined(sodium_base64_VARIANT_ORIGINAL)
956 	ZEND_FE(sodium_base642bin, arginfo_sodium_base642bin)
957 #endif
958 	ZEND_RAW_FENTRY("sodium_crypto_scalarmult_base", zif_sodium_crypto_box_publickey_from_secretkey, arginfo_sodium_crypto_scalarmult_base, 0, NULL, NULL)
959 	ZEND_FE_END
960 };
961 
962 static const zend_function_entry class_SodiumException_methods[] = {
963 	ZEND_FE_END
964 };
965 
register_libsodium_symbols(int module_number)966 static void register_libsodium_symbols(int module_number)
967 {
968 	REGISTER_STRING_CONSTANT("SODIUM_LIBRARY_VERSION", SODIUM_LIBRARY_VERSION(), CONST_PERSISTENT);
969 	REGISTER_LONG_CONSTANT("SODIUM_LIBRARY_MAJOR_VERSION", sodium_library_version_major(), CONST_PERSISTENT);
970 	REGISTER_LONG_CONSTANT("SODIUM_LIBRARY_MINOR_VERSION", sodium_library_version_minor(), CONST_PERSISTENT);
971 #if defined(HAVE_AESGCM)
972 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_AES256GCM_KEYBYTES", crypto_aead_aes256gcm_KEYBYTES, CONST_PERSISTENT);
973 #endif
974 #if defined(HAVE_AESGCM)
975 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_AES256GCM_NSECBYTES", crypto_aead_aes256gcm_NSECBYTES, CONST_PERSISTENT);
976 #endif
977 #if defined(HAVE_AESGCM)
978 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_AES256GCM_NPUBBYTES", crypto_aead_aes256gcm_NPUBBYTES, CONST_PERSISTENT);
979 #endif
980 #if defined(HAVE_AESGCM)
981 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_AES256GCM_ABYTES", crypto_aead_aes256gcm_ABYTES, CONST_PERSISTENT);
982 #endif
983 #if defined(crypto_aead_aegis128l_KEYBYTES)
984 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_AEGIS128L_KEYBYTES", crypto_aead_aegis128l_KEYBYTES, CONST_PERSISTENT);
985 #endif
986 #if defined(crypto_aead_aegis128l_KEYBYTES)
987 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_AEGIS128L_NSECBYTES", crypto_aead_aegis128l_NSECBYTES, CONST_PERSISTENT);
988 #endif
989 #if defined(crypto_aead_aegis128l_KEYBYTES)
990 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_AEGIS128L_NPUBBYTES", crypto_aead_aegis128l_NPUBBYTES, CONST_PERSISTENT);
991 #endif
992 #if defined(crypto_aead_aegis128l_KEYBYTES)
993 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_AEGIS128L_ABYTES", crypto_aead_aegis128l_ABYTES, CONST_PERSISTENT);
994 #endif
995 #if defined(crypto_aead_aegis256_KEYBYTES)
996 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_AEGIS256_KEYBYTES", crypto_aead_aegis256_KEYBYTES, CONST_PERSISTENT);
997 #endif
998 #if defined(crypto_aead_aegis256_KEYBYTES)
999 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_AEGIS256_NSECBYTES", crypto_aead_aegis256_NSECBYTES, CONST_PERSISTENT);
1000 #endif
1001 #if defined(crypto_aead_aegis256_KEYBYTES)
1002 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_AEGIS256_NPUBBYTES", crypto_aead_aegis256_NPUBBYTES, CONST_PERSISTENT);
1003 #endif
1004 #if defined(crypto_aead_aegis256_KEYBYTES)
1005 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_AEGIS256_ABYTES", crypto_aead_aegis256_ABYTES, CONST_PERSISTENT);
1006 #endif
1007 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_KEYBYTES", crypto_aead_chacha20poly1305_KEYBYTES, CONST_PERSISTENT);
1008 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_NSECBYTES", crypto_aead_chacha20poly1305_NSECBYTES, CONST_PERSISTENT);
1009 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_NPUBBYTES", crypto_aead_chacha20poly1305_NPUBBYTES, CONST_PERSISTENT);
1010 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_ABYTES", crypto_aead_chacha20poly1305_ABYTES, CONST_PERSISTENT);
1011 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_KEYBYTES", crypto_aead_chacha20poly1305_IETF_KEYBYTES, CONST_PERSISTENT);
1012 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_NSECBYTES", crypto_aead_chacha20poly1305_IETF_NSECBYTES, CONST_PERSISTENT);
1013 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES", crypto_aead_chacha20poly1305_IETF_NPUBBYTES, CONST_PERSISTENT);
1014 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES", crypto_aead_chacha20poly1305_IETF_ABYTES, CONST_PERSISTENT);
1015 #if defined(crypto_aead_xchacha20poly1305_IETF_NPUBBYTES)
1016 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_KEYBYTES", crypto_aead_xchacha20poly1305_IETF_KEYBYTES, CONST_PERSISTENT);
1017 #endif
1018 #if defined(crypto_aead_xchacha20poly1305_IETF_NPUBBYTES)
1019 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NSECBYTES", crypto_aead_xchacha20poly1305_IETF_NSECBYTES, CONST_PERSISTENT);
1020 #endif
1021 #if defined(crypto_aead_xchacha20poly1305_IETF_NPUBBYTES)
1022 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES", crypto_aead_xchacha20poly1305_IETF_NPUBBYTES, CONST_PERSISTENT);
1023 #endif
1024 #if defined(crypto_aead_xchacha20poly1305_IETF_NPUBBYTES)
1025 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_ABYTES", crypto_aead_xchacha20poly1305_IETF_ABYTES, CONST_PERSISTENT);
1026 #endif
1027 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AUTH_BYTES", crypto_auth_BYTES, CONST_PERSISTENT);
1028 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AUTH_KEYBYTES", crypto_auth_KEYBYTES, CONST_PERSISTENT);
1029 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_BOX_SEALBYTES", crypto_box_SEALBYTES, CONST_PERSISTENT);
1030 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_BOX_SECRETKEYBYTES", crypto_box_SECRETKEYBYTES, CONST_PERSISTENT);
1031 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_BOX_PUBLICKEYBYTES", crypto_box_PUBLICKEYBYTES, CONST_PERSISTENT);
1032 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_BOX_KEYPAIRBYTES", SODIUM_CRYPTO_BOX_KEYPAIRBYTES(), CONST_PERSISTENT);
1033 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_BOX_MACBYTES", crypto_box_MACBYTES, CONST_PERSISTENT);
1034 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_BOX_NONCEBYTES", crypto_box_NONCEBYTES, CONST_PERSISTENT);
1035 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_BOX_SEEDBYTES", crypto_box_SEEDBYTES, CONST_PERSISTENT);
1036 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_KDF_BYTES_MIN", crypto_kdf_BYTES_MIN, CONST_PERSISTENT);
1037 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_KDF_BYTES_MAX", crypto_kdf_BYTES_MAX, CONST_PERSISTENT);
1038 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_KDF_CONTEXTBYTES", crypto_kdf_CONTEXTBYTES, CONST_PERSISTENT);
1039 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_KDF_KEYBYTES", crypto_kdf_KEYBYTES, CONST_PERSISTENT);
1040 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_KX_SEEDBYTES", crypto_kx_SEEDBYTES, CONST_PERSISTENT);
1041 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_KX_SESSIONKEYBYTES", crypto_kx_SESSIONKEYBYTES, CONST_PERSISTENT);
1042 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_KX_PUBLICKEYBYTES", crypto_kx_PUBLICKEYBYTES, CONST_PERSISTENT);
1043 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_KX_SECRETKEYBYTES", crypto_kx_SECRETKEYBYTES, CONST_PERSISTENT);
1044 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_KX_KEYPAIRBYTES", SODIUM_CRYPTO_KX_KEYPAIRBYTES(), CONST_PERSISTENT);
1045 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
1046 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES", crypto_secretstream_xchacha20poly1305_ABYTES, CONST_PERSISTENT);
1047 #endif
1048 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
1049 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_HEADERBYTES", crypto_secretstream_xchacha20poly1305_HEADERBYTES, CONST_PERSISTENT);
1050 #endif
1051 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
1052 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_KEYBYTES", crypto_secretstream_xchacha20poly1305_KEYBYTES, CONST_PERSISTENT);
1053 #endif
1054 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
1055 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_MESSAGEBYTES_MAX", crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX, CONST_PERSISTENT);
1056 #endif
1057 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
1058 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_MESSAGE", crypto_secretstream_xchacha20poly1305_TAG_MESSAGE, CONST_PERSISTENT);
1059 #endif
1060 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
1061 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PUSH", crypto_secretstream_xchacha20poly1305_TAG_PUSH, CONST_PERSISTENT);
1062 #endif
1063 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
1064 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY", crypto_secretstream_xchacha20poly1305_TAG_REKEY, CONST_PERSISTENT);
1065 #endif
1066 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
1067 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_FINAL", crypto_secretstream_xchacha20poly1305_TAG_FINAL, CONST_PERSISTENT);
1068 #endif
1069 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_GENERICHASH_BYTES", crypto_generichash_BYTES, CONST_PERSISTENT);
1070 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_GENERICHASH_BYTES_MIN", crypto_generichash_BYTES_MIN, CONST_PERSISTENT);
1071 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_GENERICHASH_BYTES_MAX", crypto_generichash_BYTES_MAX, CONST_PERSISTENT);
1072 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_GENERICHASH_KEYBYTES", crypto_generichash_KEYBYTES, CONST_PERSISTENT);
1073 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_GENERICHASH_KEYBYTES_MIN", crypto_generichash_KEYBYTES_MIN, CONST_PERSISTENT);
1074 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_GENERICHASH_KEYBYTES_MAX", crypto_generichash_KEYBYTES_MAX, CONST_PERSISTENT);
1075 #if defined(crypto_pwhash_SALTBYTES)
1076 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_ALG_ARGON2I13", crypto_pwhash_ALG_ARGON2I13, CONST_PERSISTENT);
1077 #endif
1078 #if defined(crypto_pwhash_SALTBYTES) && defined(crypto_pwhash_ALG_ARGON2ID13)
1079 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_ALG_ARGON2ID13", crypto_pwhash_ALG_ARGON2ID13, CONST_PERSISTENT);
1080 #endif
1081 #if defined(crypto_pwhash_SALTBYTES)
1082 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_ALG_DEFAULT", crypto_pwhash_ALG_DEFAULT, CONST_PERSISTENT);
1083 #endif
1084 #if defined(crypto_pwhash_SALTBYTES)
1085 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_SALTBYTES", crypto_pwhash_SALTBYTES, CONST_PERSISTENT);
1086 #endif
1087 #if defined(crypto_pwhash_SALTBYTES)
1088 	REGISTER_STRING_CONSTANT("SODIUM_CRYPTO_PWHASH_STRPREFIX", crypto_pwhash_STRPREFIX, CONST_PERSISTENT);
1089 #endif
1090 #if defined(crypto_pwhash_SALTBYTES)
1091 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE", crypto_pwhash_opslimit_interactive(), CONST_PERSISTENT);
1092 #endif
1093 #if defined(crypto_pwhash_SALTBYTES)
1094 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE", crypto_pwhash_memlimit_interactive(), CONST_PERSISTENT);
1095 #endif
1096 #if defined(crypto_pwhash_SALTBYTES)
1097 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_OPSLIMIT_MODERATE", crypto_pwhash_opslimit_moderate(), CONST_PERSISTENT);
1098 #endif
1099 #if defined(crypto_pwhash_SALTBYTES)
1100 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_MEMLIMIT_MODERATE", crypto_pwhash_memlimit_moderate(), CONST_PERSISTENT);
1101 #endif
1102 #if defined(crypto_pwhash_SALTBYTES)
1103 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_OPSLIMIT_SENSITIVE", crypto_pwhash_opslimit_sensitive(), CONST_PERSISTENT);
1104 #endif
1105 #if defined(crypto_pwhash_SALTBYTES)
1106 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_MEMLIMIT_SENSITIVE", crypto_pwhash_memlimit_sensitive(), CONST_PERSISTENT);
1107 #endif
1108 #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES)
1109 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_SALTBYTES", crypto_pwhash_scryptsalsa208sha256_SALTBYTES, CONST_PERSISTENT);
1110 #endif
1111 #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES)
1112 	REGISTER_STRING_CONSTANT("SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_STRPREFIX", crypto_pwhash_scryptsalsa208sha256_STRPREFIX, CONST_PERSISTENT);
1113 #endif
1114 #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES)
1115 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_INTERACTIVE", crypto_pwhash_scryptsalsa208sha256_opslimit_interactive(), CONST_PERSISTENT);
1116 #endif
1117 #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES)
1118 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_INTERACTIVE", crypto_pwhash_scryptsalsa208sha256_memlimit_interactive(), CONST_PERSISTENT);
1119 #endif
1120 #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES)
1121 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_SENSITIVE", crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive(), CONST_PERSISTENT);
1122 #endif
1123 #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES)
1124 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_SENSITIVE", crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive(), CONST_PERSISTENT);
1125 #endif
1126 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SCALARMULT_BYTES", crypto_scalarmult_BYTES, CONST_PERSISTENT);
1127 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SCALARMULT_SCALARBYTES", crypto_scalarmult_SCALARBYTES, CONST_PERSISTENT);
1128 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SHORTHASH_BYTES", crypto_shorthash_BYTES, CONST_PERSISTENT);
1129 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SHORTHASH_KEYBYTES", crypto_shorthash_KEYBYTES, CONST_PERSISTENT);
1130 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETBOX_KEYBYTES", crypto_secretbox_KEYBYTES, CONST_PERSISTENT);
1131 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETBOX_MACBYTES", crypto_secretbox_MACBYTES, CONST_PERSISTENT);
1132 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETBOX_NONCEBYTES", crypto_secretbox_NONCEBYTES, CONST_PERSISTENT);
1133 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SIGN_BYTES", crypto_sign_BYTES, CONST_PERSISTENT);
1134 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SIGN_SEEDBYTES", crypto_sign_SEEDBYTES, CONST_PERSISTENT);
1135 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SIGN_PUBLICKEYBYTES", crypto_sign_PUBLICKEYBYTES, CONST_PERSISTENT);
1136 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SIGN_SECRETKEYBYTES", crypto_sign_SECRETKEYBYTES, CONST_PERSISTENT);
1137 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SIGN_KEYPAIRBYTES", SODIUM_CRYPTO_SIGN_KEYPAIRBYTES(), CONST_PERSISTENT);
1138 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_STREAM_NONCEBYTES", crypto_stream_NONCEBYTES, CONST_PERSISTENT);
1139 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_STREAM_KEYBYTES", crypto_stream_KEYBYTES, CONST_PERSISTENT);
1140 #if defined(crypto_stream_xchacha20_KEYBYTES)
1141 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_STREAM_XCHACHA20_NONCEBYTES", crypto_stream_xchacha20_NONCEBYTES, CONST_PERSISTENT);
1142 #endif
1143 #if defined(crypto_stream_xchacha20_KEYBYTES)
1144 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_STREAM_XCHACHA20_KEYBYTES", crypto_stream_xchacha20_KEYBYTES, CONST_PERSISTENT);
1145 #endif
1146 #if defined(sodium_base64_VARIANT_ORIGINAL)
1147 	REGISTER_LONG_CONSTANT("SODIUM_BASE64_VARIANT_ORIGINAL", sodium_base64_VARIANT_ORIGINAL, CONST_PERSISTENT);
1148 #endif
1149 #if defined(sodium_base64_VARIANT_ORIGINAL)
1150 	REGISTER_LONG_CONSTANT("SODIUM_BASE64_VARIANT_ORIGINAL_NO_PADDING", sodium_base64_VARIANT_ORIGINAL_NO_PADDING, CONST_PERSISTENT);
1151 #endif
1152 #if defined(sodium_base64_VARIANT_ORIGINAL)
1153 	REGISTER_LONG_CONSTANT("SODIUM_BASE64_VARIANT_URLSAFE", sodium_base64_VARIANT_URLSAFE, CONST_PERSISTENT);
1154 #endif
1155 #if defined(sodium_base64_VARIANT_ORIGINAL)
1156 	REGISTER_LONG_CONSTANT("SODIUM_BASE64_VARIANT_URLSAFE_NO_PADDING", sodium_base64_VARIANT_URLSAFE_NO_PADDING, CONST_PERSISTENT);
1157 #endif
1158 #if defined(crypto_core_ristretto255_HASHBYTES)
1159 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SCALARMULT_RISTRETTO255_BYTES", crypto_scalarmult_ristretto255_BYTES, CONST_PERSISTENT);
1160 #endif
1161 #if defined(crypto_core_ristretto255_HASHBYTES)
1162 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SCALARMULT_RISTRETTO255_SCALARBYTES", crypto_scalarmult_ristretto255_SCALARBYTES, CONST_PERSISTENT);
1163 #endif
1164 #if defined(crypto_core_ristretto255_HASHBYTES)
1165 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_CORE_RISTRETTO255_BYTES", crypto_core_ristretto255_BYTES, CONST_PERSISTENT);
1166 #endif
1167 #if defined(crypto_core_ristretto255_HASHBYTES)
1168 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_CORE_RISTRETTO255_HASHBYTES", crypto_core_ristretto255_HASHBYTES, CONST_PERSISTENT);
1169 #endif
1170 #if defined(crypto_core_ristretto255_HASHBYTES)
1171 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_CORE_RISTRETTO255_SCALARBYTES", crypto_core_ristretto255_SCALARBYTES, CONST_PERSISTENT);
1172 #endif
1173 #if defined(crypto_core_ristretto255_HASHBYTES)
1174 	REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_CORE_RISTRETTO255_NONREDUCEDSCALARBYTES", crypto_core_ristretto255_NONREDUCEDSCALARBYTES, CONST_PERSISTENT);
1175 #endif
1176 
1177 #if defined(HAVE_AESGCM)
1178 
1179 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_aead_aes256gcm_decrypt", sizeof("sodium_crypto_aead_aes256gcm_decrypt") - 1), 3, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1180 #endif
1181 #if defined(HAVE_AESGCM)
1182 
1183 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_aead_aes256gcm_encrypt", sizeof("sodium_crypto_aead_aes256gcm_encrypt") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1184 
1185 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_aead_aes256gcm_encrypt", sizeof("sodium_crypto_aead_aes256gcm_encrypt") - 1), 3, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1186 #endif
1187 #if defined(crypto_aead_aegis128l_KEYBYTES)
1188 
1189 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_aead_aegis128l_decrypt", sizeof("sodium_crypto_aead_aegis128l_decrypt") - 1), 3, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1190 #endif
1191 #if defined(crypto_aead_aegis128l_KEYBYTES)
1192 
1193 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_aead_aegis128l_encrypt", sizeof("sodium_crypto_aead_aegis128l_encrypt") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1194 
1195 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_aead_aegis128l_encrypt", sizeof("sodium_crypto_aead_aegis128l_encrypt") - 1), 3, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1196 #endif
1197 #if defined(crypto_aead_aegis256_KEYBYTES)
1198 
1199 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_aead_aegis256_decrypt", sizeof("sodium_crypto_aead_aegis256_decrypt") - 1), 3, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1200 #endif
1201 #if defined(crypto_aead_aegis256_KEYBYTES)
1202 
1203 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_aead_aegis256_encrypt", sizeof("sodium_crypto_aead_aegis256_encrypt") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1204 
1205 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_aead_aegis256_encrypt", sizeof("sodium_crypto_aead_aegis256_encrypt") - 1), 3, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1206 #endif
1207 
1208 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_aead_chacha20poly1305_decrypt", sizeof("sodium_crypto_aead_chacha20poly1305_decrypt") - 1), 3, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1209 
1210 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_aead_chacha20poly1305_encrypt", sizeof("sodium_crypto_aead_chacha20poly1305_encrypt") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1211 
1212 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_aead_chacha20poly1305_encrypt", sizeof("sodium_crypto_aead_chacha20poly1305_encrypt") - 1), 3, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1213 
1214 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_aead_chacha20poly1305_ietf_decrypt", sizeof("sodium_crypto_aead_chacha20poly1305_ietf_decrypt") - 1), 3, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1215 
1216 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_aead_chacha20poly1305_ietf_encrypt", sizeof("sodium_crypto_aead_chacha20poly1305_ietf_encrypt") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1217 
1218 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_aead_chacha20poly1305_ietf_encrypt", sizeof("sodium_crypto_aead_chacha20poly1305_ietf_encrypt") - 1), 3, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1219 #if defined(crypto_aead_xchacha20poly1305_IETF_NPUBBYTES)
1220 
1221 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_aead_xchacha20poly1305_ietf_decrypt", sizeof("sodium_crypto_aead_xchacha20poly1305_ietf_decrypt") - 1), 3, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1222 #endif
1223 #if defined(crypto_aead_xchacha20poly1305_IETF_NPUBBYTES)
1224 
1225 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_aead_xchacha20poly1305_ietf_encrypt", sizeof("sodium_crypto_aead_xchacha20poly1305_ietf_encrypt") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1226 
1227 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_aead_xchacha20poly1305_ietf_encrypt", sizeof("sodium_crypto_aead_xchacha20poly1305_ietf_encrypt") - 1), 3, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1228 #endif
1229 
1230 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_auth", sizeof("sodium_crypto_auth") - 1), 1, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1231 
1232 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_auth_verify", sizeof("sodium_crypto_auth_verify") - 1), 2, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1233 
1234 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_box", sizeof("sodium_crypto_box") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1235 
1236 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_box", sizeof("sodium_crypto_box") - 1), 2, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1237 
1238 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_box_seed_keypair", sizeof("sodium_crypto_box_seed_keypair") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1239 
1240 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_box_keypair_from_secretkey_and_publickey", sizeof("sodium_crypto_box_keypair_from_secretkey_and_publickey") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1241 
1242 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_box_open", sizeof("sodium_crypto_box_open") - 1), 2, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1243 
1244 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_box_publickey", sizeof("sodium_crypto_box_publickey") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1245 
1246 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_box_publickey_from_secretkey", sizeof("sodium_crypto_box_publickey_from_secretkey") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1247 
1248 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_box_seal", sizeof("sodium_crypto_box_seal") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1249 
1250 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_box_seal_open", sizeof("sodium_crypto_box_seal_open") - 1), 1, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1251 
1252 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_box_secretkey", sizeof("sodium_crypto_box_secretkey") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1253 
1254 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_kx_publickey", sizeof("sodium_crypto_kx_publickey") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1255 
1256 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_kx_secretkey", sizeof("sodium_crypto_kx_secretkey") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1257 
1258 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_kx_seed_keypair", sizeof("sodium_crypto_kx_seed_keypair") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1259 
1260 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_kx_client_session_keys", sizeof("sodium_crypto_kx_client_session_keys") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1261 
1262 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_kx_server_session_keys", sizeof("sodium_crypto_kx_server_session_keys") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1263 
1264 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_generichash", sizeof("sodium_crypto_generichash") - 1), 1, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1265 
1266 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_generichash_init", sizeof("sodium_crypto_generichash_init") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1267 
1268 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_kdf_derive_from_key", sizeof("sodium_crypto_kdf_derive_from_key") - 1), 3, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1269 #if defined(crypto_pwhash_SALTBYTES)
1270 
1271 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_pwhash", sizeof("sodium_crypto_pwhash") - 1), 1, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1272 #endif
1273 #if defined(crypto_pwhash_SALTBYTES)
1274 
1275 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_pwhash_str", sizeof("sodium_crypto_pwhash_str") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1276 #endif
1277 #if defined(crypto_pwhash_SALTBYTES)
1278 
1279 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_pwhash_str_verify", sizeof("sodium_crypto_pwhash_str_verify") - 1), 1, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1280 #endif
1281 #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES)
1282 
1283 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_pwhash_scryptsalsa208sha256", sizeof("sodium_crypto_pwhash_scryptsalsa208sha256") - 1), 1, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1284 #endif
1285 #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES)
1286 
1287 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_pwhash_scryptsalsa208sha256_str", sizeof("sodium_crypto_pwhash_scryptsalsa208sha256_str") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1288 #endif
1289 #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES)
1290 
1291 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_pwhash_scryptsalsa208sha256_str_verify", sizeof("sodium_crypto_pwhash_scryptsalsa208sha256_str_verify") - 1), 1, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1292 #endif
1293 
1294 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_secretbox", sizeof("sodium_crypto_secretbox") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1295 
1296 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_secretbox", sizeof("sodium_crypto_secretbox") - 1), 2, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1297 
1298 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_secretbox_open", sizeof("sodium_crypto_secretbox_open") - 1), 2, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1299 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
1300 
1301 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_secretstream_xchacha20poly1305_init_push", sizeof("sodium_crypto_secretstream_xchacha20poly1305_init_push") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1302 #endif
1303 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
1304 
1305 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_secretstream_xchacha20poly1305_push", sizeof("sodium_crypto_secretstream_xchacha20poly1305_push") - 1), 1, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1306 #endif
1307 #if defined(crypto_secretstream_xchacha20poly1305_ABYTES)
1308 
1309 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_secretstream_xchacha20poly1305_init_pull", sizeof("sodium_crypto_secretstream_xchacha20poly1305_init_pull") - 1), 1, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1310 #endif
1311 
1312 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_shorthash", sizeof("sodium_crypto_shorthash") - 1), 1, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1313 
1314 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_sign", sizeof("sodium_crypto_sign") - 1), 1, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1315 
1316 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_sign_detached", sizeof("sodium_crypto_sign_detached") - 1), 1, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1317 
1318 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_sign_ed25519_sk_to_curve25519", sizeof("sodium_crypto_sign_ed25519_sk_to_curve25519") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1319 
1320 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_sign_keypair_from_secretkey_and_publickey", sizeof("sodium_crypto_sign_keypair_from_secretkey_and_publickey") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1321 
1322 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_sign_publickey", sizeof("sodium_crypto_sign_publickey") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1323 
1324 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_sign_secretkey", sizeof("sodium_crypto_sign_secretkey") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1325 
1326 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_sign_publickey_from_secretkey", sizeof("sodium_crypto_sign_publickey_from_secretkey") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1327 
1328 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_sign_seed_keypair", sizeof("sodium_crypto_sign_seed_keypair") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1329 
1330 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_stream", sizeof("sodium_crypto_stream") - 1), 2, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1331 
1332 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_stream_xor", sizeof("sodium_crypto_stream_xor") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1333 
1334 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_stream_xor", sizeof("sodium_crypto_stream_xor") - 1), 2, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1335 #if defined(crypto_stream_xchacha20_KEYBYTES)
1336 
1337 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_stream_xchacha20", sizeof("sodium_crypto_stream_xchacha20") - 1), 2, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1338 #endif
1339 #if defined(crypto_stream_xchacha20_KEYBYTES)
1340 
1341 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_stream_xchacha20_xor", sizeof("sodium_crypto_stream_xchacha20_xor") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1342 
1343 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_stream_xchacha20_xor", sizeof("sodium_crypto_stream_xchacha20_xor") - 1), 2, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1344 #endif
1345 #if defined(crypto_stream_xchacha20_KEYBYTES)
1346 
1347 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_stream_xchacha20_xor_ic", sizeof("sodium_crypto_stream_xchacha20_xor_ic") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1348 
1349 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_stream_xchacha20_xor_ic", sizeof("sodium_crypto_stream_xchacha20_xor_ic") - 1), 3, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1350 #endif
1351 
1352 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_compare", sizeof("sodium_compare") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1353 
1354 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_compare", sizeof("sodium_compare") - 1), 1, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1355 
1356 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_memcmp", sizeof("sodium_memcmp") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1357 
1358 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_memcmp", sizeof("sodium_memcmp") - 1), 1, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1359 
1360 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_memzero", sizeof("sodium_memzero") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1361 
1362 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_pad", sizeof("sodium_pad") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1363 
1364 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_unpad", sizeof("sodium_unpad") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1365 
1366 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_bin2hex", sizeof("sodium_bin2hex") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1367 
1368 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_hex2bin", sizeof("sodium_hex2bin") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1369 #if defined(sodium_base64_VARIANT_ORIGINAL)
1370 
1371 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_bin2base64", sizeof("sodium_bin2base64") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1372 #endif
1373 #if defined(sodium_base64_VARIANT_ORIGINAL)
1374 
1375 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_base642bin", sizeof("sodium_base642bin") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1376 #endif
1377 
1378 	zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "sodium_crypto_scalarmult_base", sizeof("sodium_crypto_scalarmult_base") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
1379 }
1380 
register_class_SodiumException(zend_class_entry * class_entry_Exception)1381 static zend_class_entry *register_class_SodiumException(zend_class_entry *class_entry_Exception)
1382 {
1383 	zend_class_entry ce, *class_entry;
1384 
1385 	INIT_CLASS_ENTRY(ce, "SodiumException", class_SodiumException_methods);
1386 	class_entry = zend_register_internal_class_ex(&ce, class_entry_Exception);
1387 
1388 	return class_entry;
1389 }
1390