BER Runtime Library Functions.
Classes | |
struct | _Asn1BufLocDescr |
Modules | |
BER/DER C Decode Functions. | |
BER/DER C File Functions. | |
BER/DER C Encode Functions. | |
BER/PER C Utility Functions | |
Streaming BER Runtime Library Functions. | |
Defines | |
#define | ASN_K_INDEFLEN -9999 |
#define | XU_DUMP(msg) xu_dump(msg,0,0) |
#define | xd_resetp(pctxt) rtxResetContext(pctxt) |
#define | ASN1TAG2BYTE(tag) ((OSOCTET)(((tag)&TM_B_IDCODE)|((tag)>>ASN1TAG_LSHIFT))) |
#define | XD_MEMCPY1(pctxt, object_p) |
#define | XD_FETCH1(pctxt) ((pctxt)->buffer.data[(pctxt)->buffer.byteIndex++]) |
#define | XD_PEEKTAG(pctxt, tag) (((pctxt)->buffer.data[(pctxt)->buffer.byteIndex] & (~0x20)) == (tag & (~0x20))) |
#define | XD_PEEKPC(pctxt) (((pctxt)->buffer.data[(pctxt)->buffer.byteIndex] & 0x20) == 0x20) |
#define | XD_MATCHEOC(pctxt) |
#define | XD_MATCHBYTES1(pctxt, b1) ((pctxt)->buffer.data[(pctxt)->buffer.byteIndex] == b1) |
#define | XD_MATCHBYTES2(pctxt, b1, b2) |
#define | XD_MATCHBYTES3(pctxt, b1, b2, b3) |
#define | XD_MATCHBYTES4(pctxt, b1, b2, b3, b4) |
#define | XD_MATCHBYTES5(pctxt, b1, b2, b3, b4, b5) |
#define | XD_BUMPIDX(pctxt, nbytes) ((pctxt)->buffer.byteIndex += nbytes) |
#define | XD_CHKBUFEND(pctxt) |
#define | XD_CHKDEFLEN(pctxt, len) |
#define | XD_CHKEOB(pctxt) |
#define | XD_CHKEND(pctxt, ccb_p) |
#define | XE_CHKBUF(pctxt, len) |
#define | XE_PUT1(pctxt, ch) (pctxt)->buffer.data[--(pctxt)->buffer.byteIndex] = ch; |
#define | XE_PUT2(pctxt, ch1, ch2) |
#define | XE_SAFEPUT1(pctxt, ch) XE_CHKBUF(pctxt,1); (pctxt)->buffer.data[--(pctxt)->buffer.byteIndex] = ch; |
Typedefs | |
typedef struct _Asn1BufLocDescr | Asn1BufLocDescr |
Detailed Description
The ASN.1 Basic Encoding Rules (BER) Runtime Library contains the low-level constants, types, and functions that are assembled by the compiler to encode/decode more complex structures.
Define Documentation
#define XD_CHKBUFEND | ( | pctxt | ) |
Value:
(((ASN1BUF_INDEFLEN(pctxt)) || \ ((pctxt)->buffer.byteIndex <= (pctxt)->buffer.size)) ? 0 : RTERR_ENDOFBUF)
#define XD_CHKDEFLEN | ( | pctxt, | |||
len | ) |
Value:
(((ASN1BUF_INDEFLEN(pctxt)) || \ (((pctxt)->buffer.byteIndex + len) <= (pctxt)->buffer.size)) ? \ 0 : RTERR_ENDOFBUF)
#define XD_CHKEND | ( | pctxt, | |||
ccb_p | ) |
Value:
(((ccb_p)->len == ASN_K_INDEFLEN) ? XD_CHKEOB(pctxt) : \ ((OSRTBUFPTR(pctxt) - (ccb_p)->ptr >= (ccb_p)->len) || \ ((pctxt)->buffer.byteIndex >= (pctxt)->buffer.size)))
#define XD_CHKEOB | ( | pctxt | ) |
Value:
(((pctxt)->buffer.byteIndex + 2 > (pctxt)->buffer.size) ? TRUE : \ (((pctxt)->buffer.data[(pctxt)->buffer.byteIndex] == 0 && \ (pctxt)->buffer.data[(pctxt)->buffer.byteIndex + 1] == 0 ) ? \ TRUE : FALSE))
#define XD_MATCHBYTES2 | ( | pctxt, | |||
b1, | |||||
b2 | ) |
Value:
(((pctxt)->buffer.data[(pctxt)->buffer.byteIndex] == b1) && \ ((pctxt)->buffer.data[(pctxt)->buffer.byteIndex+1] == b2))
#define XD_MATCHBYTES3 | ( | pctxt, | |||
b1, | |||||
b2, | |||||
b3 | ) |
Value:
(((pctxt)->buffer.data[(pctxt)->buffer.byteIndex] == b1) && \ ((pctxt)->buffer.data[(pctxt)->buffer.byteIndex+1] == b2) && \ ((pctxt)->buffer.data[(pctxt)->buffer.byteIndex+2] == b3))
#define XD_MATCHBYTES4 | ( | pctxt, | |||
b1, | |||||
b2, | |||||
b3, | |||||
b4 | ) |
Value:
(((pctxt)->buffer.data[(pctxt)->buffer.byteIndex] == b1) && \ ((pctxt)->buffer.data[(pctxt)->buffer.byteIndex+1] == b2) && \ ((pctxt)->buffer.data[(pctxt)->buffer.byteIndex+2] == b3) && \ ((pctxt)->buffer.data[(pctxt)->buffer.byteIndex+3] == b4))
#define XD_MATCHBYTES5 | ( | pctxt, | |||
b1, | |||||
b2, | |||||
b3, | |||||
b4, | |||||
b5 | ) |
Value:
(((pctxt)->buffer.data[(pctxt)->buffer.byteIndex] == b1) && \ ((pctxt)->buffer.data[(pctxt)->buffer.byteIndex+1] == b2) && \ ((pctxt)->buffer.data[(pctxt)->buffer.byteIndex+2] == b3) && \ ((pctxt)->buffer.data[(pctxt)->buffer.byteIndex+3] == b4) && \ ((pctxt)->buffer.data[(pctxt)->buffer.byteIndex+4] == b5))
#define XD_MATCHEOC | ( | pctxt | ) |
Value:
( ( (pctxt)->buffer.byteIndex + 2 <= (pctxt)->buffer.size ) && \ ( (pctxt)->buffer.data[(pctxt)->buffer.byteIndex] == 0 ) && \ ( (pctxt)->buffer.data[(pctxt)->buffer.byteIndex + 1] == 0 ) )
#define XD_MEMCPY1 | ( | pctxt, | |||
object_p | ) |
Value:
((ASN1BUF_INDEFLEN(pctxt) || \ ((pctxt)->buffer.byteIndex < (pctxt)->buffer.size)) ? \ (*object_p = *OSRTBUFPTR(pctxt), (pctxt)->buffer.byteIndex ++, 0) : \ RTERR_ENDOFBUF)
#define XE_CHKBUF | ( | pctxt, | |||
len | ) |
Value:
if (len > (pctxt)->buffer.byteIndex) { \ int xstat = xe_expandBuffer (pctxt, len); \ if (xstat != 0) return xstat; }
#define XE_PUT2 | ( | pctxt, | |||
ch1, | |||||
ch2 | ) |
Value:
(pctxt)->buffer.byteIndex -= 2; \ (pctxt)->buffer.data[(pctxt)->buffer.byteIndex] = ch1; \ (pctxt)->buffer.data[(pctxt)->buffer.byteIndex+1] = ch2;
Typedef Documentation
typedef struct _Asn1BufLocDescr Asn1BufLocDescr |
Buffer location descriptor