Auth_OpenID_DiffieHellmanSHA1ServerSession::getDH PHP Метод

getDH() статический публичный Метод

static public getDH ( $message )
    static function getDH($message)
    {
        $dh_modulus = $message->getArg(Auth_OpenID_OPENID_NS, 'dh_modulus');
        $dh_gen = $message->getArg(Auth_OpenID_OPENID_NS, 'dh_gen');
        if ($dh_modulus === null && $dh_gen !== null || $dh_gen === null && $dh_modulus !== null) {
            if ($dh_modulus === null) {
                $missing = 'modulus';
            } else {
                $missing = 'generator';
            }
            return new Auth_OpenID_ServerError($message, 'If non-default modulus or generator is ' . 'supplied, both must be supplied.  Missing ' . $missing);
        }
        $lib = Auth_OpenID_getMathLib();
        if ($dh_modulus || $dh_gen) {
            $dh_modulus = $lib->base64ToLong($dh_modulus);
            $dh_gen = $lib->base64ToLong($dh_gen);
            if ($lib->cmp($dh_modulus, 0) == 0 || $lib->cmp($dh_gen, 0) == 0) {
                return new Auth_OpenID_ServerError($message, "Failed to parse dh_mod or dh_gen");
            }
            $dh = new Auth_OpenID_DiffieHellman($dh_modulus, $dh_gen);
        } else {
            $dh = new Auth_OpenID_DiffieHellman();
        }
        $consumer_pubkey = $message->getArg(Auth_OpenID_OPENID_NS, 'dh_consumer_public');
        if ($consumer_pubkey === null) {
            return new Auth_OpenID_ServerError($message, 'Public key for DH-SHA1 session ' . 'not found in query');
        }
        $consumer_pubkey = $lib->base64ToLong($consumer_pubkey);
        if ($consumer_pubkey === false) {
            return new Auth_OpenID_ServerError($message, "dh_consumer_public is not base64");
        }
        return array($dh, $consumer_pubkey);
    }

Usage Example

Пример #1
0
	function fromMessage($message)
	{
		$result = Auth_OpenID_DiffieHellmanSHA1ServerSession::getDH($message);

		if (is_a($result, 'Auth_OpenID_ServerError')) {
			return $result;
		} else {
			list($dh, $consumer_pubkey) = $result;
			return new Auth_OpenID_DiffieHellmanSHA256ServerSession($dh,
			$consumer_pubkey);
		}
	}
Auth_OpenID_DiffieHellmanSHA1ServerSession