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
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 ASN1ConstCharPtr name;
00098 ASN1BOOL optional;
00099 } XerElemInfo;
00100
00101 typedef struct XmlNamedBitsDict {
00102 ASN1ConstCharPtr name;
00103 ASN1UINT bitnum;
00104 } XmlNamedBitsDict;
00105
00106 typedef struct OSXMLNamespace {
00107 const OSUTF8CHAR* prefix;
00108 const OSUTF8CHAR* uri;
00109 } OSXMLNamespace;
00110
00111
00112 #define XERBYTECNT(pctxt) (pctxt)->buffer.byteIndex
00113
00114 #ifdef __cplusplus
00115 extern "C" {
00116 #endif
00117
00118 #ifdef BUILDASN1XERDLL
00119 #define EXTERNXER __declspec(dllexport)
00120 #elif defined (USEASN1XERDLL)
00121 #define EXTERNXER __declspec(dllimport)
00122 #else
00123 #define EXTERNXER
00124 #endif
00125
00126
00154 EXTERNXER int xerDecBMPStr (ASN1CTXT* pctxt,
00155 ASN1BMPString* outdata);
00156
00180 EXTERNXER int xerDecBase64Str (ASN1CTXT* pctxt,
00181 ASN1OCTET* pvalue, ASN1UINT* pnocts,
00182 ASN1INT bufsize);
00183
00208 EXTERNXER int xerDecBigInt (ASN1CTXT* pctxt, char **ppvalue, int radix);
00209
00210
00234 EXTERNXER int xerDecBitStr (ASN1CTXT* pctxt, ASN1OCTET* pvalue,
00235 ASN1UINT* pnbits, ASN1INT bufsize);
00236
00254 EXTERNXER int xerDecBitStrMemBuf (ASN1MemBuf* pMemBuf,
00255 ASN1Const XMLCHAR* inpdata,
00256 int length, ASN1BOOL skipWhitespaces);
00257
00268 EXTERNXER int xerDecBool (ASN1CTXT* pctxt, ASN1BOOL *pvalue);
00269
00288 EXTERNXER int xerDecCopyBitStr (ASN1CTXT* pctxt,
00289 ASN1OCTET* pvalue, ASN1UINT* pnbits,
00290 ASN1INT bufsize, int lastBitOffset);
00291
00307 EXTERNXER int xerDecCopyDynBitStr (ASN1CTXT* pctxt,
00308 ASN1DynBitStr* pvalue,
00309 int lastBitOffset);
00310
00326 EXTERNXER int xerDecCopyDynOctStr (ASN1CTXT* pctxt, ASN1DynOctStr* pvalue,
00327 int lastBitOffset);
00328
00351 EXTERNXER int xerDecCopyOctStr (ASN1CTXT* pctxt,
00352 ASN1OCTET* pvalue, ASN1UINT* pnocts,
00353 ASN1INT bufsize, int lastBitOffset);
00354
00373 EXTERNXER int xerDecDynAscCharStr (ASN1CTXT* pctxt,
00374 ASN1ConstCharPtr* outdata);
00375
00376
00393 EXTERNXER int xerDecDynBase64Str (ASN1CTXT* pctxt, ASN1DynOctStr* pvalue);
00394
00410 EXTERNXER int xerDecDynBitStr (ASN1CTXT* pctxt, ASN1DynBitStr* pvalue);
00411
00427 EXTERNXER int xerDecDynOctStr (ASN1CTXT* pctxt, ASN1DynOctStr* pvalue);
00428
00448 EXTERNXER int xerDecDynUTF8Str (ASN1CTXT* pctxt,
00449 ASN1UTF8String* outdata);
00450
00461 EXTERNXER int xerDecInt (ASN1CTXT* pctxt, ASN1INT* pvalue);
00462
00473 EXTERNXER int xerDecInt8 (ASN1CTXT* pctxt, ASN1INT8* pvalue);
00474
00485 EXTERNXER int xerDecInt16 (ASN1CTXT* pctxt, ASN1SINT* pvalue);
00486
00499 EXTERNXER int xerDecInt64 (ASN1CTXT* pctxt, ASN1INT64* pvalue);
00500
00513 EXTERNXER int xerDecObjId (ASN1CTXT* pctxt, ASN1OBJID *pvalue);
00514
00528 EXTERNXER int xerDecObjId64 (ASN1CTXT* pctxt, ASN1OID64 *pvalue);
00529
00553 EXTERNXER int xerDecOctStr (ASN1CTXT* pctxt, ASN1OCTET* pvalue,
00554 ASN1UINT* pnocts, ASN1INT bufsize);
00555
00573 EXTERNXER int xerDecOctStrMemBuf (ASN1MemBuf* pMemBuf,
00574 ASN1Const XMLCHAR* inpdata,
00575 int length, ASN1BOOL skipWhitespaces);
00576
00595 EXTERNXER int xerDecOpenType (ASN1CTXT* pctxt, ASN1OpenType* pvalue);
00596
00613 EXTERNXER int xerDecReal (ASN1CTXT* pctxt, ASN1REAL* pvalue);
00614
00627 EXTERNXER int xerDecRelativeOID (ASN1CTXT* pctxt, ASN1OBJID *pvalue);
00628
00640 EXTERNXER int xerDecUInt (ASN1CTXT* pctxt, ASN1UINT* pvalue);
00641
00653 EXTERNXER int xerDecUInt8 (ASN1CTXT* pctxt, ASN1UINT8* pvalue);
00654
00666 EXTERNXER int xerDecUInt16 (ASN1CTXT* pctxt, ASN1USINT* pvalue);
00667
00682 EXTERNXER int xerDecUInt64 (ASN1CTXT* pctxt, ASN1UINT64* pvalue);
00683
00697 EXTERNXER int xerDecUnivStr (ASN1CTXT* pctxt,
00698 ASN1UniversalString* outdata);
00699
00717 EXTERNXER int xerSetDecBufPtr (ASN1CTXT* pCtxt, ASN1ConstOctetPtr bufaddr,
00718 size_t bufsiz);
00719
00722
00768 EXTERNXER int xerSetEncBufPtr (ASN1CTXT* pCtxt, ASN1OCTET* bufaddr,
00769 size_t bufsiz, ASN1BOOL canonical);
00770
00790 EXTERNXER int xerEncAscCharStr (ASN1CTXT* pctxt,
00791 ASN1ConstCharPtr value,
00792 ASN1ConstCharPtr elemName);
00793
00794
00816 EXTERNXER int xerEncBase64Str (ASN1CTXT* pctxt, ASN1UINT nocts,
00817 ASN1ConstOctetPtr data,
00818 ASN1ConstCharPtr elemName);
00819
00844 EXTERNXER int xerEncBigInt (ASN1CTXT* pctxt, ASN1ConstCharPtr value,
00845 ASN1ConstCharPtr elemName);
00846
00871 EXTERNXER int xerEncBitStr (ASN1CTXT* pctxt, ASN1UINT nbits,
00872 ASN1ConstOctetPtr data,
00873 ASN1ConstCharPtr elemName,
00874 ASN1StrType outputType);
00875
00876 EXTERNXER int xerEncBoolValue (ASN1CTXT* pctxt, ASN1BOOL value);
00877
00878
00898 EXTERNXER int xerEncBool (ASN1CTXT* pctxt, ASN1BOOL value,
00899 ASN1ConstCharPtr elemName);
00900
00912 EXTERNXER int xerEncEndDocument (ASN1CTXT* pctxt);
00913
00926 EXTERNXER int xerEncEndElement (ASN1CTXT* pctxt, ASN1ConstCharPtr elemName);
00927
00934 EXTERNXER int xerEncIndent (ASN1CTXT* pctxt);
00935
00955 EXTERNXER int xerEncInt (ASN1CTXT* pctxt, ASN1INT value,
00956 ASN1ConstCharPtr elemName);
00957
00979 EXTERNXER int xerEncInt64 (ASN1CTXT* pctxt, ASN1INT64 value,
00980 ASN1ConstCharPtr elemName);
00981
00982
00994 EXTERNXER int xerEncNewLine (ASN1CTXT* pctxt);
00995
01016 EXTERNXER int xerEncObjId (ASN1CTXT* pctxt, const ASN1OBJID *pvalue,
01017 ASN1ConstCharPtr elemName);
01018
01040 EXTERNXER int xerEncObjId64 (ASN1CTXT* pctxt, const ASN1OID64 *pvalue,
01041 ASN1ConstCharPtr elemName);
01042
01063 EXTERNXER int xerEncRelativeOID (ASN1CTXT* pctxt, const ASN1OBJID *pvalue,
01064 ASN1ConstCharPtr elemName);
01065
01086 EXTERNXER int xerEncOctStr (ASN1CTXT* pctxt, ASN1UINT nocts,
01087 ASN1ConstOctetPtr data,
01088 ASN1ConstCharPtr elemName);
01089
01109 EXTERNXER int xerEncReal (ASN1CTXT* pctxt, ASN1REAL value,
01110 ASN1ConstCharPtr elemName);
01111
01126 EXTERNXER int xerEncStartDocument (ASN1CTXT* pctxt);
01127
01143 EXTERNXER int xerEncStartElement (ASN1CTXT* pctxt,
01144 ASN1ConstCharPtr elemName,
01145 ASN1ConstCharPtr attributes);
01146
01160 EXTERNXER int xerEncEmptyElement (ASN1CTXT* pctxt,
01161 ASN1ConstCharPtr elemName,
01162 ASN1ConstCharPtr attributes);
01178 EXTERNXER int xerEncNamedValue (ASN1CTXT* pctxt,
01179 ASN1ConstCharPtr value,
01180 ASN1ConstCharPtr elemName,
01181 ASN1ConstCharPtr attributes);
01182
01203 EXTERNXER int xerEncUInt (ASN1CTXT* pctxt, ASN1UINT value,
01204 ASN1ConstCharPtr elemName);
01205
01228 EXTERNXER int xerEncUInt64 (ASN1CTXT* pctxt, ASN1UINT64 value,
01229 ASN1ConstCharPtr elemName);
01230
01249 EXTERNXER int xerEncBMPStr (ASN1CTXT* pctxt,
01250 const ASN1BMPString* value,
01251 ASN1ConstCharPtr elemName);
01252
01273 EXTERNXER int xerEncUnivStr (ASN1CTXT* pctxt,
01274 const ASN1UniversalString* value,
01275 ASN1ConstCharPtr elemName);
01276
01294 EXTERNXER int xerEncUniCharData (ASN1CTXT* pctxt,
01295 ASN1Const16BitCharPtr value,
01296 ASN1UINT nchars);
01297
01318 EXTERNXER int xerEncUniCharStr (ASN1CTXT* pctxt,
01319 ASN116BITCHAR* value,
01320 ASN1ConstCharPtr elemName);
01321
01346 EXTERNXER int xerEncOpenType (ASN1CTXT* pctxt, ASN1UINT nocts,
01347 ASN1ConstOctetPtr data,
01348 ASN1ConstCharPtr elemName);
01349
01366 EXTERNXER int xerEncNull (ASN1CTXT* pctxt, ASN1ConstCharPtr elemName);
01367
01368
01369 EXTERNXER int xerEncXmlCharData (ASN1CTXT* pctxt,
01370 ASN1Const XMLCHAR* pvalue,
01371 int length);
01374
01393 EXTERNXER ASN1BOOL xerCmpText (ASN1Const XMLCHAR* text1, ASN1ConstCharPtr text2);
01394
01395
01396 EXTERNXER int xerCopyText (ASN1CTXT* pctxt, ASN1ConstCharPtr text);
01397
01404 EXTERNXER int xerTextLength (ASN1Const XMLCHAR* text);
01405
01419 EXTERNXER ASN1ConstCharPtr xerTextToCStr (ASN1CTXT* pctxt,
01420 ASN1Const XMLCHAR* text);
01421
01428 EXTERNXER size_t xerGetMsgLen (ASN1CTXT* pctxt);
01429
01445 EXTERNXER ASN1OCTET* xerGetMsgPtr (ASN1CTXT* pctxt);
01446
01447 EXTERNXER int xerGetElemIdx (ASN1Const XMLCHAR* elemName,
01448 XerElemInfo* pElemInfo, int numElems);
01449
01450 EXTERNXER int xerGetSeqElemIdx (ASN1Const XMLCHAR* elemName,
01451 XerElemInfo* pElemInfo,
01452 int numElems, int startIndex);
01453
01454 EXTERNXER int xerFinalizeMemBuf (ASN1MemBuf* pMemBuf);
01455
01459
01460
01495 EXTERNXER int xmlDecBitStr (ASN1CTXT* pctxt, ASN1OCTET* pvalue,
01496 ASN1UINT* pnbits, ASN1INT bufsize);
01497
01508 EXTERNXER int xmlDecBool (ASN1CTXT* pctxt, ASN1BOOL *pvalue);
01509
01525 EXTERNXER int xmlDecDynBitStr (ASN1CTXT* pctxt, ASN1DynBitStr* pvalue);
01526
01546 EXTERNXER int xmlDecDynNamedBitStr
01547 (ASN1CTXT* pctxt, ASN1DynBitStr* pvalue,
01548 ASN1Const XmlNamedBitsDict* pBitDict);
01549
01565 EXTERNXER int xmlDecDynOctStr (ASN1CTXT* pctxt, ASN1DynOctStr* pvalue);
01566
01585 EXTERNXER int xmlDecGeneralizedTime (ASN1CTXT* pctxt,
01586 ASN1ConstCharPtr* outdata);
01587
01616 EXTERNXER int xmlDecNamedBitStr
01617 (ASN1MemBuf *pMemBuf, ASN1OCTET* pData, int dataSize, ASN1UINT* pNumbits,
01618 ASN1Const XmlNamedBitsDict* pBitDict,
01619 ASN1Const XMLCHAR* chars, int length);
01620
01644 EXTERNXER int xmlDecOctStr (ASN1CTXT* pctxt, ASN1OCTET* pvalue,
01645 ASN1UINT* pnocts, ASN1INT bufsize);
01646
01663 EXTERNXER int xmlDecReal (ASN1CTXT* pctxt, ASN1REAL* pvalue);
01664
01683 EXTERNXER int xmlDecUTCTime (ASN1CTXT* pctxt,
01684 ASN1ConstCharPtr* outdata);
01685
01689
01729 EXTERNXER int xmlEncBitStr (ASN1CTXT* pctxt,
01730 XmlNamedBitsDict *namedbits,
01731 ASN1UINT noofnamedbits,
01732 ASN1UINT nbits,
01733 ASN1ConstOctetPtr data,
01734 ASN1ConstCharPtr elemName,
01735 ASN1StrType outputType);
01736
01737 EXTERNXER int xmlEncBoolValue (ASN1CTXT* pctxt, ASN1BOOL value);
01738
01758 EXTERNXER int xmlEncBool (ASN1CTXT* pctxt, ASN1BOOL value,
01759 ASN1ConstCharPtr elemName);
01760
01774 EXTERNXER int xmlEncEnum (ASN1CTXT* pctxt, ASN1ConstCharPtr value);
01775
01795 EXTERNXER int xmlEncGeneralizedTime(ASN1CTXT *pctxt,
01796 ASN1ConstCharPtr value,
01797 ASN1ConstCharPtr elemName);
01798
01814 EXTERNXER int xmlEncNamedValue (ASN1CTXT* pctxt,
01815 ASN1ConstCharPtr value,
01816 ASN1ConstCharPtr elemName,
01817 ASN1ConstCharPtr attributes);
01818
01819 EXTERNXER int xerEncOpenTypeExt (ASN1CTXT* pctxt, Asn1RTDList* pElemList);
01838 EXTERNXER int xmlEncReal (ASN1CTXT* pctxt, ASN1REAL value,
01839 ASN1ConstCharPtr elemName);
01840
01859 EXTERNXER int xmlEncUTCTime(ASN1CTXT *pctxt,
01860 ASN1ConstCharPtr value,
01861 ASN1ConstCharPtr elemName);
01862
01865 #ifdef __cplusplus
01866 }
01867 #endif
01868
01871 #endif