boolean ber_read_universal_tag(STREAM* s, uint8 tag, boolean pc) { uint8 byte; stream_read_uint8(s, byte); if (byte != (BER_CLASS_UNIV | BER_PC(pc) | (BER_TAG_MASK & tag))) return false; return true; }
BOOL ber_read_universal_tag(wStream* s, BYTE tag, BOOL pc) { BYTE byte; if (Stream_GetRemainingLength(s) < 1) return FALSE; Stream_Read_UINT8(s, byte); if (byte != (BER_CLASS_UNIV | BER_PC(pc) | (BER_TAG_MASK & tag))) return FALSE; return TRUE; }
BOOL ber_read_universal_tag(wStream* s, BYTE tag, BOOL pc) { BYTE byte; if(stream_get_left(s) < 1) return FALSE; stream_read_BYTE(s, byte); if (byte != (BER_CLASS_UNIV | BER_PC(pc) | (BER_TAG_MASK & tag))) return FALSE; return TRUE; }
boolean ber_read_contextual_tag(STREAM* s, uint8 tag, int* length, boolean pc) { uint8 byte; stream_read_uint8(s, byte); if (byte != ((BER_CLASS_CTXT | BER_PC(pc)) | (BER_TAG_MASK & tag))) { stream_rewind(s, 1); return false; } ber_read_length(s, length); return true; }
BOOL ber_read_contextual_tag(wStream* s, BYTE tag, int* length, BOOL pc) { BYTE byte; if (Stream_GetRemainingLength(s) < 1) return FALSE; Stream_Read_UINT8(s, byte); if (byte != ((BER_CLASS_CTXT | BER_PC(pc)) | (BER_TAG_MASK & tag))) { Stream_Rewind(s, 1); return FALSE; } return ber_read_length(s, length); }
BOOL ber_read_contextual_tag(wStream* s, BYTE tag, int* length, BOOL pc) { BYTE byte; if(stream_get_left(s) < 1) return FALSE; stream_read_BYTE(s, byte); if (byte != ((BER_CLASS_CTXT | BER_PC(pc)) | (BER_TAG_MASK & tag))) { stream_rewind(s, 1); return FALSE; } return ber_read_length(s, length); }
int ber_write_contextual_tag(STREAM* s, uint8 tag, int length, boolean pc) { stream_write_uint8(s, (BER_CLASS_CTXT | BER_PC(pc)) | (BER_TAG_MASK & tag)); return ber_write_length(s, length) + 1; }
void ber_write_universal_tag(STREAM* s, uint8 tag, boolean pc) { stream_write_uint8(s, (BER_CLASS_UNIV | BER_PC(pc)) | (BER_TAG_MASK & tag)); }
int ber_write_contextual_tag(wStream* s, BYTE tag, int length, BOOL pc) { Stream_Write_UINT8(s, (BER_CLASS_CTXT | BER_PC(pc)) | (BER_TAG_MASK & tag)); return 1 + ber_write_length(s, length); }
int ber_write_universal_tag(wStream* s, BYTE tag, BOOL pc) { Stream_Write_UINT8(s, (BER_CLASS_UNIV | BER_PC(pc)) | (BER_TAG_MASK & tag)); return 1; }
int ber_write_contextual_tag(wStream* s, BYTE tag, int length, BOOL pc) { stream_write_BYTE(s, (BER_CLASS_CTXT | BER_PC(pc)) | (BER_TAG_MASK & tag)); return ber_write_length(s, length) + 1; }
void ber_write_universal_tag(wStream* s, BYTE tag, BOOL pc) { stream_write_BYTE(s, (BER_CLASS_UNIV | BER_PC(pc)) | (BER_TAG_MASK & tag)); }