34 int ber_tag(
ODR o,
void *p,
int zclass,
int tag,
int *constructed,
int opt,
39 char **pp = (
char **)p;
63 if ((rd =
ber_enctag(o, zclass, tag, *constructed)) < 0)
76 if (odr_ber_tag->
lclass < 0)
78 if ((odr_ber_tag->
br =
88 if (zclass == odr_ber_tag->
lclass && tag == odr_ber_tag->
ltag)
90 o->
op->
bp += odr_ber_tag->
br;
91 *constructed = odr_ber_tag->
lcons;
125 int cons = (constructed ? 1 : 0), n = 0;
126 unsigned char octs[
sizeof(int)], b;
128 b = (zclass << 6) & 0XC0;
129 b |= (cons << 5) & 0X20;
144 octs[n++] = tag & 0X7F;
152 oo = octs[n] | ((n > 0) << 7);
166 int *constructed,
int max)
168 const unsigned char *b = (
const unsigned char *) cp;
175 *constructed = (*b >> 5) & 0X01;
176 if ((*tag = *b & 0x1F) <= 30)
186 while (b[l++] & 0X80);
int ber_dectag(const char *cp, int *zclass, int *tag, int *constructed, int max)
Decodes BER identifier octets.
int ber_enctag(ODR o, int zclass, int tag, int constructed)
BER-encode a zclass/tag/constructed package (identifier octets).
int ber_tag(ODR o, void *p, int zclass, int tag, int *constructed, int opt, const char *name)
Encode/decode BER tags.
Internal ODR definitions.
#define ODR_STACK_EMPTY(x)
#define ODR_STACK_NOT_EMPTY(x)
void odr_setelement(ODR o, const char *element)
void odr_seterror(ODR o, int error, int id)
int odr_constructed_more(ODR o)
int odr_seek(ODR o, int whence, int offset)
Utility structure used by ber_tag.
struct Odr_ber_tag odr_ber_tag