00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00030
00037 #ifndef _ASN1BERSTREAM_H_
00038 #define _ASN1BERSTREAM_H_
00039
00040 #include "rtbersrc/asn1ber.h"
00041 #include "rtxsrc/rtxStream.h"
00042
00043 #ifdef __cplusplus
00044 extern "C" {
00045 #endif
00046
00074 #ifndef berStrmInitContext
00075 EXTERNBER int berStrmInitContext (OSCTXT* pctxt);
00076 #endif
00077
00078 EXTERNBER int berStrmInitContextUsingKey
00079 (OSCTXT* pctxt, const OSOCTET* key, size_t keylen);
00080
00091 EXTERNBER int berStrmFreeContext (OSCTXT* pctxt);
00092
00127 EXTERNBER int berEncStrmBigInt (OSCTXT* pctxt,
00128 const char* pvalue,
00129 ASN1TagType tagging);
00130
00150 EXTERNBER int berEncStrmBitStr (OSCTXT* pctxt,
00151 const OSOCTET* object_p,
00152 OSUINT32 numbits,
00153 ASN1TagType tagging);
00154
00175 EXTERNBER int berEncStrmBMPStr (OSCTXT* pctxt,
00176 const Asn116BitCharString* object_p,
00177 ASN1TagType tagging);
00178
00196 EXTERNBER int berEncStrmBool (OSCTXT* pctxt, OSBOOL value,
00197 ASN1TagType tagging);
00198
00221 EXTERNBER int berEncStrmCharStr (OSCTXT* pctxt, const char* object_p,
00222 ASN1TagType tagging, ASN1TAG tag);
00223
00236 EXTERNBER int berEncStrmEOC (OSCTXT *pctxt);
00237
00257 EXTERNBER int berEncStrmEnum (OSCTXT* pctxt, OSINT32 value,
00258 ASN1TagType tagging);
00259
00277 EXTERNBER int berEncStrmInt (OSCTXT* pctxt, OSINT32 value,
00278 ASN1TagType tagging);
00279
00298 EXTERNBER int berEncStrmInt8 (OSCTXT* pctxt, OSINT8 value,
00299 ASN1TagType tagging);
00300
00319 EXTERNBER int berEncStrmInt16 (OSCTXT* pctxt, OSINT16 value,
00320 ASN1TagType tagging);
00321
00341 EXTERNBER int berEncStrmInt64 (OSCTXT* pctxt, OSINT64 value,
00342 ASN1TagType tagging);
00343
00356 EXTERNBER int berEncStrmLength (OSCTXT *pctxt, int length);
00357
00372 EXTERNBER int berEncStrmNull (OSCTXT* pctxt, ASN1TagType tagging);
00373
00392 EXTERNBER int berEncStrmObjId (OSCTXT* pctxt, const ASN1OBJID *object_p,
00393 ASN1TagType tagging);
00394
00414 EXTERNBER int berEncStrmObjId64 (OSCTXT* pctxt, const ASN1OID64 *object_p,
00415 ASN1TagType tagging);
00416
00435 EXTERNBER int berEncStrmOctStr (OSCTXT* pctxt,
00436 const OSOCTET* object_p,
00437 OSUINT32 numocts,
00438 ASN1TagType tagging);
00439
00456 EXTERNBER int berEncStrmOpenTypeExt (OSCTXT* pctxt, OSRTDList* pElemList);
00457
00480 EXTERNBER int berEncStrmReal (OSCTXT* pctxt, OSREAL value,
00481 ASN1TagType tagging);
00482
00500 EXTERNBER int berEncStrmReal10 (OSCTXT *pctxt, const char* object_p,
00501 ASN1TagType tagging);
00502
00520 EXTERNBER int cerEncStrmReal10 (OSCTXT *pctxt, const char* object_p,
00521 ASN1TagType tagging);
00522
00541 EXTERNBER int berEncStrmRelativeOID (OSCTXT* pctxt,
00542 const ASN1OBJID *object_p,
00543 ASN1TagType tagging);
00544
00560 EXTERNBER int berEncStrmTag (OSCTXT *pctxt, ASN1TAG tag);
00561
00584 EXTERNBER int berEncStrmTagAndLen (OSCTXT *pctxt, ASN1TAG tag, int length);
00585
00601 EXTERNBER int berEncStrmTagAndIndefLen (OSCTXT *pctxt, ASN1TAG tag);
00602
00621 EXTERNBER int berEncStrmUInt (OSCTXT* pctxt, OSUINT32 value,
00622 ASN1TagType tagging);
00623
00642 EXTERNBER int berEncStrmUInt8 (OSCTXT* pctxt, OSUINT8 value,
00643 ASN1TagType tagging);
00644
00663 EXTERNBER int berEncStrmUInt16 (OSCTXT* pctxt, OSUINT16 value,
00664 ASN1TagType tagging);
00665
00686 EXTERNBER int berEncStrmUInt64 (OSCTXT* pctxt, OSUINT64 value,
00687 ASN1TagType tagging);
00688
00709 EXTERNBER int berEncStrmUnivStr (OSCTXT* pctxt,
00710 const Asn132BitCharString* object_p,
00711 ASN1TagType tagging);
00712
00733 EXTERNBER int berEncStrmXSDAny
00734 (OSCTXT* pctxt, OSXSDAny* pvalue, ASN1TagType tagging);
00735
00748 EXTERNBER int berEncStrmWriteOctet (OSCTXT* pctxt, OSOCTET octet);
00749
00763 EXTERNBER int berEncStrmWriteOctets (OSCTXT* pctxt,
00764 const OSOCTET* poctets,
00765 size_t numocts);
00766
00767
00789 EXTERNBER int cerEncStrmBMPStr (OSCTXT* pctxt,
00790 const Asn116BitCharString* object_p,
00791 ASN1TagType tagging);
00792
00813 EXTERNBER int cerEncStrmBitStr (OSCTXT* pctxt,
00814 const OSOCTET* object_p,
00815 OSUINT32 numbits,
00816 ASN1TagType tagging);
00817
00841 EXTERNBER int cerEncStrmCharStr (OSCTXT* pctxt, const char* object_p,
00842 ASN1TagType tagging, ASN1TAG tag);
00843
00863 EXTERNBER int cerEncStrmOctStr (OSCTXT* pctxt,
00864 const OSOCTET* object_p,
00865 OSUINT32 numocts,
00866 ASN1TagType tagging);
00867
00889 EXTERNBER int cerEncStrmUnivStr (OSCTXT* pctxt,
00890 const Asn132BitCharString* object_p,
00891 ASN1TagType tagging);
00892
00928 EXTERNBER int berDecStrmBMPStr (OSCTXT* pctxt, Asn116BitCharString* object_p,
00929 ASN1TagType tagging, int length);
00930
00962 EXTERNBER int berDecStrmBigInt (OSCTXT *pctxt, const char** object_p,
00963 ASN1TagType tagging, int length);
00964
00997 EXTERNBER int berDecStrmBitStr (OSCTXT *pctxt, OSOCTET* pvalue,
00998 OSUINT32* pnbits,
00999 ASN1TagType tagging,
01000 int length);
01001
01023 EXTERNBER int berDecStrmBool (OSCTXT *pctxt, OSBOOL *object_p,
01024 ASN1TagType tagging, int length);
01025
01056 EXTERNBER int berDecStrmCharStr (OSCTXT *pctxt, const char** ppvalue,
01057 ASN1TagType tagging, ASN1TAG tag, int length);
01058
01084 EXTERNBER int berDecStrmDynBitStr (OSCTXT *pctxt, const OSOCTET** ppvalue,
01085 OSUINT32* pnbits,
01086 ASN1TagType tagging, int length);
01087
01113 EXTERNBER int berDecStrmDynOctStr (OSCTXT *pctxt, const OSOCTET** ppvalue,
01114 OSUINT32* pnocts,
01115 ASN1TagType tagging, int length);
01116
01138 EXTERNBER int berDecStrmEnum (OSCTXT *pctxt, OSINT32 *object_p,
01139 ASN1TagType tagging, int length);
01140
01151 EXTERNBER int berDecStrmGetTLVLength (OSCTXT* pctxt);
01152
01174 EXTERNBER int berDecStrmInt (OSCTXT *pctxt, OSINT32 *object_p,
01175 ASN1TagType tagging, int length);
01176
01198 EXTERNBER int berDecStrmInt8 (OSCTXT *pctxt, OSINT8 *object_p,
01199 ASN1TagType tagging, int length);
01200
01222 EXTERNBER int berDecStrmInt16 (OSCTXT *pctxt, OSINT16 *object_p,
01223 ASN1TagType tagging, int length);
01224
01246 EXTERNBER int berDecStrmInt64 (OSCTXT *pctxt, OSINT64 *object_p,
01247 ASN1TagType tagging, int length);
01248
01262 EXTERNBER int berDecStrmLength (OSCTXT *pctxt, int *len_p);
01263
01279 EXTERNBER int berDecStrmMatchEOC (OSCTXT* pctxt);
01280
01303 EXTERNBER int berDecStrmMatchTag (OSCTXT* pctxt, ASN1TAG tag, int *len_p,
01304 OSBOOL advance);
01305
01317 EXTERNBER int berDecStrmNextElement (OSCTXT *pctxt);
01318
01333 EXTERNBER int berDecStrmNull (OSCTXT *pctxt, ASN1TagType tagging);
01334
01358 EXTERNBER int berDecStrmObjId (OSCTXT *pctxt, ASN1OBJID *object_p,
01359 ASN1TagType tagging,
01360 int length);
01361
01386 EXTERNBER int berDecStrmObjId64 (OSCTXT *pctxt, ASN1OID64 *object_p,
01387 ASN1TagType tagging,
01388 int length);
01389
01421 EXTERNBER int berDecStrmOctStr (OSCTXT *pctxt, OSOCTET* pvalue,
01422 OSUINT32* pnocts,
01423 ASN1TagType tagging,
01424 int length);
01425
01448 EXTERNBER int berDecStrmOpenType (OSCTXT *pctxt,
01449 const OSOCTET** object_p2,
01450 OSUINT32* pnumocts);
01451
01467 EXTERNBER int berDecStrmOpenTypeAppend (OSCTXT *pctxt,
01468 OSRTDList *pElemList);
01469
01494 EXTERNBER int berDecStrmOpenTypeExt (OSCTXT *pctxt, ASN1CCB* ccb_p,
01495 ASN1TAG tag,
01496 OSRTDList *pElemList);
01497
01515 EXTERNBER int berDecStrmPeekTagAndLen
01516 (OSCTXT* pctxt, ASN1TAG* ptag, int* plen);
01517
01532 EXTERNBER int berDecStrmReadDynTLV (OSCTXT* pctxt, OSOCTET** ppbuf);
01533
01546 EXTERNBER int berDecStrmReadTLV (OSCTXT* pctxt, OSOCTET* buf, size_t bufsiz);
01547
01568 EXTERNBER int berDecStrmReal (OSCTXT *pctxt, OSREAL *object_p,
01569 ASN1TagType tagging, int length);
01570
01593 EXTERNBER int berDecStrmReal10 (OSCTXT *pctxt, const char** object_p,
01594 ASN1TagType tagging, int length);
01595
01619 EXTERNBER int berDecStrmRelativeOID (OSCTXT *pctxt, ASN1OBJID *object_p,
01620 ASN1TagType tagging,
01621 int length);
01622
01635 EXTERNBER int berDecStrmTag (OSCTXT* pctxt, ASN1TAG *tag_p);
01636
01653 EXTERNBER int berDecStrmTagAndLen (OSCTXT *pctxt, ASN1TAG *tag_p,
01654 int *len_p);
01655
01672 EXTERNBER OSBOOL berDecStrmTestEOC (OSCTXT* pctxt, ASN1CCB* ccb_p);
01673
01698 EXTERNBER int berDecStrmTestTag (OSCTXT* pctxt, ASN1TAG tag, int *len_p,
01699 OSBOOL advance);
01700
01723 EXTERNBER int berDecStrmUInt (OSCTXT *pctxt, OSUINT32 *object_p,
01724 ASN1TagType tagging, int length);
01725
01748 EXTERNBER int berDecStrmUInt8 (OSCTXT *pctxt, OSUINT8 *object_p,
01749 ASN1TagType tagging, int length);
01750
01773 EXTERNBER int berDecStrmUInt16 (OSCTXT *pctxt, OSUINT16 *object_p,
01774 ASN1TagType tagging, int length);
01775
01798 EXTERNBER int berDecStrmUInt64 (OSCTXT *pctxt, OSUINT64 *object_p,
01799 ASN1TagType tagging, int length);
01800
01825 EXTERNBER int berDecStrmUnivStr (OSCTXT* pctxt,
01826 Asn132BitCharString* object_p,
01827 ASN1TagType tagging, int length);
01830 EXTERNBER int cerEncCanonicalSort (OSCTXT* pctxt,
01831 OSCTXT* pMemCtxt,
01832 OSRTSList* pList);
01833 EXTERNBER void cerGetBufLocDescr (OSCTXT *pctxt, Asn1BufLocDescr* pDescr);
01834 EXTERNBER void cerAddBufLocDescr (OSCTXT *pctxt, OSRTSList* pElemList,
01835 Asn1BufLocDescr* pDescr);
01836
01837 #ifdef __cplusplus
01838 }
01839 #endif
01840
01841
01842
01843 #define BS_CHKEOB(pctxt) \
01844 (((pctxt)->buffer.byteIndex + 2 > (pctxt)->buffer.size) ? TRUE : \
01845 (((pctxt)->buffer.data[(pctxt)->buffer.byteIndex] == 0 && \
01846 (pctxt)->buffer.data[(pctxt)->buffer.byteIndex + 1] == 0 ) ? \
01847 TRUE : FALSE))
01848
01849
01850
01851 #define BS_CHKEND(pctxt,ccb_p) \
01852 ((ccb_p)->stat = 0, \
01853 (((ccb_p)->len == ASN_K_INDEFLEN) ? berDecStrmTestEOC (pctxt,ccb_p) : \
01854 (((int)(OSRTSTREAM_BYTEINDEX(pctxt) - (ccb_p)->bytes) >= (ccb_p)->len))))
01855
01858 #endif