Home > Support > Documentation

asn1berStream.h

Go to the documentation of this file.
00001 /*
00002  * Copyright (c) 1997-2006 Objective Systems, Inc.
00003  *
00004  * This software is furnished under a license and may be used and copied
00005  * only in accordance with the terms of such license and with the
00006  * inclusion of the above copyright notice. This software or any other
00007  * copies thereof may not be provided or otherwise made available to any
00008  * other person. No title to and ownership of the software is hereby
00009  * transferred.
00010  *
00011  * The information in this software is subject to change without notice
00012  * and should not be construed as a commitment by Objective Systems, Inc.
00013  *
00014  * PROPRIETARY NOTICE
00015  *
00016  * This software is an unpublished work subject to a confidentiality agreement
00017  * and is protected by copyright and trade secret law.  Unauthorized copying,
00018  * redistribution or other use of this work is prohibited.
00019  *
00020  * The above notice of copyright on this source code product does not indicate
00021  * any actual or intended publication of such source code.
00022  *
00023  *****************************************************************************/
00024 /*
00025 // CHANGE LOG
00026 // Date         Init    Description
00027 // 11/02/03     AB      Initial issue
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 /* This macro will test for EOB */
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 /* This macro will test for length overrun */
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 /* _ASN1BERSTREAM_H_ */