PluginProbe ʕ •ᴥ•ʔ
JetBackup – Backup, Restore & Migrate / 3.1.22.3
JetBackup – Backup, Restore & Migrate v3.1.22.3
3.1.22.4 3.1.22.3 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.8.1 1.4.9 1.5.0 1.5.1 1.5.1.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.10 1.6.11 1.6.12 1.6.13 1.6.15 1.6.5.1 1.6.8.8 1.6.9 1.6.9.1 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7.5 2.0.8.7 2.0.9.11 2.0.9.14 2.0.9.15 2.0.9.6 2.0.9.7 2.0.9.9 3.1.10.7 3.1.11.1 3.1.12.3 3.1.13.4 3.1.14.17 3.1.15.4 3.1.16.1 3.1.17.5 3.1.18.10 3.1.18.8 3.1.18.9 3.1.19.8 3.1.20.3 3.1.21.3 3.1.7.9 3.1.9.2 trunk 1.1.90 1.1.91 1.2.0 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.2
backup / src / JetBackup / 3rdparty / phpseclib3 / Crypt / EC / Formats / Signature / SSH2.php
backup / src / JetBackup / 3rdparty / phpseclib3 / Crypt / EC / Formats / Signature Last commit date
.htaccess 1 year ago ASN1.php 1 year ago IEEE.php 1 year ago Raw.php 1 year ago SSH2.php 1 year ago index.html 1 year ago web.config 1 year ago
SSH2.php
91 lines
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 * @author Jim Wigginton <terrafrost@php.net>
11 * @copyright 2016 Jim Wigginton
12 * @license http://www.opensource.org/licenses/mit-license.html MIT License
13 * @link http://phpseclib.sourceforge.net
14 */
15
16 declare(strict_types=1);
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 * @author Jim Wigginton <terrafrost@php.net>
27 */
28 abstract class SSH2
29 {
30 /**
31 * Loads a signature
32 */
33 public static function load(string $sig)
34 {
35 if (!is_string($sig)) {
36 return false;
37 }
38
39 $result = Strings::unpackSSH2('ss', $sig);
40 if ($result === false) {
41 return false;
42 }
43 [$type, $blob] = $result;
44 switch ($type) {
45 // see https://tools.ietf.org/html/rfc5656#section-3.1.2
46 case 'ecdsa-sha2-nistp256':
47 case 'ecdsa-sha2-nistp384':
48 case 'ecdsa-sha2-nistp521':
49 break;
50 default:
51 return false;
52 }
53
54 $result = Strings::unpackSSH2('ii', $blob);
55 if ($result === false) {
56 return false;
57 }
58
59 return [
60 'r' => $result[0],
61 's' => $result[1],
62 ];
63 }
64
65 /**
66 * Returns a signature in the appropriate format
67 *
68 * @return string
69 */
70 public static function save(BigInteger $r, BigInteger $s, string $curve)
71 {
72 switch ($curve) {
73 case 'secp256r1':
74 $curve = 'nistp256';
75 break;
76 case 'secp384r1':
77 $curve = 'nistp384';
78 break;
79 case 'secp521r1':
80 $curve = 'nistp521';
81 break;
82 default:
83 return false;
84 }
85
86 $blob = Strings::packSSH2('ii', $r, $s);
87
88 return Strings::packSSH2('ss', 'ecdsa-sha2-' . $curve, $blob);
89 }
90 }
91