Files
ANSLibs/chilkat/include/CkPublicKey.h

323 lines
9.9 KiB
C
Raw Normal View History

// CkPublicKey.h: interface for the CkPublicKey class.
//
//////////////////////////////////////////////////////////////////////
// This header is generated for Chilkat 11.3.0
#define _CkVersion 11.3.0
#ifndef _CkPublicKey_H
#define _CkPublicKey_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: CkPublicKey
class CK_VISIBLE_PUBLIC CkPublicKey : public CkMultiByteBase
{
private:
// Don't allow assignment or copying these objects.
CkPublicKey(const CkPublicKey &);
CkPublicKey &operator=(const CkPublicKey &);
public:
CkPublicKey(void);
virtual ~CkPublicKey(void);
static CkPublicKey *createNew(void);
static CkPublicKey *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
// ----------------------
// Indicates whether this object is empty or holds a public key.
bool get_Empty(void);
// Gets the size (in bits) of the public key. For example: 1024, 2048, etc.
int get_KeySize(void);
// The type of public key. Can be empty , rsa , dsa , or ecc .
void get_KeyType(CkString &str);
// The type of public key. Can be empty , rsa , dsa , or ecc .
const char *keyType(void);
// ----------------------
// Methods
// ----------------------
// Returns the public key in binary DER format. If the key type (such as RSA)
// supports both PKCS1 and PKCS8 formats, then preferPkcs1 determine which format is
// returned.
bool GetDer(bool preferPkcs1, CkByteData &outBytes);
// Returns the public key in binary DER format into bd. For key types that
// support both PKCS1 and PKCS8 formats (e.g., RSA), preferPkcs1 specifies the format to
// be returned.
bool GetDerBd(bool preferPkcs1, CkBinData &bd);
// Returns the public key in DER format as an encoded string (such as base64 or
// hex). If the key type (such as RSA) supports both PKCS1 and PKCS8 formats, then
// preferPkcs1 determine which format is returned. The encoding specifies the encoding, which
// is typically base64 .
bool GetEncoded(bool preferPkcs1, const char *encoding, CkString &outStr);
// Returns the public key in DER format as an encoded string (such as base64 or
// hex). If the key type (such as RSA) supports both PKCS1 and PKCS8 formats, then
// preferPkcs1 determine which format is returned. The encoding specifies the encoding, which
// is typically base64 .
const char *getEncoded(bool preferPkcs1, const char *encoding);
// Returns the public key in DER format as an encoded string (such as base64 or
// hex). If the key type (such as RSA) supports both PKCS1 and PKCS8 formats, then
// preferPkcs1 determine which format is returned. The encoding specifies the encoding, which
// is typically base64 .
const char *encoded(bool preferPkcs1, const char *encoding);
// Gets the public key in JWK (JSON Web Key) format.
//
// RSA public keys have this JWK format: {"kty":"RSA",
// "n": "0vx7agoebGcQSuuPiLJXZptN9 ... U8awapJzKnqDKgw",
// "e":"AQAB"}
//
//
// ECC public keys have this JWK format: {"kty":"EC",
// "crv":"P-256",
// "x":"MKBCTNIcKUSDii11ySs3526iDZ8AiTo7Tu6KPAqv7D4",
// "y":"4Etl6SRW2YiLUrN5vfvVHuhp7x8PxltmWWlbbM4IFyM"}
//
//
// Ed25519 public keys (added in v9.5.0.83) have this JWK format: {"kty":"OKP",
// "crv":"Ed25519",
// "x": "SE2Kne5xt51z1eciMH2T2ftDQp96Gl6FhY6zSQujiP0"}
//
bool GetJwk(CkString &outStr);
// Gets the public key in JWK (JSON Web Key) format.
//
// RSA public keys have this JWK format: {"kty":"RSA",
// "n": "0vx7agoebGcQSuuPiLJXZptN9 ... U8awapJzKnqDKgw",
// "e":"AQAB"}
//
//
// ECC public keys have this JWK format: {"kty":"EC",
// "crv":"P-256",
// "x":"MKBCTNIcKUSDii11ySs3526iDZ8AiTo7Tu6KPAqv7D4",
// "y":"4Etl6SRW2YiLUrN5vfvVHuhp7x8PxltmWWlbbM4IFyM"}
//
//
// Ed25519 public keys (added in v9.5.0.83) have this JWK format: {"kty":"OKP",
// "crv":"Ed25519",
// "x": "SE2Kne5xt51z1eciMH2T2ftDQp96Gl6FhY6zSQujiP0"}
//
const char *getJwk(void);
// Gets the public key in JWK (JSON Web Key) format.
//
// RSA public keys have this JWK format: {"kty":"RSA",
// "n": "0vx7agoebGcQSuuPiLJXZptN9 ... U8awapJzKnqDKgw",
// "e":"AQAB"}
//
//
// ECC public keys have this JWK format: {"kty":"EC",
// "crv":"P-256",
// "x":"MKBCTNIcKUSDii11ySs3526iDZ8AiTo7Tu6KPAqv7D4",
// "y":"4Etl6SRW2YiLUrN5vfvVHuhp7x8PxltmWWlbbM4IFyM"}
//
//
// Ed25519 public keys (added in v9.5.0.83) have this JWK format: {"kty":"OKP",
// "crv":"Ed25519",
// "x": "SE2Kne5xt51z1eciMH2T2ftDQp96Gl6FhY6zSQujiP0"}
//
const char *jwk(void);
// Returns the JWK thumbprint for the public key. This is the thumbprint of the
// JSON Web Key (JWK) as per RFC 7638.
bool GetJwkThumbprint(const char *hashAlg, CkString &outStr);
// Returns the JWK thumbprint for the public key. This is the thumbprint of the
// JSON Web Key (JWK) as per RFC 7638.
const char *getJwkThumbprint(const char *hashAlg);
// Returns the JWK thumbprint for the public key. This is the thumbprint of the
// JSON Web Key (JWK) as per RFC 7638.
const char *jwkThumbprint(const char *hashAlg);
// Returns the public key in PEM format. If the key type (such as RSA) supports
// both PKCS1 and PKCS8 formats, then preferPkcs1 determine which format is returned.
bool GetPem(bool preferPkcs1, CkString &outStr);
// Returns the public key in PEM format. If the key type (such as RSA) supports
// both PKCS1 and PKCS8 formats, then preferPkcs1 determine which format is returned.
const char *getPem(bool preferPkcs1);
// Returns the public key in PEM format. If the key type (such as RSA) supports
// both PKCS1 and PKCS8 formats, then preferPkcs1 determine which format is returned.
const char *pem(bool preferPkcs1);
// Gets the public key in XML format. The format depends on the key type. The key
// parts indicated by ... are base64 encoded.
//
// RSA public keys have this XML format: ... ...
//
// DSA public keys have this XML format:
//
// ...
//
// .........
//
// ECC public keys have this XML format:...
//
bool GetXml(CkString &outStr);
// Gets the public key in XML format. The format depends on the key type. The key
// parts indicated by ... are base64 encoded.
//
// RSA public keys have this XML format: ... ...
//
// DSA public keys have this XML format:
//
// ...
//
// .........
//
// ECC public keys have this XML format:...
//
const char *getXml(void);
// Gets the public key in XML format. The format depends on the key type. The key
// parts indicated by ... are base64 encoded.
//
// RSA public keys have this XML format: ... ...
//
// DSA public keys have this XML format:
//
// ...
//
// .........
//
// ECC public keys have this XML format:...
//
const char *xml(void);
// Loads a public key from base64-encoded DER (can be PKCS1 or PKCS8).
bool LoadBase64(const char *keyStr);
// Loads a public key from any binary or string format where the data is contained
// in bd. Chilkat automatically recognizes the format and key type (RSA, EC, DSA,
// Ed25519, ..)
bool LoadBd(CkBinData &bd);
// Loads an ECDSA public key directly from Qx, Qy values specified as a hex
// strings. The curveName can be one of the following:
// * secp256r1
// * secp384r1
// * secp521r1
// * secp256k1
// * secp192r1
// * secp224r1
// * brainpoolp256r1
// * brainpoolp160r1
// * brainpoolp192r1
// * brainpoolp224r1
// * brainpoolp320r1
// * brainpoolp384r1
// * brainpoolp512r1
//
// Note: ECDSA public keys of various formats, such as PKCS8, PKCS1, JWK, XML,
// binary DER, PEM, etc., can be loaded using the LoadBd, LoadFromBinary,
// LoadFromFile, and LoadFromString methods.
//
bool LoadEcdsa(const char *curveName, const char *Qx, const char *Qy);
// Loads the public key object from a 32-byte ed25519 key specified as a hex
// string.
bool LoadEd25519(const char *pubKey);
// Loads a public key from binary DER. Auto-recognizes both PKCS1 and PKCS8
// formats.
bool LoadFromBinary(CkByteData &keyBytes);
// Loads a public key from a file. The file can be in any string or binary format
// such as binary DER (PKCS1 or PKCS8), PEM, XML, or encoded binary DER (such as
// base64 encoded binary DER). The format of the contents of the file is
// auto-recognized.
//
// Starting in version 9.5.0.66, this method also supports loading the JWK (JSON
// Web Key) format.
//
bool LoadFromFile(const char *path);
// Loads a public key from any string format, such as PEM, XML, or encoded binary
// DER (such as base64 encoded binary DER). The format of the keyString is
// auto-recognized.
//
// Starting in version 9.5.0.66, this method also supports loading the JWK (JSON
// Web Key) format.
//
bool LoadFromString(const char *keyString);
// Saves the public key to a file in binary DER format. If the key type (such as
// RSA) supports both PKCS1 and PKCS8 formats, then preferPkcs1 determine which format is
// returned.
bool SaveDerFile(bool preferPkcs1, const char *path);
// Saves the public key to a file in PEM format. If the key type (such as RSA)
// supports both PKCS1 and PKCS8 formats, then preferPkcs1 determine which format is
// returned.
bool SavePemFile(bool preferPkcs1, const char *path);
// Saves the public key to an XML file.
bool SaveXmlFile(const char *path);
// END PUBLIC INTERFACE
};
#if !defined(__sun__) && !defined(__sun)
#pragma pack (pop)
#endif
#endif