code: function unpack(body, callback) {
  	   xmlToJs(body, function(err, result) {
  		   if (err) return callback(err);
  		   // Keep a reference to the magic enveloppe
  		   var me = result;
  		   // Decode the activity entry from the enveloppe
  		   var entry = Ostatus.salmon.base64url_decode(result.data);
  		   // Parse the entry XML to JSON
  		   Ostatus.as.parseEntry(entry, function(err, result) {
  			   if (err) return callback(err);
  			   // Keep a reference to the JSON activity
      		   var activity = result;
      		   // We need an actor URI to validate the signature
      		   if (activity.actor == undefined && activity.actor.uri == undefined) {
      			   return callback(new Error("Missing actor URI in activity entry"), false, activity);
      		   }
      		   // Keep a reference to the actor uri
  			   var uri = activity.actor.uri;
  			   // Webfinger to retrieve the actor public key
  			   Ostatus.webfinger.lookup(uri, function(err, result) {
  				  if (err) return callback(err, false, activity);
  				  // Lookup the key from the webfinger JRD
  				  var key = _grabKey(result);
  				  if (!key) return callback(new Error("Could not find a key in user XRD"), false, activity);
  				  // We need the second part of the key
  				  key = key.href.split(',');
  				  // Verify the signature (synchronous)
  				  var result = Ostatus.salmon.verify_signature(me, key[1]);
  				  return callback(false, result, activity);
  			   });
  		   });
  	   });
  }
docs: /*
  Parse an incoming salmon message, and attempt to verify
  the signature.