public function _createNonce($secret, $timeout = 180)
    {
        if (is_string($secret) == false || strlen($secret) < 10) {
            throw new InvalidArgumentException("Missing valid secret");
        }

        $salt = $this->_createSalt(12);

        $lifetime = time() + $timeout;
        $nonce    = $salt . ':' . $lifetime . ':' . hash_hmac( 'sha1', $salt.$lifetime,  $secret );

        return $nonce;
    }