コード例 #1
0
ファイル: jabber_ibb.cpp プロジェクト: Seldom/miranda-ng
BOOL CJabberProto::OnIbbRecvdData(const TCHAR *data, const TCHAR *sid, const TCHAR *seq)
{
    JABBER_LIST_ITEM *item = ListGetItemPtr(LIST_FTRECV, sid);
    if (item == NULL) return FALSE;

    WORD wSeq = (WORD)_ttoi(seq);
    if (wSeq != item->jibb->wPacketId) {
        if (item->jibb->hEvent)
            SetEvent(item->jibb->hEvent);
        return FALSE;
    }

    item->jibb->wPacketId++;

    unsigned length;
    ptrA decodedData((char*)mir_base64_decode( _T2A(data), &length));
    if (decodedData == NULL)
        return FALSE;

    (this->*item->jibb->pfnRecv)(NULL, item->ft, decodedData, length);
    item->jibb->dwTransferredSize += (DWORD)length;
    return TRUE;
}
コード例 #2
0
TagLib::ByteVector TagLib::DecodeBase64(const TagLib::ByteVector& input)
{
	SFB::CFError error;
	SFB::SecTransform decoder(SecDecodeTransformCreate(kSecBase64Encoding, &error));
    if(!decoder) {
		LOGGER_WARNING("org.sbooth.AudioEngine", "SecDecodeTransformCreate failed: " << error);
		return {};
	}

	SFB::CFData sourceData(CFDataCreateWithBytesNoCopy(kCFAllocatorDefault, (const UInt8 *)input.data(), (CFIndex)input.size(), kCFAllocatorNull));
	if(!sourceData)
		return {};

    if(!SecTransformSetAttribute(decoder, kSecTransformInputAttributeName, sourceData, &error)) {
		LOGGER_WARNING("org.sbooth.AudioEngine", "SecTransformSetAttribute failed: " << error);
		return {};
	}

	SFB::CFData decodedData((CFDataRef)SecTransformExecute(decoder, &error));
	if(!decodedData)
		return {};

	return {(const char *)CFDataGetBytePtr((CFDataRef)decodedData), (size_t)CFDataGetLength((CFDataRef)decodedData)};
}