diff --git a/plugins/OStatus/OStatusPlugin.php b/plugins/OStatus/OStatusPlugin.php index a57074036a..4e2c626244 100644 --- a/plugins/OStatus/OStatusPlugin.php +++ b/plugins/OStatus/OStatusPlugin.php @@ -1320,6 +1320,8 @@ class OStatusPlugin extends Plugin if ($magicsig instanceof Magicsig) { $xrd->links[] = new XML_XRD_Element_Link(Magicsig::PUBLICKEYREL, 'data:application/magic-public-key,'. $magicsig->toString()); + $xrd->links[] = new XML_XRD_Element_Link(Magicsig::DIASPORA_PUBLICKEYREL, + base64_encode($magicsig->exportPublicKey())); } // TODO - finalize where the redirect should go on the publisher diff --git a/plugins/OStatus/classes/Magicsig.php b/plugins/OStatus/classes/Magicsig.php index 289865a97f..be87052ac3 100644 --- a/plugins/OStatus/classes/Magicsig.php +++ b/plugins/OStatus/classes/Magicsig.php @@ -36,6 +36,7 @@ require_once 'Crypt/RSA.php'; class Magicsig extends Managed_DataObject { const PUBLICKEYREL = 'magic-public-key'; + const DIASPORA_PUBLICKEYREL = 'diaspora-public-key'; public $__table = 'magicsig'; @@ -184,6 +185,12 @@ class Magicsig extends Managed_DataObject return 'RSA.' . $mod . '.' . $exp . $private_exp; } + public function exportPublicKey($format=CRYPT_RSA_PUBLIC_FORMAT_PKCS1) + { + $this->publicKey->setPublicKey(); + return $this->publicKey->getPublicKey($format); + } + /** * importKeys will load the object's keypair string, which initiates * loadKey() and configures Crypt_RSA objects.