| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- <?php
- /**
- * SSH2 Signature Handler
- *
- * PHP version 5
- *
- * Handles signatures in the format used by SSH2
- *
- * @category Crypt
- * @package Common
- * @author Jim Wigginton <terrafrost@php.net>
- * @copyright 2016 Jim Wigginton
- * @license http://www.opensource.org/licenses/mit-license.html MIT License
- * @link http://phpseclib.sourceforge.net
- */
- namespace phpseclib\Crypt\DSA\Signature;
- use phpseclib\Math\BigInteger;
- use phpseclib\Common\Functions\Strings;
- /**
- * SSH2 Signature Handler
- *
- * @package Common
- * @author Jim Wigginton <terrafrost@php.net>
- * @access public
- */
- abstract class SSH2
- {
- /**
- * Loads a signature
- *
- * @access public
- * @param array $key
- * @return array
- */
- public static function load($sig)
- {
- if (!is_string($sig)) {
- return false;
- }
- $result = Strings::unpackSSH2('ss', $sig);
- if ($result === false) {
- return false;
- }
- list($type, $blob) = $result;
- if ($type != 'ssh-dss' || strlen($blob) != 40) {
- return false;
- }
- return [
- 'r' => new BigInteger(substr($blob, 0, 20), 256),
- 's' => new BigInteger(substr($blob, 20), 256)
- ];
- }
- /**
- * Returns a signature in the appropriate format
- *
- * @access public
- * @param \phpseclib\Math\BigInteger $r
- * @param \phpseclib\Math\BigInteger $s
- * @return string
- */
- public static function save($r, $s)
- {
- if ($r->getLength() != 160 || $s->getLength != 160) {
- return false;
- }
- return Strings::pack('ss', $r, $s);
- }
- }
|