summaryrefslogtreecommitdiff
path: root/plugins/OStatus
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/OStatus')
-rw-r--r--plugins/OStatus/classes/Ostatus_profile.php2
-rw-r--r--plugins/OStatus/lib/discovery.php4
-rw-r--r--plugins/OStatus/lib/magicenvelope.php21
3 files changed, 20 insertions, 7 deletions
diff --git a/plugins/OStatus/classes/Ostatus_profile.php b/plugins/OStatus/classes/Ostatus_profile.php
index 4a9aafce1..091056c54 100644
--- a/plugins/OStatus/classes/Ostatus_profile.php
+++ b/plugins/OStatus/classes/Ostatus_profile.php
@@ -1305,7 +1305,7 @@ class Ostatus_profile extends Memcached_DataObject
case Discovery::UPDATESFROM:
$feedUrl = $link['href'];
break;
- case Webfinger::HCARD:
+ case Discovery::HCARD:
$hcardUrl = $link['href'];
break;
default:
diff --git a/plugins/OStatus/lib/discovery.php b/plugins/OStatus/lib/discovery.php
index 1ab6e51bd..388df0a28 100644
--- a/plugins/OStatus/lib/discovery.php
+++ b/plugins/OStatus/lib/discovery.php
@@ -111,6 +111,10 @@ class Discovery
}
public static function getService($links, $service) {
+ if (!is_array($links)) {
+ return false;
+ }
+
foreach ($links as $link) {
if ($link['rel'] == $service) {
return $link;
diff --git a/plugins/OStatus/lib/magicenvelope.php b/plugins/OStatus/lib/magicenvelope.php
index c642af548..457c0fba2 100644
--- a/plugins/OStatus/lib/magicenvelope.php
+++ b/plugins/OStatus/lib/magicenvelope.php
@@ -52,12 +52,17 @@ class MagicEnvelope
{
$disco = new Discovery();
- $xrd = $disco->lookup($signer_uri);
- if ($link = Discovery::getService($xrd->links, Magicsig::PUBLICKEYREL)) {
- list($type, $keypair) = explode(';', $link['href']);
- return $keypair;
+ try {
+ $xrd = $disco->lookup($signer_uri);
+ } catch (Exception $e) {
+ return false;
+ }
+ if ($xrd->links) {
+ if ($link = Discovery::getService($xrd->links, Magicsig::PUBLICKEYREL)) {
+ list($type, $keypair) = explode(';', $link['href']);
+ return $keypair;
+ }
}
-
throw new Exception('Unable to locate signer public key');
}
@@ -70,7 +75,11 @@ class MagicEnvelope
throw new Exception("Unable to determine entry author.");
}
- $signature_alg = Magicsig::fromString($this->getKeyPair($signer_uri));
+ $keypair = $this->getKeyPair($signer_uri);
+ if (!$keypair) {
+ throw new Exception("Unable to retrive keypair for ". $signer_uri);
+ }
+ $signature_alg = Magicsig::fromString($keypair);
$armored_text = base64_encode($text);
return array(