1<?php
2
3/**
4 * Support for libsodium PECL package, and the upcoming PHP 7.2 built in extension
5 * The 2 versions of libsodium differ in the following ways:
6 *
7 * PECL uses a Sodium namespace, the PHP version does not
8 * PECL exposes the extension as "libsodium", the PHP verions is "sodium"
9 * PHP prefixes functions and constants with "sodium_"
10 *
11 * @package framework
12 * @subpackage crypt
13 */
14
15class Hm_Sodium_PECL {
16
17    public static function crypto_auth_verify($hmac, $crypt_string, $crypt_key) {
18        return \Sodium\crypto_auth_verify($hmac, $crypt_string, $crypt_key);
19    }
20
21    public static function crypto_secretbox_open($crypt_string, $salt, $crypt_key) {
22        return \Sodium\crypto_secretbox_open($crypt_string, $salt, $crypt_key);
23    }
24
25    public static function crypto_secretbox($string, $salt, $key) {
26        return \Sodium\crypto_secretbox($string, $salt, $key);
27    }
28
29    public static function crypto_auth($ciphertext, $key) {
30        return \Sodium\crypto_auth($ciphertext, $key);
31    }
32
33    public static function crypto_pwhash_str($password) {
34        return \Sodium\crypto_pwhash_str($password, \Sodium\CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE,
35            \Sodium\CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE);
36    }
37
38    public static function crypto_pwhash_str_verify($hash, $password) {
39        return \Sodium\crypto_pwhash_str_verify($hash, $password);
40    }
41
42    public static function randombytes_buf() {
43        return \Sodium\randombytes_buf(\Sodium\CRYPTO_SECRETBOX_NONCEBYTES);
44    }
45}
46
47/**
48 * @package framework
49 * @subpackage crypt
50 */
51class Hm_Sodium_PHP {
52    public static function crypto_auth_verify($hmac, $crypt_string, $crypt_key) {
53        return sodium_crypto_auth_verify($hmac, $crypt_string, $crypt_key);
54    }
55
56    public static function crypto_secretbox_open($crypt_string, $salt, $crypt_key) {
57        return sodium_crypto_secretbox_open($crypt_string, $salt, $crypt_key);
58    }
59
60    public static function crypto_secretbox($string, $salt, $key) {
61        return sodium_crypto_secretbox($string, $salt, $key);
62    }
63
64    public static function crypto_auth($ciphertext, $key) {
65        return sodium_crypto_auth($ciphertext, $key);
66    }
67
68    public static function crypto_pwhash_str($password) {
69        return sodium_crypto_pwhash_str($password, SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE,
70            SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE);
71    }
72
73    public static function crypto_pwhash_str_verify($hash, $password) {
74        return sodium_crypto_pwhash_str_verify($hash, $password);
75    }
76
77    public static function randombytes_buf() {
78        return random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
79    }
80}
81