Mercurial > hg > rc1
comparison vendor/pear/crypt_gpg/Crypt/GPG/SignatureCreationInfo.php @ 0:1e000243b222
vanilla 1.3.3 distro, I hope
author | Charlie Root |
---|---|
date | Thu, 04 Jan 2018 15:50:29 -0500 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:1e000243b222 |
---|---|
1 <?php | |
2 /** | |
3 * Part of Crypt_GPG | |
4 * | |
5 * PHP version 5 | |
6 * | |
7 * @category Encryption | |
8 * @package Crypt_GPG | |
9 * @author Christian Weiske <cweiske@php.net> | |
10 * @copyright 2015 PEAR | |
11 * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1 | |
12 * @link http://pear.php.net/package/Crypt_GPG | |
13 * @link http://pear.php.net/manual/en/package.encryption.crypt-gpg.php | |
14 * @link http://www.gnupg.org/ | |
15 */ | |
16 | |
17 /** | |
18 * Information about a recently created signature. | |
19 * | |
20 * @category Encryption | |
21 * @package Crypt_GPG | |
22 * @author Christian Weiske <cweiske@php.net> | |
23 * @copyright 2015 PEAR | |
24 * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1 | |
25 * @link http://pear.php.net/package/Crypt_GPG | |
26 * @link http://pear.php.net/manual/en/package.encryption.crypt-gpg.php | |
27 * @link http://www.gnupg.org/ | |
28 */ | |
29 class Crypt_GPG_SignatureCreationInfo | |
30 { | |
31 /** | |
32 * One of the three signature types: | |
33 * - {@link Crypt_GPG::SIGN_MODE_NORMAL} | |
34 * - {@link Crypt_GPG::SIGN_MODE_CLEAR} | |
35 * - {@link Crypt_GPG::SIGN_MODE_DETACHED} | |
36 * | |
37 * @var integer | |
38 */ | |
39 protected $mode; | |
40 | |
41 /** | |
42 * Public Key algorithm | |
43 * | |
44 * @var integer | |
45 */ | |
46 protected $pkAlgorithm; | |
47 | |
48 /** | |
49 * Algorithm to hash the data | |
50 * | |
51 * @see RFC 2440 / 9.4. Hash Algorithm | |
52 * @var integer | |
53 */ | |
54 protected $hashAlgorithm; | |
55 | |
56 /** | |
57 * OpenPGP signature class | |
58 * | |
59 * @var mixed | |
60 */ | |
61 protected $class; | |
62 | |
63 /** | |
64 * Unix timestamp when the signature was created | |
65 * | |
66 * @var integer | |
67 */ | |
68 protected $timestamp; | |
69 | |
70 /** | |
71 * Key fingerprint | |
72 * | |
73 * @var string | |
74 */ | |
75 protected $keyFingerprint; | |
76 | |
77 /** | |
78 * If the line given to the constructor was valid | |
79 * | |
80 * @var boolean | |
81 */ | |
82 protected $valid; | |
83 | |
84 /** | |
85 * Names for the hash algorithm IDs. | |
86 * | |
87 * Names taken from RFC 3156, without the leading "pgp-". | |
88 * | |
89 * @see RFC 2440 / 9.4. Hash Algorithm | |
90 * @see RFC 3156 / 5. OpenPGP signed data | |
91 * @var array | |
92 */ | |
93 protected static $hashAlgorithmNames = array( | |
94 1 => 'md5', | |
95 2 => 'sha1', | |
96 3 => 'ripemd160', | |
97 5 => 'md2', | |
98 6 => 'tiger192', | |
99 7 => 'haval-5-160', | |
100 8 => 'sha256', | |
101 9 => 'sha384', | |
102 10 => 'sha512', | |
103 11 => 'sha224', | |
104 ); | |
105 | |
106 /** | |
107 * Parse a SIG_CREATED line from gnupg | |
108 * | |
109 * @param string $sigCreatedLine Line beginning with "SIG_CREATED " | |
110 */ | |
111 public function __construct($sigCreatedLine = null) | |
112 { | |
113 if ($sigCreatedLine === null) { | |
114 $this->valid = false; | |
115 return; | |
116 } | |
117 | |
118 $parts = explode(' ', $sigCreatedLine); | |
119 if (count($parts) !== 7) { | |
120 $this->valid = false; | |
121 return; | |
122 } | |
123 list( | |
124 $title, $mode, $pkAlgorithm, $hashAlgorithm, | |
125 $class, $timestamp, $keyFingerprint | |
126 ) = $parts; | |
127 | |
128 switch (strtoupper($mode[0])) { | |
129 case 'D': | |
130 $this->mode = Crypt_GPG::SIGN_MODE_DETACHED; | |
131 break; | |
132 case 'C': | |
133 $this->mode = Crypt_GPG::SIGN_MODE_CLEAR; | |
134 break; | |
135 case 'S': | |
136 $this->mode = Crypt_GPG::SIGN_MODE_NORMAL; | |
137 break; | |
138 } | |
139 | |
140 $this->pkAlgorithm = (int) $pkAlgorithm; | |
141 $this->hashAlgorithm = (int) $hashAlgorithm; | |
142 $this->class = $class; | |
143 if (is_numeric($timestamp)) { | |
144 $this->timestamp = (int) $timestamp; | |
145 } else { | |
146 $this->timestamp = strtotime($timestamp); | |
147 } | |
148 $this->keyFingerprint = $keyFingerprint; | |
149 $this->valid = true; | |
150 } | |
151 | |
152 /** | |
153 * Get the signature type | |
154 * - {@link Crypt_GPG::SIGN_MODE_NORMAL} | |
155 * - {@link Crypt_GPG::SIGN_MODE_CLEAR} | |
156 * - {@link Crypt_GPG::SIGN_MODE_DETACHED} | |
157 * | |
158 * @return integer | |
159 */ | |
160 public function getMode() | |
161 { | |
162 return $this->mode; | |
163 } | |
164 | |
165 /** | |
166 * Return the public key algorithm used. | |
167 * | |
168 * @return integer | |
169 */ | |
170 public function getPkAlgorithm() | |
171 { | |
172 return $this->pkAlgorithm; | |
173 } | |
174 | |
175 /** | |
176 * Return the hash algorithm used to hash the data to sign. | |
177 * | |
178 * @return integer | |
179 */ | |
180 public function getHashAlgorithm() | |
181 { | |
182 return $this->hashAlgorithm; | |
183 } | |
184 | |
185 /** | |
186 * Get a name for the used hashing algorithm. | |
187 * | |
188 * @return string|null | |
189 */ | |
190 public function getHashAlgorithmName() | |
191 { | |
192 if (!isset(self::$hashAlgorithmNames[$this->hashAlgorithm])) { | |
193 return null; | |
194 } | |
195 return self::$hashAlgorithmNames[$this->hashAlgorithm]; | |
196 } | |
197 | |
198 /** | |
199 * Return the timestamp at which the signature was created | |
200 * | |
201 * @return integer | |
202 */ | |
203 public function getTimestamp() | |
204 { | |
205 return $this->timestamp; | |
206 } | |
207 | |
208 /** | |
209 * Return the key's fingerprint | |
210 * | |
211 * @return string | |
212 */ | |
213 public function getKeyFingerprint() | |
214 { | |
215 return $this->keyFingerprint; | |
216 } | |
217 | |
218 /** | |
219 * Tell if the fingerprint line given to the constructor was valid | |
220 * | |
221 * @return boolean | |
222 */ | |
223 public function isValid() | |
224 { | |
225 return $this->valid; | |
226 } | |
227 } | |
228 ?> |