function decode_ping($ping, $varify_signature = true) { $parsed_xml = @simplexml_load_string($ping); if(!$parsed_xml) throw new malformed_xml_exception(); if(!preg_match("/[0-9]+\.[0-9]+/", $parsed_xml->protocol_version)) throw new invalid_protocol_version_exception(); if($parsed_xml->protocol_version > PROTOCOL_VERSION) throw new messages_from_the_future_exception(); // Decode $parsed_xml->user_pub_key = base64_decode($parsed_xml->user_pub_key); $parsed_xml->type = base64_decode($parsed_xml->type); $parsed_xml->user = base64_decode($parsed_xml->user); $parsed_xml->data = base64_decode($parsed_xml->data); validate_pub_key($parsed_xml->user_pub_key); // Varify signature if($varify_signature == true) { $this->varify_ping_signature($parsed_xml, $parsed_xml->user_pub_key); } // Validate data if(!preg_match("/[a-zA-Z]+/", $parsed_xml->type)) throw new exception("Type is invalid"); validate_username($parsed_xml->user); return $parsed_xml; }
function test_validate_pub_key_invalid() { $this->setExpectedException('invalid_public_key_exception'); validate_pub_key('invalid_public_key'); }
function create_follower($id, $remote_url, $remote_name, $remote_profile, $remote_avatar, $pub_key, $relation_pingback, $message_pingback) { $users = instance_model('users'); $user = $users->verify_user_id($id); validate_pub_key($pub_key); $pub_key = base64_encode($pub_key); validate_url($remote_url); validate_username($remote_name); validate_url($remote_profile); validate_url($remote_avatar); validate_url($relation_pingback); validate_url($message_pingback); $query = "INSERT INTO `followers` (`User_ID`, `Remote_URL`, `Remote_name`, `Remote_profile`, `Remote_avatar`, `Remote_pub_key`, `Relation_pingback`, `Message_pingback`) VALUES ('@v', '@v', '@v', '@v', '@v', '@v', '@v', '@v')"; $this->query($query, $id, $remote_url, $remote_name, $remote_profile, $remote_avatar, $pub_key, $relation_pingback, $message_pingback); }