[ Index ] |
PHP Cross Reference of Joomla 4.2.2 documentation |
[Summary view] [Print] [Text view]
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\EC\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 switch ($type) { 51 // see https://tools.ietf.org/html/rfc5656#section-3.1.2 52 case 'ecdsa-sha2-nistp256': 53 case 'ecdsa-sha2-nistp384': 54 case 'ecdsa-sha2-nistp521': 55 break; 56 default: 57 return false; 58 } 59 60 $result = Strings::unpackSSH2('ii', $blob); 61 if ($result === false) { 62 return false; 63 } 64 65 return [ 66 'r' => $result[0], 67 's' => $result[1] 68 ]; 69 } 70 71 /** 72 * Returns a signature in the appropriate format 73 * 74 * @access public 75 * @param \phpseclib3\Math\BigInteger $r 76 * @param \phpseclib3\Math\BigInteger $s 77 * @param string $curve 78 * @return string 79 */ 80 public static function save(BigInteger $r, BigInteger $s, $curve) 81 { 82 switch ($curve) { 83 case 'secp256r1': 84 $curve = 'nistp256'; 85 break; 86 case 'secp384r1': 87 $curve = 'nistp384'; 88 break; 89 case 'secp521r1': 90 $curve = 'nistp521'; 91 break; 92 default: 93 return false; 94 } 95 96 $blob = Strings::packSSH2('ii', $r, $s); 97 98 return Strings::packSSH2('ss', 'ecdsa-sha2-' . $curve, $blob); 99 } 100 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Wed Sep 7 05:41:13 2022 | Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer |