Skip to content

API XMLSec Core Keys

Aleksey Sanin edited this page Apr 22, 2026 · 4 revisions

Keys

API Group: xmlsec_core_keys

Key objects and key management.

Crypto key object functions.

Macros

xmlSecKeyUsageSign

Defined as: 0x00000001

Source: include/xmlsec/keys.h

Key for signing.


xmlSecKeyUsageVerify

Defined as: 0x00000002

Source: include/xmlsec/keys.h

Key for signature verification.


xmlSecKeyUsageEncrypt

Defined as: 0x00000004

Source: include/xmlsec/keys.h

An encryption key.


xmlSecKeyUsageDecrypt

Defined as: 0x00000008

Source: include/xmlsec/keys.h

A decryption key.


xmlSecKeyUsageKeyExchange

Defined as: 0x00000010

Source: include/xmlsec/keys.h

Deprecated. The key is used for key exchange.


xmlSecKeyUsageKeyDerive

Defined as: 0x00000020

Source: include/xmlsec/keys.h

The key is used for key derivation.


xmlSecKeyUsageKeyAgreement

Defined as: 0x00000040

Source: include/xmlsec/keys.h

The key is used for key agreement.


xmlSecKeyUsageAny

Defined as: 0xFFFFFFFF

Source: include/xmlsec/keys.h

Key can be used in any way.


xmlSecKeyUseWithPtrListId

Defined as: xmlSecKeyUseWithPtrListGetKlass()

Source: include/xmlsec/keys.h

The keys list klass.


xmlSecKeyIsValid

Defined as: ((( key ) != NULL) && \ (( key )->value != NULL) && \ ((( key )->value->id) != NULL))

Source: include/xmlsec/keys.h

Macro. Returns 1 if key is valid.

Macro. Returns 1 if key is not NULL and key->id is not NULL or 0 otherwise.

Parameters:

  • key — the pointer to key.

xmlSecKeyCheckId

Defined as: (xmlSecKeyIsValid(( key )) && \ ((( key )->value->id) == ( keyId )))

Source: include/xmlsec/keys.h

Macro. Returns 1 if key's id equals keyId.

Macro. Returns 1 if key is valid and key's id is equal to keyId.

Parameters:

  • key — the pointer to key.
  • keyId — the key Id.

xmlSecKeyPtrListId

Defined as: xmlSecKeyPtrListGetKlass()

Source: include/xmlsec/keys.h

The keys list klass.


Typedefs

xmlSecKeyUsage

typedef unsigned int xmlSecKeyUsage;

Source: include/xmlsec/keys.h

The key usage.


Functions

xmlSecKeyUseWithInitialize

int xmlSecKeyUseWithInitialize(xmlSecKeyUseWithPtr keyUseWith);

Source: include/xmlsec/keys.h

Initializes keyUseWith object.

Parameters:

  • keyUseWith — the pointer to information about key application/user.

Returns: 0 on success or a negative value if an error occurs.


xmlSecKeyUseWithFinalize

void xmlSecKeyUseWithFinalize(xmlSecKeyUseWithPtr keyUseWith);

Source: include/xmlsec/keys.h

Finalizes keyUseWith object.

Parameters:

  • keyUseWith — the pointer to information about key application/user.

xmlSecKeyUseWithReset

void xmlSecKeyUseWithReset(xmlSecKeyUseWithPtr keyUseWith);

Source: include/xmlsec/keys.h

Resets a keyUseWith to its initial state.

Resets the keyUseWith to its state after initialization.

Parameters:

  • keyUseWith — the pointer to information about key application/user.

xmlSecKeyUseWithCopy

int xmlSecKeyUseWithCopy(xmlSecKeyUseWithPtr dst, xmlSecKeyUseWithPtr src);

Source: include/xmlsec/keys.h

Copies information from dst to src.

Parameters:

  • dst — the pointer to destination object.
  • src — the pointer to source object.

Returns: 0 on success or a negative value if an error occurs.


xmlSecKeyUseWithCreate

xmlSecKeyUseWithPtr xmlSecKeyUseWithCreate(const xmlChar *application, const xmlChar *identifier);

Source: include/xmlsec/keys.h

Creates a new xmlSecKeyUseWith object.

Creates new xmlSecKeyUseWith object. The caller is responsible for destroying returned object with xmlSecKeyUseWithDestroy function.

Parameters:

  • application — the application value.
  • identifier — the identifier value.

Returns: pointer to newly created object or NULL if an error occurs.


xmlSecKeyUseWithDuplicate

xmlSecKeyUseWithPtr xmlSecKeyUseWithDuplicate(xmlSecKeyUseWithPtr keyUseWith);

Source: include/xmlsec/keys.h

Duplicates a keyUseWith object.

Duplicates keyUseWith object. The caller is responsible for destroying returned object with xmlSecKeyUseWithDestroy function.

Parameters:

  • keyUseWith — the pointer to information about key application/user.

Returns: pointer to newly created object or NULL if an error occurs.


xmlSecKeyUseWithDestroy

void xmlSecKeyUseWithDestroy(xmlSecKeyUseWithPtr keyUseWith);

Source: include/xmlsec/keys.h

Destroys a keyUseWith object.

Destroys keyUseWith created with xmlSecKeyUseWithCreate or xmlSecKeyUseWithDuplicate functions.

Parameters:

  • keyUseWith — the pointer to information about key application/user.

xmlSecKeyUseWithSet

int xmlSecKeyUseWithSet(xmlSecKeyUseWithPtr keyUseWith, const xmlChar *application, const xmlChar *identifier);

Source: include/xmlsec/keys.h

Sets application and identifier in a keyUseWith object.

Sets application and identifier in the keyUseWith.

Parameters:

  • keyUseWith — the pointer to information about key application/user.
  • application — the new application value.
  • identifier — the new identifier value.

Returns: 0 on success or a negative value if an error occurs.


xmlSecKeyUseWithDebugDump

void xmlSecKeyUseWithDebugDump(xmlSecKeyUseWithPtr keyUseWith, FILE *output);

Source: include/xmlsec/keys.h

Prints keyUseWith debug information to a file.

Prints xmlSecKeyUseWith debug information to a file output.

Parameters:

  • keyUseWith — the pointer to information about key application/user.
  • output — the pointer to output FILE.

xmlSecKeyUseWithDebugXmlDump

void xmlSecKeyUseWithDebugXmlDump(xmlSecKeyUseWithPtr keyUseWith, FILE *output);

Source: include/xmlsec/keys.h

Prints keyUseWith debug information in XML format.

Prints xmlSecKeyUseWith debug information to a file output in XML format.

Parameters:

  • keyUseWith — the pointer to information about key application/user.
  • output — the pointer to output FILE.

xmlSecKeyUseWithPtrListGetKlass

xmlSecPtrListId xmlSecKeyUseWithPtrListGetKlass(void);

Source: include/xmlsec/keys.h

The key data list klass.

Returns: pointer to the key data list klass.


xmlSecKeyReqInitialize

int xmlSecKeyReqInitialize(xmlSecKeyReqPtr keyReq);

Source: include/xmlsec/keys.h

Initializes a key requirements object.

Initialize key requirements object. Caller is responsible for cleaning it with xmlSecKeyReqFinalize function.

Parameters:

  • keyReq — the pointer to key requirements object.

Returns: 0 on success or a negative value if an error occurs.


xmlSecKeyReqFinalize

void xmlSecKeyReqFinalize(xmlSecKeyReqPtr keyReq);

Source: include/xmlsec/keys.h

Cleans up a key requirements object.

Cleans the key requirements object initialized with xmlSecKeyReqInitialize function.

Parameters:

  • keyReq — the pointer to key requirements object.

xmlSecKeyReqReset

