Sign certain keys in a message
$association - object loaded from openid_association or openid_server_association table:
$message_array - array of entire message about to be sent:
$keys_to_sign - keys in the message to include in signature (without: 'openid.' appended)
function _openid_signature($association, $message_array, $keys_to_sign) {
$signature = '';
$sign_data = array();
foreach ($keys_to_sign as $key) {
if (isset($message_array['openid.' . $key])) {
$sign_data[$key] = $message_array['openid.' . $key];
}
}
$message = _openid_create_message($sign_data);
$secret = base64_decode($association->mac_key);
$signature = _openid_hmac($secret, $message);
return base64_encode($signature);
}