<refentry id="xmlsec-keysdata">
<refmeta>
<refentrytitle role="top_of_page" id="xmlsec-keysdata.top_of_page">keysdata</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>XMLSEC Library</refmiscinfo>
</refmeta>

<refnamediv>
<refname>keysdata</refname>
<refpurpose>Crypto key data object definition.</refpurpose>
</refnamediv>

<refsynopsisdiv id="xmlsec-keysdata.synopsis" role="synopsis">
<title role="synopsis.title">Synopsis</title>

<synopsis>
typedef             <link linkend="xmlSecKeyDataUsage">xmlSecKeyDataUsage</link>;
#define             <link linkend="xmlSecKeyDataUsageUnknown">xmlSecKeyDataUsageUnknown</link>
#define             <link linkend="xmlSecKeyDataUsageKeyInfoNodeRead">xmlSecKeyDataUsageKeyInfoNodeRead</link>
#define             <link linkend="xmlSecKeyDataUsageKeyInfoNodeWrite">xmlSecKeyDataUsageKeyInfoNodeWrite</link>
#define             <link linkend="xmlSecKeyDataUsageKeyValueNodeRead">xmlSecKeyDataUsageKeyValueNodeRead</link>
#define             <link linkend="xmlSecKeyDataUsageKeyValueNodeWrite">xmlSecKeyDataUsageKeyValueNodeWrite</link>
#define             <link linkend="xmlSecKeyDataUsageRetrievalMethodNodeXml">xmlSecKeyDataUsageRetrievalMethodNodeXml</link>
#define             <link linkend="xmlSecKeyDataUsageRetrievalMethodNodeBin">xmlSecKeyDataUsageRetrievalMethodNodeBin</link>
#define             <link linkend="xmlSecKeyDataUsageAny">xmlSecKeyDataUsageAny</link>
#define             <link linkend="xmlSecKeyDataUsageKeyInfoNode">xmlSecKeyDataUsageKeyInfoNode</link>
#define             <link linkend="xmlSecKeyDataUsageKeyValueNode">xmlSecKeyDataUsageKeyValueNode</link>
#define             <link linkend="xmlSecKeyDataUsageRetrievalMethodNode">xmlSecKeyDataUsageRetrievalMethodNode</link>
typedef             <link linkend="xmlSecKeyDataType">xmlSecKeyDataType</link>;
#define             <link linkend="xmlSecKeyDataTypeUnknown">xmlSecKeyDataTypeUnknown</link>
#define             <link linkend="xmlSecKeyDataTypeNone">xmlSecKeyDataTypeNone</link>
#define             <link linkend="xmlSecKeyDataTypePublic">xmlSecKeyDataTypePublic</link>
#define             <link linkend="xmlSecKeyDataTypePrivate">xmlSecKeyDataTypePrivate</link>
#define             <link linkend="xmlSecKeyDataTypeSymmetric">xmlSecKeyDataTypeSymmetric</link>
#define             <link linkend="xmlSecKeyDataTypeSession">xmlSecKeyDataTypeSession</link>
#define             <link linkend="xmlSecKeyDataTypePermanent">xmlSecKeyDataTypePermanent</link>
#define             <link linkend="xmlSecKeyDataTypeTrusted">xmlSecKeyDataTypeTrusted</link>
#define             <link linkend="xmlSecKeyDataTypeAny">xmlSecKeyDataTypeAny</link>
enum                <link linkend="xmlSecKeyDataFormat">xmlSecKeyDataFormat</link>;
<link linkend="xmlSecPtrList">xmlSecPtrListPtr</link>    <link linkend="xmlSecKeyDataIdsGet">xmlSecKeyDataIdsGet</link>                 (void);
<link linkend="int">int</link>                 <link linkend="xmlSecKeyDataIdsInit">xmlSecKeyDataIdsInit</link>                (void);
<link linkend="void">void</link>                <link linkend="xmlSecKeyDataIdsShutdown">xmlSecKeyDataIdsShutdown</link>            (void);
<link linkend="int">int</link>                 <link linkend="xmlSecKeyDataIdsRegisterDefault">xmlSecKeyDataIdsRegisterDefault</link>     (void);
<link linkend="int">int</link>                 <link linkend="xmlSecKeyDataIdsRegister">xmlSecKeyDataIdsRegister</link>            (<link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link> id);
struct              <link linkend="xmlSecKeyData">xmlSecKeyData</link>;
<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link>    <link linkend="xmlSecKeyDataCreate">xmlSecKeyDataCreate</link>                 (<link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link> id);
<link linkend="xmlSecKeyDataPtr">xmlSecKeyDataPtr</link>    <link linkend="xmlSecKeyDataDuplicate">xmlSecKeyDataDuplicate</link>              (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data);
<link linkend="void">void</link>                <link linkend="xmlSecKeyDataDestroy">xmlSecKeyDataDestroy</link>                (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data);
<link linkend="int">int</link>                 <link linkend="xmlSecKeyDataGenerate">xmlSecKeyDataGenerate</link>               (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> sizeBits,
                                                         <link linkend="xmlSecKeyDataType">xmlSecKeyDataType</link> type);
<link linkend="xmlSecKeyDataType">xmlSecKeyDataType</link>   <link linkend="xmlSecKeyDataGetType">xmlSecKeyDataGetType</link>                (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data);
<link linkend="xmlSecSize">xmlSecSize</link>          <link linkend="xmlSecKeyDataGetSize">xmlSecKeyDataGetSize</link>                (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data);
const <link linkend="xmlChar">xmlChar</link>*      <link linkend="xmlSecKeyDataGetIdentifier">xmlSecKeyDataGetIdentifier</link>          (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data);
<link linkend="void">void</link>                <link linkend="xmlSecKeyDataDebugDump">xmlSecKeyDataDebugDump</link>              (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data,
                                                         <link linkend="FILE--CAPS">FILE</link> *output);
<link linkend="void">void</link>                <link linkend="xmlSecKeyDataDebugXmlDump">xmlSecKeyDataDebugXmlDump</link>           (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data,
                                                         <link linkend="FILE--CAPS">FILE</link> *output);
<link linkend="int">int</link>                 <link linkend="xmlSecKeyDataXmlRead">xmlSecKeyDataXmlRead</link>                (<link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link> id,
                                                         <link linkend="xmlSecKey">xmlSecKeyPtr</link> key,
                                                         <link linkend="xmlNode">xmlNodePtr</link> node,
                                                         <link linkend="xmlSecKeyInfoCtx">xmlSecKeyInfoCtxPtr</link> keyInfoCtx);
<link linkend="int">int</link>                 <link linkend="xmlSecKeyDataXmlWrite">xmlSecKeyDataXmlWrite</link>               (<link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link> id,
                                                         <link linkend="xmlSecKey">xmlSecKeyPtr</link> key,
                                                         <link linkend="xmlNode">xmlNodePtr</link> node,
                                                         <link linkend="xmlSecKeyInfoCtx">xmlSecKeyInfoCtxPtr</link> keyInfoCtx);
<link linkend="int">int</link>                 <link linkend="xmlSecKeyDataBinRead">xmlSecKeyDataBinRead</link>                (<link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link> id,
                                                         <link linkend="xmlSecKey">xmlSecKeyPtr</link> key,
                                                         const <link linkend="xmlSecByte">xmlSecByte</link> *buf,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> bufSize,
                                                         <link linkend="xmlSecKeyInfoCtx">xmlSecKeyInfoCtxPtr</link> keyInfoCtx);
<link linkend="int">int</link>                 <link linkend="xmlSecKeyDataBinWrite">xmlSecKeyDataBinWrite</link>               (<link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link> id,
                                                         <link linkend="xmlSecKey">xmlSecKeyPtr</link> key,
                                                         <link linkend="xmlSecByte">xmlSecByte</link> **buf,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> *bufSize,
                                                         <link linkend="xmlSecKeyInfoCtx">xmlSecKeyInfoCtxPtr</link> keyInfoCtx);
#define             <link linkend="xmlSecKeyDataGetName">xmlSecKeyDataGetName</link>                (data)
#define             <link linkend="xmlSecKeyDataIsValid">xmlSecKeyDataIsValid</link>                (data)
#define             <link linkend="xmlSecKeyDataCheckId">xmlSecKeyDataCheckId</link>                (data, dataId)
#define             <link linkend="xmlSecKeyDataCheckUsage">xmlSecKeyDataCheckUsage</link>             (data, usg)
#define             <link linkend="xmlSecKeyDataCheckSize">xmlSecKeyDataCheckSize</link>              (data, size)
#define             <link linkend="xmlSecKeyDataIdUnknown">xmlSecKeyDataIdUnknown</link>
<link linkend="int">int</link>                 (<link linkend="xmlSecKeyDataInitMethod">*xmlSecKeyDataInitMethod</link>)          (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data);
<link linkend="int">int</link>                 (<link linkend="xmlSecKeyDataDuplicateMethod">*xmlSecKeyDataDuplicateMethod</link>)     (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> dst,
                                                         <link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> src);
<link linkend="void">void</link>                (<link linkend="xmlSecKeyDataFinalizeMethod">*xmlSecKeyDataFinalizeMethod</link>)      (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data);
<link linkend="int">int</link>                 (<link linkend="xmlSecKeyDataXmlReadMethod">*xmlSecKeyDataXmlReadMethod</link>)       (<link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link> id,
                                                         <link linkend="xmlSecKey">xmlSecKeyPtr</link> key,
                                                         <link linkend="xmlNode">xmlNodePtr</link> node,
                                                         <link linkend="xmlSecKeyInfoCtx">xmlSecKeyInfoCtxPtr</link> keyInfoCtx);
<link linkend="int">int</link>                 (<link linkend="xmlSecKeyDataXmlWriteMethod">*xmlSecKeyDataXmlWriteMethod</link>)      (<link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link> id,
                                                         <link linkend="xmlSecKey">xmlSecKeyPtr</link> key,
                                                         <link linkend="xmlNode">xmlNodePtr</link> node,
                                                         <link linkend="xmlSecKeyInfoCtx">xmlSecKeyInfoCtxPtr</link> keyInfoCtx);
<link linkend="int">int</link>                 (<link linkend="xmlSecKeyDataBinReadMethod">*xmlSecKeyDataBinReadMethod</link>)       (<link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link> id,
                                                         <link linkend="xmlSecKey">xmlSecKeyPtr</link> key,
                                                         const <link linkend="xmlSecByte">xmlSecByte</link> *buf,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> bufSize,
                                                         <link linkend="xmlSecKeyInfoCtx">xmlSecKeyInfoCtxPtr</link> keyInfoCtx);
<link linkend="int">int</link>                 (<link linkend="xmlSecKeyDataBinWriteMethod">*xmlSecKeyDataBinWriteMethod</link>)      (<link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link> id,
                                                         <link linkend="xmlSecKey">xmlSecKeyPtr</link> key,
                                                         <link linkend="xmlSecByte">xmlSecByte</link> **buf,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> *bufSize,
                                                         <link linkend="xmlSecKeyInfoCtx">xmlSecKeyInfoCtxPtr</link> keyInfoCtx);
<link linkend="int">int</link>                 (<link linkend="xmlSecKeyDataGenerateMethod">*xmlSecKeyDataGenerateMethod</link>)      (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> sizeBits,
                                                         <link linkend="xmlSecKeyDataType">xmlSecKeyDataType</link> type);
<link linkend="xmlSecKeyDataType">xmlSecKeyDataType</link>   (<link linkend="xmlSecKeyDataGetTypeMethod">*xmlSecKeyDataGetTypeMethod</link>)       (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data);
<link linkend="xmlSecSize">xmlSecSize</link>          (<link linkend="xmlSecKeyDataGetSizeMethod">*xmlSecKeyDataGetSizeMethod</link>)       (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data);
const <link linkend="xmlChar">xmlChar</link> *     (<link linkend="xmlSecKeyDataGetIdentifierMethod">*xmlSecKeyDataGetIdentifierMethod</link>) (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data);
<link linkend="void">void</link>                (<link linkend="xmlSecKeyDataDebugDumpMethod">*xmlSecKeyDataDebugDumpMethod</link>)     (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data,
                                                         <link linkend="FILE--CAPS">FILE</link> *output);
