run:R W Run
4.06 KB
2026-03-11 16:18:52
R W Run
1.31 KB
2026-03-11 16:18:52
R W Run
46.24 KB
2026-03-11 16:18:52
R W Run
4.49 KB
2026-03-11 16:18:52
R W Run
3.57 KB
2026-03-11 16:18:52
R W Run
401 By
2026-03-11 16:18:52
R W Run
7.79 KB
2026-03-11 16:18:52
R W Run
26.8 KB
2026-03-11 16:18:52
R W Run
2.03 KB
2026-03-11 16:18:52
R W Run
error_log
📄sodium_compat.php
1<?php
2namespace Sodium;
3
4require_once dirname(dirname(__FILE__)) . '/autoload.php';
5
6use ParagonIE_Sodium_Compat;
7
8/**
9 * This file will monkey patch the pure-PHP implementation in place of the
10 * PECL functions, but only if they do not already exist.
11 *
12 * Thus, the functions just proxy to the appropriate ParagonIE_Sodium_Compat
13 * method.
14 */
15if (!is_callable('\\Sodium\\bin2hex')) {
16 /**
17 * @see ParagonIE_Sodium_Compat::bin2hex()
18 * @param string $string
19 * @return string
20 * @throws \SodiumException
21 * @throws \TypeError
22 */
23 function bin2hex(
24 #[\SensitiveParameter]
25 $string
26 ) {
27 return ParagonIE_Sodium_Compat::bin2hex($string);
28 }
29}
30if (!is_callable('\\Sodium\\compare')) {
31 /**
32 * @see ParagonIE_Sodium_Compat::compare()
33 * @param string $a
34 * @param string $b
35 * @return int
36 * @throws \SodiumException
37 * @throws \TypeError
38 */
39 function compare(
40 #[\SensitiveParameter]
41 $a,
42 #[\SensitiveParameter]
43 $b
44 ) {
45 return ParagonIE_Sodium_Compat::compare($a, $b);
46 }
47}
48if (!is_callable('\\Sodium\\crypto_aead_aes256gcm_decrypt')) {
49 /**
50 * @see ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_decrypt()
51 * @param string $message
52 * @param string $assocData
53 * @param string $nonce
54 * @param string $key
55 * @return string|bool
56 */
57 function crypto_aead_aes256gcm_decrypt(
58 $message,
59 $assocData,
60 $nonce,
61 #[\SensitiveParameter]
62 $key
63 ) {
64 try {
65 return ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_decrypt($message, $assocData, $nonce, $key);
66 } catch (\TypeError $ex) {
67 return false;
68 } catch (\SodiumException $ex) {
69 return false;
70 }
71 }
72}
73if (!is_callable('\\Sodium\\crypto_aead_aes256gcm_encrypt')) {
74 /**
75 * @see ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_encrypt()
76 * @param string $message
77 * @param string $assocData
78 * @param string $nonce
79 * @param string $key
80 * @return string
81 * @throws \SodiumException
82 * @throws \TypeError
83 */
84 function crypto_aead_aes256gcm_encrypt(
85 #[\SensitiveParameter]
86 $message,
87 $assocData,
88 $nonce,
89 #[\SensitiveParameter]
90 $key
91 ) {
92 return ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_encrypt($message, $assocData, $nonce, $key);
93 }
94}
95if (!is_callable('\\Sodium\\crypto_aead_aes256gcm_is_available')) {
96 /**
97 * @see ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_is_available()
98 * @return bool
99 */
100 function crypto_aead_aes256gcm_is_available()
101 {
102 return ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_is_available();
103 }
104}
105if (!is_callable('\\Sodium\\crypto_aead_chacha20poly1305_decrypt')) {
106 /**
107 * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_decrypt()
108 * @param string $message
109 * @param string $assocData
110 * @param string $nonce
111 * @param string $key
112 * @return string|bool
113 */
114 function crypto_aead_chacha20poly1305_decrypt(
115 $message,
116 $assocData,
117 $nonce,
118 #[\SensitiveParameter]
119 $key
120 ) {
121 try {
122 return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_decrypt($message, $assocData, $nonce, $key);
123 } catch (\TypeError $ex) {
124 return false;
125 } catch (\SodiumException $ex) {
126 return false;
127 }
128 }
129}
130if (!is_callable('\\Sodium\\crypto_aead_chacha20poly1305_encrypt')) {
131 /**
132 * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_encrypt()
133 * @param string $message
134 * @param string $assocData
135 * @param string $nonce
136 * @param string $key
137 * @return string
138 * @throws \SodiumException
139 * @throws \TypeError
140 */
141 function crypto_aead_chacha20poly1305_encrypt(
142 #[\SensitiveParameter]
143 $message,
144 $assocData,
145 $nonce,
146 #[\SensitiveParameter]
147 $key
148 ) {
149 return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_encrypt($message, $assocData, $nonce, $key);
150 }
151}
152if (!is_callable('\\Sodium\\crypto_aead_chacha20poly1305_ietf_decrypt')) {
153 /**
154 * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_decrypt()
155 * @param string $message
156 * @param string $assocData
157 * @param string $nonce
158 * @param string $key
159 * @return string|bool
160 */
161 function crypto_aead_chacha20poly1305_ietf_decrypt(
162 $message,
163 $assocData,
164 $nonce,
165 #[\SensitiveParameter]
166 $key
167 ) {
168 try {
169 return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_decrypt($message, $assocData, $nonce, $key);
170 } catch (\TypeError $ex) {
171 return false;
172 } catch (\SodiumException $ex) {
173 return false;
174 }
175 }
176}
177if (!is_callable('\\Sodium\\crypto_aead_chacha20poly1305_ietf_encrypt')) {
178 /**
179 * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_encrypt()
180 * @param string $message
181 * @param string $assocData
182 * @param string $nonce
183 * @param string $key
184 * @return string
185 * @throws \SodiumException
186 * @throws \TypeError
187 */
188 function crypto_aead_chacha20poly1305_ietf_encrypt(
189 #[\SensitiveParameter]
190 $message,
191 $assocData,
192 $nonce,
193 #[\SensitiveParameter]
194 $key
195 ) {
196 return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_encrypt($message, $assocData, $nonce, $key);
197 }
198}
199if (!is_callable('\\Sodium\\crypto_auth')) {
200 /**
201 * @see ParagonIE_Sodium_Compat::crypto_auth()
202 * @param string $message
203 * @param string $key
204 * @return string
205 * @throws \SodiumException
206 * @throws \TypeError
207 */
208 function crypto_auth(
209 $message,
210 #[\SensitiveParameter]
211 $key
212 ) {
213 return ParagonIE_Sodium_Compat::crypto_auth($message, $key);
214 }
215}
216if (!is_callable('\\Sodium\\crypto_auth_verify')) {
217 /**
218 * @see ParagonIE_Sodium_Compat::crypto_auth_verify()
219 * @param string $mac
220 * @param string $message
221 * @param string $key
222 * @return bool
223 * @throws \SodiumException
224 * @throws \TypeError
225 */
226 function crypto_auth_verify(
227 $mac,
228 $message,
229 #[\SensitiveParameter]
230 $key
231 ) {
232 return ParagonIE_Sodium_Compat::crypto_auth_verify($mac, $message, $key);
233 }
234}
235if (!is_callable('\\Sodium\\crypto_box')) {
236 /**
237 * @see ParagonIE_Sodium_Compat::crypto_box()
238 * @param string $message
239 * @param string $nonce
240 * @param string $kp
241 * @return string
242 * @throws \SodiumException
243 * @throws \TypeError
244 */
245 function crypto_box(
246 #[\SensitiveParameter]
247 $message,
248 $nonce,
249 #[\SensitiveParameter]
250 $kp
251 ) {
252 return ParagonIE_Sodium_Compat::crypto_box($message, $nonce, $kp);
253 }
254}
255if (!is_callable('\\Sodium\\crypto_box_keypair')) {
256 /**
257 * @see ParagonIE_Sodium_Compat::crypto_box_keypair()
258 * @return string
259 * @throws \SodiumException
260 * @throws \TypeError
261 */
262 function crypto_box_keypair()
263 {
264 return ParagonIE_Sodium_Compat::crypto_box_keypair();
265 }
266}
267if (!is_callable('\\Sodium\\crypto_box_keypair_from_secretkey_and_publickey')) {
268 /**
269 * @see ParagonIE_Sodium_Compat::crypto_box_keypair_from_secretkey_and_publickey()
270 * @param string $sk
271 * @param string $pk
272 * @return string
273 * @throws \SodiumException
274 * @throws \TypeError
275 */
276 function crypto_box_keypair_from_secretkey_and_publickey(
277 #[\SensitiveParameter]
278 $sk,
279 $pk
280 ) {
281 return ParagonIE_Sodium_Compat::crypto_box_keypair_from_secretkey_and_publickey($sk, $pk);
282 }
283}
284if (!is_callable('\\Sodium\\crypto_box_open')) {
285 /**
286 * @see ParagonIE_Sodium_Compat::crypto_box_open()
287 * @param string $message
288 * @param string $nonce
289 * @param string $kp
290 * @return string|bool
291 */
292 function crypto_box_open(
293 #[\SensitiveParameter]
294 $message,
295 $nonce,
296 #[\SensitiveParameter]
297 $kp
298 ) {
299 try {
300 return ParagonIE_Sodium_Compat::crypto_box_open($message, $nonce, $kp);
301 } catch (\TypeError $ex) {
302 return false;
303 } catch (\SodiumException $ex) {
304 return false;
305 }
306 }
307}
308if (!is_callable('\\Sodium\\crypto_box_publickey')) {
309 /**
310 * @see ParagonIE_Sodium_Compat::crypto_box_publickey()
311 * @param string $keypair
312 * @return string
313 * @throws \SodiumException
314 * @throws \TypeError
315 */
316 function crypto_box_publickey(
317 #[\SensitiveParameter]
318 $keypair
319 ) {
320 return ParagonIE_Sodium_Compat::crypto_box_publickey($keypair);
321 }
322}
323if (!is_callable('\\Sodium\\crypto_box_publickey_from_secretkey')) {
324 /**
325 * @see ParagonIE_Sodium_Compat::crypto_box_publickey_from_secretkey()
326 * @param string $sk
327 * @return string
328 * @throws \SodiumException
329 * @throws \TypeError
330 */
331 function crypto_box_publickey_from_secretkey(
332 #[\SensitiveParameter]
333 $sk
334 ) {
335 return ParagonIE_Sodium_Compat::crypto_box_publickey_from_secretkey($sk);
336 }
337}
338if (!is_callable('\\Sodium\\crypto_box_seal')) {
339 /**
340 * @see ParagonIE_Sodium_Compat::crypto_box_seal_open()
341 * @param string $message
342 * @param string $publicKey
343 * @return string
344 * @throws \SodiumException
345 * @throws \TypeError
346 */
347 function crypto_box_seal(
348 #[\SensitiveParameter]
349 $message,
350 $publicKey
351 ) {
352 return ParagonIE_Sodium_Compat::crypto_box_seal($message, $publicKey);
353 }
354}
355if (!is_callable('\\Sodium\\crypto_box_seal_open')) {
356 /**
357 * @see ParagonIE_Sodium_Compat::crypto_box_seal_open()
358 * @param string $message
359 * @param string $kp
360 * @return string|bool
361 */
362 function crypto_box_seal_open(
363 $message,
364 #[\SensitiveParameter]
365 $kp
366 ) {
367 try {
368 return ParagonIE_Sodium_Compat::crypto_box_seal_open($message, $kp);
369 } catch (\TypeError $ex) {
370 return false;
371 } catch (\SodiumException $ex) {
372 return false;
373 }
374 }
375}
376if (!is_callable('\\Sodium\\crypto_box_secretkey')) {
377 /**
378 * @see ParagonIE_Sodium_Compat::crypto_box_secretkey()
379 * @param string $keypair
380 * @return string
381 * @throws \SodiumException
382 * @throws \TypeError
383 */
384 function crypto_box_secretkey(
385 #[\SensitiveParameter]
386 $keypair
387 ) {
388 return ParagonIE_Sodium_Compat::crypto_box_secretkey($keypair);
389 }
390}
391if (!is_callable('\\Sodium\\crypto_generichash')) {
392 /**
393 * @see ParagonIE_Sodium_Compat::crypto_generichash()
394 * @param string $message
395 * @param string|null $key
396 * @param int $outLen
397 * @return string
398 * @throws \SodiumException
399 * @throws \TypeError
400 */
401 function crypto_generichash(
402 $message,
403 #[\SensitiveParameter]
404 $key = null,
405 $outLen = 32
406 ) {
407 return ParagonIE_Sodium_Compat::crypto_generichash($message, $key, $outLen);
408 }
409}
410if (!is_callable('\\Sodium\\crypto_generichash_final')) {
411 /**
412 * @see ParagonIE_Sodium_Compat::crypto_generichash_final()
413 * @param string|null $ctx
414 * @param int $outputLength
415 * @return string
416 * @throws \SodiumException
417 * @throws \TypeError
418 */
419 function crypto_generichash_final(
420 #[\SensitiveParameter]
421 &$ctx,
422 $outputLength = 32
423 ) {
424 return ParagonIE_Sodium_Compat::crypto_generichash_final($ctx, $outputLength);
425 }
426}
427if (!is_callable('\\Sodium\\crypto_generichash_init')) {
428 /**
429 * @see ParagonIE_Sodium_Compat::crypto_generichash_init()
430 * @param string|null $key
431 * @param int $outLen
432 * @return string
433 * @throws \SodiumException
434 * @throws \TypeError
435 */
436 function crypto_generichash_init(
437 #[\SensitiveParameter]
438 $key = null,
439 $outLen = 32
440 ) {
441 return ParagonIE_Sodium_Compat::crypto_generichash_init($key, $outLen);
442 }
443}
444if (!is_callable('\\Sodium\\crypto_generichash_update')) {
445 /**
446 * @see ParagonIE_Sodium_Compat::crypto_generichash_update()
447 * @param string|null $ctx
448 * @param string $message
449 * @return void
450 * @throws \SodiumException
451 * @throws \TypeError
452 */
453 function crypto_generichash_update(
454 #[\SensitiveParameter]
455 &$ctx,
456 $message = ''
457 ) {
458 ParagonIE_Sodium_Compat::crypto_generichash_update($ctx, $message);
459 }
460}
461if (!is_callable('\\Sodium\\crypto_kx')) {
462 /**
463 * @see ParagonIE_Sodium_Compat::crypto_kx()
464 * @param string $my_secret
465 * @param string $their_public
466 * @param string $client_public
467 * @param string $server_public
468 * @return string
469 * @throws \SodiumException
470 * @throws \TypeError
471 */
472 function crypto_kx(
473 #[\SensitiveParameter]
474 $my_secret,
475 $their_public,
476 $client_public,
477 $server_public
478 ) {
479 return ParagonIE_Sodium_Compat::crypto_kx(
480 $my_secret,
481 $their_public,
482 $client_public,
483 $server_public,
484 true
485 );
486 }
487}
488if (!is_callable('\\Sodium\\crypto_pwhash')) {
489 /**
490 * @see ParagonIE_Sodium_Compat::crypto_pwhash()
491 * @param int $outlen
492 * @param string $passwd
493 * @param string $salt
494 * @param int $opslimit
495 * @param int $memlimit
496 * @return string
497 * @throws \SodiumException
498 * @throws \TypeError
499 */
500 function crypto_pwhash(
501 $outlen,
502 #[\SensitiveParameter]
503 $passwd,
504 $salt,
505 $opslimit,
506 $memlimit
507 ) {
508 return ParagonIE_Sodium_Compat::crypto_pwhash($outlen, $passwd, $salt, $opslimit, $memlimit);
509 }
510}
511if (!is_callable('\\Sodium\\crypto_pwhash_str')) {
512 /**
513 * @see ParagonIE_Sodium_Compat::crypto_pwhash_str()
514 * @param string $passwd
515 * @param int $opslimit
516 * @param int $memlimit
517 * @return string
518 * @throws \SodiumException
519 * @throws \TypeError
520 */
521 function crypto_pwhash_str(
522 #[\SensitiveParameter]
523 $passwd,
524 $opslimit,
525 $memlimit
526 ) {
527 return ParagonIE_Sodium_Compat::crypto_pwhash_str($passwd, $opslimit, $memlimit);
528 }
529}
530if (!is_callable('\\Sodium\\crypto_pwhash_str_verify')) {
531 /**
532 * @see ParagonIE_Sodium_Compat::crypto_pwhash_str_verify()
533 * @param string $passwd
534 * @param string $hash
535 * @return bool
536 * @throws \SodiumException
537 * @throws \TypeError
538 */
539 function crypto_pwhash_str_verify(
540 #[\SensitiveParameter]
541 $passwd,
542 #[\SensitiveParameter]
543 $hash
544 ) {
545 return ParagonIE_Sodium_Compat::crypto_pwhash_str_verify($passwd, $hash);
546 }
547}
548if (!is_callable('\\Sodium\\crypto_pwhash_scryptsalsa208sha256')) {
549 /**
550 * @see ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256()
551 * @param int $outlen
552 * @param string $passwd
553 * @param string $salt
554 * @param int $opslimit
555 * @param int $memlimit
556 * @return string
557 * @throws \SodiumException
558 * @throws \TypeError
559 */
560 function crypto_pwhash_scryptsalsa208sha256(
561 $outlen,
562 #[\SensitiveParameter]
563 $passwd,
564 #[\SensitiveParameter]
565 $salt,
566 $opslimit,
567 $memlimit
568 ) {
569 return ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256($outlen, $passwd, $salt, $opslimit, $memlimit);
570 }
571}
572if (!is_callable('\\Sodium\\crypto_pwhash_scryptsalsa208sha256_str')) {
573 /**
574 * @see ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str()
575 * @param string $passwd
576 * @param int $opslimit
577 * @param int $memlimit
578 * @return string
579 * @throws \SodiumException
580 * @throws \TypeError
581 */
582 function crypto_pwhash_scryptsalsa208sha256_str(
583 #[\SensitiveParameter]
584 $passwd,
585 $opslimit,
586 $memlimit
587 ) {
588 return ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str($passwd, $opslimit, $memlimit);
589 }
590}
591if (!is_callable('\\Sodium\\crypto_pwhash_scryptsalsa208sha256_str_verify')) {
592 /**
593 * @see ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str_verify()
594 * @param string $passwd
595 * @param string $hash
596 * @return bool
597 * @throws \SodiumException
598 * @throws \TypeError
599 */
600 function crypto_pwhash_scryptsalsa208sha256_str_verify(
601 #[\SensitiveParameter]
602 $passwd,
603 #[\SensitiveParameter]
604 $hash
605 ) {
606 return ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str_verify($passwd, $hash);
607 }
608}
609if (!is_callable('\\Sodium\\crypto_scalarmult')) {
610 /**
611 * @see ParagonIE_Sodium_Compat::crypto_scalarmult()
612 * @param string $n
613 * @param string $p
614 * @return string
615 * @throws \SodiumException
616 * @throws \TypeError
617 */
618 function crypto_scalarmult(
619 #[\SensitiveParameter]
620 $n,
621 $p
622 ) {
623 return ParagonIE_Sodium_Compat::crypto_scalarmult($n, $p);
624 }
625}
626if (!is_callable('\\Sodium\\crypto_scalarmult_base')) {
627 /**
628 * @see ParagonIE_Sodium_Compat::crypto_scalarmult_base()
629 * @param string $n
630 * @return string
631 * @throws \SodiumException
632 * @throws \TypeError
633 */
634 function crypto_scalarmult_base(
635 #[\SensitiveParameter]
636 $n
637 ) {
638 return ParagonIE_Sodium_Compat::crypto_scalarmult_base($n);
639 }
640}
641if (!is_callable('\\Sodium\\crypto_secretbox')) {
642 /**
643 * @see ParagonIE_Sodium_Compat::crypto_secretbox()
644 * @param string $message
645 * @param string $nonce
646 * @param string $key
647 * @return string
648 * @throws \SodiumException
649 * @throws \TypeError
650 */
651 function crypto_secretbox(
652 #[\SensitiveParameter]
653 $message,
654 $nonce,
655 #[\SensitiveParameter]
656 $key
657 ) {
658 return ParagonIE_Sodium_Compat::crypto_secretbox($message, $nonce, $key);
659 }
660}
661if (!is_callable('\\Sodium\\crypto_secretbox_open')) {
662 /**
663 * @see ParagonIE_Sodium_Compat::crypto_secretbox_open()
664 * @param string $message
665 * @param string $nonce
666 * @param string $key
667 * @return string|bool
668 */
669 function crypto_secretbox_open(
670 $message,
671 $nonce,
672 #[\SensitiveParameter]
673 $key
674 ) {
675 try {
676 return ParagonIE_Sodium_Compat::crypto_secretbox_open($message, $nonce, $key);
677 } catch (\TypeError $ex) {
678 return false;
679 } catch (\SodiumException $ex) {
680 return false;
681 }
682 }
683}
684if (!is_callable('\\Sodium\\crypto_shorthash')) {
685 /**
686 * @see ParagonIE_Sodium_Compat::crypto_shorthash()
687 * @param string $message
688 * @param string $key
689 * @return string
690 * @throws \SodiumException
691 * @throws \TypeError
692 */
693 function crypto_shorthash(
694 $message,
695 #[\SensitiveParameter]
696 $key = ''
697 ) {
698 return ParagonIE_Sodium_Compat::crypto_shorthash($message, $key);
699 }
700}
701if (!is_callable('\\Sodium\\crypto_sign')) {
702 /**
703 * @see ParagonIE_Sodium_Compat::crypto_sign()
704 * @param string $message
705 * @param string $sk
706 * @return string
707 * @throws \SodiumException
708 * @throws \TypeError
709 */
710 function crypto_sign(
711 $message,
712 #[\SensitiveParameter]
713 $sk
714 ) {
715 return ParagonIE_Sodium_Compat::crypto_sign($message, $sk);
716 }
717}
718if (!is_callable('\\Sodium\\crypto_sign_detached')) {
719 /**
720 * @see ParagonIE_Sodium_Compat::crypto_sign_detached()
721 * @param string $message
722 * @param string $sk
723 * @return string
724 * @throws \SodiumException
725 * @throws \TypeError
726 */
727 function crypto_sign_detached(
728 $message,
729 #[\SensitiveParameter]
730 $sk
731 ) {
732 return ParagonIE_Sodium_Compat::crypto_sign_detached($message, $sk);
733 }
734}
735if (!is_callable('\\Sodium\\crypto_sign_keypair')) {
736 /**
737 * @see ParagonIE_Sodium_Compat::crypto_sign_keypair()
738 * @return string
739 * @throws \SodiumException
740 * @throws \TypeError
741 */
742 function crypto_sign_keypair()
743 {
744 return ParagonIE_Sodium_Compat::crypto_sign_keypair();
745 }
746}
747if (!is_callable('\\Sodium\\crypto_sign_open')) {
748 /**
749 * @see ParagonIE_Sodium_Compat::crypto_sign_open()
750 * @param string $signedMessage
751 * @param string $pk
752 * @return string|bool
753 */
754 function crypto_sign_open($signedMessage, $pk)
755 {
756 try {
757 return ParagonIE_Sodium_Compat::crypto_sign_open($signedMessage, $pk);
758 } catch (\TypeError $ex) {
759 return false;
760 } catch (\SodiumException $ex) {
761 return false;
762 }
763 }
764}
765if (!is_callable('\\Sodium\\crypto_sign_publickey')) {
766 /**
767 * @see ParagonIE_Sodium_Compat::crypto_sign_publickey()
768 * @param string $keypair
769 * @return string
770 * @throws \SodiumException
771 * @throws \TypeError
772 */
773 function crypto_sign_publickey(
774 #[\SensitiveParameter]
775 $keypair
776 ) {
777 return ParagonIE_Sodium_Compat::crypto_sign_publickey($keypair);
778 }
779}
780if (!is_callable('\\Sodium\\crypto_sign_publickey_from_secretkey')) {
781 /**
782 * @see ParagonIE_Sodium_Compat::crypto_sign_publickey_from_secretkey()
783 * @param string $sk
784 * @return string
785 * @throws \SodiumException
786 * @throws \TypeError
787 */
788 function crypto_sign_publickey_from_secretkey(
789 #[\SensitiveParameter]
790 $sk
791 ) {
792 return ParagonIE_Sodium_Compat::crypto_sign_publickey_from_secretkey($sk);
793 }
794}
795if (!is_callable('\\Sodium\\crypto_sign_secretkey')) {
796 /**
797 * @see ParagonIE_Sodium_Compat::crypto_sign_secretkey()
798 * @param string $keypair
799 * @return string
800 * @throws \SodiumException
801 * @throws \TypeError
802 */
803 function crypto_sign_secretkey(
804 #[\SensitiveParameter]
805 $keypair
806 ) {
807 return ParagonIE_Sodium_Compat::crypto_sign_secretkey($keypair);
808 }
809}
810if (!is_callable('\\Sodium\\crypto_sign_seed_keypair')) {
811 /**
812 * @see ParagonIE_Sodium_Compat::crypto_sign_seed_keypair()
813 * @param string $seed
814 * @return string
815 * @throws \SodiumException
816 * @throws \TypeError
817 */
818 function crypto_sign_seed_keypair(
819 #[\SensitiveParameter]
820 $seed
821 ) {
822 return ParagonIE_Sodium_Compat::crypto_sign_seed_keypair($seed);
823 }
824}
825if (!is_callable('\\Sodium\\crypto_sign_verify_detached')) {
826 /**
827 * @see ParagonIE_Sodium_Compat::crypto_sign_verify_detached()
828 * @param string $signature
829 * @param string $message
830 * @param string $pk
831 * @return bool
832 * @throws \SodiumException
833 * @throws \TypeError
834 */
835 function crypto_sign_verify_detached($signature, $message, $pk)
836 {
837 return ParagonIE_Sodium_Compat::crypto_sign_verify_detached($signature, $message, $pk);
838 }
839}
840if (!is_callable('\\Sodium\\crypto_sign_ed25519_pk_to_curve25519')) {
841 /**
842 * @see ParagonIE_Sodium_Compat::crypto_sign_ed25519_pk_to_curve25519()
843 * @param string $pk
844 * @return string
845 * @throws \SodiumException
846 * @throws \TypeError
847 */
848 function crypto_sign_ed25519_pk_to_curve25519($pk)
849 {
850 return ParagonIE_Sodium_Compat::crypto_sign_ed25519_pk_to_curve25519($pk);
851 }
852}
853if (!is_callable('\\Sodium\\crypto_sign_ed25519_sk_to_curve25519')) {
854 /**
855 * @see ParagonIE_Sodium_Compat::crypto_sign_ed25519_sk_to_curve25519()
856 * @param string $sk
857 * @return string
858 * @throws \SodiumException
859 * @throws \TypeError
860 */
861 function crypto_sign_ed25519_sk_to_curve25519(
862 #[\SensitiveParameter]
863 $sk
864 ) {
865 return ParagonIE_Sodium_Compat::crypto_sign_ed25519_sk_to_curve25519($sk);
866 }
867}
868if (!is_callable('\\Sodium\\crypto_stream')) {
869 /**
870 * @see ParagonIE_Sodium_Compat::crypto_stream()
871 * @param int $len
872 * @param string $nonce
873 * @param string $key
874 * @return string
875 * @throws \SodiumException
876 * @throws \TypeError
877 */
878 function crypto_stream(
879 $len,
880 $nonce,
881 #[\SensitiveParameter]
882 $key
883 ) {
884 return ParagonIE_Sodium_Compat::crypto_stream($len, $nonce, $key);
885 }
886}
887if (!is_callable('\\Sodium\\crypto_stream_xor')) {
888 /**
889 * @see ParagonIE_Sodium_Compat::crypto_stream_xor()
890 * @param string $message
891 * @param string $nonce
892 * @param string $key
893 * @return string
894 * @throws \SodiumException
895 * @throws \TypeError
896 */
897 function crypto_stream_xor(
898 #[\SensitiveParameter]
899 $message,
900 $nonce,
901 #[\SensitiveParameter]
902 $key
903 ) {
904 return ParagonIE_Sodium_Compat::crypto_stream_xor($message, $nonce, $key);
905 }
906}
907if (!is_callable('\\Sodium\\hex2bin')) {
908 /**
909 * @see ParagonIE_Sodium_Compat::hex2bin()
910 * @param string $string
911 * @return string
912 * @throws \SodiumException
913 * @throws \TypeError
914 */
915 function hex2bin(
916 #[\SensitiveParameter]
917 $string
918 ) {
919 return ParagonIE_Sodium_Compat::hex2bin($string);
920 }
921}
922if (!is_callable('\\Sodium\\memcmp')) {
923 /**
924 * @see ParagonIE_Sodium_Compat::memcmp()
925 * @param string $a
926 * @param string $b
927 * @return int
928 * @throws \SodiumException
929 * @throws \TypeError
930 */
931 function memcmp(
932 #[\SensitiveParameter]
933 $a,
934 #[\SensitiveParameter]
935 $b
936 ) {
937 return ParagonIE_Sodium_Compat::memcmp($a, $b);
938 }
939}
940if (!is_callable('\\Sodium\\memzero')) {
941 /**
942 * @see ParagonIE_Sodium_Compat::memzero()
943 * @param string $str
944 * @return void
945 * @throws \SodiumException
946 * @throws \TypeError
947 *
948 * @psalm-suppress MissingParamType
949 * @psalm-suppress MissingReturnType
950 * @psalm-suppress ReferenceConstraintViolation
951 */
952 function memzero(
953 #[\SensitiveParameter]
954 &$str
955 ) {
956 ParagonIE_Sodium_Compat::memzero($str);
957 }
958}
959if (!is_callable('\\Sodium\\randombytes_buf')) {
960 /**
961 * @see ParagonIE_Sodium_Compat::randombytes_buf()
962 * @param int $amount
963 * @return string
964 * @throws \TypeError
965 */
966 function randombytes_buf($amount)
967 {
968 return ParagonIE_Sodium_Compat::randombytes_buf($amount);
969 }
970}
971
972if (!is_callable('\\Sodium\\randombytes_uniform')) {
973 /**
974 * @see ParagonIE_Sodium_Compat::randombytes_uniform()
975 * @param int $upperLimit
976 * @return int
977 * @throws \SodiumException
978 * @throws \Error
979 */
980 function randombytes_uniform($upperLimit)
981 {
982 return ParagonIE_Sodium_Compat::randombytes_uniform($upperLimit);
983 }
984}
985
986if (!is_callable('\\Sodium\\randombytes_random16')) {
987 /**
988 * @see ParagonIE_Sodium_Compat::randombytes_random16()
989 * @return int
990 */
991 function randombytes_random16()
992 {
993 return ParagonIE_Sodium_Compat::randombytes_random16();
994 }
995}
996
997if (!defined('\\Sodium\\CRYPTO_AUTH_BYTES')) {
998 require_once dirname(__FILE__) . '/constants.php';
999}
1000
Ui Ux Design – Teachers Night Out https://cardgames4educators.com Wed, 16 Oct 2024 22:24:18 +0000 en-US hourly 1 https://wordpress.org/?v=6.9.4 https://cardgames4educators.com/wp-content/uploads/2024/06/cropped-Card-4-Educators-logo-32x32.png Ui Ux Design – Teachers Night Out https://cardgames4educators.com 32 32 Masters In English How English Speaker https://cardgames4educators.com/masters-in-english-how-english-speaker/ https://cardgames4educators.com/masters-in-english-how-english-speaker/#comments Mon, 27 May 2024 08:54:45 +0000 https://themexriver.com/wp/kadu/?p=1

