summaryrefslogtreecommitdiffstats
path: root/lib/private/security
diff options
context:
space:
mode:
authorLukas Reschke <lukas@owncloud.com>2014-09-11 09:51:45 +0200
committerLukas Reschke <lukas@owncloud.com>2014-09-11 09:51:45 +0200
commit1973275adc576aaf2cf6481d6cb91b0a6adc1f8d (patch)
tree2f0cc06dc37d89e56510ea442e37c0d50ba26b04 /lib/private/security
parente6af67d5eabd77e336207b7a82cfba5dafe45a26 (diff)
downloadnextcloud-server-1973275adc576aaf2cf6481d6cb91b0a6adc1f8d.tar.gz
nextcloud-server-1973275adc576aaf2cf6481d6cb91b0a6adc1f8d.zip
Add custom hex2bin implementation for 5.3
Fixes https://github.com/owncloud/core/issues/11004
Diffstat (limited to 'lib/private/security')
-rw-r--r--lib/private/security/crypto.php20
1 files changed, 18 insertions, 2 deletions
diff --git a/lib/private/security/crypto.php b/lib/private/security/crypto.php
index 6fdff8d92a2..498e15d6bc3 100644
--- a/lib/private/security/crypto.php
+++ b/lib/private/security/crypto.php
@@ -43,6 +43,22 @@ class Crypto implements ICrypto {
}
/**
+ * Custom implementation of hex2bin since the function is only available starting
+ * with PHP 5.4
+ *
+ * @TODO Remove this once 5.3 support for ownCloud is dropped
+ * @param $message
+ * @return string
+ */
+ protected static function hexToBin($message) {
+ if (function_exists('hex2bin')) {
+ return hex2bin($message);
+ }
+
+ return pack("H*", $message);
+ }
+
+ /**
* @param string $message The message to authenticate
* @param string $password Password to use (defaults to `secret` in config.php)
* @return string Calculated HMAC
@@ -99,9 +115,9 @@ class Crypto implements ICrypto {
throw new \Exception('Authenticated ciphertext could not be decoded.');
}
- $ciphertext = hex2bin($parts[0]);
+ $ciphertext = self::hexToBin($parts[0]);
$iv = $parts[1];
- $hmac = hex2bin($parts[2]);
+ $hmac = self::hexToBin($parts[2]);
$this->cipher->setIV($iv);