[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/libraries/vendor/phpseclib/phpseclib/phpseclib/Crypt/DSA/Formats/Signature/ -> SSH2.php (source)

   1  <?php
   2  
   3  /**
   4   * SSH2 Signature Handler
   5   *
   6   * PHP version 5
   7   *
   8   * Handles signatures in the format used by SSH2
   9   *
  10   * @category  Crypt
  11   * @package   Common
  12   * @author    Jim Wigginton <[email protected]>
  13   * @copyright 2016 Jim Wigginton
  14   * @license   http://www.opensource.org/licenses/mit-license.html  MIT License
  15   * @link      http://phpseclib.sourceforge.net
  16   */
  17  
  18  namespace phpseclib3\Crypt\DSA\Formats\Signature;
  19  
  20  use phpseclib3\Common\Functions\Strings;
  21  use phpseclib3\Math\BigInteger;
  22  
  23  /**
  24   * SSH2 Signature Handler
  25   *
  26   * @package Common
  27   * @author  Jim Wigginton <[email protected]>
  28   * @access  public
  29   */
  30  abstract class SSH2
  31  {
  32      /**
  33       * Loads a signature
  34       *
  35       * @access public
  36       * @param string $sig
  37       * @return mixed
  38       */
  39      public static function load($sig)
  40      {
  41          if (!is_string($sig)) {
  42              return false;
  43          }
  44  
  45          $result = Strings::unpackSSH2('ss', $sig);
  46          if ($result === false) {
  47              return false;
  48          }
  49          list($type, $blob) = $result;
  50          if ($type != 'ssh-dss' || strlen($blob) != 40) {
  51              return false;
  52          }
  53  
  54          return [
  55              'r' => new BigInteger(substr($blob, 0, 20), 256),
  56              's' => new BigInteger(substr($blob, 20), 256)
  57          ];
  58      }
  59  
  60      /**
  61       * Returns a signature in the appropriate format
  62       *
  63       * @access public
  64       * @param \phpseclib3\Math\BigInteger $r
  65       * @param \phpseclib3\Math\BigInteger $s
  66       * @return string
  67       */
  68      public static function save(BigInteger $r, BigInteger $s)
  69      {
  70          if ($r->getLength() > 160 || $s->getLength() > 160) {
  71              return false;
  72          }
  73          return Strings::packSSH2(
  74              'ss',
  75              'ssh-dss',
  76              str_pad($r->toBytes(), 20, "\0", STR_PAD_LEFT) .
  77              str_pad($s->toBytes(), 20, "\0", STR_PAD_LEFT)
  78          );
  79      }
  80  }


Generated: Wed Sep 7 05:41:13 2022 Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer