亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? baseutils.cpp

?? funambol windows mobile plugin source code, the source code is taken from the funambol site
?? CPP
字號:
/*
 * Copyright (C) 2003-2007 Funambol, Inc.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY, TITLE, NONINFRINGEMENT or FITNESS FOR A PARTICULAR
 * PURPOSE.  See the GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
 * 02111-1307  USA
 */

#include "base/fscapi.h"
#include "base/util/utils.h"

/*
 * Deletes the given char[] buffer if it is not NULL
 * and sets the pointer to NULL
 *
 */
void safeDelete(char* p[]) {
    if (*p) {
        delete [] *p; *p = NULL;
    }
}

void safeDel(char** p) {
    if (*p) {
        delete [] *p; *p = NULL;
    }
}

char* stringdup(const char* s, size_t len)
{
    if ( !s )
        return NULL;

    int l = (len==STRINGDUP_NOLEN)?strlen(s):len;

    char* news = new char[l+1];

    strncpy(news, s, l);
    news[l]=0;

    return news;
}

WCHAR* wstrdup(const WCHAR* s, size_t len)
{
    if ( !s )
        return NULL;

    int l = (len==STRINGDUP_NOLEN)?wcslen(s):len;

    WCHAR* news = new WCHAR[l+1];

    wcsncpy(news, s, l);
    news[l]=0;

    return news;
}

char* strtolower(const char *s)
{
    char* l = NULL;
    char* p = NULL;

    for(l = p = stringdup(s); *p; ++p) {
        *p=tolower(*p);
    }
    return l;
}

char* strtoupper(const char *s)
{
    char* u = NULL;
    char* p = NULL;

    for(u = p = stringdup(s); *p; ++p) {
        *p=toupper(*p);
    }
    return u;
}


WCHAR* wcstolower(const WCHAR *s)
{
    WCHAR* l = NULL;
    WCHAR* p = NULL;

    for(l = p = wstrdup(s); *p; ++p) {
        *p=towlower(*p);
    }

    return l;
}

WCHAR* wcstoupper(const WCHAR *s)
{
    WCHAR* u = NULL;
    WCHAR* p = NULL;

    for(u = p = wstrdup(s); *p; ++p) {
        *p=towupper(*p);
    }

    return u;
}

/**
 * find a substring from the end, with optional string lenght
 */
const char *brfind(const char *s1, const char *s2, size_t len)
{
	const char *sc1, *sc2, *ps1;

    if (!s1)
        return NULL;

	if (*s2 == '\0')
		return s1;

    if(len < strlen(s1)){
        ps1 = s1 + len;
    }
    else {
	    ps1 = s1 + strlen(s1);
    }

	while(ps1 > s1) {
		--ps1;
        for (sc1 = ps1, sc2 = s2; *sc1 != *sc2; sc1++, sc2++) {
			if (*sc2 == '\0')
				return (ps1);
        }
	}
	return NULL;
}


void timestampToAnchor(unsigned long timestamp, char anchor[21]) {
    sprintf(anchor, "%lu", timestamp);
}

unsigned long anchorToTimestamp(const char* anchor) {
    unsigned long timestamp;

    return sscanf(anchor, "%lu", &timestamp) == 1 ? timestamp : 0;
}

bool wcscmpIgnoreCase(const char* p, const char* q) {

    bool ret = false;
    if (p == NULL || q == NULL)
        return ret;

    unsigned int lenp = 0, lenq = 0;
    lenp = strlen(p);
    lenq = strlen(q);

    if (lenp != lenq) {
        return ret;
    }

    for (unsigned int i = 0; i < lenp; i++) {
        if ( towlower(p[i]) != towlower(q[i]))
            return ret;
    }
    ret = true;
    return ret;
}


char* itow(int i) {
    char* ret = new char[10];
    memset(ret, 0, 10*sizeof(char) );
    sprintf(ret, "%i", i);
    return ret;
}

char* ltow(long i) {
    char* ret = new char[20];
    memset(ret, 0, 20*sizeof(char));
    sprintf(ret, "%i", i);
    return ret;
}


int round(double val) {
    int v = (int)val;
    return ((val - v) > 0.5) ? v+1 : v;
}



/*
* It implements algo for authentication with MD5 method.
* It computes digest token according with follow:
* Let H   : MD5 Function represents by calculateMD5 method
* Let B64 : Base64 encoding Function represents by encodeBase64 method
* Data: H (B64(H(username:password)):nonce)
*/

char* MD5CredentialData(const char* userName, const char* password, const char* nonce) {

    int len = 0, lenNonce = 0, totLen = 0;

    char cnonce      [64];
    char digest      [16];
    char base64      [64];
    char base64Nonce [64];
    char token      [512];
    char* md5Digest = NULL;
    char ch          [3];
    char* dig = NULL;

    memset(digest,      0, 16);
    memset(base64,      0, 64);
    memset(base64Nonce, 0, 64);
    memset(cnonce,      0, 64);
    memset(token,       0, 512);
    sprintf(ch, ":");

    sprintf(token, "%s:%s", userName, password);
    len = strlen(token);

    // H(username:password)
    calculateMD5((void*)token, len, digest);

    // B64(H(username:password))
    len = b64_encode((char*)base64, digest, 16);


    // decode nonce from stored base64 to bin
    strcpy(cnonce, nonce);
    lenNonce = b64_decode(cnonce, cnonce);

    memcpy(base64Nonce, base64, len);
    memcpy(&base64Nonce[len], ch, 1);
    memcpy(&base64Nonce[len+1], cnonce, lenNonce);

    totLen = len + 1 + lenNonce;

    memset(digest, 0, 16);
    calculateMD5(base64Nonce, totLen, digest);
    b64_encode(base64, digest, 16);

    // return new value
    md5Digest = stringdup(base64);
    return md5Digest;
}



char* calculateMD5(const void* token, int len, char* wdigest) {

    //algo for md5 digest
    char dig [18];
    md5_state_t state;
    md5_byte_t digest[16];
    int di;
    char* ret = NULL;

    md5_init  (&state);
    md5_append(&state, (const md5_byte_t *)token, len);
    md5_finish(&state, digest);
    for (di = 0; di < 16; ++di) {
        sprintf(dig + di, "%c", digest[di]);
    }
    if (wdigest == NULL) {
        ret = new char[16];
        memcpy(ret, dig, 16);
        return ret;
    } else {
        memcpy(wdigest, dig, 16);
        return NULL;
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
8x福利精品第一导航| 成人亚洲一区二区一| 自拍av一区二区三区| 91国产免费观看| 日韩精品一区二| 欧美人妖巨大在线| 欧美自拍偷拍一区| 欧美日韩精品欧美日韩精品一综合| 91一区二区三区在线播放| 成人综合激情网| 91天堂素人约啪| 欧美日韩久久不卡| 69堂国产成人免费视频| 日韩视频在线观看一区二区| 日韩免费视频一区二区| 正在播放亚洲一区| 久久先锋影音av鲁色资源| 国产肉丝袜一区二区| 成人免费小视频| 欧美顶级少妇做爰| 久久天堂av综合合色蜜桃网| 欧美激情资源网| 亚洲大片免费看| 国产精品羞羞答答xxdd| 99re热视频精品| 欧美一区二区在线看| 久久这里只精品最新地址| 亚洲特黄一级片| 日韩激情视频在线观看| 懂色中文一区二区在线播放| 欧美狂野另类xxxxoooo| 精品国产免费人成在线观看| 亚洲图片激情小说| 免费看精品久久片| av电影天堂一区二区在线| 欧美男男青年gay1069videost | 久久精品国产精品亚洲精品| 91精品啪在线观看国产60岁| 肉色丝袜一区二区| 国产精品资源在线观看| 色猫猫国产区一区二在线视频| 欧美另类一区二区三区| 国产精品久久久久久久久久久免费看| 亚洲综合久久av| 夫妻av一区二区| 91精品国产乱码| 一区二区三区中文字幕在线观看| 美国毛片一区二区| 欧美性大战久久久久久久| 久久精品日韩一区二区三区| 午夜精品久久久久久久99樱桃| 国产经典欧美精品| 欧美军同video69gay| 国产精品国产三级国产专播品爱网 | 国产喷白浆一区二区三区| 亚洲视频一区在线| 高清国产一区二区三区| 777奇米成人网| 亚洲国产欧美日韩另类综合| 波多野结衣在线一区| 久久青草欧美一区二区三区| 美女性感视频久久| 欧美伦理视频网站| 五月开心婷婷久久| 欧美影院一区二区三区| 一二三区精品视频| 色欧美日韩亚洲| 亚洲狼人国产精品| 91香蕉视频污| 亚洲私人黄色宅男| 99re免费视频精品全部| 亚洲欧洲韩国日本视频| 99久久久无码国产精品| 最新不卡av在线| 一本一本大道香蕉久在线精品 | 欧美性猛片aaaaaaa做受| 国产精品你懂的在线欣赏| 亚洲高清视频中文字幕| 色婷婷av久久久久久久| 中文字幕+乱码+中文字幕一区| 国产一区二区在线观看免费 | 成人美女视频在线看| 国产欧美1区2区3区| 丰满少妇久久久久久久| 国产精品三级电影| 91麻豆精东视频| 亚洲一区影音先锋| 欧美精品高清视频| 久久se精品一区二区| 精品国产网站在线观看| 国产不卡视频在线播放| 日韩美女久久久| 欧美日韩国产a| 国产综合久久久久久鬼色| 日本一区二区三区电影| 日本韩国精品在线| 国内不卡的二区三区中文字幕| 国产欧美一区二区精品婷婷| 国产麻豆视频一区二区| 国产三级精品三级| 色综合久久综合网| 日欧美一区二区| 国产无人区一区二区三区| 91香蕉国产在线观看软件| 午夜精品久久久久久久99水蜜桃| 精品福利在线导航| eeuss鲁片一区二区三区在线观看| 一区二区免费看| 日韩欧美成人一区| 97精品电影院| 久久草av在线| 亚洲特级片在线| 欧美xxxxx裸体时装秀| 色综合天天在线| 国产在线精品不卡| 亚洲一区二区精品视频| 国产色一区二区| 91精品国产色综合久久不卡电影| 成人动漫视频在线| 欧美激情综合五月色丁香| av男人天堂一区| 老司机精品视频在线| 亚洲精品日产精品乱码不卡| 精品处破学生在线二十三| 欧美色窝79yyyycom| 国产成人在线看| 日本免费新一区视频| 亚洲综合在线视频| 国产精品久久一卡二卡| 精品福利二区三区| 欧美一区二区视频在线观看| 在线观看免费一区| 日本乱人伦一区| 成人免费av资源| 国产福利91精品| 久久电影国产免费久久电影 | 午夜电影久久久| 亚洲激情自拍偷拍| **欧美大码日韩| 欧美激情在线看| 亚洲国产电影在线观看| 日本欧美在线看| 亚洲大片精品永久免费| 亚洲精品国产高清久久伦理二区| 中文字幕精品三区| 中文字幕巨乱亚洲| 国产精品女主播在线观看| 欧美激情一区二区| 国产婷婷色一区二区三区在线| 精品久久久久久久久久久久久久久久久 | 日韩成人dvd| 丝袜美腿亚洲一区| 日韩电影在线一区二区三区| 亚洲成人午夜电影| 亚洲成人免费看| 日韩电影一区二区三区| 日日摸夜夜添夜夜添亚洲女人| 亚洲成av人片一区二区梦乃 | 日韩欧美www| 国产调教视频一区| 久久久久国产精品免费免费搜索| 久久免费国产精品| 国产精品色一区二区三区| 中文字幕一区二区三区不卡| 中文字幕在线观看不卡| 一区二区三区日韩| 日韩av网站免费在线| 国产一区二区三区不卡在线观看| 粉嫩高潮美女一区二区三区| 色婷婷精品大在线视频| 91精品国模一区二区三区| 久久综合五月天婷婷伊人| 中文字幕在线播放不卡一区| 亚洲国产成人av| 久久91精品国产91久久小草| 成人三级在线视频| 欧美日韩一区不卡| 亚洲精品一区二区三区香蕉| 国产女同互慰高潮91漫画| 一区二区三区欧美亚洲| 精品一区二区三区在线观看国产| www.亚洲精品| 日韩一级视频免费观看在线| 国产片一区二区三区| 五月婷婷久久丁香| www.色精品| 日韩一区二区三区电影在线观看| 亚洲国产精品国自产拍av| 亚州成人在线电影| 成人短视频下载| 日韩色在线观看| 一区二区三区四区乱视频| 国产资源精品在线观看| 欧美午夜精品久久久久久孕妇| 久久精品视频免费| 日韩黄色一级片| 在线免费观看成人短视频| 亚洲精品在线网站| 日韩精品国产精品| 欧美伊人久久久久久午夜久久久久|