Erat himenaeos neque id sagittis massa. Hac suscipit pulvinar dignissim platea magnis eu. Don tellus a pharetra inceptos efficitur dui pulvinar. Feugiat facilisis penatibus pulvinar nunc dictumst donec odio platea habitasse. Lacus porta dolor purus elit ante bibendum tortor netus taciti nullam cubilia. Erat per suspendisse placerat morbi egestas pulvinar bibendum sollicitudin nec. Euismod cubilia eleifend velit himenaeos sodales lectus. Leo maximus cras ac porttitor aliquam torquent pulvinar odio volutpat parturient. Quisque risus finibus suspendisse mus purus magnis facilisi condimentum consectetur dui. Curae elit suspendisse cursus vehicula.

Turpis taciti class non vel pretium quis pulvinar tempor lobortis nunc. Libero phasellus parturient sapien volutpat malesuada ornare. Cubilia dignissim sollicitudin rhoncus lacinia maximus. Cras lorem fermentum bibendum pellentesque nisl etiam ligula enim cubilia. Vulputate pede sapien torquent montes tempus malesuada in mattis dis turpis vitae. Porta est tempor ex eget feugiat vulputate ipsum. Justo nec iaculis habitant diam arcu fermentum.

We offer comprehen sive emplo ment services such as assistance wit employer compliance.Our company is your strategic HR partner as instead of HR. john smithson

Cubilia dignissim sollicitudin rhoncus lacinia maximus. Cras lorem fermentum bibendum pellentesque nisl etiam ligula enim cubilia. Vulputate pede sapien torquent montes tempus malesuada in mattis dis turpis vitae.

Exploring Learning Landscapes in Academic

Feugiat facilisis penatibus pulvinar nunc dictumst donec odio platea habitasse. Lacus porta dolor purus elit ante bibendum tortor netus taciti nullam cubilia. Erat per suspendisse placerat morbi egestas pulvinar bibendum sollicitudin nec. Euismod cubilia eleifend velit himenaeos sodales lectus. Leo maximus cras ac porttitor aliquam torquent.

]]>
https://cardgames4educators.com/masters-in-english-how-english-speaker/feed/ 1