Skip to content
Snippets Groups Projects
Commit 8279d1ff authored by David Surville's avatar David Surville
Browse files

[Tâche] Gestion temporaire du campusPassword pour pouvoir mettre à jour l'AD

parent 3543f1b2
No related branches found
No related tags found
No related merge requests found
......@@ -71,6 +71,7 @@ class People extends Entity
// Attributes classes
'objectClass',
// Attributes
'campusPassword',
'cn',
'dateDeNaissance',
'dateFinInscription',
......@@ -2120,4 +2121,40 @@ class People extends Entity
return $this;
}
/**
* Attribut Ldap "campusPassword"
*
* @param string $value
* @param bool $append
* @return $this
* @throws Exception
* @throws LdapException
*/
public function setCampusPassword(string $value)
{
// On calcule la taille de la clé pour l'algo Blowfish
$cle_taille = mcrypt_module_get_algo_key_size(MCRYPT_BLOWFISH);
// On calcule la taille du vecteur d'initialisation pour l'algo Blowfish et pour le mode CBC
$iv_taille = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_CBC);
// On fabrique le vecteur d'initialisation, la constante MCRYPT_RAND permet d'initialiser un vecteur aléatoire
$iv = mcrypt_create_iv($iv_taille, MCRYPT_RAND);
// On calcule la taille de block pour l'algo Blowfish et pour le mode CBC
$block_taille = mcrypt_get_block_size(MCRYPT_BLOWFISH, MCRYPT_MODE_CBC);
//Cle
$cleSHA = hash('sha512', "Dans les miroirs chinois, dans le bleu des photos, dans le regard d'un chat, dans les ailes d'un oiseau, dans la force d'un arbre, dans la couleur de l'eau, je te survivrai");
// On retaille la clé pour qu'elle soit compatible
$key = substr($cleSHA, 0, $cle_taille);
# On vérifie la taille du mot de passe qui doit être un multiple de la taille de block
$pad_len = $block_taille - (strlen($value) % $block_taille);
$padding = str_repeat(chr($pad_len), $pad_len);
// On chiffre le mot de passe avec un éventuel complément (padding) pour arriver à la taille compatible
$value = mcrypt_encrypt(MCRYPT_BLOWFISH, $key, $value . $padding, MCRYPT_MODE_CBC, $iv);
// On encode en base64 le mot de passe chiffré avec son IV
$value = base64_encode($iv . $value);
$this->appendOrNot('campusPassword', $value, false);
return $this;
}
}
\ No newline at end of file
......@@ -719,6 +719,7 @@ class People extends BasePeople
parent::setNtPassword($value);
parent::setSambaNTPassword($value);
parent::setUcbnSquidHash($value);
parent::setCampusPassword($value);
return $this;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment