@ -21,6 +21,24 @@ function initialiser_cle(){
}
}
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));
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;
ecrire_fichier($fichier_cles, "<?php \n\n\ $GLOBALS [ 'cle_secrete' ] = base64_decode ( '".base64_encode($GLOBALS[' cle_secrete '])."' ); \n ");
}
}
}
}
function chiffrer($clair, $cle=false, $cipher="AES-128-CBC"){
$cle = ( $cle ) ? $cle : $GLOBALS['cle_secrete'];
$ivlen = openssl_cipher_iv_length($cipher);