/*
Copyright (C) 2000-2001 Dawit Alemayehu <adawit@kde.org>
Copyright (C) 2001 Rik Hemsley (rikkus) <rik@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License (LGPL)
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 or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU Library 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.
RFC 1321 "MD5 Message-Digest Algorithm" Copyright (C) 1991-1992.
RSA Data Security, Inc. Created 1991. All rights reserved.
The QMD5 class is based on a C++ implementation of
"RSA Data Security, Inc. MD5 Message-Digest Algorithm" by
Mordechai T. Abzug, Copyright (c) 1995. This implementation
passes the test-suite as defined in RFC 1321.
The encoding and decoding utilities in QCodecs with the exception of
quoted-printable are based on the java implementation in HTTPClient
package by Ronald Tschal�r Copyright (C) 1996-1999.
The quoted-printable codec as described in RFC 2045, section 6.7. is by
Rik Hemsley (C) 2001.
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "qmdcodec.h"
#define QMD5_S11 7
#define QMD5_S12 12
#define QMD5_S13 17
#define QMD5_S14 22
#define QMD5_S21 5
#define QMD5_S22 9
#define QMD5_S23 14
#define QMD5_S24 20
#define QMD5_S31 4
#define QMD5_S32 11
#define QMD5_S33 16
#define QMD5_S34 23
#define QMD5_S41 6
#define QMD5_S42 10
#define QMD5_S43 15
#define QMD5_S44 21
const char QCodecs::Base64EncMap[64] =
{
0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50,
0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66,
0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E,
0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76,
0x77, 0x78, 0x79, 0x7A, 0x30, 0x31, 0x32, 0x33,
0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x2B, 0x2F
};
const char QCodecs::Base64DecMap[128] =
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3F,
0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B,
0x3C, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E,
0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
0x17, 0x18, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20,
0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,
0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30,
0x31, 0x32, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00
};
const char QCodecs::UUEncMap[64] =
{
0x60, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,
0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F,
0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F,
0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F
};
const char QCodecs::UUDecMap[128] =
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,
0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
const char QCodecs::hexChars[16] =
{
'0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
};
const unsigned int QCodecs::maxQPLineLength = 70;
/******************************** QCodecs ********************************/
// strchr(3) for broken systems.
static int rikFindChar(register const char * _s, const char c)
{
register const char * s = _s;
while (true)
{
if ((0 == *s) || (c == *s)) break; ++s;
if ((0 == *s) || (c == *s)) break; ++s;
if ((0 == *s) || (c == *s)) break; ++s;
if ((0 == *s) || (c == *s)) break; ++s;
}
return s - _s;
}
QCString QCodecs::quotedPrintableEncode(const QByteArray& in, bool useCRLF)
{
QByteArray out;
quotedPrintableEncode (in, out, useCRLF);
return QCString (out.data(), out.size()+1);
}
QCString QCodecs::quotedPrintableEncode(const QCString& str, bool useCRLF)
{
if (str.isEmpty())
return "";
QByteArray in (str.length());
memcpy (in.data(), str.data(), str.length());
return quotedPrintableEncode(in, useCRLF);
}
void QCodecs::quotedPrintableEncode(const QByteArray& in, QByteArray& out, bool useCRLF)
{
out.resize (0);
if (in.isEmpty())
return;
char *cursor;
const char *data;
unsigned int lineLength;
unsigned int pos;
const unsigned int length = in.size();
const unsigned int end = length - 1;
// Reasonable guess for output size when we're encoding
// mostly-ASCII data. It doesn't really matter, because
// the underlying allocation routines are quite efficient,
// but it's nice to have 0 allocations in many cases.
out.resize ((length*12)/10);
cursor = out.data();
data = in.data();
lineLength = 0;
pos = 0;
for (unsigned int i = 0; i < length; i++)
{
unsigned char c (data[i]);
// check if we have to enlarge the output buffer, use
// a safety margin of 16 byte
pos = cursor-out.data();
if (out.size()-pos < 16) {
out.resize(out.size()+4096);
cursor = out.data()+pos;
}
// Plain ASCII chars just go straight out.
if ((c >= 33) && (c <= 126) && ('=' != c))
{
*cursor++ = c;
++lineLength;
}
// Spaces need some thought. We have to encode them at eol (or eof).
else if (' ' == c)
{
if
(
(i >= length)
||
((i < end) && ((useCRLF && ('\r' == data[i + 1]) && ('\n' == data[i + 2]))
||
(!useCRLF && ('\n' == data[i + 1]))))
)
{
*cursor++ = '=';
*cursor++ = '2';
*cursor++ = '0';
lineLength += 3;
}
else
{
*cursor++ = ' ';
++lineLength;
}
}
// If we find a line break, just let it through.
else if ((useCRLF && ('\r' == c) && (i < end) && ('\n' == data[i + 1])) ||
(!useCRLF && ('\n' == c)))
{
lineLength = 0;
if (useCRLF) {
*cursor++ = '\r';
*cursor++ = '\n';
++i;
} else {
*cursor++ = '\n';
}
}
// Anything else is converted to =XX.
else
{
*cursor++ = '=';
*cursor++ = hexChars[c / 16];
*cursor++ = hexChars[c % 16];
lineLength += 3;
}
// If we're approaching the maximum line length, do a soft line break.
if ((lineLength > maxQPLineLength) && (i < end))
{
if (useCRLF) {
*cursor++ = '=';
*cursor++ = '\r';
*cursor++ = '\n';
} else {
*cursor++ = '=';
*cursor++ = '\n';
}
lineLength = 0;
}
}
out.truncate(cursor - out.data());
}
Q
没有合适的资源?快使用搜索试试~ 我知道了~
qt soap 学习webservice 的小例子
5星 · 超过95%的资源 需积分: 41 213 下载量 132 浏览量
2010-09-29
16:28:36
上传
评论 3
收藏 53KB GZ 举报
温馨提示
共47个文件
h:7个
cpp:7个
ui:4个
qt soap 学习webservice 的小例子.值得下下来看看。有源码的
资源推荐
资源详情
资源评论
收起资源包目录
qsoapman-0.4.tar.gz (47个子文件)
qsoapman-0.4
BUGS 58B
bin
qsoapman.kdevses 3KB
qsoapman.kdevelop 4KB
qsoapman.kdevelop.pcs 70KB
templates
h 979B
cpp 979B
CVS
Root 49B
Entries 80B
Repository 19B
google-api-session.xml 1KB
TODO 234B
CVS
Root 49B
Entries 707B
Repository 9B
Doxyfile 9KB
amazon-api-session.xml 2KB
src
filesave.xpm 393B
config.h 1KB
qmdcodec.h 17KB
soapsyntaxhighlighter.h 2KB
src.pro 775B
configdialog.h 1KB
mainsoapwidget.h 4KB
configdialog.cpp 2KB
qmdcodec.cpp 31KB
fileopen.xpm 416B
CVS
Root 49B
Entries 964B
Repository 13B
simpleparameterdialog.ui 13KB
qsoapman.h 2KB
soapsyntaxhighlighter.cpp 5KB
authorizedialog.ui 9KB
main.cpp 1KB
fileprint.xpm 452B
qsoapman.cpp 13KB
configdialogbase.ui 16KB
Makefile 7KB
mainsoapwidget.cpp 11KB
soapwidget.ui 28KB
README 1KB
INSTALL 693B
AUTHORS 88B
Makefile 2KB
ChangeLog 697B
COPYING 18KB
qsoapman.pro 260B
共 47 条
- 1
xgslym
- 粉丝: 1
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
前往页