void xmlSecKeyReqReset(xmlSecKeyReqPtr keyReq);

Source: include/xmlsec/keys.h

Resets key requirements for a new key search.

Resets key requirements object for new key search.

Parameters:

  • keyReq — the pointer to key requirements object.

xmlSecKeyReqCopy

int xmlSecKeyReqCopy(xmlSecKeyReqPtr dst, xmlSecKeyReqPtr src);

Source: include/xmlsec/keys.h

Copies key requirements between objects.

Copies key requirements from src object to dst object.

Parameters:

  • dst — the pointer to destination object.
  • src — the pointer to source object.

Returns: 0 on success and a negative value if an error occurs.


xmlSecKeyReqMatchKey

int xmlSecKeyReqMatchKey(xmlSecKeyReqPtr keyReq, xmlSecKeyPtr key);

Source: include/xmlsec/keys.h

Checks whether a key matches the given requirements.

Checks whether key matches key requirements keyReq.

Parameters:

  • keyReq — the pointer to key requirements object.
  • key — the pointer to key.

Returns: 1 if key matches requirements, 0 if not and a negative value if an error occurs.


xmlSecKeyReqMatchKeyValue

int xmlSecKeyReqMatchKeyValue(xmlSecKeyReqPtr keyReq, xmlSecKeyDataPtr value);

Source: include/xmlsec/keys.h

Checks whether a key value matches the given requirements.

Checks whether keyValue matches key requirements keyReq.

Parameters:

  • keyReq — the pointer to key requirements.
  • value — the pointer to key value.

Returns: 1 if key value matches requirements, 0 if not and a negative value if an error occurs.


xmlSecKeyReqDebugDump

void xmlSecKeyReqDebugDump(xmlSecKeyReqPtr keyReq, FILE *output);

Source: include/xmlsec/keys.h

Prints key requirements debug information.

Prints debug information about keyReq into output.

Parameters:

  • keyReq — the pointer to key requirements object.
  • output — the pointer to output FILE.

xmlSecKeyReqDebugXmlDump

void xmlSecKeyReqDebugXmlDump(xmlSecKeyReqPtr keyReq, FILE *output);

Source: include/xmlsec/keys.h

Prints key requirements debug information in XML format.

Prints debug information about keyReq into output in XML format.

Parameters:

  • keyReq — the pointer to key requirements object.
  • output — the pointer to output FILE.

xmlSecKeyCreate

xmlSecKeyPtr xmlSecKeyCreate(void);

Source: include/xmlsec/keys.h

Allocates and initializes a new key object.

Allocates and initializes new key. Caller is responsible for freeing returned object with xmlSecKeyDestroy function.

Returns: the pointer to newly allocated xmlSecKey structure or NULL if an error occurs.


xmlSecKeyDestroy

void xmlSecKeyDestroy(xmlSecKeyPtr key);

Source: include/xmlsec/keys.h

Destroys a key object.

Destroys the key created using xmlSecKeyCreate function.

Parameters:

  • key — the pointer to key.

xmlSecKeyEmpty

void xmlSecKeyEmpty(xmlSecKeyPtr key);

Source: include/xmlsec/keys.h

Clears the key data.

Parameters:

  • key — the pointer to key.

xmlSecKeyDuplicate

xmlSecKeyPtr xmlSecKeyDuplicate(xmlSecKeyPtr key);

Source: include/xmlsec/keys.h

Creates a duplicate of the given key.

Parameters:

  • key — the pointer to the xmlSecKey structure.

Returns: the pointer to newly allocated xmlSecKey structure or NULL if an error occurs.


xmlSecKeyCopy

int xmlSecKeyCopy(xmlSecKeyPtr keyDst, xmlSecKeyPtr keySrc);

Source: include/xmlsec/keys.h

Copies key data from keySrc to keyDst.

Parameters:

  • keyDst — the destination key.
  • keySrc — the source key.

Returns: 0 on success or a negative value if an error occurs.


xmlSecKeySwap

int xmlSecKeySwap(xmlSecKeyPtr key1, xmlSecKeyPtr key2);

Source: include/xmlsec/keys.h

Swaps key data for key1 and::key2.

Parameters:

  • key1 — the first key.
  • key2 — the second key.

Returns: 0 on success or a negative value if an error occurs.


xmlSecKeyGetName

const xmlChar * xmlSecKeyGetName(xmlSecKeyPtr key);

Source: include/xmlsec/keys.h

Gets the key name.

Gets key name (see also xmlSecKeySetName function).

Parameters:

  • key — the pointer to key.

Returns: key name.


xmlSecKeySetName

int xmlSecKeySetName(xmlSecKeyPtr key, const xmlChar *name);

Source: include/xmlsec/keys.h

Sets the key name.

Sets key name (see also xmlSecKeyGetName function).

Parameters:

  • key — the pointer to key.
  • name — the new key name.

Returns: 0 on success or a negative value if an error occurs.


xmlSecKeySetNameEx

int xmlSecKeySetNameEx(xmlSecKeyPtr key, const xmlChar *name, xmlSecSize nameSize);

Source: include/xmlsec/keys.h

Sets the key name with a specific length.

Sets key name (see also xmlSecKeyGetName function).

Parameters:

  • key — the pointer to key.
  • name — the new key name.
  • nameSize — the size of name.

Returns: 0 on success or a negative value if an error occurs.


xmlSecKeyGetType

xmlSecKeyDataType xmlSecKeyGetType(xmlSecKeyPtr key);

Source: include/xmlsec/keys.h

Gets key type.

Parameters:

  • key — the pointer to key.

Returns: key type.


xmlSecKeyGetValue

xmlSecKeyDataPtr xmlSecKeyGetValue(xmlSecKeyPtr key);

Source: include/xmlsec/keys.h

Gets the key value (crypto material).

Gets key value (see also xmlSecKeySetValue function).

Parameters:

  • key — the pointer to key.

Returns: key value (crypto material).


xmlSecKeySetValue

int xmlSecKeySetValue(xmlSecKeyPtr key, xmlSecKeyDataPtr value);

Source: include/xmlsec/keys.h

Sets the key value (crypto material).

Sets key value (see also xmlSecKeyGetValue function).

Parameters:

  • key — the pointer to key.
  • value — the new value.

Returns: 0 on success or a negative value if an error occurs.


xmlSecKeyGetSize

xmlSecSize xmlSecKeyGetSize(xmlSecKeyPtr key);

Source: include/xmlsec/keys.h

Gets the key size in bits.

Gets key size (in bits). Also see xmlSecKeyDataGetSize function.

Parameters:

  • key — the pointer to key.

Returns: key size (in bits).


xmlSecKeyGetData

xmlSecKeyDataPtr xmlSecKeyGetData(xmlSecKeyPtr key, xmlSecKeyDataId dataId);

Source: include/xmlsec/keys.h

Gets key's data.

Parameters:

  • key — the pointer to key.
  • dataId — the requested data klass.

Returns: additional data associated with the key (see also xmlSecKeyAdoptData function).


xmlSecKeyEnsureData

xmlSecKeyDataPtr xmlSecKeyEnsureData(xmlSecKeyPtr key, xmlSecKeyDataId dataId);

Source: include/xmlsec/keys.h

Ensures key data of the requested klass exists.

If necessary, creates key data of dataId klass and adds to key.

Parameters:

  • key — the pointer to key.
  • dataId — the requested data klass.

Returns: pointer to key data or NULL if an error occurs.


xmlSecKeyAdoptData

int xmlSecKeyAdoptData(xmlSecKeyPtr key, xmlSecKeyDataPtr data);

Source: include/xmlsec/keys.h

Adds key data to a key object (takes ownership).

Adds data to the key. The data object will be destroyed by key.

Parameters:

  • key — the pointer to key.
  • data — the pointer to key data.

Returns: 0 on success or a negative value otherwise.


xmlSecKeyDebugDump

void xmlSecKeyDebugDump(xmlSecKeyPtr key, FILE *output);

Source: include/xmlsec/keys.h

Prints key information for debugging.

Prints the information about the key to the output.

Parameters:

  • key — the pointer to key.
  • output — the pointer to output FILE.

xmlSecKeyDebugXmlDump

void xmlSecKeyDebugXmlDump(xmlSecKeyPtr key, FILE *output);

Source: include/xmlsec/keys.h

Prints key information in XML format for debugging.

Prints the information about the key to the output in XML format.

Parameters:

  • key — the pointer to key.
  • output — the pointer to output FILE.

xmlSecKeyGenerate

xmlSecKeyPtr xmlSecKeyGenerate(xmlSecKeyDataId dataId, xmlSecSize sizeBits, xmlSecKeyDataType type);

Source: include/xmlsec/keys.h

Generates a new key of the requested klass and type.

Generates new key of requested klass dataId and type.

Parameters:

  • dataId — the requested key klass (rsa, dsa, aes, ...).
  • sizeBits — the new key size (in bits!).
  • type — the new key type (session, permanent, ...).

Returns: pointer to newly created key or NULL if an error occurs.


xmlSecKeyGenerateByName

xmlSecKeyPtr xmlSecKeyGenerateByName(const xmlChar *name, xmlSecSize sizeBits, xmlSecKeyDataType type);

Source: include/xmlsec/keys.h

Generates a new key by klass name and type.

Generates new key of requested klass and type.

Parameters:

  • name — the requested key klass name (rsa, dsa, aes, ...).
  • sizeBits — the new key size (in bits!).
  • type — the new key type (session, permanent, ...).

Returns: pointer to newly created key or NULL if an error occurs.


xmlSecKeyMatch

int xmlSecKeyMatch(xmlSecKeyPtr key, const xmlChar *name, xmlSecKeyReqPtr keyReq);

Source: include/xmlsec/keys.h

Checks whether a key matches the given criteria.

Checks whether the key matches the given criteria.

Parameters:

  • key — the pointer to key.
  • name — the pointer to key name (may be NULL).
  • keyReq — the pointer to key requirements.

Returns: 1 if the key satisfies the given criteria or 0 otherwise.


xmlSecKeyReadBuffer

xmlSecKeyPtr xmlSecKeyReadBuffer(xmlSecKeyDataId dataId, xmlSecBuffer *buffer);

Source: include/xmlsec/keys.h

Reads a key value from a buffer.

Reads the key value of klass dataId from a buffer.

Parameters:

  • dataId — the key value data klass.
  • buffer — the buffer that contains the binary data.

Returns: pointer to newly created key or NULL if an error occurs.


xmlSecKeyReadBinaryFile

xmlSecKeyPtr xmlSecKeyReadBinaryFile(xmlSecKeyDataId dataId, const char *filename);

Source: include/xmlsec/keys.h

Reads a key value from a binary file.

Reads the key value of klass dataId from a binary file filename.

Parameters:

  • dataId — the key value data klass.
  • filename — the key binary filename.

Returns: pointer to newly created key or NULL if an error occurs.


xmlSecKeyReadMemory

xmlSecKeyPtr xmlSecKeyReadMemory(xmlSecKeyDataId dataId, const xmlSecByte *data, xmlSecSize dataSize);

Source: include/xmlsec/keys.h

Reads a key value from a memory block.

Reads the key value of klass dataId from a memory block data.

Parameters:

  • dataId — the key value data klass.
  • data — the memory containing the key
  • dataSize — the size of the memory block

Returns: pointer to newly created key or NULL if an error occurs.


xmlSecKeyPtrListGetKlass

xmlSecPtrListId xmlSecKeyPtrListGetKlass(void);

Source: include/xmlsec/keys.h

The keys list klass.

Returns: keys list id.


Clone this wiki locally