]> git.mxchange.org Git - friendica.git/blobdiff - src/Protocol/Salmon.php
make errormessages modular and better
[friendica.git] / src / Protocol / Salmon.php
index b1bdb67e1dd206074cbe0e250f3de3ff2af28392..50d1b931c9d4c91f29cffea0698809a9b4c2c558 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2022, the Friendica project
+ * @copyright Copyright (C) 2010-2023, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -25,9 +25,11 @@ use Friendica\Core\Logger;
 use Friendica\DI;
 use Friendica\Network\HTTPClient\Client\HttpClientAccept;
 use Friendica\Network\Probe;
+use Friendica\Protocol\Salmon\Format\Magic;
 use Friendica\Util\Crypto;
 use Friendica\Util\Strings;
 use Friendica\Util\XML;
+use phpseclib3\Crypt\PublicKeyLoader;
 
 /**
  * Salmon Protocol class
@@ -158,7 +160,7 @@ class Salmon
 
                $namespaces = ['me' => ActivityNamespace::SALMON_ME];
 
-               $salmon = XML::fromArray($xmldata, $xml, false, $namespaces);
+               $salmon = XML::fromArray($xmldata, $dummy, false, $namespaces);
 
                // slap them
                $postResult = DI::httpClient()->post($url, $salmon, [
@@ -185,9 +187,7 @@ class Salmon
                                ]
                        ];
 
-                       $namespaces = ['me' => ActivityNamespace::SALMON_ME];
-
-                       $salmon = XML::fromArray($xmldata, $xml, false, $namespaces);
+                       $salmon = XML::fromArray($xmldata, $dummy, false, $namespaces);
 
                        // slap them
                        $postResult = DI::httpClient()->post($url, $salmon, [
@@ -212,9 +212,7 @@ class Salmon
                                ]
                        ];
 
-                       $namespaces = ['me' => ActivityNamespace::SALMON_ME];
-
-                       $salmon = XML::fromArray($xmldata, $xml, false, $namespaces);
+                       $salmon = XML::fromArray($xmldata, $dummy, false, $namespaces);
 
                        // slap them
                        $postResult = DI::httpClient()->post($url, $salmon, [
@@ -243,7 +241,19 @@ class Salmon
         */
        public static function salmonKey(string $pubkey): string
        {
-               Crypto::pemToMe($pubkey, $modulus, $exponent);
-               return 'RSA' . '.' . Strings::base64UrlEncode($modulus, true) . '.' . Strings::base64UrlEncode($exponent, true);
+               \phpseclib3\Crypt\RSA::addFileFormat(Magic::class);
+
+               return PublicKeyLoader::load($pubkey)->toString('Magic');
+       }
+
+       /**
+        * @param string $magic Magic key format starting with "RSA."
+        * @return string
+        */
+       public static function magicKeyToPem(string $magic): string
+       {
+               \phpseclib3\Crypt\RSA::addFileFormat(Magic::class);
+
+               return (string) PublicKeyLoader::load($magic);
        }
 }