// CkAsnW.h: interface for the CkAsnW class. // ////////////////////////////////////////////////////////////////////// // This header is generated for Chilkat 11.3.0 #ifndef _CkAsnW_H #define _CkAsnW_H #include "chilkatDefs.h" #include "CkString.h" #include "CkWideCharBase.h" class CkByteData; class CkBinDataW; #if !defined(__sun__) && !defined(__sun) #pragma pack (push, 8) #endif // CLASS: CkAsnW class CK_VISIBLE_PUBLIC CkAsnW : public CkWideCharBase { private: // Don't allow assignment or copying these objects. CkAsnW(const CkAsnW &); CkAsnW &operator=(const CkAsnW &); public: CkAsnW(void); virtual ~CkAsnW(void); static CkAsnW *createNew(void); void CK_VISIBLE_PRIVATE inject(void *impl); // May be called when finished with the object to free/dispose of any // internal resources held by the object. void dispose(void); // BEGIN PUBLIC INTERFACE // ---------------------- // Properties // ---------------------- // The ASN.1 item's boolean value if it is a boolean item. bool get_BoolValue(void); // The ASN.1 item's boolean value if it is a boolean item. void put_BoolValue(bool newVal); // true if this ASN.1 item is a constructed item. Sequence and Set items are // constructed and can contain sub-items. All other tags (boolean, integer, octets, // utf8String, etc.) are primitive (non-constructed). bool get_Constructed(void); // The ASN.1 item's content if it is an ASN.1 string type (such as Utf8String, // BmpString, PrintableString, VisibleString, T61String, IA5String, NumericString, // or UniversalString). void get_ContentStr(CkString &str); // The ASN.1 item's content if it is an ASN.1 string type (such as Utf8String, // BmpString, PrintableString, VisibleString, T61String, IA5String, NumericString, // or UniversalString). const wchar_t *contentStr(void); // The ASN.1 item's content if it is an ASN.1 string type (such as Utf8String, // BmpString, PrintableString, VisibleString, T61String, IA5String, NumericString, // or UniversalString). void put_ContentStr(const wchar_t *newVal); // The ASN.1 item's integer value if it is a small integer item. int get_IntValue(void); // The ASN.1 item's integer value if it is a small integer item. void put_IntValue(int newVal); // The number of sub-items contained within this ASN.1 item. Only constructed // items, such as Sequence and Set will contain sub-iitems. Primitive items such as // OIDs, octet strings, integers, etc. will never contain sub-items. int get_NumSubItems(void); // The ASN.1 item's tag as a descriptive string. Possible values are:boolean // integer // bitString // octets // null // oid // utf8String // relativeOid // sequence // set // numericString // printableString // t61String // ia5String // utcTime // bmpString void get_Tag(CkString &str); // The ASN.1 item's tag as a descriptive string. Possible values are:boolean // integer // bitString // octets // null // oid // utf8String // relativeOid // sequence // set // numericString // printableString // t61String // ia5String // utcTime // bmpString const wchar_t *tag(void); // The ASN.1 item's tag as a integer value. The integer values for possible tags // are as follows:boolean (1) // integer (2) // bitString (3) // octets (4) // null (5) // oid (6) // utf8String (12) // relativeOid (13) // sequence (16) // set (17) // numericString (18) // printableString (19) // t61String (20) // ia5String (22) // utcTime (23) // bmpString (30) int get_TagValue(void); // ---------------------- // Methods // ---------------------- // Appends an ASN.1 integer, but one that is a big (huge) integer that is too large // to be represented by an integer variable. The bytes composing the integer are // passed in encoded string format (such as base64, hex, etc.). The byte order must // be big-endian. The encoding may be any of the following encodings: Base64 , Hex , // Base58 , modBase64 , Base32 , UU , QP (for quoted-printable), URL (for // url-encoding), Q , B , url_oath , url_rfc1738 , url_rfc2396 , and url_rfc3986 . // The encoding name is case insensitive (for example, both Base64 and base64 are // treated the same). bool AppendBigInt(const wchar_t *encodedBytes, const wchar_t *encoding); // Appends an ASN.1 bit string to the caller's sub-items. The bytes containing the // bits are passed in encoded string format (such as base64, hex, etc.). The byte // order must be big-endian (MSB first). The encoding may be any of the following // encodings: Base64 , Hex , Base58 , modBase64 , Base32 , UU , QP (for // quoted-printable), URL (for url-encoding), Q , B , url_oath , url_rfc1738 , // url_rfc2396 , and url_rfc3986 . The encoding name is case insensitive (for example, // both Base64 and base64 are treated the same). bool AppendBits(const wchar_t *encodedBytes, const wchar_t *encoding); // Appends an ASN.1 boolean item to the caller's sub-items. Items may only be // appended to constructed data types such as Sequence and Set. bool AppendBool(bool value); // Appends an ASN.1 context-specific constructed item to the caller's sub-items. bool AppendContextConstructed(int tag); // Appends an ASN.1 context-specific primitive item to the caller's sub-items. The // bytes are passed in encoded string format (such as base64, hex, etc.). The encoding // may be any of the following encodings: Base64 , Hex , Base58 , modBase64 , // Base32 , UU , QP (for quoted-printable), URL (for url-encoding), Q , B , // url_oath , url_rfc1738 , url_rfc2396 , and url_rfc3986 . The encoding name is case // insensitive (for example, both Base64 and base64 are treated the same). bool AppendContextPrimitive(int tag, const wchar_t *encodedBytes, const wchar_t *encoding); // Appends an ASN.1 integer item to the caller's sub-items. Items may only be // appended to constructed data types such as Sequence and Set. bool AppendInt(int value); // Appends an ASN.1 null item to the caller's sub-items. Items may only be appended // to constructed data types such as Sequence and Set. bool AppendNull(void); // Appends an ASN.1 octet string to the caller's sub-items. The bytes are passed in // encoded string format (such as base64, hex, etc.). The encoding may be any of the // following encodings: Base64 , Hex , Base58 , modBase64 , Base32 , UU , QP (for // quoted-printable), URL (for url-encoding), Q , B , url_oath , url_rfc1738 , // url_rfc2396 , and url_rfc3986 . The encoding name is case insensitive (for example, // both Base64 and base64 are treated the same). bool AppendOctets(const wchar_t *encodedBytes, const wchar_t *encoding); // Appends an ASN.1 OID (object identifier) to the caller's sub-items. The OID is // passed in string form, such as 1.2.840.113549.1.9.1 . bool AppendOid(const wchar_t *oid); // Appends an ASN.1 sequence item to the caller's sub-items. bool AppendSequence(void); // Appends an ASN.1 sequence item to the caller's sub-items, and updates the // internal reference to point to the newly appended sequence item. bool AppendSequence2(void); // Appends an ASN.1 sequence item to the caller's sub-items, and returns the newly // appended sequence item. // The caller is responsible for deleting the object returned by this method. CkAsnW *AppendSequenceR(void); // Appends an ASN.1 set item to the caller's sub-items. bool AppendSet(void); // Appends an ASN.1 set item to the caller's sub-items, and updates the internal // reference to point to the newly appended set item. bool AppendSet2(void); // Appends an ASN.1 set item to the caller's sub-items, and returns the newly // appended set item. // The caller is responsible for deleting the object returned by this method. CkAsnW *AppendSetR(void); // Appends a string item to the caller's sub-items. The strType specifies the type of // string to be added. It may be utf8 , ia5 , t61 , printable , visible , numeric , // universal , or bmp . The value must conform to the ASN.1 restrictions imposed for // a given string type. The utf8 , bmp , and universal types have no restrictions // on what characters are allowed. In general, unless a specific type of string is // required, choose the utf8 type. bool AppendString(const wchar_t *strType, const wchar_t *value); // Appends a UTCTime item to the caller's sub-items. The timeFormat specifies the format // of the dateTimeStr. It should be set to utc . (In the future, this method will be // expanded to append GeneralizedTime items by using generalized for timeFormat.) To // append the current date/time, set dateTimeStr equal to the empty string or the keyword // now . Otherwise, the dateTimeStr should be in the UTC time format YYMMDDhhmm[ss]Z or // YYMMDDhhmm[ss](+|-)hhmm . bool AppendTime(const wchar_t *timeFormat, const wchar_t *dateTimeStr); // Converts ASN.1 to XML and returns the XML string. bool AsnToXml(CkString &outStr); // Converts ASN.1 to XML and returns the XML string. const wchar_t *asnToXml(void); // Discards the Nth sub-item. (The 1st sub-item is at index 0.) bool DeleteSubItem(int index); // Returns the ASN.1 in binary DER form. bool GetBinaryDer(CkByteData &outBytes); // Returns the content of the ASN.1 item in encoded string form. The encoding may be // any of the following encodings: Base64 , Hex , Base58 , modBase64 , Base32 , UU // , QP (for quoted-printable), URL (for url-encoding), Q , B , url_oath , // url_rfc1738 , url_rfc2396 , and url_rfc3986 . The encoding name is case insensitive // (for example, both Base64 and base64 are treated the same). bool GetEncodedContent(const wchar_t *encoding, CkString &outStr); // Returns the content of the ASN.1 item in encoded string form. The encoding may be // any of the following encodings: Base64 , Hex , Base58 , modBase64 , Base32 , UU // , QP (for quoted-printable), URL (for url-encoding), Q , B , url_oath , // url_rfc1738 , url_rfc2396 , and url_rfc3986 . The encoding name is case insensitive // (for example, both Base64 and base64 are treated the same). const wchar_t *getEncodedContent(const wchar_t *encoding); // Returns the content of the ASN.1 item in encoded string form. The encoding may be // any of the following encodings: Base64 , Hex , Base58 , modBase64 , Base32 , UU // , QP (for quoted-printable), URL (for url-encoding), Q , B , url_oath , // url_rfc1738 , url_rfc2396 , and url_rfc3986 . The encoding name is case insensitive // (for example, both Base64 and base64 are treated the same). const wchar_t *encodedContent(const wchar_t *encoding); // Returns the binary DER in encoded string form. The encoding indicates the encoding // and can be base64 , hex , uu , quoted-printable , base32 , or modbase64 . bool GetEncodedDer(const wchar_t *encoding, CkString &outStr); // Returns the binary DER in encoded string form. The encoding indicates the encoding // and can be base64 , hex , uu , quoted-printable , base32 , or modbase64 . const wchar_t *getEncodedDer(const wchar_t *encoding); // Returns the binary DER in encoded string form. The encoding indicates the encoding // and can be base64 , hex , uu , quoted-printable , base32 , or modbase64 . const wchar_t *encodedDer(const wchar_t *encoding); // Returns the last ASN.1 sub-item. This method can be called immediately after any // Append* method to access the appended item. // The caller is responsible for deleting the object returned by this method. CkAsnW *GetLastSubItem(void); // Returns the Nth ASN.1 sub-item. The 1st sub-item is at index 0. // The caller is responsible for deleting the object returned by this method. CkAsnW *GetSubItem(int index); // Loads ASN.1 from the XML representation (such as that created by the AsnToXml // method). bool LoadAsnXml(const wchar_t *xmlStr); // Loads ASN.1 from the binary DER contained in bd. bool LoadBd(CkBinDataW &bd); // Loads ASN.1 from binary DER. bool LoadBinary(CkByteData &derBytes); // Loads ASN.1 from a binary DER file. bool LoadBinaryFile(const wchar_t *path); // Loads ASN.1 from an encoded string. The encoding can be base64 , hex , uu , // quoted-printable , base32 , or modbase64 . bool LoadEncoded(const wchar_t *asnContent, const wchar_t *encoding); // Sets the content of this primitive ASN.1 item. The encoding may be any of the // following encodings: Base64 , Hex , Base58 , modBase64 , Base32 , UU , QP (for // quoted-printable), URL (for url-encoding), Q , B , url_oath , url_rfc1738 , // url_rfc2396 , and url_rfc3986 . The encoding name is case insensitive (for example, // both Base64 and base64 are treated the same). bool SetEncodedContent(const wchar_t *encodedBytes, const wchar_t *encoding); // Appends the ASN.1 in binary DER format to bd. bool WriteBd(CkBinDataW &bd); // Writes the ASN.1 in binary DER form to a file. bool WriteBinaryDer(const wchar_t *path); // END PUBLIC INTERFACE }; #if !defined(__sun__) && !defined(__sun) #pragma pack (pop) #endif #endif