summaryrefslogtreecommitdiffstats
path: root/src/Base32.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/Base32.php')
-rw-r--r--src/Base32.php122
1 files changed, 63 insertions, 59 deletions
diff --git a/src/Base32.php b/src/Base32.php
index 18a7e38..1a010e0 100644
--- a/src/Base32.php
+++ b/src/Base32.php
@@ -1,6 +1,12 @@
<?php
namespace ParagonIE\ConstantTime;
+/**
+ * Class Base32
+ * [A-Z][2-7]
+ *
+ * @package ParagonIE\ConstantTime
+ */
abstract class Base32
{
/**
@@ -47,14 +53,14 @@ abstract class Base32
$dest = '';
for ($i = 0; $i + 8 <= $srcLen; $i += 8) {
$chunk = \unpack('C*', Core::safeSubstr($src, $i, 8));
- $c0 = self::decode5Bits($chunk[1]);
- $c1 = self::decode5Bits($chunk[2]);
- $c2 = self::decode5Bits($chunk[3]);
- $c3 = self::decode5Bits($chunk[4]);
- $c4 = self::decode5Bits($chunk[5]);
- $c5 = self::decode5Bits($chunk[6]);
- $c6 = self::decode5Bits($chunk[7]);
- $c7 = self::decode5Bits($chunk[8]);
+ $c0 = static::decode5Bits($chunk[1]);
+ $c1 = static::decode5Bits($chunk[2]);
+ $c2 = static::decode5Bits($chunk[3]);
+ $c3 = static::decode5Bits($chunk[4]);
+ $c4 = static::decode5Bits($chunk[5]);
+ $c5 = static::decode5Bits($chunk[6]);
+ $c6 = static::decode5Bits($chunk[7]);
+ $c7 = static::decode5Bits($chunk[8]);
$dest .= \pack(
'CCCCC',
@@ -68,15 +74,15 @@ abstract class Base32
}
if ($i < $srcLen) {
$chunk = \unpack('C*', Core::safeSubstr($src, $i, $srcLen - $i));
- $c0 = self::decode5Bits($chunk[1]);
+ $c0 = static::decode5Bits($chunk[1]);
if ($i + 6 < $srcLen) {
- $c1 = self::decode5Bits($chunk[2]);
- $c2 = self::decode5Bits($chunk[3]);
- $c3 = self::decode5Bits($chunk[4]);
- $c4 = self::decode5Bits($chunk[5]);
- $c5 = self::decode5Bits($chunk[6]);
- $c6 = self::decode5Bits($chunk[7]);
+ $c1 = static::decode5Bits($chunk[2]);
+ $c2 = static::decode5Bits($chunk[3]);
+ $c3 = static::decode5Bits($chunk[4]);
+ $c4 = static::decode5Bits($chunk[5]);
+ $c5 = static::decode5Bits($chunk[6]);
+ $c6 = static::decode5Bits($chunk[7]);
$dest .= \pack(
'CCCC',
@@ -87,11 +93,11 @@ abstract class Base32
);
$err |= ($c0 | $c1 | $c2 | $c3 | $c4 | $c5 | $c6) >> 8;
} elseif ($i + 5 < $srcLen) {
- $c1 = self::decode5Bits($chunk[2]);
- $c2 = self::decode5Bits($chunk[3]);
- $c3 = self::decode5Bits($chunk[4]);
- $c4 = self::decode5Bits($chunk[5]);
- $c5 = self::decode5Bits($chunk[6]);
+ $c1 = static::decode5Bits($chunk[2]);
+ $c2 = static::decode5Bits($chunk[3]);
+ $c3 = static::decode5Bits($chunk[4]);
+ $c4 = static::decode5Bits($chunk[5]);
+ $c5 = static::decode5Bits($chunk[6]);
$dest .= \pack(
'CCCC',
@@ -102,10 +108,10 @@ abstract class Base32
);
$err |= ($c0 | $c1 | $c2 | $c3 | $c4 | $c5) >> 8;
} elseif ($i + 4 < $srcLen) {
- $c1 = self::decode5Bits($chunk[2]);
- $c2 = self::decode5Bits($chunk[3]);
- $c3 = self::decode5Bits($chunk[4]);
- $c4 = self::decode5Bits($chunk[5]);
+ $c1 = static::decode5Bits($chunk[2]);
+ $c2 = static::decode5Bits($chunk[3]);
+ $c3 = static::decode5Bits($chunk[4]);
+ $c4 = static::decode5Bits($chunk[5]);
$dest .= \pack(
'CCC',
@@ -115,9 +121,9 @@ abstract class Base32
);
$err |= ($c0 | $c1 | $c2 | $c3 | $c4) >> 8;
} elseif ($i + 3 < $srcLen) {
- $c1 = self::decode5Bits($chunk[2]);
- $c2 = self::decode5Bits($chunk[3]);
- $c3 = self::decode5Bits($chunk[4]);
+ $c1 = static::decode5Bits($chunk[2]);
+ $c2 = static::decode5Bits($chunk[3]);
+ $c3 = static::decode5Bits($chunk[4]);
$dest .= \pack(
'CC',
@@ -126,8 +132,8 @@ abstract class Base32
);
$err |= ($c0 | $c1 | $c2 | $c3) >> 8;
} elseif ($i + 2 < $srcLen) {
- $c1 = self::decode5Bits($chunk[2]);
- $c2 = self::decode5Bits($chunk[3]);
+ $c1 = static::decode5Bits($chunk[2]);
+ $c2 = static::decode5Bits($chunk[3]);
$dest .= \pack(
'CC',
@@ -136,7 +142,7 @@ abstract class Base32
);
$err |= ($c0 | $c1 | $c2) >> 8;
} elseif ($i + 1 < $srcLen) {
- $c1 = self::decode5Bits($chunk[2]);
+ $c1 = static::decode5Bits($chunk[2]);
$dest .= \pack(
'C',
@@ -177,14 +183,14 @@ abstract class Base32
$b3 = $chunk[4];
$b4 = $chunk[5];
$dest .=
- self::encode5Bits( ($b0 >> 3) & 31) .
- self::encode5Bits((($b0 << 2) | ($b1 >> 6)) & 31) .
- self::encode5Bits((($b1 >> 1) ) & 31) .
- self::encode5Bits((($b1 << 4) | ($b2 >> 4)) & 31) .
- self::encode5Bits((($b2 << 1) | ($b3 >> 7)) & 31) .
- self::encode5Bits((($b3 >> 2) ) & 31) .
- self::encode5Bits((($b3 << 3) | ($b4 >> 5)) & 31) .
- self::encode5Bits( $b4 & 31);
+ static::encode5Bits( ($b0 >> 3) & 31) .
+ static::encode5Bits((($b0 << 2) | ($b1 >> 6)) & 31) .
+ static::encode5Bits((($b1 >> 1) ) & 31) .
+ static::encode5Bits((($b1 << 4) | ($b2 >> 4)) & 31) .
+ static::encode5Bits((($b2 << 1) | ($b3 >> 7)) & 31) .
+ static::encode5Bits((($b3 >> 2) ) & 31) .
+ static::encode5Bits((($b3 << 3) | ($b4 >> 5)) & 31) .
+ static::encode5Bits( $b4 & 31);
}
if ($i < $srcLen) {
$chunk = \unpack('C*', Core::safeSubstr($src, $i, $srcLen - $i));
@@ -194,47 +200,45 @@ abstract class Base32
$b2 = $chunk[3];
$b3 = $chunk[4];
$dest .=
- self::encode5Bits( ($b0 >> 3) & 31) .
- self::encode5Bits((($b0 << 2) | ($b1 >> 6)) & 31) .
- self::encode5Bits((($b1 >> 1) ) & 31) .
- self::encode5Bits((($b1 << 4) | ($b2 >> 4)) & 31) .
- self::encode5Bits((($b2 << 1) | ($b3 >> 7)) & 31) .
- self::encode5Bits((($b3 >> 2) ) & 31) .
- self::encode5Bits((($b3 << 3) ) & 31) .
+ static::encode5Bits( ($b0 >> 3) & 31) .
+ static::encode5Bits((($b0 << 2) | ($b1 >> 6)) & 31) .
+ static::encode5Bits((($b1 >> 1) ) & 31) .
+ static::encode5Bits((($b1 << 4) | ($b2 >> 4)) & 31) .
+ static::encode5Bits((($b2 << 1) | ($b3 >> 7)) & 31) .
+ static::encode5Bits((($b3 >> 2) ) & 31) .
+ static::encode5Bits((($b3 << 3) ) & 31) .
'=';
} elseif ($i + 2 < $srcLen) {
$b1 = $chunk[2];
$b2 = $chunk[3];
$dest .=
- self::encode5Bits( ($b0 >> 3) & 31) .
- self::encode5Bits((($b0 << 2) | ($b1 >> 6)) & 31) .
- self::encode5Bits((($b1 >> 1) ) & 31) .
- self::encode5Bits((($b1 << 4) | ($b2 >> 4)) & 31) .
- self::encode5Bits((($b2 << 1) ) & 31) .
+ static::encode5Bits( ($b0 >> 3) & 31) .
+ static::encode5Bits((($b0 << 2) | ($b1 >> 6)) & 31) .
+ static::encode5Bits((($b1 >> 1) ) & 31) .
+ static::encode5Bits((($b1 << 4) | ($b2 >> 4)) & 31) .
+ static::encode5Bits((($b2 << 1) ) & 31) .
'===';
} elseif ($i + 1 < $srcLen) {
$b1 = $chunk[2];
$dest .=
- self::encode5Bits( ($b0 >> 3) & 31) .
- self::encode5Bits((($b0 << 2) | ($b1 >> 6)) & 31) .
- self::encode5Bits((($b1 >> 1) ) & 31) .
- self::encode5Bits((($b1 << 4) ) & 31) .
+ static::encode5Bits( ($b0 >> 3) & 31) .
+ static::encode5Bits((($b0 << 2) | ($b1 >> 6)) & 31) .
+ static::encode5Bits((($b1 >> 1) ) & 31) .
+ static::encode5Bits((($b1 << 4) ) & 31) .
'====';
} else {
$dest .=
- self::encode5Bits( ($b0 >> 3) & 31) .
- self::encode5Bits( ($b0 << 2) & 31) .
+ static::encode5Bits( ($b0 >> 3) & 31) .
+ static::encode5Bits( ($b0 << 2) & 31) .
'======';
}
}
return $dest;
}
-
-
/**
*
- * @param $src
+ * @param int $src
* @return int
*/
protected static function decode5Bits($src)