LSattr_ldap :: password : Add SHA256/SHA512 & SSHA256/SSHA512 support

# Veuillez saisir le message de validation pour vos modifications. Les lignes
# commençant par '#' seront ignorées, et un message vide abandonne la validation.
#
# Date :       Fri Feb 1 10:26:05 2019 +0100
#
# Sur la branche master
# Votre branche est en avance sur 'origin/master' de 1 commit.
#   (utilisez "git push" pour publier vos commits locaux)
#
# Modifications qui seront validées :
#	modifié :         doc/conf/LSattribute/LSattr_ldap/LSattr_ldap_password.docbook
#	modifié :         public_html/includes/class/class.LSattr_ldap_password.php
#
# Modifications qui ne seront pas validées :
#	modifié :         public_html/conf/LSobjects/config.LSobjects.LSpeople.php
#
# Fichiers non suivis:
#	public_html/includes/class/status
#	public_html/includes/class/status.1
#	public_html/includes/class/status.2
#
# ------------------------ >8 ------------------------
# Ne touchez pas à la ligne ci-dessus
# Tout ce qui suit sera éliminé.
diff --git a/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap_password.docbook b/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap_password.docbook
index b5a3ed1..93244ab 100644
--- a/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap_password.docbook
+++ b/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap_password.docbook
@@ -29,7 +29,11 @@
       <listitem><simpara><literal>ext_des</literal></simpara></listitem>
       <listitem><simpara><literal>blowfish</literal></simpara></listitem>
       <listitem><simpara><literal>sha</literal></simpara></listitem>
+      <listitem><simpara><literal>sha256</literal></simpara></listitem>
+      <listitem><simpara><literal>sha512</literal></simpara></listitem>
       <listitem><simpara><literal>ssha</literal></simpara></listitem>
+      <listitem><simpara><literal>ssha256</literal></simpara></listitem>
+      <listitem><simpara><literal>ssha512</literal></simpara></listitem>
       <listitem><simpara><literal>smd5</literal></simpara></listitem>
       <listitem><simpara><literal>md5</literal></simpara></listitem>
       <listitem><simpara><literal>clear</literal></simpara></listitem>
diff --git a/public_html/includes/class/class.LSattr_ldap_password.php b/public_html/includes/class/class.LSattr_ldap_password.php
index c8b8470..ae14076 100644
--- a/public_html/includes/class/class.LSattr_ldap_password.php
+++ b/public_html/includes/class/class.LSattr_ldap_password.php
@@ -155,14 +155,43 @@ class LSattr_ldap_password extends LSattr_ldap {
           LSerror :: addErrorCode('LSattr_ldap_password_01','sha');
         }
         break;
+      case 'sha256':
+      case 'sha512':
+        switch($this -> config['ldap_options']['encode']) {
+          case 'sha256':
+            $mhash_type = MHASH_SHA256;
+            break;
+          case 'sha512':
+            $mhash_type = MHASH_SHA512;
+            break;
+        }
+        if( function_exists( 'mhash' ) ) {
+          return '{'.strtoupper($this -> config['ldap_options']['encode']).'}' . base64_encode( mhash( $mhash_type, $clearPassword ) );
+        } else {
+          LSerror :: addErrorCode('LSattr_ldap_password_01', $this -> config['ldap_options']['encode']);
+        }
+        break;
       case 'ssha':
+      case 'ssha256':
+      case 'ssha512':
+        switch($this -> config['ldap_options']['encode']) {
+          case 'ssha':
+            $mhash_type = MHASH_SHA1;
+            break;
+          case 'ssha256':
+            $mhash_type = MHASH_SHA256;
+            break;
+          case 'ssha512':
+            $mhash_type = MHASH_SHA512;
+            break;
+        }
         if( function_exists( 'mhash' ) && function_exists( 'mhash_keygen_s2k' ) ) {
           mt_srand( (double) microtime() * 1000000 );
-          $salt = mhash_keygen_s2k( MHASH_SHA1, $clearPassword, substr( pack( "h*", md5( mt_rand() ) ), 0, 8 ), 4 );
-          return "{SSHA}".base64_encode( mhash( MHASH_SHA1, $clearPassword.$salt ).$salt );
+          $salt = mhash_keygen_s2k( $mhash_type, $clearPassword, substr( pack( "h*", md5( mt_rand() ) ), 0, 8 ), 4 );
+          return "{".strtoupper($this -> config['ldap_options']['encode'])."}".base64_encode( mhash( $mhash_type, $clearPassword.$salt ).$salt );
         }
         else {
-          LSerror :: addErrorCode('LSattr_ldap_password_01','ssha');
+          LSerror :: addErrorCode('LSattr_ldap_password_01', $this -> config['ldap_options']['encode']);
         }
         break;
       case 'smd5':
