Auth_OpenID_Association::signMessage PHP Method

signMessage() public method

Generate a signature for some fields in a dictionary
public signMessage ( $message ) : string
return string $signature The signature, base64 encoded
    function signMessage($message)
    {
        if ($message->hasKey(Auth_OpenID_OPENID_NS, 'sig') || $message->hasKey(Auth_OpenID_OPENID_NS, 'signed')) {
            // Already has a sig
            return null;
        }
        $extant_handle = $message->getArg(Auth_OpenID_OPENID_NS, 'assoc_handle');
        if ($extant_handle && $extant_handle != $this->handle) {
            // raise ValueError("Message has a different association handle")
            return null;
        }
        $signed_message = $message;
        $signed_message->setArg(Auth_OpenID_OPENID_NS, 'assoc_handle', $this->handle);
        $message_keys = array_keys($signed_message->toPostArgs());
        $signed_list = array();
        $signed_prefix = 'openid.';
        foreach ($message_keys as $k) {
            if (strpos($k, $signed_prefix) === 0) {
                $signed_list[] = substr($k, strlen($signed_prefix));
            }
        }
        $signed_list[] = 'signed';
        sort($signed_list);
        $signed_message->setArg(Auth_OpenID_OPENID_NS, 'signed', implode(',', $signed_list));
        $sig = $this->getMessageSignature($signed_message);
        $signed_message->setArg(Auth_OpenID_OPENID_NS, 'sig', $sig);
        return $signed_message;
    }