From b456f6c921d5be11149a9cf3d78d0374c3ec7f5a Mon Sep 17 00:00:00 2001 From: Nullcaller Date: Sat, 10 Feb 2018 04:21:12 +0300 Subject: [PATCH 1/2] Add options for Courier authlib authentication to user_sql.php MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Availible options: courier_md5 – base64-encoded md5 courier_md5raw – hexadecimal md5 courier_sha1 – base64-encoded sha1 courier_sha256 – base64-encoded sha256 --- lib/user_sql.php | 47 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 44 insertions(+), 3 deletions(-) diff --git a/lib/user_sql.php b/lib/user_sql.php index eba5d38..1dc69b5 100644 --- a/lib/user_sql.php +++ b/lib/user_sql.php @@ -353,6 +353,22 @@ class OC_USER_SQL extends BackendUtility implements \OCP\IUserBackend, elseif($this -> settings['set_crypt_type'] === 'password_hash') { $enc_password = $this->pw_hash($password); + } + elseif($this -> settings['set_crypt_type'] === 'courier_md5') + { + $enc_password = '{MD5}'.OC_USER_SQL::hex_to_base64(md5($password)); + } + elseif($this -> settings['set_crypt_type'] === 'courier_md5raw') + { + $enc_password = '{MD5RAW}'.md5($password); + } + elseif($this -> settings['set_crypt_type'] === 'courier_sha1') + { + $enc_password = '{SHA}'.OC_USER_SQL::hex_to_base64(sha1($password)); + } + elseif($this -> settings['set_crypt_type'] === 'courier_sha256') + { + $enc_password = '{SHA256}'.OC_USER_SQL::hex_to_base64(hash('sha256', $password, false)); } else { @@ -422,10 +438,26 @@ class OC_USER_SQL extends BackendUtility implements \OCP\IUserBackend, return false; $ret = sha1($salt['salt'].sha1($password)) === $db_pass; } - + elseif($this -> settings['set_crypt_type'] == 'sha1') { $ret = $this->hash_equals(sha1($password) , $db_pass); + } + elseif($this -> settings['set_crypt_type'] === 'courier_md5') + { + $ret = '{MD5}'.OC_USER_SQL::hex_to_base64(md5($password)) === $db_pass; + } + elseif($this -> settings['set_crypt_type'] === 'courier_md5raw') + { + $ret = '{MD5RAW}'.md5($password) === $db_pass; + } + elseif($this -> settings['set_crypt_type'] === 'courier_sha1') + { + $ret = '{SHA}'.OC_USER_SQL::hex_to_base64(sha1($password)) === $db_pass; + } + elseif($this -> settings['set_crypt_type'] === 'courier_sha256') + { + $ret = '{SHA256}'.OC_USER_SQL::hex_to_base64(hash('sha256', $password, false)) === $db_pass; } else { @@ -974,7 +1006,16 @@ class OC_USER_SQL extends BackendUtility implements \OCP\IUserBackend, } return $result === 0; -} + } + + private static function hex_to_base64($hex) + { + $hex_chr = ''; + foreach(str_split($hex, 2) as $hexpair) + { + $hex_chr .= chr(hexdec($hexpair)); + } + return base64_encode($hex_chr); + } } - From f194c35503b95e9601cd8e147c2298ee8795c862 Mon Sep 17 00:00:00 2001 From: Nullcaller Date: Sat, 10 Feb 2018 04:33:25 +0300 Subject: [PATCH 2/2] Add new hash options to admin control panel --- templates/admin.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/admin.php b/templates/admin.php index 2799a3b..8a48095 100644 --- a/templates/admin.php +++ b/templates/admin.php @@ -70,7 +70,7 @@ $cfgClass = 'section';

- 'MD5', 'md5crypt' => 'MD5 Crypt', 'cleartext' => 'Cleartext', 'mysql_encrypt' => 'mySQL ENCRYPT()', 'system' => 'System (crypt)', 'password_hash' => 'password_hash','mysql_password' => 'mySQL PASSWORD()', 'joomla' => 'Joomla MD5 Encryption', 'joomla2' => 'Joomla > 2.5.18 phpass', 'ssha256' => 'Salted SSHA256', 'redmine' => 'Redmine', 'sha1' => 'SHA1'); ?> + 'MD5', 'md5crypt' => 'MD5 Crypt', 'cleartext' => 'Cleartext', 'mysql_encrypt' => 'mySQL ENCRYPT()', 'system' => 'System (crypt)', 'password_hash' => 'password_hash','mysql_password' => 'mySQL PASSWORD()', 'joomla' => 'Joomla MD5 Encryption', 'joomla2' => 'Joomla > 2.5.18 phpass', 'ssha256' => 'Salted SSHA256', 'redmine' => 'Redmine', 'sha1' => 'SHA1', 'courier_md5' => 'Courier base64-encoded MD5', 'courier_md5raw' => 'Courier hexadecimal MD5', 'courier_sha1' => 'Courier base64-encoded SHA1', 'courier_sha256' => 'Courier base64-encoded SHA256'); ?>