return FALSE;
}
+ $xml = $this->createMagicEnv($xml);
+
$headers = array('Content-type: application/atom+xml');
try {
}
- public function createMagicEnv($text, $userid)
+ public function createMagicEnv($text)
{
+ $magic_env = new MagicEnvelope();
+ // TODO: Should probably be getting the signer uri as an argument?
+ $signer_uri = $magic_env->getAuthor($text);
+ $env = $magic_env->signMessage($text, 'application/atom+xml', $signer_uri);
+
+ return $magic_env->unfold($env);
}
- public function verifyMagicEnv($env)
+ public function verifyMagicEnv($dom)
{
+ $magic_env = new MagicEnvelope();
+
+ $env = $magic_env->fromDom($dom);
-
+ return $magic_env->verify($env);
}
}
common_log(LOG_DEBUG, "Got invalid Salmon post: $xml");
$this->clientError(_m('Salmon post must be an Atom entry.'));
}
- // XXX: check the signature
+ // Check the signature
+ $salmon = new Salmon;
+ if (!$salmon->verifyMagicEnv($dom)) {
+ common_log(LOG_DEBUG, "Salmon signature verification failed.");
+ $this->clientError(_m('Salmon signature verification failed.'));
+ }
+
$this->act = new Activity($dom->documentElement);
return true;
}