Browse Source

Coding standard

debian/latest
Matthieu Marcillaud 11 months ago
parent
commit
9d912fcfd5
  1. 10
      ecrire/action/inscrire_auteur.php
  2. 2
      ecrire/inc/filtres.php
  3. 4
      ecrire/inc/securiser_action.php
  4. 2
      ecrire/inc/utils.php
  5. 2
      ecrire/maj/2021.php
  6. 6
      ecrire/public/criteres.php
  7. 33
      ecrire/src/Chiffrer/Chiffrement.php
  8. 2
      ecrire/src/Chiffrer/SpipCles.php

10
ecrire/action/inscrire_auteur.php

@ -348,7 +348,7 @@ function confirmer_statut_inscription($auteur) {
/**
* Attribuer un jeton temporaire pour un auteur en assurant l'unicite du jeton.
*
*
* Chaque appel crée un nouveau jeton pour l’auteur
* et invalide donc le précédent
*
@ -361,8 +361,8 @@ function auteur_attribuer_jeton($id_auteur): string {
include_spip('inc/chiffrer');
// s'assurer de l'unicite du jeton pour le couple (email,cookie)
do {
// Un morceau du jeton est lisible en bdd pour éviter de devoir déchiffrer
// tous les jetons connus pour vérifier le jeton d’un auteur.
// Un morceau du jeton est lisible en bdd pour éviter de devoir déchiffrer
// tous les jetons connus pour vérifier le jeton d’un auteur.
$public = substr(creer_uniqid(), 0, 7) . '.';
$jeton = $public . creer_uniqid();
$jeton_chiffre_prefixe = $public . Chiffrement::chiffrer($jeton, SpipCles::secret_du_site());
@ -374,10 +374,10 @@ function auteur_attribuer_jeton($id_auteur): string {
/**
* Lire un jeton temporaire d’un auteur (peut le créer au besoin)
*
*
* Cette fonction peut être pratique si plusieurs notifications proches
* dans la durée sont envoyées au même auteur.
*
*
* @param int $id_auteur
* @param bool $autoInit Attribue un jeton à l’auteur s’il n’en a pas déjà.
* @return string|null

2
ecrire/inc/filtres.php

@ -4437,7 +4437,7 @@ function prepare_icone_base($type, $lien, $texte, $fond, $fonction = '', $class
$class_bouton .= " s$size";
// Icône
$icone = http_img_pack($fond, $alt, "width='$size' height='$size'",'', ['alternative' => "objet-generique-$size.png"]);
$icone = http_img_pack($fond, $alt, "width='$size' height='$size'", '', ['alternative' => "objet-generique-$size.png"]);
$icone = '<span class="icone-image' . ($fonction ? " icone-fonction icone-fonction-$fonction" : '') . "\">$icone</span>";
// Markup final

4
ecrire/inc/securiser_action.php

@ -16,7 +16,7 @@
* @package SPIP\Core\Actions
**/
use \Spip\Chiffrer\SpipCles;
use Spip\Chiffrer\SpipCles;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
@ -296,7 +296,7 @@ function verifier_action_auteur($action, $hash) {
/**
* Renvoyer le secret du site (le generer si il n'existe pas encore)
*
*
* @uses SpipCles::secret_du_site()
* @return string
*/

2
ecrire/inc/utils.php

@ -1826,7 +1826,7 @@ function charger_fonction_url(string $quoi, string $type = '') {
return $f;
}
// sinon on se rabat sur les urls page si ce n'est pas un type demande explicitement
if (!$type and $url_type !== 'page'){
if (!$type and $url_type !== 'page') {
return charger_fonction_url($quoi, 'page');
}
return '';

2
ecrire/maj/2021.php

@ -29,5 +29,5 @@ $GLOBALS['maj'][2021_02_18_00] = [
$GLOBALS['maj'][2022_02_23_02] = [
['sql_alter', "TABLE spip_auteurs ADD backup_cles mediumtext DEFAULT '' NOT NULL" ],
['sql_delete', "spip_meta","nom='secret_du_site'" ],
['sql_delete', 'spip_meta', "nom='secret_du_site'" ],
];

6
ecrire/public/criteres.php

@ -2618,7 +2618,7 @@ function calculer_critere_infixe_date($idb, &$boucles, $col) {
// Le type de critère à prendre en compte
$col = $regs[1];
// Si on trouve un nom de champ date précis, on l'utilise, pas besoin de déclaration dans l'API objet
if (isset($regs[3]) and $suite = $regs[3]) {
# Recherche de l'existence du champ date_xxxx,
@ -2628,7 +2628,7 @@ function calculer_critere_infixe_date($idb, &$boucles, $col) {
} else {
$date_orig = substr($suite, 1);
}
$pred = $date_orig;
} else { // Sinon il FAUT avoir déclaré le champ date officiel dans l'API objet
// Si aucune déclaration trouvée, on quitte
@ -2637,7 +2637,7 @@ function calculer_critere_infixe_date($idb, &$boucles, $col) {
}
// Par défaut, on prend le champ date déclaré dans l'API
$pred = $date_orig = $GLOBALS['table_date'][$table['id_table']] ?? $table['date'];
// Si c'est pour du relatif
if (isset($regs[2]) and $rel = $regs[2]) {
$pred = 'date';

33
ecrire/src/Chiffrer/Chiffrement.php

@ -12,14 +12,13 @@
namespace Spip\Chiffrer;
/**
* Chiffrement / déchiffrement symétrique.
*
/**
* Chiffrement / déchiffrement symétrique.
*
* @link https://fr.wikipedia.org/wiki/Cryptographie_sym%C3%A9trique
* @link https://www.php.net/manual/fr/book.sodium.php
*/
class Chiffrement {
/** Chiffre un message en utilisant une clé ou un mot de passe */
public static function chiffrer(
string $message,
@ -40,7 +39,7 @@ class Chiffrement {
return $encoded;
}
/** Déchiffre un message en utilisant une clé ou un mot de passe */
/** Déchiffre un message en utilisant une clé ou un mot de passe */
public static function dechiffrer(
string $encoded,
#[\SensitiveParameter]
@ -48,9 +47,9 @@ class Chiffrement {
): ?string {
$decoded = base64_decode($encoded);
$salt = substr($decoded, 0, \SODIUM_CRYPTO_PWHASH_SALTBYTES);
$nonce = substr($decoded, \SODIUM_CRYPTO_PWHASH_SALTBYTES, \SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
$encrypted = substr($decoded, \SODIUM_CRYPTO_PWHASH_SALTBYTES + \SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
$key = self::deriveKeyFromPassword($key, $salt);
$nonce = substr($decoded, \SODIUM_CRYPTO_PWHASH_SALTBYTES, \SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
$encrypted = substr($decoded, \SODIUM_CRYPTO_PWHASH_SALTBYTES + \SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
$key = self::deriveKeyFromPassword($key, $salt);
$padded_message = sodium_crypto_secretbox_open($encrypted, $nonce, $key);
sodium_memzero($key);
sodium_memzero($nonce);
@ -83,15 +82,15 @@ class Chiffrement {
if (strlen($password) === \SODIUM_CRYPTO_SECRETBOX_KEYBYTES) {
return $password;
}
$key = sodium_crypto_pwhash(
\SODIUM_CRYPTO_SECRETBOX_KEYBYTES,
$password,
$salt,
\SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE,
\SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE
);
sodium_memzero($password);
$key = sodium_crypto_pwhash(
\SODIUM_CRYPTO_SECRETBOX_KEYBYTES,
$password,
$salt,
\SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE,
\SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE
);
sodium_memzero($password);
return $key;
return $key;
}
}

2
ecrire/src/Chiffrer/SpipCles.php

@ -58,7 +58,7 @@ final class SpipCles {
return $key ^ $meta;
}
/** Renvoyer le secret des authentifications */
/** Renvoyer le secret des authentifications */
public function getSecretAuth(bool $autoInit = false): ?string {
return $this->getKey('secret_des_auth', $autoInit);
}

Loading…
Cancel
Save