]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
wiring in magicsig
authorJames Walker <walkah@walkah.net>
Mon, 22 Feb 2010 14:05:52 +0000 (09:05 -0500)
committerJames Walker <walkah@walkah.net>
Mon, 22 Feb 2010 14:05:52 +0000 (09:05 -0500)
plugins/OStatus/lib/salmon.php
plugins/OStatus/lib/salmonaction.php

index df17a70068faa7025789bf5f08b10f0abe8830a5..53925dc3f449687aa15cdcfe2462a3294bc98c09 100644 (file)
@@ -34,6 +34,8 @@ class Salmon
             return FALSE;
         }
 
+        $xml = $this->createMagicEnv($xml);
+        
         $headers = array('Content-type: application/atom+xml');
 
         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);
     }
 }
index 4aba20cc40d13dc42cffa40bb354332409b7ed62..09a042975dd9a3af0660df9d65c3f9c18ef6991e 100644 (file)
@@ -54,8 +54,14 @@ class SalmonAction extends Action
             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;
     }