struct              <link linkend="xmlSecKeyDataKlass">xmlSecKeyDataKlass</link>;
#define             <link linkend="xmlSecKeyDataKlassGetName">xmlSecKeyDataKlassGetName</link>           (klass)
#define             <link linkend="xmlSecKeyDataListId">xmlSecKeyDataListId</link>
<link linkend="xmlSecPtrListId">xmlSecPtrListId</link>     <link linkend="xmlSecKeyDataListGetKlass">xmlSecKeyDataListGetKlass</link>           (void);
#define             <link linkend="xmlSecKeyDataIdListId">xmlSecKeyDataIdListId</link>
<link linkend="xmlSecPtrListId">xmlSecPtrListId</link>     <link linkend="xmlSecKeyDataIdListGetKlass">xmlSecKeyDataIdListGetKlass</link>         (void);
<link linkend="int">int</link>                 <link linkend="xmlSecKeyDataIdListFind">xmlSecKeyDataIdListFind</link>             (<link linkend="xmlSecPtrList">xmlSecPtrListPtr</link> list,
                                                         <link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link> dataId);
<link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link>     <link linkend="xmlSecKeyDataIdListFindByNode">xmlSecKeyDataIdListFindByNode</link>       (<link linkend="xmlSecPtrList">xmlSecPtrListPtr</link> list,
                                                         const <link linkend="xmlChar">xmlChar</link> *nodeName,
                                                         const <link linkend="xmlChar">xmlChar</link> *nodeNs,
                                                         <link linkend="xmlSecKeyDataUsage">xmlSecKeyDataUsage</link> usage);
<link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link>     <link linkend="xmlSecKeyDataIdListFindByHref">xmlSecKeyDataIdListFindByHref</link>       (<link linkend="xmlSecPtrList">xmlSecPtrListPtr</link> list,
                                                         const <link linkend="xmlChar">xmlChar</link> *href,
                                                         <link linkend="xmlSecKeyDataUsage">xmlSecKeyDataUsage</link> usage);
<link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link>     <link linkend="xmlSecKeyDataIdListFindByName">xmlSecKeyDataIdListFindByName</link>       (<link linkend="xmlSecPtrList">xmlSecPtrListPtr</link> list,
                                                         const <link linkend="xmlChar">xmlChar</link> *name,
                                                         <link linkend="xmlSecKeyDataUsage">xmlSecKeyDataUsage</link> usage);
<link linkend="void">void</link>                <link linkend="xmlSecKeyDataIdListDebugDump">xmlSecKeyDataIdListDebugDump</link>        (<link linkend="xmlSecPtrList">xmlSecPtrListPtr</link> list,
                                                         <link linkend="FILE--CAPS">FILE</link> *output);
<link linkend="void">void</link>                <link linkend="xmlSecKeyDataIdListDebugXmlDump">xmlSecKeyDataIdListDebugXmlDump</link>     (<link linkend="xmlSecPtrList">xmlSecPtrListPtr</link> list,
                                                         <link linkend="FILE--CAPS">FILE</link> *output);
#define             <link linkend="xmlSecKeyDataBinarySize">xmlSecKeyDataBinarySize</link>
<link linkend="int">int</link>                 <link linkend="xmlSecKeyDataBinaryValueInitialize">xmlSecKeyDataBinaryValueInitialize</link>  (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data);
<link linkend="int">int</link>                 <link linkend="xmlSecKeyDataBinaryValueDuplicate">xmlSecKeyDataBinaryValueDuplicate</link>   (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> dst,
                                                         <link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> src);
<link linkend="void">void</link>                <link linkend="xmlSecKeyDataBinaryValueFinalize">xmlSecKeyDataBinaryValueFinalize</link>    (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data);
<link linkend="int">int</link>                 <link linkend="xmlSecKeyDataBinaryValueXmlRead">xmlSecKeyDataBinaryValueXmlRead</link>     (<link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link> id,
                                                         <link linkend="xmlSecKey">xmlSecKeyPtr</link> key,
                                                         <link linkend="xmlNode">xmlNodePtr</link> node,
                                                         <link linkend="xmlSecKeyInfoCtx">xmlSecKeyInfoCtxPtr</link> keyInfoCtx);
<link linkend="int">int</link>                 <link linkend="xmlSecKeyDataBinaryValueXmlWrite">xmlSecKeyDataBinaryValueXmlWrite</link>    (<link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link> id,
                                                         <link linkend="xmlSecKey">xmlSecKeyPtr</link> key,
                                                         <link linkend="xmlNode">xmlNodePtr</link> node,
                                                         <link linkend="xmlSecKeyInfoCtx">xmlSecKeyInfoCtxPtr</link> keyInfoCtx);
<link linkend="int">int</link>                 <link linkend="xmlSecKeyDataBinaryValueBinRead">xmlSecKeyDataBinaryValueBinRead</link>     (<link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link> id,
                                                         <link linkend="xmlSecKey">xmlSecKeyPtr</link> key,
                                                         const <link linkend="xmlSecByte">xmlSecByte</link> *buf,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> bufSize,
                                                         <link linkend="xmlSecKeyInfoCtx">xmlSecKeyInfoCtxPtr</link> keyInfoCtx);
<link linkend="int">int</link>                 <link linkend="xmlSecKeyDataBinaryValueBinWrite">xmlSecKeyDataBinaryValueBinWrite</link>    (<link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link> id,
                                                         <link linkend="xmlSecKey">xmlSecKeyPtr</link> key,
                                                         <link linkend="xmlSecByte">xmlSecByte</link> **buf,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> *bufSize,
                                                         <link linkend="xmlSecKeyInfoCtx">xmlSecKeyInfoCtxPtr</link> keyInfoCtx);
<link linkend="void">void</link>                <link linkend="xmlSecKeyDataBinaryValueDebugDump">xmlSecKeyDataBinaryValueDebugDump</link>   (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data,
                                                         <link linkend="FILE--CAPS">FILE</link> *output);
<link linkend="void">void</link>                <link linkend="xmlSecKeyDataBinaryValueDebugXmlDump">xmlSecKeyDataBinaryValueDebugXmlDump</link>
                                                        (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data,
                                                         <link linkend="FILE--CAPS">FILE</link> *output);
<link linkend="xmlSecSize">xmlSecSize</link>          <link linkend="xmlSecKeyDataBinaryValueGetSize">xmlSecKeyDataBinaryValueGetSize</link>     (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data);
<link linkend="xmlSecBufferPtr">xmlSecBufferPtr</link>     <link linkend="xmlSecKeyDataBinaryValueGetBuffer">xmlSecKeyDataBinaryValueGetBuffer</link>   (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data);
<link linkend="int">int</link>                 <link linkend="xmlSecKeyDataBinaryValueSetBuffer">xmlSecKeyDataBinaryValueSetBuffer</link>   (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data,
                                                         const <link linkend="xmlSecByte">xmlSecByte</link> *buf,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> bufSize);
struct              <link linkend="xmlSecKeyDataStore">xmlSecKeyDataStore</link>;
<link linkend="xmlSecKeyDataStore">xmlSecKeyDataStorePtr</link>  <link linkend="xmlSecKeyDataStoreCreate">xmlSecKeyDataStoreCreate</link>         (<link linkend="xmlSecKeyDataStoreId">xmlSecKeyDataStoreId</link> id);
<link linkend="void">void</link>                <link linkend="xmlSecKeyDataStoreDestroy">xmlSecKeyDataStoreDestroy</link>           (<link linkend="xmlSecKeyDataStore">xmlSecKeyDataStorePtr</link> store);
#define             <link linkend="xmlSecKeyDataStoreGetName">xmlSecKeyDataStoreGetName</link>           (store)
#define             <link linkend="xmlSecKeyDataStoreIsValid">xmlSecKeyDataStoreIsValid</link>           (store)
#define             <link linkend="xmlSecKeyDataStoreCheckId">xmlSecKeyDataStoreCheckId</link>           (store, storeId)
#define             <link linkend="xmlSecKeyDataStoreCheckSize">xmlSecKeyDataStoreCheckSize</link>         (store, size)
#define             <link linkend="xmlSecKeyDataStoreIdUnknown">xmlSecKeyDataStoreIdUnknown</link>
<link linkend="int">int</link>                 (<link linkend="xmlSecKeyDataStoreInitializeMethod">*xmlSecKeyDataStoreInitializeMethod</link>)
                                                        (<link linkend="xmlSecKeyDataStore">xmlSecKeyDataStorePtr</link> store);
<link linkend="void">void</link>                (<link linkend="xmlSecKeyDataStoreFinalizeMethod">*xmlSecKeyDataStoreFinalizeMethod</link>) (<link linkend="xmlSecKeyDataStore">xmlSecKeyDataStorePtr</link> store);
struct              <link linkend="xmlSecKeyDataStoreKlass">xmlSecKeyDataStoreKlass</link>;
#define             <link linkend="xmlSecKeyDataStoreKlassGetName">xmlSecKeyDataStoreKlassGetName</link>      (klass)
#define             <link linkend="xmlSecKeyDataStorePtrListId">xmlSecKeyDataStorePtrListId</link>
<link linkend="xmlSecPtrListId">xmlSecPtrListId</link>     <link linkend="xmlSecKeyDataStorePtrListGetKlass">xmlSecKeyDataStorePtrListGetKlass</link>   (void);
</synopsis>
</refsynopsisdiv>









<refsect1 id="xmlsec-keysdata.description" role="desc">
<title role="desc.title">Description</title>
<para>
Crypto key data object definition.
</para>
</refsect1>

<refsect1 id="xmlsec-keysdata.details" role="details">
<title role="details.title">Details</title>
<refsect2 id="xmlSecKeyDataUsage" role="typedef">
<title>xmlSecKeyDataUsage</title>
<indexterm zone="xmlSecKeyDataUsage"><primary sortas="xmlSecKeyDataUsage">xmlSecKeyDataUsage</primary></indexterm><programlisting>typedef unsigned int                                    xmlSecKeyDataUsage;
</programlisting>
<para>
The bits mask that determines possible keys data usage.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecKeyDataUsageUnknown" role="macro">
<title>xmlSecKeyDataUsageUnknown</title>
<indexterm zone="xmlSecKeyDataUsageUnknown"><primary sortas="xmlSecKeyDataUsageUnknown">xmlSecKeyDataUsageUnknown</primary></indexterm><programlisting>#define xmlSecKeyDataUsageUnknown                       0x00000
</programlisting>
<para>
The key data usage is unknown.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecKeyDataUsageKeyInfoNodeRead" role="macro">
<title>xmlSecKeyDataUsageKeyInfoNodeRead</title>
<indexterm zone="xmlSecKeyDataUsageKeyInfoNodeRead"><primary sortas="xmlSecKeyDataUsageKeyInfoNodeRead">xmlSecKeyDataUsageKeyInfoNodeRead</primary></indexterm><programlisting>#define xmlSecKeyDataUsageKeyInfoNodeRead               0x00001
</programlisting>
<para>
The key data could be read from a <ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo">&lt;dsig:KeyInfo/&gt;</ulink> child.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecKeyDataUsageKeyInfoNodeWrite" role="macro">
<title>xmlSecKeyDataUsageKeyInfoNodeWrite</title>
<indexterm zone="xmlSecKeyDataUsageKeyInfoNodeWrite"><primary sortas="xmlSecKeyDataUsageKeyInfoNodeWrite">xmlSecKeyDataUsageKeyInfoNodeWrite</primary></indexterm><programlisting>#define xmlSecKeyDataUsageKeyInfoNodeWrite              0x00002
</programlisting>
<para>
The key data could be written to a <ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo ">&lt;dsig:KeyInfo /&gt;</ulink> child.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecKeyDataUsageKeyValueNodeRead" role="macro">
<title>xmlSecKeyDataUsageKeyValueNodeRead</title>
<indexterm zone="xmlSecKeyDataUsageKeyValueNodeRead"><primary sortas="xmlSecKeyDataUsageKeyValueNodeRead">xmlSecKeyDataUsageKeyValueNodeRead</primary></indexterm><programlisting>#define xmlSecKeyDataUsageKeyValueNodeRead              0x00004
</programlisting>
<para>
The key data could be read from a <ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyValue ">&lt;dsig:KeyValue /&gt;</ulink> child.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecKeyDataUsageKeyValueNodeWrite" role="macro">
<title>xmlSecKeyDataUsageKeyValueNodeWrite</title>
<indexterm zone="xmlSecKeyDataUsageKeyValueNodeWrite"><primary sortas="xmlSecKeyDataUsageKeyValueNodeWrite">xmlSecKeyDataUsageKeyValueNodeWrite</primary></indexterm><programlisting>#define xmlSecKeyDataUsageKeyValueNodeWrite             0x00008
</programlisting>
<para>
The key data could be written to a <ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyValue ">&lt;dsig:KeyValue /&gt;</ulink> child.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecKeyDataUsageRetrievalMethodNodeXml" role="macro">
<title>xmlSecKeyDataUsageRetrievalMethodNodeXml</title>
<indexterm zone="xmlSecKeyDataUsageRetrievalMethodNodeXml"><primary sortas="xmlSecKeyDataUsageRetrievalMethodNodeXml">xmlSecKeyDataUsageRetrievalMethodNodeXml</primary></indexterm><programlisting>#define xmlSecKeyDataUsageRetrievalMethodNodeXml        0x00010
</programlisting>
<para>
The key data could be retrieved using <ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-RetrievalMethod ">&lt;dsig:RetrievalMethod /&gt;</ulink> node
in XML format.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecKeyDataUsageRetrievalMethodNodeBin" role="macro">
<title>xmlSecKeyDataUsageRetrievalMethodNodeBin</title>
<indexterm zone="xmlSecKeyDataUsageRetrievalMethodNodeBin"><primary sortas="xmlSecKeyDataUsageRetrievalMethodNodeBin">xmlSecKeyDataUsageRetrievalMethodNodeBin</primary></indexterm><programlisting>#define xmlSecKeyDataUsageRetrievalMethodNodeBin        0x00020
</programlisting>
<para>
The key data could be retrieved using <ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-RetrievalMethod ">&lt;dsig:RetrievalMethod /&gt;</ulink> node
in binary format.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecKeyDataUsageAny" role="macro">
<title>xmlSecKeyDataUsageAny</title>
<indexterm zone="xmlSecKeyDataUsageAny"><primary sortas="xmlSecKeyDataUsageAny">xmlSecKeyDataUsageAny</primary></indexterm><programlisting>#define xmlSecKeyDataUsageAny                           0xFFFFF
</programlisting>
<para>
Any key data usage.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecKeyDataUsageKeyInfoNode" role="macro">
<title>xmlSecKeyDataUsageKeyInfoNode</title>
<indexterm zone="xmlSecKeyDataUsageKeyInfoNode"><primary sortas="xmlSecKeyDataUsageKeyInfoNode">xmlSecKeyDataUsageKeyInfoNode</primary></indexterm><programlisting>#define             xmlSecKeyDataUsageKeyInfoNode</programlisting>
<para>
The key data could be read and written from/to a <ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo ">&lt;dsig:KeyInfo /&gt;</ulink> child.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecKeyDataUsageKeyValueNode" role="macro">
<title>xmlSecKeyDataUsageKeyValueNode</title>
<indexterm zone="xmlSecKeyDataUsageKeyValueNode"><primary sortas="xmlSecKeyDataUsageKeyValueNode">xmlSecKeyDataUsageKeyValueNode</primary></indexterm><programlisting>#define             xmlSecKeyDataUsageKeyValueNode</programlisting>
<para>
The key data could be read and written from/to a <ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyValue ">&lt;dsig:KeyValue /&gt;</ulink> child.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecKeyDataUsageRetrievalMethodNode" role="macro">
<title>xmlSecKeyDataUsageRetrievalMethodNode</title>
<indexterm zone="xmlSecKeyDataUsageRetrievalMethodNode"><primary sortas="xmlSecKeyDataUsageRetrievalMethodNode">xmlSecKeyDataUsageRetrievalMethodNode</primary></indexterm><programlisting>#define             xmlSecKeyDataUsageRetrievalMethodNode</programlisting>
<para>
The key data could be retrieved using <ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-RetrievalMethod ">&lt;dsig:RetrievalMethod /&gt;</ulink> node
in any format.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecKeyDataType" role="typedef">
<title>xmlSecKeyDataType</title>
<indexterm zone="xmlSecKeyDataType"><primary sortas="xmlSecKeyDataType">xmlSecKeyDataType</primary></indexterm><programlisting>typedef unsigned int                            xmlSecKeyDataType;
</programlisting>
<para>
The key data type (public/private, session/permanet, etc.).</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecKeyDataTypeUnknown" role="macro">
<title>xmlSecKeyDataTypeUnknown</title>
<indexterm zone="xmlSecKeyDataTypeUnknown"><primary sortas="xmlSecKeyDataTypeUnknown">xmlSecKeyDataTypeUnknown</primary></indexterm><programlisting>#define xmlSecKeyDataTypeUnknown                        0x0000
</programlisting>
<para>
The key data type is unknown (same as <link linkend="xmlSecKeyDataTypeNone"><type>xmlSecKeyDataTypeNone</type></link>).</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecKeyDataTypeNone" role="macro">
<title>xmlSecKeyDataTypeNone</title>
<indexterm zone="xmlSecKeyDataTypeNone"><primary sortas="xmlSecKeyDataTypeNone">xmlSecKeyDataTypeNone</primary></indexterm><programlisting>#define xmlSecKeyDataTypeNone                           xmlSecKeyDataTypeUnknown
</programlisting>
<para>
The key data type is unknown (same as <link linkend="xmlSecKeyDataTypeUnknown"><type>xmlSecKeyDataTypeUnknown</type></link>).</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecKeyDataTypePublic" role="macro">
<title>xmlSecKeyDataTypePublic</title>
<indexterm zone="xmlSecKeyDataTypePublic"><primary sortas="xmlSecKeyDataTypePublic">xmlSecKeyDataTypePublic</primary></indexterm><programlisting>#define xmlSecKeyDataTypePublic                         0x0001
</programlisting>
<para>
The key data contain a public key.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecKeyDataTypePrivate" role="macro">
<title>xmlSecKeyDataTypePrivate</title>
<indexterm zone="xmlSecKeyDataTypePrivate"><primary sortas="xmlSecKeyDataTypePrivate">xmlSecKeyDataTypePrivate</primary></indexterm><programlisting>#define xmlSecKeyDataTypePrivate                        0x0002
</programlisting>
<para>
The key data contain a private key.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecKeyDataTypeSymmetric" role="macro">
<title>xmlSecKeyDataTypeSymmetric</title>
<indexterm zone="xmlSecKeyDataTypeSymmetric"><primary sortas="xmlSecKeyDataTypeSymmetric">xmlSecKeyDataTypeSymmetric</primary></indexterm><programlisting>#define xmlSecKeyDataTypeSymmetric                      0x0004
</programlisting>
<para>
The key data contain a symmetric key.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecKeyDataTypeSession" role="macro">
<title>xmlSecKeyDataTypeSession</title>
<indexterm zone="xmlSecKeyDataTypeSession"><primary sortas="xmlSecKeyDataTypeSession">xmlSecKeyDataTypeSession</primary></indexterm><programlisting>#define xmlSecKeyDataTypeSession                        0x0008
</programlisting>
<para>
The key data contain session key (one time key, not stored in keys manager).</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecKeyDataTypePermanent" role="macro">
<title>xmlSecKeyDataTypePermanent</title>
<indexterm zone="xmlSecKeyDataTypePermanent"><primary sortas="xmlSecKeyDataTypePermanent">xmlSecKeyDataTypePermanent</primary></indexterm><programlisting>#define xmlSecKeyDataTypePermanent                      0x0010
</programlisting>
<para>
The key data contain permanent key (stored in keys manager).</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecKeyDataTypeTrusted" role="macro">
<title>xmlSecKeyDataTypeTrusted</title>
<indexterm zone="xmlSecKeyDataTypeTrusted"><primary sortas="xmlSecKeyDataTypeTrusted">xmlSecKeyDataTypeTrusted</primary></indexterm><programlisting>#define xmlSecKeyDataTypeTrusted                        0x0100
</programlisting>
<para>
The key data is trusted.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecKeyDataTypeAny" role="macro">
<title>xmlSecKeyDataTypeAny</title>
<indexterm zone="xmlSecKeyDataTypeAny"><primary sortas="xmlSecKeyDataTypeAny">xmlSecKeyDataTypeAny</primary></indexterm><programlisting>#define xmlSecKeyDataTypeAny                            0xFFFF
</programlisting>
<para>
Any key data.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecKeyDataFormat" role="enum">
<title>enum xmlSecKeyDataFormat</title>
<indexterm zone="xmlSecKeyDataFormat"><primary sortas="xmlSecKeyDataFormat">xmlSecKeyDataFormat</primary></indexterm><programlisting>typedef enum {
    xmlSecKeyDataFormatUnknown = 0,
    xmlSecKeyDataFormatBinary,
    xmlSecKeyDataFormatPem,
    xmlSecKeyDataFormatDer,
    xmlSecKeyDataFormatPkcs8Pem,
    xmlSecKeyDataFormatPkcs8Der,
    xmlSecKeyDataFormatPkcs12,
    xmlSecKeyDataFormatCertPem,
    xmlSecKeyDataFormatCertDer
} xmlSecKeyDataFormat;
</programlisting>
<para>
The key data format (binary, der, pem, etc.).</para>
<para>
</para><variablelist role="enum">
<varlistentry id="xmlSecKeyDataFormatUnknown" role="constant">
<term><literal>xmlSecKeyDataFormatUnknown</literal></term>
<listitem><simpara>         the key data format is unknown.
</simpara></listitem>
</varlistentry>
<varlistentry id="xmlSecKeyDataFormatBinary" role="constant">
<term><literal>xmlSecKeyDataFormatBinary</literal></term>
<listitem><simpara>          the binary key data.
</simpara></listitem>
</varlistentry>
<varlistentry id="xmlSecKeyDataFormatPem" role="constant">
<term><literal>xmlSecKeyDataFormatPem</literal></term>
<listitem><simpara>             the PEM key data (cert or public/private key).
</simpara></listitem>
</varlistentry>
<varlistentry id="xmlSecKeyDataFormatDer" role="constant">
<term><literal>xmlSecKeyDataFormatDer</literal></term>
<listitem><simpara>             the DER key data (cert or public/private key).
</simpara></listitem>
</varlistentry>
<varlistentry id="xmlSecKeyDataFormatPkcs8Pem" role="constant">
<term><literal>xmlSecKeyDataFormatPkcs8Pem</literal></term>
<listitem><simpara>        the PKCS8 PEM private key.
</simpara></listitem>
</varlistentry>
<varlistentry id="xmlSecKeyDataFormatPkcs8Der" role="constant">
<term><literal>xmlSecKeyDataFormatPkcs8Der</literal></term>
<listitem><simpara>        the PKCS8 DER private key.
</simpara></listitem>
</varlistentry>
<varlistentry id="xmlSecKeyDataFormatPkcs12" role="constant">
<term><literal>xmlSecKeyDataFormatPkcs12</literal></term>
<listitem><simpara>          the PKCS12 format (bag of keys and certs)
</simpara></listitem>
</varlistentry>
<varlistentry id="xmlSecKeyDataFormatCertPem" role="constant">
<term><literal>xmlSecKeyDataFormatCertPem</literal></term>
<listitem><simpara>         the PEM cert.
</simpara></listitem>
</varlistentry>
<varlistentry id="xmlSecKeyDataFormatCertDer" role="constant">
<term><literal>xmlSecKeyDataFormatCertDer</literal></term>
<listitem><simpara>         the DER cert.
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataIdsGet" role="function">
<title>xmlSecKeyDataIdsGet ()</title>
<indexterm zone="xmlSecKeyDataIdsGet"><primary sortas="xmlSecKeyDataIdsGet">xmlSecKeyDataIdsGet</primary></indexterm><programlisting><link linkend="xmlSecPtrList">xmlSecPtrListPtr</link>    xmlSecKeyDataIdsGet                 (void);</programlisting>
<para>
Gets global registered key data klasses list.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> the pointer to list of all registered key data klasses.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataIdsInit" role="function">
<title>xmlSecKeyDataIdsInit ()</title>
<indexterm zone="xmlSecKeyDataIdsInit"><primary sortas="xmlSecKeyDataIdsInit">xmlSecKeyDataIdsInit</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecKeyDataIdsInit                (void);</programlisting>
<para>
Initializes the key data klasses. This function is called from the
<link linkend="xmlSecInit"><type>xmlSecInit</type></link> function and the application should not call it directly.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> 0 on success or a negative value if an error occurs.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataIdsShutdown" role="function">
<title>xmlSecKeyDataIdsShutdown ()</title>
<indexterm zone="xmlSecKeyDataIdsShutdown"><primary sortas="xmlSecKeyDataIdsShutdown">xmlSecKeyDataIdsShutdown</primary></indexterm><programlisting><link linkend="void">void</link>                xmlSecKeyDataIdsShutdown            (void);</programlisting>
<para>
Shuts down the keys data klasses. This function is called from the
<link linkend="xmlSecShutdown"><type>xmlSecShutdown</type></link> function and the application should not call it directly.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecKeyDataIdsRegisterDefault" role="function">
<title>xmlSecKeyDataIdsRegisterDefault ()</title>
<indexterm zone="xmlSecKeyDataIdsRegisterDefault"><primary sortas="xmlSecKeyDataIdsRegisterDefault">xmlSecKeyDataIdsRegisterDefault</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecKeyDataIdsRegisterDefault     (void);</programlisting>
<para>
Registers default (implemented by XML Security Library)
key data klasses: <ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyName">&lt;dsig:KeyName/&gt;</ulink> element processing klass,
<ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyValue">&lt;dsig:KeyValue/&gt;</ulink> element processing klass, ...</para>
<para>
</para><variablelist role="params">
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> 0 on success or a negative value if an error occurs.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataIdsRegister" role="function">
<title>xmlSecKeyDataIdsRegister ()</title>
<indexterm zone="xmlSecKeyDataIdsRegister"><primary sortas="xmlSecKeyDataIdsRegister">xmlSecKeyDataIdsRegister</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecKeyDataIdsRegister            (<link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link> id);</programlisting>
<para>
Registers <parameter>id</parameter> in the global list of key data klasses.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>id</parameter>&#160;:</term>
<listitem><simpara>                 the key data klass.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> 0 on success or a negative value if an error occurs.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyData" role="struct">
<title>struct xmlSecKeyData</title>
<indexterm zone="xmlSecKeyData"><primary sortas="xmlSecKeyData">xmlSecKeyData</primary></indexterm><programlisting>struct xmlSecKeyData {
    xmlSecKeyDataId                     id;
    void*                               reserved0;
    void*                               reserved1;
};
</programlisting>
<para>
The key data: key value (crypto material), x509 data, pgp data, etc.</para>
<para>
</para><variablelist role="struct">
<varlistentry>
<term><link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link>&#160;<structfield>id</structfield>;</term>
<listitem><simpara>                 the data id (<link linkend="xmlSecKeyDataId"><type>xmlSecKeyDataId</type></link>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="void">void</link>&#160;*<structfield>reserved0</structfield>;</term>
<listitem><simpara>          reserved for the future.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="void">void</link>&#160;*<structfield>reserved1</structfield>;</term>
<listitem><simpara>          reserved for the future.
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataCreate" role="function">
<title>xmlSecKeyDataCreate ()</title>
<indexterm zone="xmlSecKeyDataCreate"><primary sortas="xmlSecKeyDataCreate">xmlSecKeyDataCreate</primary></indexterm><programlisting><link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link>    xmlSecKeyDataCreate                 (<link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link> id);</programlisting>
<para>
Allocates and initializes new key data of the specified type <parameter>id</parameter>.
Caller is responsible for destroying returned object with
<link linkend="xmlSecKeyDataDestroy"><type>xmlSecKeyDataDestroy</type></link> function.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>id</parameter>&#160;:</term>
<listitem><simpara>                 the data id.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> the pointer to newly allocated key data structure
or NULL if an error occurs.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataDuplicate" role="function">
<title>xmlSecKeyDataDuplicate ()</title>
<indexterm zone="xmlSecKeyDataDuplicate"><primary sortas="xmlSecKeyDataDuplicate">xmlSecKeyDataDuplicate</primary></indexterm><programlisting><link linkend="xmlSecKeyDataPtr">xmlSecKeyDataPtr</link>    xmlSecKeyDataDuplicate              (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data);</programlisting>
<para>
Creates a duplicate of the given <parameter>data</parameter>. Caller is responsible for
destroying returned object with <link linkend="xmlSecKeyDataDestroy"><type>xmlSecKeyDataDestroy</type></link> function.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>               the pointer to the key data.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> the pointer to newly allocated key data structure
or NULL if an error occurs.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataDestroy" role="function">
<title>xmlSecKeyDataDestroy ()</title>
<indexterm zone="xmlSecKeyDataDestroy"><primary sortas="xmlSecKeyDataDestroy">xmlSecKeyDataDestroy</primary></indexterm><programlisting><link linkend="void">void</link>                xmlSecKeyDataDestroy                (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data);</programlisting>
<para>
Destroys the data and frees all allocated memory.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>               the pointer to the key data.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataGenerate" role="function">
<title>xmlSecKeyDataGenerate ()</title>
<indexterm zone="xmlSecKeyDataGenerate"><primary sortas="xmlSecKeyDataGenerate">xmlSecKeyDataGenerate</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecKeyDataGenerate               (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> sizeBits,
                                                         <link linkend="xmlSecKeyDataType">xmlSecKeyDataType</link> type);</programlisting>
<para>
Generates new key data of given size and type.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>               the pointer to key data.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>sizeBits</parameter>&#160;:</term>
<listitem><simpara>           the desired key data size (in bits).
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>type</parameter>&#160;:</term>
<listitem><simpara>               the desired key data type.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> 0 on success or a negative value otherwise.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataGetType" role="function">
<title>xmlSecKeyDataGetType ()</title>
<indexterm zone="xmlSecKeyDataGetType"><primary sortas="xmlSecKeyDataGetType">xmlSecKeyDataGetType</primary></indexterm><programlisting><link linkend="xmlSecKeyDataType">xmlSecKeyDataType</link>   xmlSecKeyDataGetType                (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data);</programlisting>
<para>
Gets key data type.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>               the pointer to key data.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> key data type.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataGetSize" role="function">
<title>xmlSecKeyDataGetSize ()</title>
<indexterm zone="xmlSecKeyDataGetSize"><primary sortas="xmlSecKeyDataGetSize">xmlSecKeyDataGetSize</primary></indexterm><programlisting><link linkend="xmlSecSize">xmlSecSize</link>          xmlSecKeyDataGetSize                (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data);</programlisting>
<para>
Gets key data size.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>               the pointer to key data.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> key data size (in bits).
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataGetIdentifier" role="function">
<title>xmlSecKeyDataGetIdentifier ()</title>
<indexterm zone="xmlSecKeyDataGetIdentifier"><primary sortas="xmlSecKeyDataGetIdentifier">xmlSecKeyDataGetIdentifier</primary></indexterm><programlisting>const <link linkend="xmlChar">xmlChar</link>*      xmlSecKeyDataGetIdentifier          (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data);</programlisting>
<para>
Gets key data identifier string.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>               the pointer to key data.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> key data id string.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataDebugDump" role="function">
<title>xmlSecKeyDataDebugDump ()</title>
<indexterm zone="xmlSecKeyDataDebugDump"><primary sortas="xmlSecKeyDataDebugDump">xmlSecKeyDataDebugDump</primary></indexterm><programlisting><link linkend="void">void</link>                xmlSecKeyDataDebugDump              (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data,
                                                         <link linkend="FILE--CAPS">FILE</link> *output);</programlisting>
<para>
Prints key data debug info.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>               the pointer to key data.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>output</parameter>&#160;:</term>
<listitem><simpara>             the pointer to output FILE.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataDebugXmlDump" role="function">
<title>xmlSecKeyDataDebugXmlDump ()</title>
<indexterm zone="xmlSecKeyDataDebugXmlDump"><primary sortas="xmlSecKeyDataDebugXmlDump">xmlSecKeyDataDebugXmlDump</primary></indexterm><programlisting><link linkend="void">void</link>                xmlSecKeyDataDebugXmlDump           (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data,
                                                         <link linkend="FILE--CAPS">FILE</link> *output);</programlisting>
<para>
Prints key data debug info in XML format.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>               the pointer to key data.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>output</parameter>&#160;:</term>
<listitem><simpara>             the pointer to output FILE.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataXmlRead" role="function">
<title>xmlSecKeyDataXmlRead ()</title>
<indexterm zone="xmlSecKeyDataXmlRead"><primary sortas="xmlSecKeyDataXmlRead">xmlSecKeyDataXmlRead</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecKeyDataXmlRead                (<link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link> id,
                                                         <link linkend="xmlSecKey">xmlSecKeyPtr</link> key,
                                                         <link linkend="xmlNode">xmlNodePtr</link> node,
                                                         <link linkend="xmlSecKeyInfoCtx">xmlSecKeyInfoCtxPtr</link> keyInfoCtx);</programlisting>
<para>
Reads the key data of klass <parameter>id</parameter> from XML <parameter>node</parameter> and adds them to <parameter>key</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>id</parameter>&#160;:</term>
<listitem><simpara>                 the data klass.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>key</parameter>&#160;:</term>
<listitem><simpara>                the destination key.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>node</parameter>&#160;:</term>
<listitem><simpara>               the pointer to an XML node.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>keyInfoCtx</parameter>&#160;:</term>
<listitem><simpara>         the pointer to <ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo">&lt;dsig:KeyInfo/&gt;</ulink> element processing context.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> 0 on success or a negative value otherwise.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataXmlWrite" role="function">
<title>xmlSecKeyDataXmlWrite ()</title>
<indexterm zone="xmlSecKeyDataXmlWrite"><primary sortas="xmlSecKeyDataXmlWrite">xmlSecKeyDataXmlWrite</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecKeyDataXmlWrite               (<link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link> id,
                                                         <link linkend="xmlSecKey">xmlSecKeyPtr</link> key,
                                                         <link linkend="xmlNode">xmlNodePtr</link> node,
                                                         <link linkend="xmlSecKeyInfoCtx">xmlSecKeyInfoCtxPtr</link> keyInfoCtx);</programlisting>
<para>
Writes the key data of klass <parameter>id</parameter> from <parameter>key</parameter> to an XML <parameter>node</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>id</parameter>&#160;:</term>
<listitem><simpara>                 the data klass.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>key</parameter>&#160;:</term>
<listitem><simpara>                the source key.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>node</parameter>&#160;:</term>
<listitem><simpara>               the pointer to an XML node.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>keyInfoCtx</parameter>&#160;:</term>
<listitem><simpara>         the pointer to <ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo">&lt;dsig:KeyInfo/&gt;</ulink> element processing context.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> 0 on success or a negative value otherwise.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataBinRead" role="function">
<title>xmlSecKeyDataBinRead ()</title>
<indexterm zone="xmlSecKeyDataBinRead"><primary sortas="xmlSecKeyDataBinRead">xmlSecKeyDataBinRead</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecKeyDataBinRead                (<link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link> id,
                                                         <link linkend="xmlSecKey">xmlSecKeyPtr</link> key,
                                                         const <link linkend="xmlSecByte">xmlSecByte</link> *buf,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> bufSize,
                                                         <link linkend="xmlSecKeyInfoCtx">xmlSecKeyInfoCtxPtr</link> keyInfoCtx);</programlisting>
<para>
Reads the key data of klass <parameter>id</parameter> from binary buffer <parameter>buf</parameter> to <parameter>key</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>id</parameter>&#160;:</term>
<listitem><simpara>                 the data klass.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>key</parameter>&#160;:</term>
<listitem><simpara>                the destination key.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>buf</parameter>&#160;:</term>
<listitem><simpara>                the input binary buffer.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>bufSize</parameter>&#160;:</term>
<listitem><simpara>            the input buffer size.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>keyInfoCtx</parameter>&#160;:</term>
<listitem><simpara>         the <ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo">&lt;dsig:KeyInfo/&gt;</ulink> node processing context.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> 0 on success or a negative value if an error occurs.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataBinWrite" role="function">
<title>xmlSecKeyDataBinWrite ()</title>
<indexterm zone="xmlSecKeyDataBinWrite"><primary sortas="xmlSecKeyDataBinWrite">xmlSecKeyDataBinWrite</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecKeyDataBinWrite               (<link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link> id,
                                                         <link linkend="xmlSecKey">xmlSecKeyPtr</link> key,
                                                         <link linkend="xmlSecByte">xmlSecByte</link> **buf,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> *bufSize,
                                                         <link linkend="xmlSecKeyInfoCtx">xmlSecKeyInfoCtxPtr</link> keyInfoCtx);</programlisting>
<para>
Writes the key data of klass <parameter>id</parameter> from the <parameter>key</parameter> to a binary buffer <parameter>buf</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>id</parameter>&#160;:</term>
<listitem><simpara>                 the data klass.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>key</parameter>&#160;:</term>
<listitem><simpara>                the source key.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>buf</parameter>&#160;:</term>
<listitem><simpara>                the output binary buffer.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>bufSize</parameter>&#160;:</term>
<listitem><simpara>            the output buffer size.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>keyInfoCtx</parameter>&#160;:</term>
<listitem><simpara>         the <ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo">&lt;dsig:KeyInfo/&gt;</ulink> node processing context.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> 0 on success or a negative value if an error occurs.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataGetName" role="macro">
<title>xmlSecKeyDataGetName()</title>
<indexterm zone="xmlSecKeyDataGetName"><primary sortas="xmlSecKeyDataGetName">xmlSecKeyDataGetName</primary></indexterm><programlisting>#define             xmlSecKeyDataGetName(data)</programlisting>
<para>
Macro. Returns the key data name.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>               the pointer to key data.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataIsValid" role="macro">
<title>xmlSecKeyDataIsValid()</title>
<indexterm zone="xmlSecKeyDataIsValid"><primary sortas="xmlSecKeyDataIsValid">xmlSecKeyDataIsValid</primary></indexterm><programlisting>#define             xmlSecKeyDataIsValid(data)</programlisting>
<para>
Macro. Returns 1 if <parameter>data</parameter> is not NULL and <parameter>data</parameter>-&gt;id is not NULL
or 0 otherwise.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>               the pointer to data.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataCheckId" role="macro">
<title>xmlSecKeyDataCheckId()</title>
<indexterm zone="xmlSecKeyDataCheckId"><primary sortas="xmlSecKeyDataCheckId">xmlSecKeyDataCheckId</primary></indexterm><programlisting>#define             xmlSecKeyDataCheckId(data, dataId)</programlisting>
<para>
Macro. Returns 1 if <parameter>data</parameter> is valid and <parameter>data</parameter>'s id is equal to <parameter>dataId</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>               the pointer to data.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>dataId</parameter>&#160;:</term>
<listitem><simpara>             the data Id.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataCheckUsage" role="macro">
<title>xmlSecKeyDataCheckUsage()</title>
<indexterm zone="xmlSecKeyDataCheckUsage"><primary sortas="xmlSecKeyDataCheckUsage">xmlSecKeyDataCheckUsage</primary></indexterm><programlisting>#define             xmlSecKeyDataCheckUsage(data, usg)</programlisting>
<para>
Macro. Returns 1 if <parameter>data</parameter> is valid and could be used for <parameter>usg</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>               the pointer to data.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>usg</parameter>&#160;:</term>
<listitem><simpara>                the data usage.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataCheckSize" role="macro">
<title>xmlSecKeyDataCheckSize()</title>
<indexterm zone="xmlSecKeyDataCheckSize"><primary sortas="xmlSecKeyDataCheckSize">xmlSecKeyDataCheckSize</primary></indexterm><programlisting>#define             xmlSecKeyDataCheckSize(data, size)</programlisting>
<para>
Macro. Returns 1 if <parameter>data</parameter> is valid and <parameter>data</parameter>'s object has at least <parameter>size</parameter> bytes.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>               the pointer to data.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>size</parameter>&#160;:</term>
<listitem><simpara>               the expected size.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataIdUnknown" role="macro">
<title>xmlSecKeyDataIdUnknown</title>
<indexterm zone="xmlSecKeyDataIdUnknown"><primary sortas="xmlSecKeyDataIdUnknown">xmlSecKeyDataIdUnknown</primary></indexterm><programlisting>#define xmlSecKeyDataIdUnknown                  ((xmlSecKeyDataId)NULL)
</programlisting>
<para>
The "unknown" id.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecKeyDataInitMethod" role="function">
<title>xmlSecKeyDataInitMethod ()</title>
<indexterm zone="xmlSecKeyDataInitMethod"><primary sortas="xmlSecKeyDataInitMethod">xmlSecKeyDataInitMethod</primary></indexterm><programlisting><link linkend="int">int</link>                 (*xmlSecKeyDataInitMethod)          (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data);</programlisting>
<para>
Key data specific initialization method.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>               the pointer to key data.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> 0 on success or a negative value if an error occurs.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataDuplicateMethod" role="function">
<title>xmlSecKeyDataDuplicateMethod ()</title>
<indexterm zone="xmlSecKeyDataDuplicateMethod"><primary sortas="xmlSecKeyDataDuplicateMethod">xmlSecKeyDataDuplicateMethod</primary></indexterm><programlisting><link linkend="int">int</link>                 (*xmlSecKeyDataDuplicateMethod)     (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> dst,
                                                         <link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> src);</programlisting>
<para>
Key data specific duplication (copy) method.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>dst</parameter>&#160;:</term>
<listitem><simpara>                the pointer to destination key data.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>src</parameter>&#160;:</term>
<listitem><simpara>                the poiniter to source key data.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> 0 on success or a negative value if an error occurs.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataFinalizeMethod" role="function">
<title>xmlSecKeyDataFinalizeMethod ()</title>
<indexterm zone="xmlSecKeyDataFinalizeMethod"><primary sortas="xmlSecKeyDataFinalizeMethod">xmlSecKeyDataFinalizeMethod</primary></indexterm><programlisting><link linkend="void">void</link>                (*xmlSecKeyDataFinalizeMethod)      (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data);</programlisting>
<para>
Key data specific finalization method. All the objects and resources allocated
by the key data object must be freed inside this method.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>               the data.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataXmlReadMethod" role="function">
<title>xmlSecKeyDataXmlReadMethod ()</title>
<indexterm zone="xmlSecKeyDataXmlReadMethod"><primary sortas="xmlSecKeyDataXmlReadMethod">xmlSecKeyDataXmlReadMethod</primary></indexterm><programlisting><link linkend="int">int</link>                 (*xmlSecKeyDataXmlReadMethod)       (<link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link> id,
                                                         <link linkend="xmlSecKey">xmlSecKeyPtr</link> key,
                                                         <link linkend="xmlNode">xmlNodePtr</link> node,
                                                         <link linkend="xmlSecKeyInfoCtx">xmlSecKeyInfoCtxPtr</link> keyInfoCtx);</programlisting>
<para>
Key data specific method for reading XML node.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>id</parameter>&#160;:</term>
<listitem><simpara>                 the data id.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>key</parameter>&#160;:</term>
<listitem><simpara>                the key.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>node</parameter>&#160;:</term>
<listitem><simpara>               the pointer to data's value XML node.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>keyInfoCtx</parameter>&#160;:</term>
<listitem><simpara>         the <ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo">&lt;dsig:KeyInfo/&gt;</ulink> node processing context.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> 0 on success or a negative value if an error occurs.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataXmlWriteMethod" role="function">
<title>xmlSecKeyDataXmlWriteMethod ()</title>
<indexterm zone="xmlSecKeyDataXmlWriteMethod"><primary sortas="xmlSecKeyDataXmlWriteMethod">xmlSecKeyDataXmlWriteMethod</primary></indexterm><programlisting><link linkend="int">int</link>                 (*xmlSecKeyDataXmlWriteMethod)      (<link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link> id,
                                                         <link linkend="xmlSecKey">xmlSecKeyPtr</link> key,
                                                         <link linkend="xmlNode">xmlNodePtr</link> node,
                                                         <link linkend="xmlSecKeyInfoCtx">xmlSecKeyInfoCtxPtr</link> keyInfoCtx);</programlisting>
<para>
Key data specific method for writing XML node.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>id</parameter>&#160;:</term>
<listitem><simpara>                 the data id.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>key</parameter>&#160;:</term>
<listitem><simpara>                the key.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>node</parameter>&#160;:</term>
<listitem><simpara>               the pointer to data's value XML node.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>keyInfoCtx</parameter>&#160;:</term>
<listitem><simpara>         the &lt;dsig:KeyInfo&gt; node processing context.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> 0 on success or a negative value if an error occurs.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataBinReadMethod" role="function">
<title>xmlSecKeyDataBinReadMethod ()</title>
<indexterm zone="xmlSecKeyDataBinReadMethod"><primary sortas="xmlSecKeyDataBinReadMethod">xmlSecKeyDataBinReadMethod</primary></indexterm><programlisting><link linkend="int">int</link>                 (*xmlSecKeyDataBinReadMethod)       (<link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link> id,
                                                         <link linkend="xmlSecKey">xmlSecKeyPtr</link> key,
                                                         const <link linkend="xmlSecByte">xmlSecByte</link> *buf,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> bufSize,
                                                         <link linkend="xmlSecKeyInfoCtx">xmlSecKeyInfoCtxPtr</link> keyInfoCtx);</programlisting>
<para>
Key data specific method for reading binary buffer.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>id</parameter>&#160;:</term>
<listitem><simpara>                 the data id.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>key</parameter>&#160;:</term>
<listitem><simpara>                the key.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>buf</parameter>&#160;:</term>
<listitem><simpara>                the input buffer.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>bufSize</parameter>&#160;:</term>
<listitem><simpara>            the buffer size.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>keyInfoCtx</parameter>&#160;:</term>
<listitem><simpara>         the <ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo">&lt;dsig:KeyInfo/&gt;</ulink> node processing context.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> 0 on success or a negative value if an error occurs.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataBinWriteMethod" role="function">
<title>xmlSecKeyDataBinWriteMethod ()</title>
<indexterm zone="xmlSecKeyDataBinWriteMethod"><primary sortas="xmlSecKeyDataBinWriteMethod">xmlSecKeyDataBinWriteMethod</primary></indexterm><programlisting><link linkend="int">int</link>                 (*xmlSecKeyDataBinWriteMethod)      (<link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link> id,
                                                         <link linkend="xmlSecKey">xmlSecKeyPtr</link> key,
                                                         <link linkend="xmlSecByte">xmlSecByte</link> **buf,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> *bufSize,
                                                         <link linkend="xmlSecKeyInfoCtx">xmlSecKeyInfoCtxPtr</link> keyInfoCtx);</programlisting>
<para>
Key data specific method for reading binary buffer.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>id</parameter>&#160;:</term>
<listitem><simpara>                 the data id.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>key</parameter>&#160;:</term>
<listitem><simpara>                the key.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>buf</parameter>&#160;:</term>
<listitem><simpara>                the output buffer.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>bufSize</parameter>&#160;:</term>
<listitem><simpara>            the buffer size.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>keyInfoCtx</parameter>&#160;:</term>
<listitem><simpara>         the <ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo">&lt;dsig:KeyInfo/&gt;</ulink> node processing context.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> 0 on success or a negative value if an error occurs.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataGenerateMethod" role="function">
<title>xmlSecKeyDataGenerateMethod ()</title>
<indexterm zone="xmlSecKeyDataGenerateMethod"><primary sortas="xmlSecKeyDataGenerateMethod">xmlSecKeyDataGenerateMethod</primary></indexterm><programlisting><link linkend="int">int</link>                 (*xmlSecKeyDataGenerateMethod)      (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> sizeBits,
                                                         <link linkend="xmlSecKeyDataType">xmlSecKeyDataType</link> type);</programlisting>
<para>
Key data specific method for generating new key data.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>               the pointer to key data.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>sizeBits</parameter>&#160;:</term>
<listitem><simpara>           the key data specific size.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>type</parameter>&#160;:</term>
<listitem><simpara>               the required key type (session/permanent, etc.)
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> 0 on success or a negative value if an error occurs.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataGetTypeMethod" role="function">
<title>xmlSecKeyDataGetTypeMethod ()</title>
<indexterm zone="xmlSecKeyDataGetTypeMethod"><primary sortas="xmlSecKeyDataGetTypeMethod">xmlSecKeyDataGetTypeMethod</primary></indexterm><programlisting><link linkend="xmlSecKeyDataType">xmlSecKeyDataType</link>   (*xmlSecKeyDataGetTypeMethod)       (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data);</programlisting>
<para>
Key data specific method to get the key type.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>                the data.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> the key type.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataGetSizeMethod" role="function">
<title>xmlSecKeyDataGetSizeMethod ()</title>
<indexterm zone="xmlSecKeyDataGetSizeMethod"><primary sortas="xmlSecKeyDataGetSizeMethod">xmlSecKeyDataGetSizeMethod</primary></indexterm><programlisting><link linkend="xmlSecSize">xmlSecSize</link>          (*xmlSecKeyDataGetSizeMethod)       (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data);</programlisting>
<para>
Key data specific method to get the key size.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>               the pointer to key data.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> the key size in bits.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataGetIdentifierMethod" role="function">
<title>xmlSecKeyDataGetIdentifierMethod ()</title>
<indexterm zone="xmlSecKeyDataGetIdentifierMethod"><primary sortas="xmlSecKeyDataGetIdentifierMethod">xmlSecKeyDataGetIdentifierMethod</primary></indexterm><programlisting>const <link linkend="xmlChar">xmlChar</link> *     (*xmlSecKeyDataGetIdentifierMethod) (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data);</programlisting>
<para>
Key data specific method to get the key data identifier string (for example,
X509 data identifier is the subject of the verified cert).</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>               the pointer to key data.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> the identifier string or NULL if an error occurs.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataDebugDumpMethod" role="function">
<title>xmlSecKeyDataDebugDumpMethod ()</title>
<indexterm zone="xmlSecKeyDataDebugDumpMethod"><primary sortas="xmlSecKeyDataDebugDumpMethod">xmlSecKeyDataDebugDumpMethod</primary></indexterm><programlisting><link linkend="void">void</link>                (*xmlSecKeyDataDebugDumpMethod)     (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data,
                                                         <link linkend="FILE--CAPS">FILE</link> *output);</programlisting>
<para>
Key data specific method for printing debug info.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>               the data.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>output</parameter>&#160;:</term>
<listitem><simpara>             the FILE to print debug info (should be open for writing).
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataKlass" role="struct">
<title>struct xmlSecKeyDataKlass</title>
<indexterm zone="xmlSecKeyDataKlass"><primary sortas="xmlSecKeyDataKlass">xmlSecKeyDataKlass</primary></indexterm><programlisting>struct xmlSecKeyDataKlass {
    xmlSecSize                          klassSize;
    xmlSecSize                          objSize;

    /* data */
    const xmlChar*                      name;
    xmlSecKeyDataUsage                  usage;
    const xmlChar*                      href;
    const xmlChar*                      dataNodeName;
    const xmlChar*                      dataNodeNs;

    /* constructors/destructor */
    xmlSecKeyDataInitMethod             initialize;
    xmlSecKeyDataDuplicateMethod        duplicate;
    xmlSecKeyDataFinalizeMethod         finalize;
    xmlSecKeyDataGenerateMethod         generate;

    /* get info */
    xmlSecKeyDataGetTypeMethod          getType;
    xmlSecKeyDataGetSizeMethod          getSize;
    xmlSecKeyDataGetIdentifierMethod    getIdentifier;

    /* read/write */
    xmlSecKeyDataXmlReadMethod          xmlRead;
    xmlSecKeyDataXmlWriteMethod         xmlWrite;
    xmlSecKeyDataBinReadMethod          binRead;
    xmlSecKeyDataBinWriteMethod         binWrite;

    /* debug */
    xmlSecKeyDataDebugDumpMethod        debugDump;
    xmlSecKeyDataDebugDumpMethod        debugXmlDump;

    /* for the future */
    void*                               reserved0;
    void*                               reserved1;
};
</programlisting>
<para>
The data id (klass).</para>
<para>
</para><variablelist role="struct">
<varlistentry>
<term><link linkend="xmlSecSize">xmlSecSize</link>&#160;<structfield>klassSize</structfield>;</term>
<listitem><simpara>          the klass size.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecSize">xmlSecSize</link>&#160;<structfield>objSize</structfield>;</term>
<listitem><simpara>            the object size.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term>const&#160;<link linkend="xmlChar">xmlChar</link>&#160;*<structfield>name</structfield>;</term>
<listitem><simpara>               the object name.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecKeyDataUsage">xmlSecKeyDataUsage</link>&#160;<structfield>usage</structfield>;</term>
<listitem><simpara>              the allowed data usage.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term>const&#160;<link linkend="xmlChar">xmlChar</link>&#160;*<structfield>href</structfield>;</term>
<listitem><simpara>               the identification string (href).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term>const&#160;<link linkend="xmlChar">xmlChar</link>&#160;*<structfield>dataNodeName</structfield>;</term>
<listitem><simpara>       the data's XML node name.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term>const&#160;<link linkend="xmlChar">xmlChar</link>&#160;*<structfield>dataNodeNs</structfield>;</term>
<listitem><simpara>         the data's XML node namespace.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecKeyDataInitMethod">xmlSecKeyDataInitMethod</link>&#160;<structfield>initialize</structfield>;</term>
<listitem><simpara>         the initialization method.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecKeyDataDuplicateMethod">xmlSecKeyDataDuplicateMethod</link>&#160;<structfield>duplicate</structfield>;</term>
<listitem><simpara>          the duplicate (copy) method.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecKeyDataFinalizeMethod">xmlSecKeyDataFinalizeMethod</link>&#160;<structfield>finalize</structfield>;</term>
<listitem><simpara>           the finalization (destroy) method.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecKeyDataGenerateMethod">xmlSecKeyDataGenerateMethod</link>&#160;<structfield>generate</structfield>;</term>
<listitem><simpara>           the new data generation method.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecKeyDataGetTypeMethod">xmlSecKeyDataGetTypeMethod</link>&#160;<structfield>getType</structfield>;</term>
<listitem><simpara>            the method to access data's type information.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecKeyDataGetSizeMethod">xmlSecKeyDataGetSizeMethod</link>&#160;<structfield>getSize</structfield>;</term>
<listitem><simpara>            the method to access data's size.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecKeyDataGetIdentifierMethod">xmlSecKeyDataGetIdentifierMethod</link>&#160;<structfield>getIdentifier</structfield>;</term>
<listitem><simpara>      the method to access data's string identifier.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecKeyDataXmlReadMethod">xmlSecKeyDataXmlReadMethod</link>&#160;<structfield>xmlRead</structfield>;</term>
<listitem><simpara>            the method for reading data from XML node.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecKeyDataXmlWriteMethod">xmlSecKeyDataXmlWriteMethod</link>&#160;<structfield>xmlWrite</structfield>;</term>
<listitem><simpara>           the method for writing data to XML node.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecKeyDataBinReadMethod">xmlSecKeyDataBinReadMethod</link>&#160;<structfield>binRead</structfield>;</term>
<listitem><simpara>            the method for reading data from a binary buffer.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecKeyDataBinWriteMethod">xmlSecKeyDataBinWriteMethod</link>&#160;<structfield>binWrite</structfield>;</term>
<listitem><simpara>           the method for writing data to binary buffer.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecKeyDataDebugDumpMethod">xmlSecKeyDataDebugDumpMethod</link>&#160;<structfield>debugDump</structfield>;</term>
<listitem><simpara>          the method for printing debug data information.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecKeyDataDebugDumpMethod">xmlSecKeyDataDebugDumpMethod</link>&#160;<structfield>debugXmlDump</structfield>;</term>
<listitem><simpara>       the method for printing debug data information in XML format.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="void">void</link>&#160;*<structfield>reserved0</structfield>;</term>
<listitem><simpara>          reserved for the future.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="void">void</link>&#160;*<structfield>reserved1</structfield>;</term>
<listitem><simpara>          reserved for the future.
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataKlassGetName" role="macro">
<title>xmlSecKeyDataKlassGetName()</title>
<indexterm zone="xmlSecKeyDataKlassGetName"><primary sortas="xmlSecKeyDataKlassGetName">xmlSecKeyDataKlassGetName</primary></indexterm><programlisting>#define             xmlSecKeyDataKlassGetName(klass)</programlisting>
<para>
Macro. Returns data klass name.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>klass</parameter>&#160;:</term>
<listitem><simpara>              the data klass.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataListId" role="macro">
<title>xmlSecKeyDataListId</title>
<indexterm zone="xmlSecKeyDataListId"><primary sortas="xmlSecKeyDataListId">xmlSecKeyDataListId</primary></indexterm><programlisting>#define xmlSecKeyDataListId     xmlSecKeyDataListGetKlass()
</programlisting>
<para>
The key data klasses list klass id.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecKeyDataListGetKlass" role="function">
<title>xmlSecKeyDataListGetKlass ()</title>
<indexterm zone="xmlSecKeyDataListGetKlass"><primary sortas="xmlSecKeyDataListGetKlass">xmlSecKeyDataListGetKlass</primary></indexterm><programlisting><link linkend="xmlSecPtrListId">xmlSecPtrListId</link>     xmlSecKeyDataListGetKlass           (void);</programlisting>
<para>
The key data list klass.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> pointer to the key data list klass.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataIdListId" role="macro">
<title>xmlSecKeyDataIdListId</title>
<indexterm zone="xmlSecKeyDataIdListId"><primary sortas="xmlSecKeyDataIdListId">xmlSecKeyDataIdListId</primary></indexterm><programlisting>#define xmlSecKeyDataIdListId   xmlSecKeyDataIdListGetKlass()
</programlisting>
<para>
The key data list klass id.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecKeyDataIdListGetKlass" role="function">
<title>xmlSecKeyDataIdListGetKlass ()</title>
<indexterm zone="xmlSecKeyDataIdListGetKlass"><primary sortas="xmlSecKeyDataIdListGetKlass">xmlSecKeyDataIdListGetKlass</primary></indexterm><programlisting><link linkend="xmlSecPtrListId">xmlSecPtrListId</link>     xmlSecKeyDataIdListGetKlass         (void);</programlisting>
<para>
The key data id list klass.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> pointer to the key data id list klass.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataIdListFind" role="function">
<title>xmlSecKeyDataIdListFind ()</title>
<indexterm zone="xmlSecKeyDataIdListFind"><primary sortas="xmlSecKeyDataIdListFind">xmlSecKeyDataIdListFind</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecKeyDataIdListFind             (<link linkend="xmlSecPtrList">xmlSecPtrListPtr</link> list,
                                                         <link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link> dataId);</programlisting>
<para>
Lookups <parameter>dataId</parameter> in <parameter>list</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>list</parameter>&#160;:</term>
<listitem><simpara>               the pointer to key data ids list.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>dataId</parameter>&#160;:</term>
<listitem><simpara>             the key data klass.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> 1 if <parameter>dataId</parameter> is found in the <parameter>list</parameter>, 0 if not and a negative
value if an error occurs.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataIdListFindByNode" role="function">
<title>xmlSecKeyDataIdListFindByNode ()</title>
<indexterm zone="xmlSecKeyDataIdListFindByNode"><primary sortas="xmlSecKeyDataIdListFindByNode">xmlSecKeyDataIdListFindByNode</primary></indexterm><programlisting><link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link>     xmlSecKeyDataIdListFindByNode       (<link linkend="xmlSecPtrList">xmlSecPtrListPtr</link> list,
                                                         const <link linkend="xmlChar">xmlChar</link> *nodeName,
                                                         const <link linkend="xmlChar">xmlChar</link> *nodeNs,
                                                         <link linkend="xmlSecKeyDataUsage">xmlSecKeyDataUsage</link> usage);</programlisting>
<para>
Lookups data klass in the list with given <parameter>nodeName</parameter>, <parameter>nodeNs</parameter> and
<parameter>usage</parameter> in the <parameter>list</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>list</parameter>&#160;:</term>
<listitem><simpara>               the pointer to key data ids list.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>nodeName</parameter>&#160;:</term>
<listitem><simpara>           the desired key data klass XML node name.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>nodeNs</parameter>&#160;:</term>
<listitem><simpara>             the desired key data klass XML node namespace.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>usage</parameter>&#160;:</term>
<listitem><simpara>              the desired key data usage.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> key data klass is found and NULL otherwise.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataIdListFindByHref" role="function">
<title>xmlSecKeyDataIdListFindByHref ()</title>
<indexterm zone="xmlSecKeyDataIdListFindByHref"><primary sortas="xmlSecKeyDataIdListFindByHref">xmlSecKeyDataIdListFindByHref</primary></indexterm><programlisting><link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link>     xmlSecKeyDataIdListFindByHref       (<link linkend="xmlSecPtrList">xmlSecPtrListPtr</link> list,
                                                         const <link linkend="xmlChar">xmlChar</link> *href,
                                                         <link linkend="xmlSecKeyDataUsage">xmlSecKeyDataUsage</link> usage);</programlisting>
<para>
Lookups data klass in the list with given <parameter>href</parameter> and <parameter>usage</parameter> in <parameter>list</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>list</parameter>&#160;:</term>
<listitem><simpara>               the pointer to key data ids list.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>href</parameter>&#160;:</term>
<listitem><simpara>               the desired key data klass href.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>usage</parameter>&#160;:</term>
<listitem><simpara>              the desired key data usage.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> key data klass is found and NULL otherwise.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataIdListFindByName" role="function">
<title>xmlSecKeyDataIdListFindByName ()</title>
<indexterm zone="xmlSecKeyDataIdListFindByName"><primary sortas="xmlSecKeyDataIdListFindByName">xmlSecKeyDataIdListFindByName</primary></indexterm><programlisting><link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link>     xmlSecKeyDataIdListFindByName       (<link linkend="xmlSecPtrList">xmlSecPtrListPtr</link> list,
                                                         const <link linkend="xmlChar">xmlChar</link> *name,
                                                         <link linkend="xmlSecKeyDataUsage">xmlSecKeyDataUsage</link> usage);</programlisting>
<para>
Lookups data klass in the list with given <parameter>name</parameter> and <parameter>usage</parameter> in <parameter>list</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>list</parameter>&#160;:</term>
<listitem><simpara>               the pointer to key data ids list.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>name</parameter>&#160;:</term>
<listitem><simpara>               the desired key data klass name.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>usage</parameter>&#160;:</term>
<listitem><simpara>              the desired key data usage.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> key data klass is found and NULL otherwise.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataIdListDebugDump" role="function">
<title>xmlSecKeyDataIdListDebugDump ()</title>
<indexterm zone="xmlSecKeyDataIdListDebugDump"><primary sortas="xmlSecKeyDataIdListDebugDump">xmlSecKeyDataIdListDebugDump</primary></indexterm><programlisting><link linkend="void">void</link>                xmlSecKeyDataIdListDebugDump        (<link linkend="xmlSecPtrList">xmlSecPtrListPtr</link> list,
                                                         <link linkend="FILE--CAPS">FILE</link> *output);</programlisting>
<para>
Prints binary key data debug information to <parameter>output</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>list</parameter>&#160;:</term>
<listitem><simpara>               the pointer to key data ids list.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>output</parameter>&#160;:</term>
<listitem><simpara>             the pointer to output FILE.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataIdListDebugXmlDump" role="function">
<title>xmlSecKeyDataIdListDebugXmlDump ()</title>
<indexterm zone="xmlSecKeyDataIdListDebugXmlDump"><primary sortas="xmlSecKeyDataIdListDebugXmlDump">xmlSecKeyDataIdListDebugXmlDump</primary></indexterm><programlisting><link linkend="void">void</link>                xmlSecKeyDataIdListDebugXmlDump     (<link linkend="xmlSecPtrList">xmlSecPtrListPtr</link> list,
                                                         <link linkend="FILE--CAPS">FILE</link> *output);</programlisting>
<para>
Prints binary key data debug information to <parameter>output</parameter> in XML format.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>list</parameter>&#160;:</term>
<listitem><simpara>               the pointer to key data ids list.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>output</parameter>&#160;:</term>
<listitem><simpara>             the pointer to output FILE.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataBinarySize" role="macro">
<title>xmlSecKeyDataBinarySize</title>
<indexterm zone="xmlSecKeyDataBinarySize"><primary sortas="xmlSecKeyDataBinarySize">xmlSecKeyDataBinarySize</primary></indexterm><programlisting>#define             xmlSecKeyDataBinarySize</programlisting>
<para>
The binary key data object size.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecKeyDataBinaryValueInitialize" role="function">
<title>xmlSecKeyDataBinaryValueInitialize ()</title>
<indexterm zone="xmlSecKeyDataBinaryValueInitialize"><primary sortas="xmlSecKeyDataBinaryValueInitialize">xmlSecKeyDataBinaryValueInitialize</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecKeyDataBinaryValueInitialize  (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data);</programlisting>
<para>
Initializes key data.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>               the pointer to binary key data.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> 0 on success or a negative value otherwise.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataBinaryValueDuplicate" role="function">
<title>xmlSecKeyDataBinaryValueDuplicate ()</title>
<indexterm zone="xmlSecKeyDataBinaryValueDuplicate"><primary sortas="xmlSecKeyDataBinaryValueDuplicate">xmlSecKeyDataBinaryValueDuplicate</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecKeyDataBinaryValueDuplicate   (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> dst,
                                                         <link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> src);</programlisting>
<para>
Copies binary key data from <parameter>src</parameter> to <parameter>dst</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>dst</parameter>&#160;:</term>
<listitem><simpara>                the pointer to destination binary key data.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>src</parameter>&#160;:</term>
<listitem><simpara>                the pointer to source binary key data.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> 0 on success or a negative value otherwise.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataBinaryValueFinalize" role="function">
<title>xmlSecKeyDataBinaryValueFinalize ()</title>
<indexterm zone="xmlSecKeyDataBinaryValueFinalize"><primary sortas="xmlSecKeyDataBinaryValueFinalize">xmlSecKeyDataBinaryValueFinalize</primary></indexterm><programlisting><link linkend="void">void</link>                xmlSecKeyDataBinaryValueFinalize    (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data);</programlisting>
<para>
Cleans up binary key data.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>               the pointer to binary key data.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataBinaryValueXmlRead" role="function">
<title>xmlSecKeyDataBinaryValueXmlRead ()</title>
<indexterm zone="xmlSecKeyDataBinaryValueXmlRead"><primary sortas="xmlSecKeyDataBinaryValueXmlRead">xmlSecKeyDataBinaryValueXmlRead</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecKeyDataBinaryValueXmlRead     (<link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link> id,
                                                         <link linkend="xmlSecKey">xmlSecKeyPtr</link> key,
                                                         <link linkend="xmlNode">xmlNodePtr</link> node,
                                                         <link linkend="xmlSecKeyInfoCtx">xmlSecKeyInfoCtxPtr</link> keyInfoCtx);</programlisting>
<para>
Reads binary key data from <parameter>node</parameter> to the key by base64 decoding the <parameter>node</parameter> content.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>id</parameter>&#160;:</term>
<listitem><simpara>                 the data klass.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>key</parameter>&#160;:</term>
<listitem><simpara>                the pointer to destination key.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>node</parameter>&#160;:</term>
<listitem><simpara>               the pointer to an XML node.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>keyInfoCtx</parameter>&#160;:</term>
<listitem><simpara>         the pointer to <ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo">&lt;dsig:KeyInfo/&gt;</ulink> element processing context.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> 0 on success or a negative value otherwise.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataBinaryValueXmlWrite" role="function">
<title>xmlSecKeyDataBinaryValueXmlWrite ()</title>
<indexterm zone="xmlSecKeyDataBinaryValueXmlWrite"><primary sortas="xmlSecKeyDataBinaryValueXmlWrite">xmlSecKeyDataBinaryValueXmlWrite</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecKeyDataBinaryValueXmlWrite    (<link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link> id,
                                                         <link linkend="xmlSecKey">xmlSecKeyPtr</link> key,
                                                         <link linkend="xmlNode">xmlNodePtr</link> node,
                                                         <link linkend="xmlSecKeyInfoCtx">xmlSecKeyInfoCtxPtr</link> keyInfoCtx);</programlisting>
<para>
Base64 encodes binary key data of klass <parameter>id</parameter> from the <parameter>key</parameter> and
sets to the <parameter>node</parameter> content.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>id</parameter>&#160;:</term>
<listitem><simpara>                 the data klass.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>key</parameter>&#160;:</term>
<listitem><simpara>                the pointer to source key.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>node</parameter>&#160;:</term>
<listitem><simpara>               the pointer to an XML node.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>keyInfoCtx</parameter>&#160;:</term>
<listitem><simpara>         the pointer to <ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo">&lt;dsig:KeyInfo/&gt;</ulink> element processing context.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> 0 on success or a negative value otherwise.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataBinaryValueBinRead" role="function">
<title>xmlSecKeyDataBinaryValueBinRead ()</title>
<indexterm zone="xmlSecKeyDataBinaryValueBinRead"><primary sortas="xmlSecKeyDataBinaryValueBinRead">xmlSecKeyDataBinaryValueBinRead</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecKeyDataBinaryValueBinRead     (<link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link> id,
                                                         <link linkend="xmlSecKey">xmlSecKeyPtr</link> key,
                                                         const <link linkend="xmlSecByte">xmlSecByte</link> *buf,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> bufSize,
                                                         <link linkend="xmlSecKeyInfoCtx">xmlSecKeyInfoCtxPtr</link> keyInfoCtx);</programlisting>
<para>
Reads binary key data of the klass <parameter>id</parameter> from <parameter>buf</parameter> to the <parameter>key</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>id</parameter>&#160;:</term>
<listitem><simpara>                 the data klass.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>key</parameter>&#160;:</term>
<listitem><simpara>                the pointer to destination key.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>buf</parameter>&#160;:</term>
<listitem><simpara>                the source binary buffer.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>bufSize</parameter>&#160;:</term>
<listitem><simpara>            the source binary buffer size.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>keyInfoCtx</parameter>&#160;:</term>
<listitem><simpara>         the pointer to <ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo">&lt;dsig:KeyInfo/&gt;</ulink> element processing context.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> 0 on success or a negative value otherwise.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataBinaryValueBinWrite" role="function">
<title>xmlSecKeyDataBinaryValueBinWrite ()</title>
<indexterm zone="xmlSecKeyDataBinaryValueBinWrite"><primary sortas="xmlSecKeyDataBinaryValueBinWrite">xmlSecKeyDataBinaryValueBinWrite</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecKeyDataBinaryValueBinWrite    (<link linkend="xmlSecKeyDataId">xmlSecKeyDataId</link> id,
                                                         <link linkend="xmlSecKey">xmlSecKeyPtr</link> key,
                                                         <link linkend="xmlSecByte">xmlSecByte</link> **buf,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> *bufSize,
                                                         <link linkend="xmlSecKeyInfoCtx">xmlSecKeyInfoCtxPtr</link> keyInfoCtx);</programlisting>
<para>
Writes binary key data of klass <parameter>id</parameter> from the <parameter>key</parameter> to <parameter>buf</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>id</parameter>&#160;:</term>
<listitem><simpara>                 the data klass.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>key</parameter>&#160;:</term>
<listitem><simpara>                the pointer to source key.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>buf</parameter>&#160;:</term>
<listitem><simpara>                the destination binary buffer.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>bufSize</parameter>&#160;:</term>
<listitem><simpara>            the destination binary buffer size.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>keyInfoCtx</parameter>&#160;:</term>
<listitem><simpara>         the pointer to <ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo">&lt;dsig:KeyInfo/&gt;</ulink> element processing context.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> 0 on success or a negative value otherwise.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataBinaryValueDebugDump" role="function">
<title>xmlSecKeyDataBinaryValueDebugDump ()</title>
<indexterm zone="xmlSecKeyDataBinaryValueDebugDump"><primary sortas="xmlSecKeyDataBinaryValueDebugDump">xmlSecKeyDataBinaryValueDebugDump</primary></indexterm><programlisting><link linkend="void">void</link>                xmlSecKeyDataBinaryValueDebugDump   (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data,
                                                         <link linkend="FILE--CAPS">FILE</link> *output);</programlisting>
<para>
Prints binary key data debug information to <parameter>output</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>               the pointer to binary key data.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>output</parameter>&#160;:</term>
<listitem><simpara>             the pointer to output FILE.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataBinaryValueDebugXmlDump" role="function">
<title>xmlSecKeyDataBinaryValueDebugXmlDump ()</title>
<indexterm zone="xmlSecKeyDataBinaryValueDebugXmlDump"><primary sortas="xmlSecKeyDataBinaryValueDebugXmlDump">xmlSecKeyDataBinaryValueDebugXmlDump</primary></indexterm><programlisting><link linkend="void">void</link>                xmlSecKeyDataBinaryValueDebugXmlDump
                                                        (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data,
                                                         <link linkend="FILE--CAPS">FILE</link> *output);</programlisting>
<para>
Prints binary key data debug information to <parameter>output</parameter> in XML format.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>               the pointer to binary key data.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>output</parameter>&#160;:</term>
<listitem><simpara>             the pointer to output FILE.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataBinaryValueGetSize" role="function">
<title>xmlSecKeyDataBinaryValueGetSize ()</title>
<indexterm zone="xmlSecKeyDataBinaryValueGetSize"><primary sortas="xmlSecKeyDataBinaryValueGetSize">xmlSecKeyDataBinaryValueGetSize</primary></indexterm><programlisting><link linkend="xmlSecSize">xmlSecSize</link>          xmlSecKeyDataBinaryValueGetSize     (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data);</programlisting>
<para>
Gets the binary key data size.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>               the pointer to binary key data.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> binary key data size in bits.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataBinaryValueGetBuffer" role="function">
<title>xmlSecKeyDataBinaryValueGetBuffer ()</title>
<indexterm zone="xmlSecKeyDataBinaryValueGetBuffer"><primary sortas="xmlSecKeyDataBinaryValueGetBuffer">xmlSecKeyDataBinaryValueGetBuffer</primary></indexterm><programlisting><link linkend="xmlSecBufferPtr">xmlSecBufferPtr</link>     xmlSecKeyDataBinaryValueGetBuffer   (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data);</programlisting>
<para>
Gets the binary key data buffer.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>               the pointer to binary key data.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> pointer to binary key data buffer.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataBinaryValueSetBuffer" role="function">
<title>xmlSecKeyDataBinaryValueSetBuffer ()</title>
<indexterm zone="xmlSecKeyDataBinaryValueSetBuffer"><primary sortas="xmlSecKeyDataBinaryValueSetBuffer">xmlSecKeyDataBinaryValueSetBuffer</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecKeyDataBinaryValueSetBuffer   (<link linkend="xmlSecKeyData">xmlSecKeyDataPtr</link> data,
                                                         const <link linkend="xmlSecByte">xmlSecByte</link> *buf,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> bufSize);</programlisting>
<para>
Sets the value of <parameter>data</parameter> to <parameter>buf</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>               the pointer to binary key data.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>buf</parameter>&#160;:</term>
<listitem><simpara>                the pointer to binary buffer.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>bufSize</parameter>&#160;:</term>
<listitem><simpara>            the binary buffer size.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> 0 on success or a negative value otherwise.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataStore" role="struct">
<title>struct xmlSecKeyDataStore</title>
<indexterm zone="xmlSecKeyDataStore"><primary sortas="xmlSecKeyDataStore">xmlSecKeyDataStore</primary></indexterm><programlisting>struct xmlSecKeyDataStore {
    xmlSecKeyDataStoreId                id;

    /* for the future */
    void*                               reserved0;
    void*                               reserved1;
};
</programlisting>
<para>
The key data store. Key data store holds common key data specific information
required for key data processing. For example, X509 data store may hold
information about trusted (root) certificates.</para>
<para>
</para><variablelist role="struct">
<varlistentry>
<term><link linkend="xmlSecKeyDataStoreId">xmlSecKeyDataStoreId</link>&#160;<structfield>id</structfield>;</term>
<listitem><simpara>                 the store id (<link linkend="xmlSecKeyDataStoreId"><type>xmlSecKeyDataStoreId</type></link>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="void">void</link>&#160;*<structfield>reserved0</structfield>;</term>
<listitem><simpara>          reserved for the future.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="void">void</link>&#160;*<structfield>reserved1</structfield>;</term>
<listitem><simpara>          reserved for the future.
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataStoreCreate" role="function">
<title>xmlSecKeyDataStoreCreate ()</title>
<indexterm zone="xmlSecKeyDataStoreCreate"><primary sortas="xmlSecKeyDataStoreCreate">xmlSecKeyDataStoreCreate</primary></indexterm><programlisting><link linkend="xmlSecKeyDataStore">xmlSecKeyDataStorePtr</link>  xmlSecKeyDataStoreCreate         (<link linkend="xmlSecKeyDataStoreId">xmlSecKeyDataStoreId</link> id);</programlisting>
<para>
Creates new key data store of the specified klass <parameter>id</parameter>. Caller is responsible
for freeing returned object with <link linkend="xmlSecKeyDataStoreDestroy"><type>xmlSecKeyDataStoreDestroy</type></link> function.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>id</parameter>&#160;:</term>
<listitem><simpara>                 the store id.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> the pointer to newly allocated key data store structure
or NULL if an error occurs.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataStoreDestroy" role="function">
<title>xmlSecKeyDataStoreDestroy ()</title>
<indexterm zone="xmlSecKeyDataStoreDestroy"><primary sortas="xmlSecKeyDataStoreDestroy">xmlSecKeyDataStoreDestroy</primary></indexterm><programlisting><link linkend="void">void</link>                xmlSecKeyDataStoreDestroy           (<link linkend="xmlSecKeyDataStore">xmlSecKeyDataStorePtr</link> store);</programlisting>
<para>
Destroys the key data store created with <link linkend="xmlSecKeyDataStoreCreate"><type>xmlSecKeyDataStoreCreate</type></link>
function.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>store</parameter>&#160;:</term>
<listitem><simpara>              the pointer to the key data store..
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataStoreGetName" role="macro">
<title>xmlSecKeyDataStoreGetName()</title>
<indexterm zone="xmlSecKeyDataStoreGetName"><primary sortas="xmlSecKeyDataStoreGetName">xmlSecKeyDataStoreGetName</primary></indexterm><programlisting>#define             xmlSecKeyDataStoreGetName(store)</programlisting>
<para>
Macro. Returns key data store name.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>store</parameter>&#160;:</term>
<listitem><simpara>              the pointer to store.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataStoreIsValid" role="macro">
<title>xmlSecKeyDataStoreIsValid()</title>
<indexterm zone="xmlSecKeyDataStoreIsValid"><primary sortas="xmlSecKeyDataStoreIsValid">xmlSecKeyDataStoreIsValid</primary></indexterm><programlisting>#define             xmlSecKeyDataStoreIsValid(store)</programlisting>
<para>
Macro. Returns 1 if <parameter>store</parameter> is not NULL and <parameter>store</parameter>-&gt;id is not NULL
or 0 otherwise.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>store</parameter>&#160;:</term>
<listitem><simpara>              the pointer to store.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataStoreCheckId" role="macro">
<title>xmlSecKeyDataStoreCheckId()</title>
<indexterm zone="xmlSecKeyDataStoreCheckId"><primary sortas="xmlSecKeyDataStoreCheckId">xmlSecKeyDataStoreCheckId</primary></indexterm><programlisting>#define             xmlSecKeyDataStoreCheckId(store, storeId)</programlisting>
<para>
Macro. Returns 1 if <parameter>store</parameter> is valid and <parameter>store</parameter>'s id is equal to <parameter>storeId</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>store</parameter>&#160;:</term>
<listitem><simpara>              the pointer to store.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>storeId</parameter>&#160;:</term>
<listitem><simpara>            the store Id.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataStoreCheckSize" role="macro">
<title>xmlSecKeyDataStoreCheckSize()</title>
<indexterm zone="xmlSecKeyDataStoreCheckSize"><primary sortas="xmlSecKeyDataStoreCheckSize">xmlSecKeyDataStoreCheckSize</primary></indexterm><programlisting>#define             xmlSecKeyDataStoreCheckSize(store, size)</programlisting>
<para>
Macro. Returns 1 if <parameter>data</parameter> is valid and <parameter>stores</parameter>'s object has at least <parameter>size</parameter> bytes.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>store</parameter>&#160;:</term>
<listitem><simpara>              the pointer to store.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>size</parameter>&#160;:</term>
<listitem><simpara>               the expected size.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataStoreIdUnknown" role="macro">
<title>xmlSecKeyDataStoreIdUnknown</title>
<indexterm zone="xmlSecKeyDataStoreIdUnknown"><primary sortas="xmlSecKeyDataStoreIdUnknown">xmlSecKeyDataStoreIdUnknown</primary></indexterm><programlisting>#define xmlSecKeyDataStoreIdUnknown                     NULL
</programlisting>
<para>
The "unknown" id.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecKeyDataStoreInitializeMethod" role="function">
<title>xmlSecKeyDataStoreInitializeMethod ()</title>
<indexterm zone="xmlSecKeyDataStoreInitializeMethod"><primary sortas="xmlSecKeyDataStoreInitializeMethod">xmlSecKeyDataStoreInitializeMethod</primary></indexterm><programlisting><link linkend="int">int</link>                 (*xmlSecKeyDataStoreInitializeMethod)
                                                        (<link linkend="xmlSecKeyDataStore">xmlSecKeyDataStorePtr</link> store);</programlisting>
<para>
Key data store specific initialization method.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>store</parameter>&#160;:</term>
<listitem><simpara>              the data store.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> 0 on success or a negative value if an error occurs.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataStoreFinalizeMethod" role="function">
<title>xmlSecKeyDataStoreFinalizeMethod ()</title>
<indexterm zone="xmlSecKeyDataStoreFinalizeMethod"><primary sortas="xmlSecKeyDataStoreFinalizeMethod">xmlSecKeyDataStoreFinalizeMethod</primary></indexterm><programlisting><link linkend="void">void</link>                (*xmlSecKeyDataStoreFinalizeMethod) (<link linkend="xmlSecKeyDataStore">xmlSecKeyDataStorePtr</link> store);</programlisting>
<para>
Key data store specific finalization (destroy) method.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>store</parameter>&#160;:</term>
<listitem><simpara>              the data store.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataStoreKlass" role="struct">
<title>struct xmlSecKeyDataStoreKlass</title>
<indexterm zone="xmlSecKeyDataStoreKlass"><primary sortas="xmlSecKeyDataStoreKlass">xmlSecKeyDataStoreKlass</primary></indexterm><programlisting>struct xmlSecKeyDataStoreKlass {
    xmlSecSize                          klassSize;
    xmlSecSize                          objSize;

    /* data */
    const xmlChar*                      name;

    /* constructors/destructor */
    xmlSecKeyDataStoreInitializeMethod  initialize;
    xmlSecKeyDataStoreFinalizeMethod    finalize;

    /* for the future */
    void*                               reserved0;
    void*                               reserved1;
};
</programlisting>
<para>
The data store id (klass).</para>
<para>
</para><variablelist role="struct">
<varlistentry>
<term><link linkend="xmlSecSize">xmlSecSize</link>&#160;<structfield>klassSize</structfield>;</term>
<listitem><simpara>          the data store klass size.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecSize">xmlSecSize</link>&#160;<structfield>objSize</structfield>;</term>
<listitem><simpara>            the data store obj size.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term>const&#160;<link linkend="xmlChar">xmlChar</link>&#160;*<structfield>name</structfield>;</term>
<listitem><simpara>               the store's name.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecKeyDataStoreInitializeMethod">xmlSecKeyDataStoreInitializeMethod</link>&#160;<structfield>initialize</structfield>;</term>
<listitem><simpara>         the store's initialization method.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecKeyDataStoreFinalizeMethod">xmlSecKeyDataStoreFinalizeMethod</link>&#160;<structfield>finalize</structfield>;</term>
<listitem><simpara>           the store's finalization (destroy) method.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="void">void</link>&#160;*<structfield>reserved0</structfield>;</term>
<listitem><simpara>          reserved for the future.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="void">void</link>&#160;*<structfield>reserved1</structfield>;</term>
<listitem><simpara>          reserved for the future.
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataStoreKlassGetName" role="macro">
<title>xmlSecKeyDataStoreKlassGetName()</title>
<indexterm zone="xmlSecKeyDataStoreKlassGetName"><primary sortas="xmlSecKeyDataStoreKlassGetName">xmlSecKeyDataStoreKlassGetName</primary></indexterm><programlisting>#define             xmlSecKeyDataStoreKlassGetName(klass)</programlisting>
<para>
Macro. Returns store klass name.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>klass</parameter>&#160;:</term>
<listitem><simpara>              the pointer to store klass.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecKeyDataStorePtrListId" role="macro">
<title>xmlSecKeyDataStorePtrListId</title>
<indexterm zone="xmlSecKeyDataStorePtrListId"><primary sortas="xmlSecKeyDataStorePtrListId">xmlSecKeyDataStorePtrListId</primary></indexterm><programlisting>#define xmlSecKeyDataStorePtrListId     xmlSecKeyDataStorePtrListGetKlass()
</programlisting>
<para>
The data store list id (klass).</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecKeyDataStorePtrListGetKlass" role="function">
<title>xmlSecKeyDataStorePtrListGetKlass ()</title>
<indexterm zone="xmlSecKeyDataStorePtrListGetKlass"><primary sortas="xmlSecKeyDataStorePtrListGetKlass">xmlSecKeyDataStorePtrListGetKlass</primary></indexterm><programlisting><link linkend="xmlSecPtrListId">xmlSecPtrListId</link>     xmlSecKeyDataStorePtrListGetKlass   (void);</programlisting>
<para>
Key data stores list.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> key data stores list klass.
</simpara></listitem></varlistentry>
</variablelist></refsect2>

</refsect1>




</refentry>
