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
00031
00068 #ifndef _ASN1XER_H_
00069 #define _ASN1XER_H_
00070
00071 #include "rtsrc/asn1type.h"
00072 #include "rtxsrc/rtxMemBuf.h"
00073
00084 typedef enum {
00085 XERINIT,
00086 XERSTART,
00087 XERDATA,
00088 XEREND,
00089
00090 XERSTART0,
00091 XEREND0
00092 } ASN1XERState;
00093
00094 #define XERINDENT 3
00095
00096 typedef struct {
00097 const char* name;
00098 OSBOOL optional;
00099 } XerElemInfo;
00100
00101 typedef struct XmlNamedBitsDict {
00102 const char* name;
00103 OSUINT32 bitnum;
00104 } XmlNamedBitsDict;
00105
00106
00107 #define XERBYTECNT(pctxt) (pctxt)->buffer.byteIndex
00108
00109 #include "rtxersrc/rtSAXDefs.h"
00110
00111 #ifdef __cplusplus
00112 extern "C" {
00113 #endif
00114
00115 #ifdef BUILDASN1XERDLL
00116 #define EXTERNXER __declspec(dllexport)
00117 #elif defined (USEASN1XERDLL)
00118 #define EXTERNXER __declspec(dllimport)
00119 #else
00120 #define EXTERNXER
00121 #endif
00122
00123
00151 EXTERNXER int xerDecBMPStr (OSCTXT* pctxt,
00152 ASN1BMPString* outdata);
00153
00177 EXTERNXER int xerDecBase64Str (OSCTXT* pctxt,
00178 OSOCTET* pvalue, OSUINT32* pnocts,
00179 OSINT32 bufsize);
00180
00205 EXTERNXER int xerDecBigInt (OSCTXT* pctxt, char **ppvalue, int radix);
00206
00207
00231 EXTERNXER int xerDecBitStr (OSCTXT* pctxt, OSOCTET* pvalue,
00232 OSUINT32* pnbits, OSINT32 bufsize);
00233
00251 EXTERNXER int xerDecBitStrMemBuf (OSRTMEMBUF* pMemBuf,
00252 const XMLCHAR* inpdata,
00253 int length, OSBOOL skipWhitespaces);
00254
00265 EXTERNXER int xerDecBool (OSCTXT* pctxt, OSBOOL *pvalue);
00266
00285 EXTERNXER int xerDecCopyBitStr (OSCTXT* pctxt,
00286 OSOCTET* pvalue, OSUINT32* pnbits,
00287 OSINT32 bufsize, int lastBitOffset);
00288
00304 EXTERNXER int xerDecCopyDynBitStr (OSCTXT* pctxt,
00305 ASN1DynBitStr* pvalue,
00306 int lastBitOffset);
00307
00323 EXTERNXER int xerDecCopyDynOctStr (OSCTXT* pctxt, ASN1DynOctStr* pvalue,
00324 int lastBitOffset);
00325
00348 EXTERNXER int xerDecCopyOctStr (OSCTXT* pctxt,
00349 OSOCTET* pvalue, OSUINT32* pnocts,
00350 OSINT32 bufsize, int lastBitOffset);
00351
00370 EXTERNXER int xerDecDynAscCharStr (OSCTXT* pctxt,
00371 const char** outdata);
00372
00373
00390 EXTERNXER int xerDecDynBase64Str (OSCTXT* pctxt, ASN1DynOctStr* pvalue);
00391
00407 EXTERNXER int xerDecDynBitStr (OSCTXT* pctxt, ASN1DynBitStr* pvalue);
00408
00424 EXTERNXER int xerDecDynOctStr (OSCTXT* pctxt, ASN1DynOctStr* pvalue);
00425
00445 EXTERNXER int xerDecDynUTF8Str (OSCTXT* pctxt,
00446 ASN1UTF8String* outdata);
00447
00458 EXTERNXER int xerDecInt (OSCTXT* pctxt, OSINT32* pvalue);
00459
00470 EXTERNXER int xerDecInt8 (OSCTXT* pctxt, OSINT8* pvalue);
00471
00482 EXTERNXER int xerDecInt16 (OSCTXT* pctxt, OSINT16* pvalue);
00483
00496 EXTERNXER int xerDecInt64 (OSCTXT* pctxt, OSINT64* pvalue);
00497
00510 EXTERNXER int xerDecObjId (OSCTXT* pctxt, ASN1OBJID *pvalue);
00511
00525 EXTERNXER int xerDecObjId64 (OSCTXT* pctxt, ASN1OID64 *pvalue);
00526
00550 EXTERNXER int xerDecOctStr (OSCTXT* pctxt, OSOCTET* pvalue,
00551 OSUINT32* pnocts, OSINT32 bufsize);
00552
00570 EXTERNXER int xerDecOctStrMemBuf (OSRTMEMBUF* pMemBuf,
00571 const XMLCHAR* inpdata,
00572 int length, OSBOOL skipWhitespaces);
00573
00592 EXTERNXER int xerDecOpenType (OSCTXT* pctxt, ASN1OpenType* pvalue);
00593
00610 EXTERNXER int xerDecReal (OSCTXT* pctxt, OSREAL* pvalue);
00611
00624 EXTERNXER int xerDecRelativeOID (OSCTXT* pctxt, ASN1OBJID *pvalue);
00625
00637 EXTERNXER int xerDecUInt (OSCTXT* pctxt, OSUINT32* pvalue);
00638
00650 EXTERNXER int xerDecUInt8 (OSCTXT* pctxt, OSUINT8* pvalue);
00651
00663 EXTERNXER int xerDecUInt16 (OSCTXT* pctxt, OSUINT16* pvalue);
00664
00679 EXTERNXER int xerDecUInt64 (OSCTXT* pctxt, OSUINT64* pvalue);
00680
00694 EXTERNXER int xerDecUnivStr (OSCTXT* pctxt,
00695 ASN1UniversalString* outdata);
00696
00714 EXTERNXER int xerSetDecBufPtr (OSCTXT* pCtxt, const OSOCTET* bufaddr,
00715 size_t bufsiz);
00716
00719
00765 EXTERNXER int xerSetEncBufPtr (OSCTXT* pCtxt, OSOCTET* bufaddr,
00766 size_t bufsiz, OSBOOL canonical);
00767
00787 EXTERNXER int xerEncAscCharStr (OSCTXT* pctxt,
00788 const char* value,
00789 const char* elemName);
00790
00791
00813 EXTERNXER int xerEncBase64Str (OSCTXT* pctxt, OSUINT32 nocts,
00814 const OSOCTET* data,
00815 const char* elemName);
00816
00841 EXTERNXER int xerEncBigInt (OSCTXT* pctxt, const char* value,
00842 const char* elemName);
00843
00868 EXTERNXER int xerEncBitStr (OSCTXT* pctxt, OSUINT32 nbits,
00869 const OSOCTET* data,
00870 const char* elemName,
00871 ASN1StrType outputType);
00872
00873 EXTERNXER int xerEncBoolValue (OSCTXT* pctxt, OSBOOL value);
00874
00875
00895 EXTERNXER int xerEncBool (OSCTXT* pctxt, OSBOOL value,
00896 const char* elemName);
00897
00909 EXTERNXER int xerEncEndDocument (OSCTXT* pctxt);
00910
00923 EXTERNXER int xerEncEndElement (OSCTXT* pctxt, const char* elemName);
00924
00931 EXTERNXER int xerEncIndent (OSCTXT* pctxt);
00932
00952 EXTERNXER int xerEncInt (OSCTXT* pctxt, OSINT32 value,
00953 const char* elemName);
00954
00976 EXTERNXER int xerEncInt64 (OSCTXT* pctxt, OSINT64 value,
00977 const char* elemName);
00978
00979
00991 EXTERNXER int xerEncNewLine (OSCTXT* pctxt);
00992
01013 EXTERNXER int xerEncObjId (OSCTXT* pctxt, const ASN1OBJID *pvalue,
01014 const char* elemName);
01015
01037 EXTERNXER int xerEncObjId64 (OSCTXT* pctxt, const ASN1OID64 *pvalue,
01038 const char* elemName);
01039
01060 EXTERNXER int xerEncRelativeOID (OSCTXT* pctxt, const ASN1OBJID *pvalue,
01061 const char* elemName);
01062
01083 EXTERNXER int xerEncOctStr (OSCTXT* pctxt, OSUINT32 nocts,
01084 const OSOCTET* data,
01085 const char* elemName);
01086
01106 EXTERNXER int xerEncReal (OSCTXT* pctxt, OSREAL value,
01107 const char* elemName);
01108
01125 EXTERNXER int xerEncReal10 (OSCTXT* pctxt, const char* value,
01126 const char* elemName);
01127
01142 EXTERNXER int xerEncStartDocument (OSCTXT* pctxt);
01143
01159 EXTERNXER int xerEncStartElement (OSCTXT* pctxt,
01160 const char* elemName,
01161 const char* attributes);
01162
01176 EXTERNXER int xerEncEmptyElement (OSCTXT* pctxt,
01177 const char* elemName,
01178 const char* attributes);
01194 EXTERNXER int xerEncNamedValue (OSCTXT* pctxt,
01195 const char* value,
01196 const char* elemName,
01197 const char* attributes);
01198
01219 EXTERNXER int xerEncUInt (OSCTXT* pctxt, OSUINT32 value,
01220 const char* elemName);
01221
01244 EXTERNXER int xerEncUInt64 (OSCTXT* pctxt, OSUINT64 value,
01245 const char* elemName);
01246
01265 EXTERNXER int xerEncBMPStr (OSCTXT* pctxt,
01266 const ASN1BMPString* value,
01267 const char* elemName);
01268
01289 EXTERNXER int xerEncUnivStr (OSCTXT* pctxt,
01290 const ASN1UniversalString* value,
01291 const char* elemName);
01292
01310 EXTERNXER int xerEncUniCharData (OSCTXT* pctxt,
01311 const OSUNICHAR* value,
01312 OSUINT32 nchars);
01313
01334 EXTERNXER int xerEncUniCharStr (OSCTXT* pctxt,
01335 OSUNICHAR* value,
01336 const char* elemName);
01337
01362 EXTERNXER int xerEncOpenType (OSCTXT* pctxt, OSUINT32 nocts,
01363 const OSOCTET* data,
01364 const char* elemName);
01365
01382 EXTERNXER int xerEncNull (OSCTXT* pctxt, const char* elemName);
01383
01384
01385 EXTERNXER int xerEncXmlCharData (OSCTXT* pctxt,
01386 const XMLCHAR* pvalue,
01387 int length);
01390
01409 EXTERNXER OSBOOL xerCmpText (const XMLCHAR* text1, const char* text2);
01410
01411
01412 EXTERNXER int xerCopyText (OSCTXT* pctxt, const char* text);
01413
01420 EXTERNXER int xerTextLength (const XMLCHAR* text);
01421
01435 EXTERNXER const char* xerTextToCStr (OSCTXT* pctxt,
01436 const XMLCHAR* text);
01437
01444 EXTERNXER size_t xerGetMsgLen (OSCTXT* pctxt);
01445
01461 EXTERNXER OSOCTET* xerGetMsgPtr (OSCTXT* pctxt);
01462
01463 EXTERNXER int xerGetElemIdx (const XMLCHAR* elemName,
01464 XerElemInfo* pElemInfo, int numElems);
01465
01466 EXTERNXER int xerGetSeqElemIdx (const XMLCHAR* elemName,
01467 XerElemInfo* pElemInfo,
01468 int numElems, int startIndex);
01469
01470 EXTERNXER int xerFinalizeMemBuf (OSRTMEMBUF* pMemBuf);
01471
01481 EXTERNXER int xerGetLibVersion ();
01482
01490 EXTERNXER const char* xerGetLibInfo ();
01491
01495
01496
01531 EXTERNXER int xmlDecBitStr (OSCTXT* pctxt, OSOCTET* pvalue,
01532 OSUINT32* pnbits, OSINT32 bufsize);
01533
01544 EXTERNXER int xmlDecBool (OSCTXT* pctxt, OSBOOL *pvalue);
01545
01561 EXTERNXER int xmlDecDynBitStr (OSCTXT* pctxt, ASN1DynBitStr* pvalue);
01562
01582 EXTERNXER int xmlDecDynNamedBitStr
01583 (OSCTXT* pctxt, ASN1DynBitStr* pvalue,
01584 const XmlNamedBitsDict* pBitDict);
01585
01601 EXTERNXER int xmlDecDynOctStr (OSCTXT* pctxt, ASN1DynOctStr* pvalue);
01602
01621 EXTERNXER int xmlDecGeneralizedTime (OSCTXT* pctxt,
01622 const char** outdata);
01623
01652 EXTERNXER int xmlDecNamedBitStr
01653 (OSRTMEMBUF *pMemBuf, OSOCTET* pData, int dataSize, OSUINT32* pNumbits,
01654 const XmlNamedBitsDict* pBitDict,
01655 const XMLCHAR* chars, int length);
01656
01680 EXTERNXER int xmlDecOctStr (OSCTXT* pctxt, OSOCTET* pvalue,
01681 OSUINT32* pnocts, OSINT32 bufsize);
01682
01699 EXTERNXER int xmlDecReal (OSCTXT* pctxt, OSREAL* pvalue);
01700
01719 EXTERNXER int xmlDecUTCTime (OSCTXT* pctxt,
01720 const char** outdata);
01721
01725
01765 EXTERNXER int xmlEncBitStr (OSCTXT* pctxt,
01766 XmlNamedBitsDict *namedbits,
01767 OSUINT32 noofnamedbits,
01768 OSUINT32 nbits,
01769 const OSOCTET* data,
01770 const char* elemName,
01771 ASN1StrType outputType);
01772
01773 EXTERNXER int xmlEncBoolValue (OSCTXT* pctxt, OSBOOL value);
01774
01794 EXTERNXER int xmlEncBool (OSCTXT* pctxt, OSBOOL value,
01795 const char* elemName);
01796
01810 EXTERNXER int xmlEncEnum (OSCTXT* pctxt, const char* value);
01811
01831 EXTERNXER int xmlEncGeneralizedTime(OSCTXT *pctxt,
01832 const char* value,
01833 const char* elemName);
01834
01850 EXTERNXER int xmlEncNamedValue (OSCTXT* pctxt,
01851 const char* value,
01852 const char* elemName,
01853 const char* attributes);
01854
01855 EXTERNXER int xerEncOpenTypeExt (OSCTXT* pctxt, OSRTDList* pElemList);
01874 EXTERNXER int xmlEncReal (OSCTXT* pctxt, OSREAL value,
01875 const char* elemName);
01876
01895 EXTERNXER int xmlEncUTCTime(OSCTXT *pctxt,
01896 const char* value,
01897 const char* elemName);
01898
01901 #ifdef __cplusplus
01902 }
01903 #endif
01904
01907 #endif