Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message)
- Pages are now stored with an extra metadata field called page_format which is "wikitext" or "xhtml"
- New $flags parameter + RENDER_* constants added that control RenderMan::render() behavior
- Several other changes:
* Added a sprite API for Javascript and made editor use sprites when possible
* Removed a number of config options from the default install schema, replaced with second parameter to getConfig() calls
* MessageBox in editor mostly replaced with miniPrompt
* A few bugfixes related to password changes (registration didn't even work)
* Rewrote the bitfield compression algorithm used to serialize allowed MIME types
* Fixed some typos in language files and strings
* Fixed a Text_Wiki bug in Heading parser
<?php
/*
* Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between
* Version 1.1.6 (Caoineag beta 1)
* Copyright (C) 2006-2008 Dan Fuhry
* hmac.php - HMAC cryptographic functions
*
* This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for details.
*/
function hmac_gen_padding($val, $len = 32)
{
$ret = array();
for ( $i = 0; $i < $len; $i++ )
{
$ret[] = $val;
}
return $ret;
}
function hmac_core($message, $key, $hashfunc)
{
static $block_sizes = array();
if ( !isset($block_sizes[$hashfunc]) )
{
$block_sizes[$hashfunc] = strlen($hashfunc(''))/2;
}
$blocksize = $block_sizes[$hashfunc];
$ipad = hmac_gen_padding(0x5c, $blocksize);
$opad = hmac_gen_padding(0x36, $blocksize);
if ( strlen($key) != ( $blocksize * 2 ) )
$key = $hashfunc($key);
$key = hmac_hexbytearray($key);
for ( $i = 0; $i < count($key); $i++ )
{
$ipad[$i] = $ipad[$i] ^ $key[$i];
$opad[$i] = $opad[$i] ^ $key[$i];
}
return $hashfunc(hmac_bytearraytostring($opad) . $hashfunc(hmac_bytearraytostring($ipad) . $message));
}
function hmac_hexbytearray($val)
{
$val = hexdecode($val);
return hmac_bytearray($val);
}
function hmac_bytearray($val)
{
$val = str_split($val, 1);
foreach ( $val as &$char )
{
$char = ord($char);
}
return $val;
}
function hmac_bytearraytostring($val)
{
foreach ( $val as &$char )
{
$char = chr($char);
}
return implode('', $val);
}
function hmac_md5($message, $key)
{
return hmac_core($message, $key, 'md5');
}
function hmac_sha1($message, $key)
{
return hmac_core($message, $key, 'sha1');
}
function hmac_sha256($message, $key)
{
require_once(ENANO_ROOT . '/includes/math.php');
require_once(ENANO_ROOT . '/includes/diffiehellman.php');
return hmac_core($message, $key, 'sha256');
}
?>