Exemple #1
0
function Auth_OpenID_associate($qs, $assoc_secret, $assoc_handle)
{
    $query_data = Auth_OpenID_parse($qs);
    assert(count($query_data) == 6 || count($query_data) == 4);
    assert($query_data['openid.mode'] == 'associate');
    assert($query_data['openid.assoc_type'] == 'HMAC-SHA1');
    assert($query_data['openid.session_type'] == 'DH-SHA1');
    $reply_dict = array('assoc_type' => 'HMAC-SHA1', 'assoc_handle' => $assoc_handle, 'expires_in' => '600');
    $dh_args = Auth_OpenID_DiffieHellman::serverAssociate($query_data, $assoc_secret);
    $reply_dict = array_merge($reply_dict, $dh_args);
    return Auth_OpenID_KVForm::fromArray($reply_dict);
}
Exemple #2
0
function Auth_OpenID_associate($qs, $assoc_secret, $assoc_handle)
{
    $query_data = Auth_OpenID_parse($qs);
    assert($query_data['openid.mode'] == 'associate');
    assert($query_data['openid.assoc_type'] == 'HMAC-SHA1');
    $reply_dict = array('assoc_type' => 'HMAC-SHA1', 'assoc_handle' => $assoc_handle, 'expires_in' => '600');
    if (defined('Auth_OpenID_NO_MATH_SUPPORT')) {
        assert(count($query_data) == 2);
        $message = Auth_OpenID_Message::fromPostArgs($query_data);
        $session = Auth_OpenID_PlainTextServerSession::fromMessage($message);
    } else {
        assert(count($query_data) == 6 || count($query_data) == 4);
        assert($query_data['openid.mode'] == 'associate');
        assert($query_data['openid.session_type'] == 'DH-SHA1');
        $message = Auth_OpenID_Message::fromPostArgs($query_data);
        $session = Auth_OpenID_DiffieHellmanSHA1ServerSession::fromMessage($message);
        $reply_dict['session_type'] = 'DH-SHA1';
    }
    $reply_dict = array_merge($reply_dict, $session->answer($assoc_secret));
    return Auth_OpenID_KVForm::fromArray($reply_dict);
}
Exemple #3
0
	/**
	 * Encodes the response to key-value form.  This is a
	 * machine-readable format used to respond to messages which came
	 * directly from the consumer and not through the user-agent.  See
	 * the OpenID specification.
	 */
	function encodeToKVForm()
	{
		return Auth_OpenID_KVForm::fromArray(
		array('mode' => 'error',
                                            'error' => $this->toString()));
	}
 /**
  * Generate a signature for a sequence of (key, value) pairs
  *
  * @access private
  * @param array $pairs The pairs to sign, in order.  This is an
  * array of two-tuples.
  * @return string $signature The binary signature of this sequence
  * of pairs
  */
 function sign($pairs)
 {
     $kv = Auth_OpenID_KVForm::fromArray($pairs);
     /* Invalid association types should be caught at constructor */
     $callback = $this->_macs[$this->assoc_type];
     return call_user_func_array($callback, array($this->secret, $kv));
 }
Exemple #5
0
 function toKVForm()
 {
     // Generate a KVForm string that contains the parameters in
     // this message. This will fail if the message contains
     // arguments outside of the 'openid.' prefix.
     return Auth_OpenID_KVForm::fromArray($this->toArgs());
 }
Exemple #6
0
 function encodeToKVForm()
 {
     return Auth_OpenID_KVForm::fromArray($this->fields);
 }
 function _runTest()
 {
     $serialized = Auth_OpenID_KVForm::fromArray($this->arr);
     $this->assertTrue($serialized === null, 'serialization unexpectedly succeeded');
 }
Exemple #8
0
 /**
  * @access private
  */
 function _makeKVPost($args, $server_url)
 {
     $mode = $args['openid.mode'];
     $pairs = array();
     foreach ($args as $k => $v) {
         $v = urlencode($v);
         $pairs[] = "{$k}={$v}";
     }
     $body = implode("&", $pairs);
     $resp = $this->fetcher->post($server_url, $body);
     if ($resp === null) {
         return null;
     }
     $response = Auth_OpenID_KVForm::toArray($resp->body);
     if ($resp->status == 400) {
         return null;
     } else {
         if ($resp->status != 200) {
             return null;
         }
     }
     return $response;
 }
Exemple #9
0
 /**
  * Generate a signature for a sequence of (key, value) pairs
  *
  * @access private
  * @param array $pairs The pairs to sign, in order.  This is an
  * array of two-tuples.
  * @return string $signature The binary signature of this sequence
  * of pairs
  */
 function sign($pairs)
 {
     $kv = Auth_OpenID_KVForm::fromArray($pairs);
     return Auth_OpenID_HMACSHA1($this->secret, $kv);
 }