TRACE("bytes is %d, pad bytes is %d\n", bytes, pad_bytes);
needed = bytes + pad_bytes + 1;
- needed += (needed / 64 + 1) * strlen(sep);
+ if (sep)
+ needed += (needed / 64 + 1) * strlen(sep);
if (needed > *out_len)
{
i = 0;
while (div > 0)
{
- if (i && i % 64 == 0)
+ if (sep && i && i % 64 == 0)
{
strcpy(ptr, sep);
ptr += strlen(sep);
*ptr++ = '=';
break;
}
- strcpy(ptr, sep);
+ if (sep)
+ strcpy(ptr, sep);
return ERROR_SUCCESS;
}
{
static const char crlf[] = "\r\n", lf[] = "\n";
BOOL ret = TRUE;
- LPCSTR header = NULL, trailer = NULL, sep = NULL;
+ LPCSTR header = NULL, trailer = NULL, sep;
DWORD charsNeeded;
if (dwFlags & CRYPT_STRING_NOCR)
sep = lf;
+ else if (dwFlags & CRYPT_STRING_NOCRLF)
+ sep = NULL;
else
sep = crlf;
- switch (dwFlags & 0x7fffffff)
+ switch (dwFlags & 0x0fffffff)
{
case CRYPT_STRING_BASE64:
/* no header or footer */
charsNeeded = 0;
encodeBase64A(pbBinary, cbBinary, sep, NULL, &charsNeeded);
- charsNeeded += strlen(sep);
+ if (sep)
+ charsNeeded += strlen(sep);
if (header)
charsNeeded += strlen(header) + strlen(sep);
if (trailer)
{
strcpy(ptr, header);
ptr += strlen(ptr);
- strcpy(ptr, sep);
- ptr += strlen(sep);
+ if (sep)
+ {
+ strcpy(ptr, sep);
+ ptr += strlen(sep);
+ }
}
encodeBase64A(pbBinary, cbBinary, sep, ptr, &size);
ptr += size - 1;
{
strcpy(ptr, trailer);
ptr += strlen(ptr);
- strcpy(ptr, sep);
- ptr += strlen(sep);
+ if (sep)
+ {
+ strcpy(ptr, sep);
+ ptr += strlen(sep);
+ }
}
*pcchString = charsNeeded - 1;
}
return FALSE;
}
- switch (dwFlags & 0x7fffffff)
+ switch (dwFlags & 0x0fffffff)
{
case CRYPT_STRING_BINARY:
encoder = EncodeBinaryToBinaryA;
case CRYPT_STRING_HEXASCII:
case CRYPT_STRING_HEXADDR:
case CRYPT_STRING_HEXASCIIADDR:
- FIXME("Unimplemented type %d\n", dwFlags & 0x7fffffff);
+ FIXME("Unimplemented type %d\n", dwFlags & 0x0fffffff);
/* fall through */
default:
SetLastError(ERROR_INVALID_PARAMETER);
TRACE("bytes is %d, pad bytes is %d\n", bytes, pad_bytes);
needed = bytes + pad_bytes + 1;
- needed += (needed / 64 + 1) * strlenW(sep);
+ if (sep)
+ needed += (needed / 64 + 1) * strlenW(sep);
if (needed > *out_len)
{
i = 0;
while (div > 0)
{
- if (i && i % 64 == 0)
+ if (sep && i && i % 64 == 0)
{
strcpyW(ptr, sep);
ptr += strlenW(sep);
*ptr++ = '=';
break;
}
- strcpyW(ptr, sep);
+ if (sep)
+ strcpyW(ptr, sep);
return ERROR_SUCCESS;
}
{
static const WCHAR crlf[] = { '\r','\n',0 }, lf[] = { '\n',0 };
BOOL ret = TRUE;
- LPCWSTR header = NULL, trailer = NULL, sep = NULL;
+ LPCWSTR header = NULL, trailer = NULL, sep;
DWORD charsNeeded;
if (dwFlags & CRYPT_STRING_NOCR)
sep = lf;
+ else if (dwFlags & CRYPT_STRING_NOCRLF)
+ sep = NULL;
else
sep = crlf;
- switch (dwFlags & 0x7fffffff)
+ switch (dwFlags & 0x0fffffff)
{
case CRYPT_STRING_BASE64:
/* no header or footer */
charsNeeded = 0;
encodeBase64W(pbBinary, cbBinary, sep, NULL, &charsNeeded);
- charsNeeded += strlenW(sep);
+ if (sep)
+ charsNeeded += strlenW(sep);
if (header)
charsNeeded += strlenW(header) + strlenW(sep);
if (trailer)
{
strcpyW(ptr, header);
ptr += strlenW(ptr);
- strcpyW(ptr, sep);
- ptr += strlenW(sep);
+ if (sep)
+ {
+ strcpyW(ptr, sep);
+ ptr += strlenW(sep);
+ }
}
encodeBase64W(pbBinary, cbBinary, sep, ptr, &size);
ptr += size - 1;
{
strcpyW(ptr, trailer);
ptr += strlenW(ptr);
- strcpyW(ptr, sep);
- ptr += strlenW(sep);
+ if (sep)
+ {
+ strcpyW(ptr, sep);
+ ptr += strlenW(sep);
+ }
}
*pcchString = charsNeeded - 1;
}
return FALSE;
}
- switch (dwFlags & 0x7fffffff)
+ switch (dwFlags & 0x0fffffff)
{
case CRYPT_STRING_BASE64:
case CRYPT_STRING_BASE64HEADER:
case CRYPT_STRING_HEXASCII:
case CRYPT_STRING_HEXADDR:
case CRYPT_STRING_HEXASCIIADDR:
- FIXME("Unimplemented type %d\n", dwFlags & 0x7fffffff);
+ FIXME("Unimplemented type %d\n", dwFlags & 0x0fffffff);
/* fall through */
default:
SetLastError(ERROR_INVALID_PARAMETER);