示例#1
0
size_t urlstr2bin(const char *str, BYTE *bindata, size_t maxsize)
{
	int		len = (int)strlen(str);
	char	*b64 = new char [len + 4];

	strcpy(b64, str);
	for (char *s=b64; *s; s++) {
		switch (*s) {
		case '-': *s = '+'; break;
		case '_': *s = '/'; break;
		}
	}
	if (b64[len-1] != '\n' && (len % 4) && b64[len-1] != '=') {
		sprintf(b64 + len, "%.*s", int(4 - (len % 4)), "===");
	}

	size_t	size = b64str2bin(b64, bindata, maxsize);
	delete [] b64;

	return	size;
}
示例#2
0
BOOL urlstr2bin(const char *str, BYTE *bindata, int maxlen, int *len)
{
	ssize_t	size = strlen(str);
	char	*b64 = new char [size + 4];

	strcpy(b64, str);
	for (char *s=b64; *s; s++) {
		switch (*s) {
		case '-': *s = '+'; break;
		case '_': *s = '/'; break;
		}
	}
	if (b64[size-1] != '\n' && (size % 4) && b64[size-1] != '=') {
		sprintf(b64 + size -1, "%.*s", 4 - (size % 4), "===");
	}

	b64str2bin(b64, bindata, maxlen, len);

	free(b64);
	return	TRUE;
}
示例#3
0
size_t b64str2bin_revendian(const char *s, BYTE *bindata, size_t maxsize)
{
	size_t	size = b64str2bin(s, bindata, maxsize);
	rev_order(bindata, size);
	return	size;
}
示例#4
0
BOOL b64str2bin_revendian(const char *buf, BYTE *bindata, int maxlen, int *len)
{
	if (!b64str2bin(buf, bindata, maxlen, len)) return FALSE;
	rev_order(bindata, *len);
	return	TRUE;
}