1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
<?php
namespace SIW\Newsletter;
/**
* Hash voor bevestiging aanmelding nieuwsbrief
*
* @copyright 2019 SIW Internationale Vrijwilligersprojecten
* @since 3.0.0
*/
class Hash {
/**
* Optienaam voor salt
*
* @var string
*/
const SALT_OPTION_NAME = 'siw_newsletter_salt';
/**
* Hash-algoritme
*
* @var string
*/
const HASH_ALGORITHM = 'sha1';
/**
* Lengte van password voor salt
*
* @var int
*/
const PASSWORD_LENGTH = 64;
/**
* Genereert hash om later de juistheid van de data te kunnen controleren
*
* @param string $data
*
* @return string
*/
public static function generate_hash( string $data ) {
return hash_hmac(
self::HASH_ALGORITHM,
$data,
self::get_salt()
);
}
/**
* Controleert of data geldig is o.b.v. hash
*
* @param array $data
* @param string $hash
*
* @return bool
*/
public static function data_is_valid( string $data, string $hash ) {
return hash_equals(
self::generate_hash( $data ),
$hash
);
}
/**
* Geeft salt terug
*
* @return string
*/
protected static function get_salt() {
$salt = get_option( self::SALT_OPTION_NAME );
if ( false === $salt ) {
$salt = wp_generate_password( self::PASSWORD_LENGTH, true, true );
update_option( self::SALT_OPTION_NAME, $salt );
}
return $salt;
}
}