MCPcopy Create free account
hub / github.com/Tripwire/tripwire-open-source / tss_encode_digit_base64

Function tss_encode_digit_base64

src/tripwire/mailmessage.cpp:700–756  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

698}
699
700void tss_encode_digit_base64(const byte_t*& pchSrc, size_t& nchSrcLeft, byte_t*& pchBuf, size_t& nchBufLeft)
701{
702 // NOTE:RAD -- Redundant and ugly but very fast!!
703
704 ASSERT(nchBufLeft > 4); // One for NULL
705
706 switch (nchSrcLeft)
707 {
708 case 0:
709 {
710 ASSERTMSG(false, "Invalid call to encode_base64_digit!");
711 break;
712 }
713 case 1:
714 {
715 int ch1 = int(*pchSrc++ & 0xFF);
716
717 *pchBuf++ = _abBase64[(ch1 & 0xFC) >> 2];
718 *pchBuf++ = _abBase64[(ch1 & 0x03) << 4];
719 *pchBuf++ = '=';
720 *pchBuf++ = '=';
721
722 nchSrcLeft = 0; // NOTE:
723 break;
724 }
725 case 2:
726 {
727 int ch1 = int(*pchSrc++ & 0xFF);
728 int ch2 = int(*pchSrc++ & 0xFF);
729
730 *pchBuf++ = _abBase64[((ch1 & 0xFC) >> 2)];
731 *pchBuf++ = _abBase64[((ch1 & 0x03) << 4) | ((ch2 & 0xF0) >> 4)];
732 *pchBuf++ = _abBase64[((ch2 & 0x0F) << 2)];
733 *pchBuf++ = '=';
734
735 nchSrcLeft = 0; // NOTE:
736 break;
737 }
738 default:
739 {
740
741 int ch1 = int(*pchSrc++ & 0xFF);
742 int ch2 = int(*pchSrc++ & 0xFF);
743 int ch3 = int(*pchSrc++ & 0xFF);
744
745 *pchBuf++ = _abBase64[((ch1 & 0xFC) >> 2)];
746 *pchBuf++ = _abBase64[((ch1 & 0x03) << 4) | ((ch2 & 0xF0) >> 4)];
747 *pchBuf++ = _abBase64[((ch2 & 0x0F) << 2) | ((ch3 & 0xC0) >> 6)];
748 *pchBuf++ = _abBase64[(ch3 & 0x3F)];
749
750 nchSrcLeft -= 3; // NOTE: Probably greater than 3
751 break;
752 }
753 }
754
755 nchBufLeft -= 4; // Always the same due to padding!
756};
757

Callers 1

tss_encode_base64Function · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected