summaryrefslogtreecommitdiffstats
path: root/src/Hashing/SplineHasher.php
diff options
context:
space:
mode:
authorAlexander Sulfrian <alex@spline.inf.fu-berlin.de>2015-04-09 17:33:22 +0200
committerAlexander Sulfrian <alex@spline.inf.fu-berlin.de>2015-04-09 17:33:22 +0200
commita28626a0824fd81433b55181361948fb40977aec (patch)
treefdfcd005c5c2fd23e1d7b74dddfac4f5a111fa1f /src/Hashing/SplineHasher.php
downloadlaravel-a28626a0824fd81433b55181361948fb40977aec.tar.gz
laravel-a28626a0824fd81433b55181361948fb40977aec.tar.bz2
laravel-a28626a0824fd81433b55181361948fb40977aec.zip
Initial commit
Diffstat (limited to 'src/Hashing/SplineHasher.php')
-rw-r--r--src/Hashing/SplineHasher.php60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/Hashing/SplineHasher.php b/src/Hashing/SplineHasher.php
new file mode 100644
index 0000000..bf5d0d6
--- /dev/null
+++ b/src/Hashing/SplineHasher.php
@@ -0,0 +1,60 @@
+<?php namespace Spline\Cachet\Hashing;
+
+use Illuminate\Hashing\BcryptHasher;
+
+class SplineHasher extends BcryptHasher {
+
+ /**
+ * Check the given plain value against a hash.
+ *
+ * @param string $value
+ * @param string $hashedValue
+ * @param array $options
+ * @return bool
+ */
+ public function check($value, $hashedValue, array $options = array())
+ {
+ if (starts_with($hashedValue, '{')) {
+ if (starts_with($hashedValue, '{SSHA}')) {
+ $hash = base64_decode(substr($hashedValue, 6));
+ $salt = substr($hash, 20);
+ if ((pack("H*", sha1($value.$salt)).$salt) == $hash) {
+ return true;
+ }
+ }
+ elseif (starts_with($hashedValue, '{SMD5}')) {
+ $hash = base64_decode(substr($hashedValue, 6));
+ $salt = substr($hash, 16);
+ if ((md5($value.$salt, true).$salt) == $hash) {
+ return true;
+ }
+ }
+ elseif (starts_with(strtolower($hashedValue), '{crypt}')) {
+ $hash = substr($hashedValue, 7);
+ if (password_verify($value, $hash)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ return parent::check($value, $hashedValue, $options);
+ }
+
+ /**
+ * Check if the given hash has been hashed using the given options.
+ *
+ * @param string $hashedValue
+ * @param array $options
+ * @return bool
+ */
+ public function needsRehash($hashedValue, array $options = array())
+ {
+ if (starts_with($hashedValue, '{')) {
+ return false;
+ }
+
+ return parent::needsRehash($hashedValue, $options);
+ }
+}