102        if ( empty($secret) ) {
 
  103            throw new Exception(
'You must provide a secret key');
 
  105        $this->_secret = $secret;
 
  107            throw new Exception(
'Config must be an array');
 
  110            if ( isset(
$config[
'high_confidentiality']) ) {
 
  111                $this->_highConfidentiality = 
$config[
'high_confidentiality'];
 
  113            if ( isset(
$config[
'mcrypt_algorithm']) ) {
 
  114                $this->_algorithm = 
$config[
'mcrypt_algorithm'];
 
  116            if ( isset(
$config[
'mcrypt_mode']) ) {
 
  117                $this->_mode = 
$config[
'mcrypt_mode'];
 
  119            if ( isset(
$config[
'enable_ssl']) ) {
 
  120                $this->_ssl = 
$config[
'enable_ssl'];
 
  123        if ( extension_loaded(
'mcrypt') ) {
 
  124            $this->_cryptModule = mcrypt_module_open($this->_algorithm, 
'', $this->_mode, 
'');
 
  125            if ( $this->_cryptModule === 
false ) {
 
  126                throw new Exception(
'Error while loading mcrypt module');
 
  147        $this->_highConfidentiality = (bool)$enable;
 
  170        $this->_ssl = (bool)$enable;
 
  192        return isset($this->_cookies[$cookiename]) ? $this->_cookies[$cookiename] : 
null;
 
  207    public function setCookie( $cookiename, $value, $username, $expire = 0, 
$path = 
'/', $domain = 
'', $secure = 
false, $httponly = 
null ) {
 
  208        $secureValue = extension_loaded(
'mcrypt') ? $this->
_secureCookieValue($value, $username, $expire) : $value;
 
  221    public function deleteCookie( $name, 
$path = 
'/', $domain = 
'', $secure = 
false, $httponly = 
null ) {
 
  223        $this->_cookies[$name] = 
new Slim_Http_Cookie($name, 
'', $expire, 
$path, $domain, $secure, $httponly);
 
  239            if ( extension_loaded(
'mcrypt') ) {
 
  240                $cookieValues = explode(
'|', 
$_COOKIE[$cookiename]);
 
  241                if ( (count($cookieValues) === 4) && ($cookieValues[1] == 0 || $cookieValues[1] >= time()) ) {
 
  242                    $key = hash_hmac(
'sha1', $cookieValues[0] . $cookieValues[1], $this->_secret);
 
  243                    $cookieData = base64_decode($cookieValues[2]);
 
  245                        $data = $this->
_decrypt($cookieData, $key, md5($cookieValues[1]));
 
  249                    if ( $this->_ssl && isset(
$_SERVER[
'SSL_SESSION_ID']) ) {
 
  250                        $verifKey = hash_hmac(
'sha1', $cookieValues[0] . $cookieValues[1] . 
$data . 
$_SERVER[
'SSL_SESSION_ID'], $key);
 
  252                        $verifKey = hash_hmac(
'sha1', $cookieValues[0] . $cookieValues[1] . 
$data, $key);
 
  254                    if ( $verifKey == $cookieValues[3] ) {
 
  262        if ( $deleteIfInvalid ) {
 
  279    public function setClassicCookie( $cookiename, $value, $expire = 0, 
$path = 
'/', $domain = 
'', $secure = 
false, $httponly = 
null ) {
 
  281        if ( $httponly === 
null ) {
 
  282            $this->_cookies[$cookiename] = 
new Slim_Http_Cookie($cookiename, $value, $expire, 
$path, $domain, $secure);
 
  285            $this->_cookies[$cookiename] = 
new Slim_Http_Cookie($cookiename, $value, $expire, 
$path, $domain, $secure, $httponly);
 
  297        return isset(
$_COOKIE[$cookiename]);
 
  316        if ( is_string($expire) ) {
 
  317            $expire = strtotime($expire);
 
  319        $key = hash_hmac(
'sha1', $username . $expire, $this->_secret);
 
  321            $encryptedValue = base64_encode($this->
_encrypt($value, $key, md5($expire)));
 
  323            $encryptedValue = base64_encode($value);
 
  325        if ( $this->_ssl && isset(
$_SERVER[
'SSL_SESSION_ID']) ) {
 
  326            $verifKey = hash_hmac(
'sha1', $username . $expire . $value . 
$_SERVER[
'SSL_SESSION_ID'], $key);
 
  328            $verifKey = hash_hmac(
'sha1', $username . $expire . $value, $key);
 
  330        $result = array($username, $expire, $encryptedValue, $verifKey);
 
  345        mcrypt_generic_init($this->_cryptModule, $key, $iv);
 
  346        $res = @mcrypt_generic($this->_cryptModule, 
$data);
 
  347        mcrypt_generic_deinit($this->_cryptModule);
 
  362        mcrypt_generic_init($this->_cryptModule, $key, $iv);
 
  363        $decryptedData = mdecrypt_generic($this->_cryptModule, 
$data);
 
  364        $res = str_replace(
"\x0", 
'', $decryptedData);
 
  365        mcrypt_generic_deinit($this->_cryptModule);
 
  378        $ivSize = mcrypt_enc_get_iv_size($this->_cryptModule);
 
  379        if ( strlen($iv) > $ivSize ) {
 
  380            $iv = substr($iv, 0, $ivSize);
 
  394        $keySize = mcrypt_enc_get_key_size($this->_cryptModule);
 
  395        if ( strlen($key) > $keySize ) {
 
  396            $key = substr($key, 0, $keySize);
 
An exception for terminatinating execution or to throw for unit testing.
Slim - a micro PHP 5 framework.
_decrypt( $data, $key, $iv)
Decrypt a given data with a given key and a given initialisation vector.
deleteCookie( $name, $path='/', $domain='', $secure=false, $httponly=null)
Delete a cookie.
_secureCookieValue( $value, $username, $expire)
Secure a cookie value.
getResponseCookies()
Get Cookies for Response.
getResponseCookie( $cookiename)
Get Cookie with name for Response.
setCookie( $cookiename, $value, $username, $expire=0, $path='/', $domain='', $secure=false, $httponly=null)
Set a secure cookie.
getHighConfidentiality()
Get the high confidentiality mode.
cookieExists($cookiename)
Verify if a cookie exists.
__construct( $secret, $config=null)
Constructor.
getCookieValue( $cookiename, $deleteIfInvalid=true)
Get a secure cookie value.
_validateKey($key)
Validate key.
setClassicCookie( $cookiename, $value, $expire=0, $path='/', $domain='', $secure=false, $httponly=null)
Send a classic (unsecure) cookie.
_validateIv($iv)
Validate Initialization vector.
setSSL( $enable)
Enable SSL support (not enabled by default)
_encrypt( $data, $key, $iv)
Encrypt a given data with a given key and a given initialisation vector.
setHighConfidentiality( $enable)
Enable or disable cookie data encryption.
getSSL()
Get the SSL status (enabled or disabled?)
if((!isset($_SERVER['DOCUMENT_ROOT'])) OR(empty($_SERVER['DOCUMENT_ROOT']))) $_SERVER['DOCUMENT_ROOT']