_BEGIN_SNACC_NAMESPACE void AsnNull::BDecContent (const AsnBuf &/*b*/, AsnTag /*tagId*/, AsnLen elmtLen, AsnLen &/*bytesDecoded*/) { FUNC("AsnNull::BDecContent()"); if (elmtLen != 0) { throw BoundsException("AsnNull has non-zero length", STACK_ENTRY); } } /* AsnNull::BDecContent */
// Decodes a BER BIT STRING from the given buffer and stores // the value in this object. void AsnBits::BDecContent (const AsnBuf &b, AsnTag tagId, AsnLen elmtLen, AsnLen &bytesDecoded) { FUNC("AsnBits::BDecContent"); if (elmtLen == INDEFINITE_LEN || elmtLen > b.length()) { throw MemoryException(elmtLen, "elmtLen requests for too much data", STACK_ENTRY); } /* * tagId is encoded tag shifted into long int. * if CONS bit is set then constructed bit string */ if (tagId & 0x20000000) BDecConsBits (b, elmtLen, bytesDecoded); else /* primitive octet string */ { if (elmtLen == INDEFINITE_LEN) throw BoundsException("indefinite length on primitive", STACK_ENTRY); if (elmtLen > b.length() || elmtLen <= 0) throw BoundsException("length problem on decoding content", STACK_ENTRY); bytesDecoded += elmtLen; elmtLen--; unsigned int iUnusedBitLen= (unsigned int)b.GetByte(); if (iUnusedBitLen > 7) throw BoundsException("Length problem - Unused bits > 7", STACK_ENTRY); bitLen = (elmtLen * 8) - iUnusedBitLen; bits = new unsigned char[elmtLen]; b.GetUSeg (bits, elmtLen); } } /* AsnBits::BDecContent */