|
|
|
@ -13,6 +13,9 @@ if (!defined('_ECRIRE_INC_VERSION')) {
|
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Créé la clé de chiffrement |
|
|
|
|
*/ |
|
|
|
|
function initialiser_cle(){ |
|
|
|
|
$fichier_cles = _DIR_ETC."cles.php"; |
|
|
|
|
if ( ! file_exists($fichier_cles) ){ |
|
|
|
@ -21,15 +24,22 @@ function initialiser_cle(){
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Restaure la clé de chiffrement |
|
|
|
|
* |
|
|
|
|
* @param int $id_auteur |
|
|
|
|
* Identifiant de l'auteur |
|
|
|
|
* @param string $pass |
|
|
|
|
* Mot de passe de l'auteur en clair |
|
|
|
|
* @return void |
|
|
|
|
*/ |
|
|
|
|
function restaurer_cle($id_auteur, $pass){ |
|
|
|
|
$fichier_cles = _DIR_ETC."cles.php"; |
|
|
|
|
if ( ! file_exists($fichier_cles) ){ |
|
|
|
|
if ( $cle_secrete_bkp = lire_config("chiffrer_cle_sauvegarde_id_auteur_$id_auteur") ){ |
|
|
|
|
$cle_secrete_potentielle = base64_decode(dechiffrer($cle_secrete_bkp, $pass)); |
|
|
|
|
|
|
|
|
|
$pass_poivre = hash_hmac("sha256", $pass, $cle_secrete_potentielle); |
|
|
|
|
$pass_db = sql_getfetsel('pass', 'spip_auteurs', 'id_auteur='.sql_quote($id_auteur)); |
|
|
|
|
|
|
|
|
|
$pass_db = sql_getfetsel('pass', 'spip_auteurs', 'id_auteur='.sql_quote($id_auteur)); |
|
|
|
|
if ( password_verify($pass_poivre, $pass_db) ){ |
|
|
|
|
spip_log("restauration de la cle secrete par id_auteur $id_auteur", _LOG_INFO_IMPORTANTE); |
|
|
|
|
$GLOBALS['cle_secrete'] = $cle_secrete_potentielle; |
|
|
|
@ -39,6 +49,18 @@ function restaurer_cle($id_auteur, $pass){
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Chiffrer |
|
|
|
|
* |
|
|
|
|
* @param string $clair |
|
|
|
|
* Texte à chiffrer |
|
|
|
|
* @param string $cle |
|
|
|
|
* Clé à utiliser |
|
|
|
|
* @param string $cipher |
|
|
|
|
* Cipersuite à utiliser |
|
|
|
|
* @return string |
|
|
|
|
* Texte chiffré |
|
|
|
|
*/ |
|
|
|
|
function chiffrer($clair, $cle=false, $cipher="AES-128-CBC"){ |
|
|
|
|
$cle = ( $cle ) ? $cle : $GLOBALS['cle_secrete']; |
|
|
|
|
$ivlen = openssl_cipher_iv_length($cipher); |
|
|
|
@ -50,6 +72,18 @@ function chiffrer($clair, $cle=false, $cipher="AES-128-CBC"){
|
|
|
|
|
return $chiffre; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Dechiffrer |
|
|
|
|
* |
|
|
|
|
* @param string $chiffre |
|
|
|
|
* Texte à déchiffrer |
|
|
|
|
* @param string $cle |
|
|
|
|
* Clé à utiliser |
|
|
|
|
* @param string $cipher |
|
|
|
|
* Cipersuite à utiliser |
|
|
|
|
* @return string |
|
|
|
|
* Texte déchiffré |
|
|
|
|
*/ |
|
|
|
|
function dechiffrer($chiffre, $cle=false, $cipher="AES-128-CBC"){ |
|
|
|
|
$cle = ( $cle ) ? $cle : $GLOBALS['cle_secrete']; |
|
|
|
|
$c = base64_decode($chiffre); |
|
|
|
|