summaryrefslogtreecommitdiff
path: root/plugins/OStatus/lib/salmon.php
diff options
context:
space:
mode:
authorJames Walker <walkah@walkah.net>2010-02-26 14:21:21 -0500
committerJames Walker <walkah@walkah.net>2010-02-26 14:22:49 -0500
commit223ebc765c454e030a49df7e2e1b9cdc2b005fe6 (patch)
tree5fb2eae080db3c9c3136e9fe93503d6932fa6db2 /plugins/OStatus/lib/salmon.php
parent3a7eef1074a80150fd428c73d49bcd4fc1b66e89 (diff)
move signing to take a local actor profile and use local keys
Diffstat (limited to 'plugins/OStatus/lib/salmon.php')
-rw-r--r--plugins/OStatus/lib/salmon.php24
1 files changed, 18 insertions, 6 deletions
diff --git a/plugins/OStatus/lib/salmon.php b/plugins/OStatus/lib/salmon.php
index c59de2a14..6e2459544 100644
--- a/plugins/OStatus/lib/salmon.php
+++ b/plugins/OStatus/lib/salmon.php
@@ -42,14 +42,14 @@ class Salmon
* @param string $xml
* @return boolean success
*/
- public function post($endpoint_uri, $xml)
+ public function post($endpoint_uri, $xml, $actor)
{
if (empty($endpoint_uri)) {
return false;
}
if (!common_config('ostatus', 'skip_signatures')) {
- $xml = $this->createMagicEnv($xml);
+ $xml = $this->createMagicEnv($xml, $actor);
}
$headers = array('Content-Type: application/atom+xml');
@@ -70,15 +70,27 @@ class Salmon
return true;
}
- public function createMagicEnv($text)
+ public function createMagicEnv($text, $actor)
{
+ common_log(LOG_DEBUG, "Got actor as : ". print_r($actor, true));
$magic_env = new MagicEnvelope();
- // TODO: Should probably be getting the signer uri as an argument?
- $signer_uri = $magic_env->getAuthor($text);
+ $user = User::staticGet('id', $actor->id);
+ if ($user->id) {
+ // Use local key
+ $magickey = Magicsig::staticGet('user_id', $user->id);
+ if (!$magickey) {
+ // No keypair yet, let's generate one.
+ $magickey = new Magicsig();
+ $magickey->generate($user->id);
+ }
+ common_log(LOG_DEBUG, "Salmon: Loaded key for ". $user->id);
+ } else {
+ throw new Exception("Salmon invalid actor for signing");
+ }
try {
- $env = $magic_env->signMessage($text, 'application/atom+xml', $signer_uri);
+ $env = $magic_env->signMessage($text, 'application/atom+xml', $magickey->toString());
} catch (Exception $e) {
common_log(LOG_ERR, "Salmon signing failed: ". $e->getMessage());
return $text;