wiring in magicsig

This commit is contained in:
James Walker 2010-02-22 09:05:52 -05:00
parent e0388cc1d3
commit 2f65fa646a
2 changed files with 21 additions and 4 deletions

View File

@ -34,6 +34,8 @@ class Salmon
return FALSE; return FALSE;
} }
$xml = $this->createMagicEnv($xml);
$headers = array('Content-type: application/atom+xml'); $headers = array('Content-type: application/atom+xml');
try { try {
@ -52,16 +54,25 @@ class Salmon
} }
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);
} }
} }

View File

@ -54,8 +54,14 @@ class SalmonAction extends Action
common_log(LOG_DEBUG, "Got invalid Salmon post: $xml"); common_log(LOG_DEBUG, "Got invalid Salmon post: $xml");
$this->clientError(_m('Salmon post must be an Atom entry.')); $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); $this->act = new Activity($dom->documentElement);
return true; return true;
} }