370 lines
13 KiB
C++
370 lines
13 KiB
C++
// CkAsn.h: interface for the CkAsn class.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
// This header is generated for Chilkat 11.3.0
|
|
|
|
#define _CkVersion 11.3.0
|
|
|
|
#ifndef _CkAsn_H
|
|
#define _CkAsn_H
|
|
|
|
#include "chilkatDefs.h"
|
|
#include "CkString.h"
|
|
#include "CkMultiByteBase.h"
|
|
|
|
class CkByteData;
|
|
class CkBinData;
|
|
|
|
|
|
|
|
#if !defined(__sun__) && !defined(__sun)
|
|
#pragma pack (push, 8)
|
|
#endif
|
|
|
|
|
|
#undef Copy
|
|
|
|
// CLASS: CkAsn
|
|
class CK_VISIBLE_PUBLIC CkAsn : public CkMultiByteBase
|
|
{
|
|
private:
|
|
|
|
// Don't allow assignment or copying these objects.
|
|
CkAsn(const CkAsn &);
|
|
CkAsn &operator=(const CkAsn &);
|
|
|
|
public:
|
|
CkAsn(void);
|
|
virtual ~CkAsn(void);
|
|
|
|
static CkAsn *createNew(void);
|
|
static CkAsn *createNew2(int progLang);
|
|
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 char *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 char *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 char *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 char *encodedBytes, const char *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 char *encodedBytes, const char *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 char *encodedBytes, const char *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 char *encodedBytes, const char *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 char *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.
|
|
CkAsn *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.
|
|
CkAsn *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 char *strType, const char *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 char *timeFormat, const char *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 char *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 char *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 char *getEncodedContent(const char *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 char *encodedContent(const char *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 char *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 char *getEncodedDer(const char *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 char *encodedDer(const char *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.
|
|
CkAsn *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.
|
|
CkAsn *GetSubItem(int index);
|
|
|
|
|
|
// Loads ASN.1 from the XML representation (such as that created by the AsnToXml
|
|
// method).
|
|
bool LoadAsnXml(const char *xmlStr);
|
|
|
|
|
|
// Loads ASN.1 from the binary DER contained in bd.
|
|
bool LoadBd(CkBinData &bd);
|
|
|
|
|
|
// Loads ASN.1 from binary DER.
|
|
bool LoadBinary(CkByteData &derBytes);
|
|
|
|
|
|
// Loads ASN.1 from a binary DER file.
|
|
bool LoadBinaryFile(const char *path);
|
|
|
|
|
|
// Loads ASN.1 from an encoded string. The encoding can be base64 , hex , uu ,
|
|
// quoted-printable , base32 , or modbase64 .
|
|
bool LoadEncoded(const char *asnContent, const char *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 char *encodedBytes, const char *encoding);
|
|
|
|
|
|
// Appends the ASN.1 in binary DER format to bd.
|
|
bool WriteBd(CkBinData &bd);
|
|
|
|
|
|
// Writes the ASN.1 in binary DER form to a file.
|
|
bool WriteBinaryDer(const char *path);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// END PUBLIC INTERFACE
|
|
|
|
|
|
};
|
|
#if !defined(__sun__) && !defined(__sun)
|
|
#pragma pack (pop)
|
|
#endif
|
|
|
|
#endif
|