summaryrefslogtreecommitdiff
path: root/vendor/phpseclib/phpseclib/phpseclib/Crypt/PublicKeyLoader.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/phpseclib/phpseclib/phpseclib/Crypt/PublicKeyLoader.php')
-rw-r--r--vendor/phpseclib/phpseclib/phpseclib/Crypt/PublicKeyLoader.php111
1 files changed, 111 insertions, 0 deletions
diff --git a/vendor/phpseclib/phpseclib/phpseclib/Crypt/PublicKeyLoader.php b/vendor/phpseclib/phpseclib/phpseclib/Crypt/PublicKeyLoader.php
new file mode 100644
index 0000000..61afbae
--- /dev/null
+++ b/vendor/phpseclib/phpseclib/phpseclib/Crypt/PublicKeyLoader.php
@@ -0,0 +1,111 @@
+<?php
+
+/**
+ * PublicKeyLoader
+ *
+ * Returns a PublicKey or PrivateKey object.
+ *
+ * @author Jim Wigginton <[email protected]>
+ * @copyright 2009 Jim Wigginton
+ * @license http://www.opensource.org/licenses/mit-license.html MIT License
+ * @link http://phpseclib.sourceforge.net
+ */
+
+namespace phpseclib3\Crypt;
+
+use phpseclib3\Crypt\Common\AsymmetricKey;
+use phpseclib3\Crypt\Common\PrivateKey;
+use phpseclib3\Crypt\Common\PublicKey;
+use phpseclib3\Exception\NoKeyLoadedException;
+use phpseclib3\File\X509;
+
+/**
+ * PublicKeyLoader
+ *
+ * @author Jim Wigginton <[email protected]>
+ */
+abstract class PublicKeyLoader
+{
+ /**
+ * Loads a public or private key
+ *
+ * @return AsymmetricKey
+ * @param string|array $key
+ * @param string $password optional
+ */
+ public static function load($key, $password = false)
+ {
+ try {
+ return EC::load($key, $password);
+ } catch (NoKeyLoadedException $e) {
+ }
+
+ try {
+ return RSA::load($key, $password);
+ } catch (NoKeyLoadedException $e) {
+ }
+
+ try {
+ return DSA::load($key, $password);
+ } catch (NoKeyLoadedException $e) {
+ }
+
+ try {
+ $x509 = new X509();
+ $x509->loadX509($key);
+ $key = $x509->getPublicKey();
+ if ($key) {
+ return $key;
+ }
+ } catch (\Exception $e) {
+ }
+
+ throw new NoKeyLoadedException('Unable to read key');
+ }
+
+ /**
+ * Loads a private key
+ *
+ * @return PrivateKey
+ * @param string|array $key
+ * @param string $password optional
+ */
+ public static function loadPrivateKey($key, $password = false)
+ {
+ $key = self::load($key, $password);
+ if (!$key instanceof PrivateKey) {
+ throw new NoKeyLoadedException('The key that was loaded was not a private key');
+ }
+ return $key;
+ }
+
+ /**
+ * Loads a public key
+ *
+ * @return PublicKey
+ * @param string|array $key
+ */
+ public static function loadPublicKey($key)
+ {
+ $key = self::load($key);
+ if (!$key instanceof PublicKey) {
+ throw new NoKeyLoadedException('The key that was loaded was not a public key');
+ }
+ return $key;
+ }
+
+ /**
+ * Loads parameters
+ *
+ * @return AsymmetricKey
+ * @param string|array $key
+ */
+ public static function loadParameters($key)
+ {
+ $key = self::load($key);
+ if (!$key instanceof PrivateKey && !$key instanceof PublicKey) {
+ throw new NoKeyLoadedException('The key that was loaded was not a parameter');
+ }
+ return $key;
+ }
+}