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 "rtSAXDefs.h"
00073
00086
typedef enum {
00087 XERINIT,
00088 XERSTART,
00089 XERDATA,
00090 XEREND,
00091
00092 XERSTART0,
00093 XEREND0
00094 } ASN1XERState;
00095
00096
#define XERINDENT 3
00097
00098
typedef struct {
00099 ASN1ConstCharPtr name;
00100 ASN1BOOL optional;
00101 } XerElemInfo;
00102
00103
typedef struct XmlNamedBitsDict {
00104 ASN1ConstCharPtr name;
00105 ASN1UINT bitnum;
00106 } XmlNamedBitsDict;
00107
00108
00109
#define XERBYTECNT(pctxt) (pctxt)->buffer.byteIndex
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 (ASN1CTXT* pctxt,
00152 ASN1BMPString* outdata);
00153
00177 EXTERNXER
int xerDecBase64Str (ASN1CTXT* pctxt,
00178 ASN1OCTET* pvalue, ASN1UINT* pnocts,
00179 ASN1INT bufsize);
00180
00205 EXTERNXER
int xerDecBigInt (ASN1CTXT* pctxt,
char **ppvalue,
int radix);
00206
00207
00231 EXTERNXER
int xerDecBitStr (ASN1CTXT* pctxt, ASN1OCTET* pvalue,
00232 ASN1UINT* pnbits, ASN1INT bufsize);
00233
00251 EXTERNXER
int xerDecBitStrMemBuf (ASN1MemBuf* pMemBuf,
00252 ASN1Const XMLCHAR* inpdata,
00253
int length, ASN1BOOL skipWhitespaces);
00254
00265 EXTERNXER
int xerDecBool (ASN1CTXT* pctxt, ASN1BOOL *pvalue);
00266
00285 EXTERNXER
int xerDecCopyBitStr (ASN1CTXT* pctxt,
00286 ASN1OCTET* pvalue, ASN1UINT* pnbits,
00287 ASN1INT bufsize,
int lastBitOffset);
00288
00304 EXTERNXER
int xerDecCopyDynBitStr (ASN1CTXT* pctxt,
00305 ASN1DynBitStr* pvalue,
00306
int lastBitOffset);
00307
00323 EXTERNXER
int xerDecCopyDynOctStr (ASN1CTXT* pctxt, ASN1DynOctStr* pvalue,
00324
int lastBitOffset);
00325
00348 EXTERNXER
int xerDecCopyOctStr (ASN1CTXT* pctxt,
00349 ASN1OCTET* pvalue, ASN1UINT* pnocts,
00350 ASN1INT bufsize,
int lastBitOffset);
00351
00370 EXTERNXER
int xerDecDynAscCharStr (ASN1CTXT* pctxt,
00371 ASN1ConstCharPtr* outdata);
00372
00373
00390 EXTERNXER
int xerDecDynBase64Str (ASN1CTXT* pctxt, ASN1DynOctStr* pvalue);
00391
00407 EXTERNXER
int xerDecDynBitStr (ASN1CTXT* pctxt, ASN1DynBitStr* pvalue);
00408
00424 EXTERNXER
int xerDecDynOctStr (ASN1CTXT* pctxt, ASN1DynOctStr* pvalue);
00425
00445 EXTERNXER
int xerDecDynUTF8Str (ASN1CTXT* pctxt,
00446 ASN1UTF8String* outdata);
00447
00458 EXTERNXER
int xerDecInt (ASN1CTXT* pctxt, ASN1INT* pvalue);
00459
00470 EXTERNXER
int xerDecInt8 (ASN1CTXT* pctxt, ASN1INT8* pvalue);
00471
00482 EXTERNXER
int xerDecInt16 (ASN1CTXT* pctxt, ASN1SINT* pvalue);
00483
00496 EXTERNXER
int xerDecInt64 (ASN1CTXT* pctxt, ASN1INT64* pvalue);
00497
00510 EXTERNXER
int xerDecObjId (ASN1CTXT* pctxt, ASN1OBJID *pvalue);
00511
00525 EXTERNXER
int xerDecObjId64 (ASN1CTXT* pctxt, ASN1OID64 *pvalue);
00526
00550 EXTERNXER
int xerDecOctStr (ASN1CTXT* pctxt, ASN1OCTET* pvalue,
00551 ASN1UINT* pnocts, ASN1INT bufsize);
00552
00570 EXTERNXER
int xerDecOctStrMemBuf (ASN1MemBuf* pMemBuf,
00571 ASN1Const XMLCHAR* inpdata,
00572
int length, ASN1BOOL skipWhitespaces);
00573
00592 EXTERNXER
int xerDecOpenType (ASN1CTXT* pctxt, ASN1OpenType* pvalue);
00593
00610 EXTERNXER
int xerDecReal (ASN1CTXT* pctxt, ASN1REAL* pvalue);
00611
00624 EXTERNXER
int xerDecRelativeOID (ASN1CTXT* pctxt, ASN1OBJID *pvalue);
00625
00637 EXTERNXER
int xerDecUInt (ASN1CTXT* pctxt, ASN1UINT* pvalue);
00638
00650 EXTERNXER
int xerDecUInt8 (ASN1CTXT* pctxt, ASN1UINT8* pvalue);
00651
00663 EXTERNXER
int xerDecUInt16 (ASN1CTXT* pctxt, ASN1USINT* pvalue);
00664
00679 EXTERNXER
int xerDecUInt64 (ASN1CTXT* pctxt, ASN1UINT64* pvalue);
00680
00694 EXTERNXER
int xerDecUnivStr (ASN1CTXT* pctxt,
00695 ASN1UniversalString* outdata);
00696
00714 EXTERNXER
int xerSetDecBufPtr (ASN1CTXT* pCtxt, ASN1ConstOctetPtr bufaddr,
00715 size_t bufsiz);
00716
00719
00765 EXTERNXER
int xerSetEncBufPtr (ASN1CTXT* pCtxt, ASN1OCTET* bufaddr,
00766 size_t bufsiz, ASN1BOOL canonical);
00767
00787 EXTERNXER
int xerEncAscCharStr (ASN1CTXT* pctxt,
00788 ASN1ConstCharPtr value,
00789 ASN1ConstCharPtr elemName);
00790
00791
00813 EXTERNXER
int xerEncBase64Str (ASN1CTXT* pctxt, ASN1UINT nocts,
00814 ASN1ConstOctetPtr data,
00815 ASN1ConstCharPtr elemName);
00816
00841 EXTERNXER
int xerEncBigInt (ASN1CTXT* pctxt, ASN1ConstCharPtr value,
00842 ASN1ConstCharPtr elemName);
00843
00868 EXTERNXER
int xerEncBitStr (ASN1CTXT* pctxt, ASN1UINT nbits,
00869 ASN1ConstOctetPtr data,
00870 ASN1ConstCharPtr elemName,
00871 ASN1StrType outputType);
00872
00873 EXTERNXER
int xerEncBoolValue (ASN1CTXT* pctxt, ASN1BOOL value);
00874
00875
00895 EXTERNXER
int xerEncBool (ASN1CTXT* pctxt, ASN1BOOL value,
00896 ASN1ConstCharPtr elemName);
00897
00909 EXTERNXER
int xerEncEndDocument (ASN1CTXT* pctxt);
00910
00923 EXTERNXER
int xerEncEndElement (ASN1CTXT* pctxt, ASN1ConstCharPtr elemName);
00924
00931 EXTERNXER
int xerEncIndent (ASN1CTXT* pctxt);
00932
00952 EXTERNXER
int xerEncInt (ASN1CTXT* pctxt, ASN1INT value,
00953 ASN1ConstCharPtr elemName);
00954
00976 EXTERNXER
int xerEncInt64 (ASN1CTXT* pctxt, ASN1INT64 value,
00977 ASN1ConstCharPtr elemName);
00978
00979
00991 EXTERNXER
int xerEncNewLine (ASN1CTXT* pctxt);
00992
01013 EXTERNXER
int xerEncObjId (ASN1CTXT* pctxt,
const ASN1OBJID *pvalue,
01014 ASN1ConstCharPtr elemName);
01015
01037 EXTERNXER
int xerEncObjId64 (ASN1CTXT* pctxt,
const ASN1OID64 *pvalue,
01038 ASN1ConstCharPtr elemName);
01039
01060 EXTERNXER
int xerEncRelativeOID (ASN1CTXT* pctxt,
const ASN1OBJID *pvalue,
01061 ASN1ConstCharPtr elemName);
01062
01083 EXTERNXER
int xerEncOctStr (ASN1CTXT* pctxt, ASN1UINT nocts,
01084 ASN1ConstOctetPtr data,
01085 ASN1ConstCharPtr elemName);
01086
01106 EXTERNXER
int xerEncReal (ASN1CTXT* pctxt, ASN1REAL value,
01107 ASN1ConstCharPtr elemName);
01108
01123 EXTERNXER
int xerEncStartDocument (ASN1CTXT* pctxt);
01124
01140 EXTERNXER
int xerEncStartElement (ASN1CTXT* pctxt,
01141 ASN1ConstCharPtr elemName,
01142 ASN1ConstCharPtr attributes);
01143
01157 EXTERNXER
int xerEncEmptyElement (ASN1CTXT* pctxt,
01158 ASN1ConstCharPtr elemName,
01159 ASN1ConstCharPtr attributes);
01175 EXTERNXER
int xerEncNamedValue (ASN1CTXT* pctxt,
01176 ASN1ConstCharPtr value,
01177 ASN1ConstCharPtr elemName,
01178 ASN1ConstCharPtr attributes);
01179
01200 EXTERNXER
int xerEncUInt (ASN1CTXT* pctxt, ASN1UINT value,
01201 ASN1ConstCharPtr elemName);
01202
01225 EXTERNXER
int xerEncUInt64 (ASN1CTXT* pctxt, ASN1UINT64 value,
01226 ASN1ConstCharPtr elemName);
01227
01246 EXTERNXER
int xerEncBMPStr (ASN1CTXT* pctxt,
01247
const ASN1BMPString* value,
01248 ASN1ConstCharPtr elemName);
01249
01270 EXTERNXER
int xerEncUnivStr (ASN1CTXT* pctxt,
01271
const ASN1UniversalString* value,
01272 ASN1ConstCharPtr elemName);
01273
01291 EXTERNXER
int xerEncUniCharData (ASN1CTXT* pctxt,
01292 ASN1Const16BitCharPtr value,
01293 ASN1UINT nchars);
01294
01315 EXTERNXER
int xerEncUniCharStr (ASN1CTXT* pctxt,
01316 ASN116BITCHAR* value,
01317 ASN1ConstCharPtr elemName);
01318
01343 EXTERNXER
int xerEncOpenType (ASN1CTXT* pctxt, ASN1UINT nocts,
01344 ASN1ConstOctetPtr data,
01345 ASN1ConstCharPtr elemName);
01346
01363 EXTERNXER
int xerEncNull (ASN1CTXT* pctxt, ASN1ConstCharPtr elemName);
01364
01365
01366 EXTERNXER
int xerEncXmlCharData (ASN1CTXT* pctxt,
01367 ASN1Const XMLCHAR* pvalue,
01368
int length);
01371
01390 EXTERNXER ASN1BOOL
xerCmpText (ASN1Const XMLCHAR* text1, ASN1ConstCharPtr text2);
01391
01392
01393 EXTERNXER
int xerCopyText (ASN1CTXT* pctxt, ASN1ConstCharPtr text);
01394
01401 EXTERNXER
int xerTextLength (ASN1Const XMLCHAR* text);
01402
01416 EXTERNXER ASN1ConstCharPtr
xerTextToCStr (ASN1CTXT* pctxt,
01417 ASN1Const XMLCHAR* text);
01418
01425 EXTERNXER size_t
xerGetMsgLen (ASN1CTXT* pctxt);
01426
01442 EXTERNXER ASN1OCTET*
xerGetMsgPtr (ASN1CTXT* pctxt);
01443
01444 EXTERNXER
int xerGetElemIdx (ASN1Const XMLCHAR* elemName,
01445 XerElemInfo* pElemInfo,
int numElems);
01446
01447 EXTERNXER
int xerGetSeqElemIdx (ASN1Const XMLCHAR* elemName,
01448 XerElemInfo* pElemInfo,
01449
int numElems,
int startIndex);
01450
01451 EXTERNXER
int xerFinalizeMemBuf (ASN1MemBuf* pMemBuf);
01452
01456
01457
01492 EXTERNXER
int xmlDecBitStr (ASN1CTXT* pctxt, ASN1OCTET* pvalue,
01493 ASN1UINT* pnbits, ASN1INT bufsize);
01494
01505 EXTERNXER
int xmlDecBool (ASN1CTXT* pctxt, ASN1BOOL *pvalue);
01506
01522 EXTERNXER
int xmlDecDynBitStr (ASN1CTXT* pctxt, ASN1DynBitStr* pvalue);
01523
01543 EXTERNXER
int xmlDecDynNamedBitStr
01544 (ASN1CTXT* pctxt, ASN1DynBitStr* pvalue,
01545 ASN1Const XmlNamedBitsDict* pBitDict);
01546
01562 EXTERNXER
int xmlDecDynOctStr (ASN1CTXT* pctxt, ASN1DynOctStr* pvalue);
01563
01582 EXTERNXER
int xmlDecGeneralizedTime (ASN1CTXT* pctxt,
01583 ASN1ConstCharPtr* outdata);
01584
01613 EXTERNXER
int xmlDecNamedBitStr
01614 (ASN1MemBuf *pMemBuf, ASN1OCTET* pData,
int dataSize, ASN1UINT* pNumbits,
01615 ASN1Const XmlNamedBitsDict* pBitDict,
01616 ASN1Const XMLCHAR* chars,
int length);
01617
01641 EXTERNXER
int xmlDecOctStr (ASN1CTXT* pctxt, ASN1OCTET* pvalue,
01642 ASN1UINT* pnocts, ASN1INT bufsize);
01643
01660 EXTERNXER
int xmlDecReal (ASN1CTXT* pctxt, ASN1REAL* pvalue);
01661
01680 EXTERNXER
int xmlDecUTCTime (ASN1CTXT* pctxt,
01681 ASN1ConstCharPtr* outdata);
01682
01686
01726 EXTERNXER
int xmlEncBitStr (ASN1CTXT* pctxt,
01727 XmlNamedBitsDict *namedbits,
01728 ASN1UINT noofnamedbits,
01729 ASN1UINT nbits,
01730 ASN1ConstOctetPtr data,
01731 ASN1ConstCharPtr elemName,
01732 ASN1StrType outputType);
01733
01734 EXTERNXER
int xmlEncBoolValue (ASN1CTXT* pctxt, ASN1BOOL value);
01735
01755 EXTERNXER
int xmlEncBool (ASN1CTXT* pctxt, ASN1BOOL value,
01756 ASN1ConstCharPtr elemName);
01757
01771 EXTERNXER
int xmlEncEnum (ASN1CTXT* pctxt, ASN1ConstCharPtr value);
01772
01792 EXTERNXER
int xmlEncGeneralizedTime(ASN1CTXT *pctxt,
01793 ASN1ConstCharPtr value,
01794 ASN1ConstCharPtr elemName);
01795
01811 EXTERNXER
int xmlEncNamedValue (ASN1CTXT* pctxt,
01812 ASN1ConstCharPtr value,
01813 ASN1ConstCharPtr elemName,
01814 ASN1ConstCharPtr attributes);
01815
01834 EXTERNXER
int xmlEncReal (ASN1CTXT* pctxt, ASN1REAL value,
01835 ASN1ConstCharPtr elemName);
01836
01855 EXTERNXER
int xmlEncUTCTime(ASN1CTXT *pctxt,
01856 ASN1ConstCharPtr value,
01857 ASN1ConstCharPtr elemName);
01858
01861
#ifdef __cplusplus
01862
}
01863
#endif
01864
01867
#endif