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

<refnamediv>
<refname>transforms</refname>
<refpurpose>Transform object definition.</refpurpose>
</refnamediv>

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

<synopsis>
#define             <link linkend="XMLSEC-TRANSFORM-BINARY-CHUNK--CAPS">XMLSEC_TRANSFORM_BINARY_CHUNK</link>
<link linkend="xmlSecPtrList">xmlSecPtrListPtr</link>    <link linkend="xmlSecTransformIdsGet">xmlSecTransformIdsGet</link>               (void);
<link linkend="int">int</link>                 <link linkend="xmlSecTransformIdsInit">xmlSecTransformIdsInit</link>              (void);
<link linkend="void">void</link>                <link linkend="xmlSecTransformIdsShutdown">xmlSecTransformIdsShutdown</link>          (void);
<link linkend="int">int</link>                 <link linkend="xmlSecTransformIdsRegisterDefault">xmlSecTransformIdsRegisterDefault</link>   (void);
<link linkend="int">int</link>                 <link linkend="xmlSecTransformIdsRegister">xmlSecTransformIdsRegister</link>          (<link linkend="xmlSecTransformId">xmlSecTransformId</link> id);
enum                <link linkend="xmlSecTransformStatus">xmlSecTransformStatus</link>;
enum                <link linkend="xmlSecTransformMode">xmlSecTransformMode</link>;
enum                <link linkend="xmlSecTransformOperation">xmlSecTransformOperation</link>;
typedef             <link linkend="xmlSecTransformUriType">xmlSecTransformUriType</link>;
#define             <link linkend="xmlSecTransformUriTypeNone">xmlSecTransformUriTypeNone</link>
#define             <link linkend="xmlSecTransformUriTypeEmpty">xmlSecTransformUriTypeEmpty</link>
#define             <link linkend="xmlSecTransformUriTypeSameDocument">xmlSecTransformUriTypeSameDocument</link>
#define             <link linkend="xmlSecTransformUriTypeLocal">xmlSecTransformUriTypeLocal</link>
#define             <link linkend="xmlSecTransformUriTypeRemote">xmlSecTransformUriTypeRemote</link>
#define             <link linkend="xmlSecTransformUriTypeAny">xmlSecTransformUriTypeAny</link>
<link linkend="int">int</link>                 <link linkend="xmlSecTransformUriTypeCheck">xmlSecTransformUriTypeCheck</link>         (<link linkend="xmlSecTransformUriType">xmlSecTransformUriType</link> type,
                                                         const <link linkend="xmlChar">xmlChar</link> *uri);
typedef             <link linkend="xmlSecTransformDataType">xmlSecTransformDataType</link>;
#define             <link linkend="xmlSecTransformDataTypeUnknown">xmlSecTransformDataTypeUnknown</link>
#define             <link linkend="xmlSecTransformDataTypeBin">xmlSecTransformDataTypeBin</link>
#define             <link linkend="xmlSecTransformDataTypeXml">xmlSecTransformDataTypeXml</link>
typedef             <link linkend="xmlSecTransformUsage">xmlSecTransformUsage</link>;
#define             <link linkend="xmlSecTransformUsageUnknown">xmlSecTransformUsageUnknown</link>
#define             <link linkend="xmlSecTransformUsageDSigTransform">xmlSecTransformUsageDSigTransform</link>
#define             <link linkend="xmlSecTransformUsageC14NMethod">xmlSecTransformUsageC14NMethod</link>
#define             <link linkend="xmlSecTransformUsageDigestMethod">xmlSecTransformUsageDigestMethod</link>
#define             <link linkend="xmlSecTransformUsageSignatureMethod">xmlSecTransformUsageSignatureMethod</link>
#define             <link linkend="xmlSecTransformUsageEncryptionMethod">xmlSecTransformUsageEncryptionMethod</link>
#define             <link linkend="xmlSecTransformUsageAny">xmlSecTransformUsageAny</link>
<link linkend="int">int</link>                 (<link linkend="xmlSecTransformCtxPreExecuteCallback">*xmlSecTransformCtxPreExecuteCallback</link>)
                                                        (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);
#define             <link linkend="XMLSEC-TRANSFORMCTX-FLAGS-USE-VISA3D-HACK--CAPS">XMLSEC_TRANSFORMCTX_FLAGS_USE_VISA3D_HACK</link>
struct              <link linkend="xmlSecTransformCtx">xmlSecTransformCtx</link>;
<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link>  <link linkend="xmlSecTransformCtxCreate">xmlSecTransformCtxCreate</link>         (void);
<link linkend="void">void</link>                <link linkend="xmlSecTransformCtxDestroy">xmlSecTransformCtxDestroy</link>           (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx);
<link linkend="int">int</link>                 <link linkend="xmlSecTransformCtxInitialize">xmlSecTransformCtxInitialize</link>        (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx);
<link linkend="void">void</link>                <link linkend="xmlSecTransformCtxFinalize">xmlSecTransformCtxFinalize</link>          (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx);
<link linkend="void">void</link>                <link linkend="xmlSecTransformCtxReset">xmlSecTransformCtxReset</link>             (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx);
<link linkend="int">int</link>                 <link linkend="xmlSecTransformCtxCopyUserPref">xmlSecTransformCtxCopyUserPref</link>      (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> dst,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> src);
<link linkend="int">int</link>                 <link linkend="xmlSecTransformCtxSetUri">xmlSecTransformCtxSetUri</link>            (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx,
                                                         const <link linkend="xmlChar">xmlChar</link> *uri,
                                                         <link linkend="xmlNode">xmlNodePtr</link> hereNode);
<link linkend="int">int</link>                 <link linkend="xmlSecTransformCtxAppend">xmlSecTransformCtxAppend</link>            (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx,
                                                         <link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform);
<link linkend="int">int</link>                 <link linkend="xmlSecTransformCtxPrepend">xmlSecTransformCtxPrepend</link>           (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx,
                                                         <link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform);
<link linkend="xmlSecTransformPtr">xmlSecTransformPtr</link>  <link linkend="xmlSecTransformCtxCreateAndAppend">xmlSecTransformCtxCreateAndAppend</link>   (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx,
                                                         <link linkend="xmlSecTransformId">xmlSecTransformId</link> id);
<link linkend="xmlSecTransformPtr">xmlSecTransformPtr</link>  <link linkend="xmlSecTransformCtxCreateAndPrepend">xmlSecTransformCtxCreateAndPrepend</link>  (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx,
                                                         <link linkend="xmlSecTransformId">xmlSecTransformId</link> id);
<link linkend="xmlSecTransformPtr">xmlSecTransformPtr</link>  <link linkend="xmlSecTransformCtxNodeRead">xmlSecTransformCtxNodeRead</link>          (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx,
                                                         <link linkend="xmlNode">xmlNodePtr</link> node,
                                                         <link linkend="xmlSecTransformUsage">xmlSecTransformUsage</link> usage);
<link linkend="int">int</link>                 <link linkend="xmlSecTransformCtxNodesListRead">xmlSecTransformCtxNodesListRead</link>     (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx,
                                                         <link linkend="xmlNode">xmlNodePtr</link> node,
                                                         <link linkend="xmlSecTransformUsage">xmlSecTransformUsage</link> usage);
<link linkend="int">int</link>                 <link linkend="xmlSecTransformCtxPrepare">xmlSecTransformCtxPrepare</link>           (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx,
                                                         <link linkend="xmlSecTransformDataType">xmlSecTransformDataType</link> inputDataType);
<link linkend="int">int</link>                 <link linkend="xmlSecTransformCtxBinaryExecute">xmlSecTransformCtxBinaryExecute</link>     (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx,
                                                         const <link linkend="xmlSecByte">xmlSecByte</link> *data,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> dataSize);
<link linkend="int">int</link>                 <link linkend="xmlSecTransformCtxUriExecute">xmlSecTransformCtxUriExecute</link>        (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx,
                                                         const <link linkend="xmlChar">xmlChar</link> *uri);
<link linkend="int">int</link>                 <link linkend="xmlSecTransformCtxXmlExecute">xmlSecTransformCtxXmlExecute</link>        (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx,
                                                         <link linkend="xmlSecNodeSet">xmlSecNodeSetPtr</link> nodes);
<link linkend="int">int</link>                 <link linkend="xmlSecTransformCtxExecute">xmlSecTransformCtxExecute</link>           (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx,
                                                         <link linkend="xmlDoc">xmlDocPtr</link> doc);
<link linkend="void">void</link>                <link linkend="xmlSecTransformCtxDebugDump">xmlSecTransformCtxDebugDump</link>         (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx,
                                                         <link linkend="FILE--CAPS">FILE</link> *output);
<link linkend="void">void</link>                <link linkend="xmlSecTransformCtxDebugXmlDump">xmlSecTransformCtxDebugXmlDump</link>      (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx,
                                                         <link linkend="FILE--CAPS">FILE</link> *output);
struct              <link linkend="xmlSecTransform">xmlSecTransform</link>;
<link linkend="xmlSecTransform">xmlSecTransformPtr</link>  <link linkend="xmlSecTransformCreate">xmlSecTransformCreate</link>               (<link linkend="xmlSecTransformId">xmlSecTransformId</link> id);
<link linkend="void">void</link>                <link linkend="xmlSecTransformDestroy">xmlSecTransformDestroy</link>              (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform);
<link linkend="xmlSecTransformPtr">xmlSecTransformPtr</link>  <link linkend="xmlSecTransformNodeRead">xmlSecTransformNodeRead</link>             (<link linkend="xmlNode">xmlNodePtr</link> node,
                                                         <link linkend="xmlSecTransformUsage">xmlSecTransformUsage</link> usage,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);
<link linkend="int">int</link>                 <link linkend="xmlSecTransformPump">xmlSecTransformPump</link>                 (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> left,
                                                         <link linkend="xmlSecTransform">xmlSecTransformPtr</link> right,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);
<link linkend="int">int</link>                 <link linkend="xmlSecTransformSetKey">xmlSecTransformSetKey</link>               (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecKey">xmlSecKeyPtr</link> key);
<link linkend="int">int</link>                 <link linkend="xmlSecTransformSetKeyReq">xmlSecTransformSetKeyReq</link>            (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecKeyReq">xmlSecKeyReqPtr</link> keyReq);
<link linkend="int">int</link>                 <link linkend="xmlSecTransformVerify">xmlSecTransformVerify</link>               (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         const <link linkend="xmlSecByte">xmlSecByte</link> *data,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> dataSize,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);
<link linkend="int">int</link>                 <link linkend="xmlSecTransformVerifyNodeContent">xmlSecTransformVerifyNodeContent</link>    (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlNode">xmlNodePtr</link> node,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);
<link linkend="xmlSecTransformDataType">xmlSecTransformDataType</link>  <link linkend="xmlSecTransformGetDataType">xmlSecTransformGetDataType</link>     (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecTransformMode">xmlSecTransformMode</link> mode,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);
<link linkend="int">int</link>                 <link linkend="xmlSecTransformPushBin">xmlSecTransformPushBin</link>              (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         const <link linkend="xmlSecByte">xmlSecByte</link> *data,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> dataSize,
                                                         <link linkend="int">int</link> final,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);
<link linkend="int">int</link>                 <link linkend="xmlSecTransformPopBin">xmlSecTransformPopBin</link>               (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecByte">xmlSecByte</link> *data,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> maxDataSize,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> *dataSize,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);
<link linkend="int">int</link>                 <link linkend="xmlSecTransformPushXml">xmlSecTransformPushXml</link>              (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecNodeSet">xmlSecNodeSetPtr</link> nodes,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);
<link linkend="int">int</link>                 <link linkend="xmlSecTransformPopXml">xmlSecTransformPopXml</link>               (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecNodeSet">xmlSecNodeSetPtr</link> *nodes,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);
<link linkend="int">int</link>                 <link linkend="xmlSecTransformExecute">xmlSecTransformExecute</link>              (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="int">int</link> last,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);
<link linkend="void">void</link>                <link linkend="xmlSecTransformDebugDump">xmlSecTransformDebugDump</link>            (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="FILE--CAPS">FILE</link> *output);
<link linkend="void">void</link>                <link linkend="xmlSecTransformDebugXmlDump">xmlSecTransformDebugXmlDump</link>         (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="FILE--CAPS">FILE</link> *output);
#define             <link linkend="xmlSecTransformGetName">xmlSecTransformGetName</link>              (transform)
#define             <link linkend="xmlSecTransformIsValid">xmlSecTransformIsValid</link>              (transform)
#define             <link linkend="xmlSecTransformCheckId">xmlSecTransformCheckId</link>              (transform, i)
#define             <link linkend="xmlSecTransformCheckSize">xmlSecTransformCheckSize</link>            (transform, size)
<link linkend="int">int</link>                 <link linkend="xmlSecTransformConnect">xmlSecTransformConnect</link>              (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> left,
                                                         <link linkend="xmlSecTransform">xmlSecTransformPtr</link> right,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);
<link linkend="void">void</link>                <link linkend="xmlSecTransformRemove">xmlSecTransformRemove</link>               (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform);
<link linkend="xmlSecTransformDataType">xmlSecTransformDataType</link>  <link linkend="xmlSecTransformDefaultGetDataType">xmlSecTransformDefaultGetDataType</link>
                                                        (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecTransformMode">xmlSecTransformMode</link> mode,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);
<link linkend="int">int</link>                 <link linkend="xmlSecTransformDefaultPushBin">xmlSecTransformDefaultPushBin</link>       (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         const <link linkend="xmlSecByte">xmlSecByte</link> *data,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> dataSize,
                                                         <link linkend="int">int</link> final,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);
<link linkend="int">int</link>                 <link linkend="xmlSecTransformDefaultPopBin">xmlSecTransformDefaultPopBin</link>        (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecByte">xmlSecByte</link> *data,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> maxDataSize,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> *dataSize,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);
<link linkend="int">int</link>                 <link linkend="xmlSecTransformDefaultPushXml">xmlSecTransformDefaultPushXml</link>       (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecNodeSet">xmlSecNodeSetPtr</link> nodes,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);
<link linkend="int">int</link>                 <link linkend="xmlSecTransformDefaultPopXml">xmlSecTransformDefaultPopXml</link>        (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecNodeSet">xmlSecNodeSetPtr</link> *nodes,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);
<link linkend="xmlOutputBufferPtr">xmlOutputBufferPtr</link>  <link linkend="xmlSecTransformCreateOutputBuffer">xmlSecTransformCreateOutputBuffer</link>   (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);
<link linkend="xmlParserInputBuffer">xmlParserInputBufferPtr</link>  <link linkend="xmlSecTransformCreateInputBuffer">xmlSecTransformCreateInputBuffer</link>
                                                        (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);
<link linkend="int">int</link>                 (<link linkend="xmlSecTransformInitializeMethod">*xmlSecTransformInitializeMethod</link>)  (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform);
<link linkend="void">void</link>                (<link linkend="xmlSecTransformFinalizeMethod">*xmlSecTransformFinalizeMethod</link>)    (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform);
<link linkend="xmlSecTransformDataType">xmlSecTransformDataType</link>  (<link linkend="xmlSecTransformGetDataTypeMethod">*xmlSecTransformGetDataTypeMethod</link>)
                                                        (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecTransformMode">xmlSecTransformMode</link> mode,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);
<link linkend="int">int</link>                 (<link linkend="xmlSecTransformNodeReadMethod">*xmlSecTransformNodeReadMethod</link>)    (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlNode">xmlNodePtr</link> node,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);
<link linkend="int">int</link>                 (<link linkend="xmlSecTransformNodeWriteMethod">*xmlSecTransformNodeWriteMethod</link>)   (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlNode">xmlNodePtr</link> node,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);
<link linkend="int">int</link>                 (<link linkend="xmlSecTransformSetKeyRequirementsMethod">*xmlSecTransformSetKeyRequirementsMethod</link>)
                                                        (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecKeyReq">xmlSecKeyReqPtr</link> keyReq);
<link linkend="int">int</link>                 (<link linkend="xmlSecTransformSetKeyMethod">*xmlSecTransformSetKeyMethod</link>)      (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecKey">xmlSecKeyPtr</link> key);
<link linkend="int">int</link>                 (<link linkend="xmlSecTransformVerifyMethod">*xmlSecTransformVerifyMethod</link>)      (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         const <link linkend="xmlSecByte">xmlSecByte</link> *data,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> dataSize,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);
<link linkend="int">int</link>                 (<link linkend="xmlSecTransformPushBinMethod">*xmlSecTransformPushBinMethod</link>)     (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         const <link linkend="xmlSecByte">xmlSecByte</link> *data,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> dataSize,
                                                         <link linkend="int">int</link> final,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);
<link linkend="int">int</link>                 (<link linkend="xmlSecTransformPopBinMethod">*xmlSecTransformPopBinMethod</link>)      (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecByte">xmlSecByte</link> *data,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> maxDataSize,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> *dataSize,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);
<link linkend="int">int</link>                 (<link linkend="xmlSecTransformPushXmlMethod">*xmlSecTransformPushXmlMethod</link>)     (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecNodeSet">xmlSecNodeSetPtr</link> nodes,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);
<link linkend="int">int</link>                 (<link linkend="xmlSecTransformPopXmlMethod">*xmlSecTransformPopXmlMethod</link>)      (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecNodeSet">xmlSecNodeSetPtr</link> *nodes,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);
<link linkend="int">int</link>                 (<link linkend="xmlSecTransformExecuteMethod">*xmlSecTransformExecuteMethod</link>)     (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="int">int</link> last,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);
struct              <link linkend="xmlSecTransformKlass">xmlSecTransformKlass</link>;
#define             <link linkend="xmlSecTransformKlassGetName">xmlSecTransformKlassGetName</link>         (klass)
#define             <link linkend="xmlSecTransformIdListId">xmlSecTransformIdListId</link>
<link linkend="xmlSecPtrListId">xmlSecPtrListId</link>     <link linkend="xmlSecTransformIdListGetKlass">xmlSecTransformIdListGetKlass</link>       (void);
<link linkend="int">int</link>                 <link linkend="xmlSecTransformIdListFind">xmlSecTransformIdListFind</link>           (<link linkend="xmlSecPtrList">xmlSecPtrListPtr</link> list,
                                                         <link linkend="xmlSecTransformId">xmlSecTransformId</link> transformId);
<link linkend="xmlSecTransformId">xmlSecTransformId</link>   <link linkend="xmlSecTransformIdListFindByHref">xmlSecTransformIdListFindByHref</link>     (<link linkend="xmlSecPtrList">xmlSecPtrListPtr</link> list,
                                                         const <link linkend="xmlChar">xmlChar</link> *href,
                                                         <link linkend="xmlSecTransformUsage">xmlSecTransformUsage</link> usage);
<link linkend="xmlSecTransformId">xmlSecTransformId</link>   <link linkend="xmlSecTransformIdListFindByName">xmlSecTransformIdListFindByName</link>     (<link linkend="xmlSecPtrList">xmlSecPtrListPtr</link> list,
                                                         const <link linkend="xmlChar">xmlChar</link> *name,
                                                         <link linkend="xmlSecTransformUsage">xmlSecTransformUsage</link> usage);
<link linkend="void">void</link>                <link linkend="xmlSecTransformIdListDebugDump">xmlSecTransformIdListDebugDump</link>      (<link linkend="xmlSecPtrList">xmlSecPtrListPtr</link> list,
                                                         <link linkend="FILE--CAPS">FILE</link> *output);
<link linkend="void">void</link>                <link linkend="xmlSecTransformIdListDebugXmlDump">xmlSecTransformIdListDebugXmlDump</link>   (<link linkend="xmlSecPtrList">xmlSecPtrListPtr</link> list,
                                                         <link linkend="FILE--CAPS">FILE</link> *output);
#define             <link linkend="xmlSecTransformIdUnknown">xmlSecTransformIdUnknown</link>
#define             <link linkend="xmlSecTransformBase64Id">xmlSecTransformBase64Id</link>
<link linkend="xmlSecTransformId">xmlSecTransformId</link>   <link linkend="xmlSecTransformBase64GetKlass">xmlSecTransformBase64GetKlass</link>       (void);
<link linkend="void">void</link>                <link linkend="xmlSecTransformBase64SetLineSize">xmlSecTransformBase64SetLineSize</link>    (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> lineSize);
#define             <link linkend="xmlSecTransformInclC14NId">xmlSecTransformInclC14NId</link>
<link linkend="xmlSecTransformId">xmlSecTransformId</link>   <link linkend="xmlSecTransformInclC14NGetKlass">xmlSecTransformInclC14NGetKlass</link>     (void);
#define             <link linkend="xmlSecTransformInclC14NWithCommentsId">xmlSecTransformInclC14NWithCommentsId</link>
<link linkend="xmlSecTransformId">xmlSecTransformId</link>   <link linkend="xmlSecTransformInclC14NWithCommentsGetKlass">xmlSecTransformInclC14NWithCommentsGetKlass</link>
                                                        (void);
#define             <link linkend="xmlSecTransformInclC14N11Id">xmlSecTransformInclC14N11Id</link>
<link linkend="xmlSecTransformId">xmlSecTransformId</link>   <link linkend="xmlSecTransformInclC14N11GetKlass">xmlSecTransformInclC14N11GetKlass</link>   (void);
#define             <link linkend="xmlSecTransformInclC14N11WithCommentsId">xmlSecTransformInclC14N11WithCommentsId</link>
<link linkend="xmlSecTransformId">xmlSecTransformId</link>   <link linkend="xmlSecTransformInclC14N11WithCommentsGetKlass">xmlSecTransformInclC14N11WithCommentsGetKlass</link>
                                                        (void);
#define             <link linkend="xmlSecTransformExclC14NId">xmlSecTransformExclC14NId</link>
<link linkend="xmlSecTransformId">xmlSecTransformId</link>   <link linkend="xmlSecTransformExclC14NGetKlass">xmlSecTransformExclC14NGetKlass</link>     (void);
#define             <link linkend="xmlSecTransformExclC14NWithCommentsId">xmlSecTransformExclC14NWithCommentsId</link>
<link linkend="xmlSecTransformId">xmlSecTransformId</link>   <link linkend="xmlSecTransformExclC14NWithCommentsGetKlass">xmlSecTransformExclC14NWithCommentsGetKlass</link>
                                                        (void);
#define             <link linkend="xmlSecTransformEnvelopedId">xmlSecTransformEnvelopedId</link>
<link linkend="xmlSecTransformId">xmlSecTransformId</link>   <link linkend="xmlSecTransformEnvelopedGetKlass">xmlSecTransformEnvelopedGetKlass</link>    (void);
#define             <link linkend="xmlSecTransformXPathId">xmlSecTransformXPathId</link>
<link linkend="xmlSecTransformId">xmlSecTransformId</link>   <link linkend="xmlSecTransformXPathGetKlass">xmlSecTransformXPathGetKlass</link>        (void);
#define             <link linkend="xmlSecTransformXPath2Id">xmlSecTransformXPath2Id</link>
<link linkend="xmlSecTransformId">xmlSecTransformId</link>   <link linkend="xmlSecTransformXPath2GetKlass">xmlSecTransformXPath2GetKlass</link>       (void);
#define             <link linkend="xmlSecTransformXPointerId">xmlSecTransformXPointerId</link>
<link linkend="xmlSecTransformId">xmlSecTransformId</link>   <link linkend="xmlSecTransformXPointerGetKlass">xmlSecTransformXPointerGetKlass</link>     (void);
<link linkend="int">int</link>                 <link linkend="xmlSecTransformXPointerSetExpr">xmlSecTransformXPointerSetExpr</link>      (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         const <link linkend="xmlChar">xmlChar</link> *expr,
                                                         <link linkend="xmlSecNodeSetType">xmlSecNodeSetType</link> nodeSetType,
                                                         <link linkend="xmlNode">xmlNodePtr</link> hereNode);
#define             <link linkend="xmlSecTransformXsltId">xmlSecTransformXsltId</link>
<link linkend="xmlSecTransformId">xmlSecTransformId</link>   <link linkend="xmlSecTransformXsltGetKlass">xmlSecTransformXsltGetKlass</link>         (void);
<link linkend="void">void</link>                <link linkend="xmlSecTransformXsltSetDefaultSecurityPrefs">xmlSecTransformXsltSetDefaultSecurityPrefs</link>
                                                        (<link linkend="xsltSecurityPrefs">xsltSecurityPrefsPtr</link> sec);
#define             <link linkend="xmlSecTransformRemoveXmlTagsC14NId">xmlSecTransformRemoveXmlTagsC14NId</link>
<link linkend="xmlSecTransformId">xmlSecTransformId</link>   <link linkend="xmlSecTransformRemoveXmlTagsC14NGetKlass">xmlSecTransformRemoveXmlTagsC14NGetKlass</link>
                                                        (void);
#define             <link linkend="xmlSecTransformVisa3DHackId">xmlSecTransformVisa3DHackId</link>
<link linkend="xmlSecTransformId">xmlSecTransformId</link>   <link linkend="xmlSecTransformVisa3DHackGetKlass">xmlSecTransformVisa3DHackGetKlass</link>   (void);
<link linkend="int">int</link>                 <link linkend="xmlSecTransformVisa3DHackSetID">xmlSecTransformVisa3DHackSetID</link>      (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         const <link linkend="xmlChar">xmlChar</link> *id);
</synopsis>
</refsynopsisdiv>









<refsect1 id="xmlsec-transforms.description" role="desc">
<title role="desc.title">Description</title>
<para>
Transform object definition.
</para>
</refsect1>

<refsect1 id="xmlsec-transforms.details" role="details">
<title role="details.title">Details</title>
<refsect2 id="XMLSEC-TRANSFORM-BINARY-CHUNK--CAPS" role="macro">
<title>XMLSEC_TRANSFORM_BINARY_CHUNK</title>
<indexterm zone="XMLSEC-TRANSFORM-BINARY-CHUNK--CAPS"><primary sortas="XMLSEC_TRANSFORM_BINARY_CHUNK">XMLSEC_TRANSFORM_BINARY_CHUNK</primary></indexterm><programlisting>#define XMLSEC_TRANSFORM_BINARY_CHUNK                   64
</programlisting>
<para>
The binary data chunks size. XMLSec processes binary data one chunk
at a time. Changing this impacts xmlsec memory usage and performance.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformIdsGet" role="function">
<title>xmlSecTransformIdsGet ()</title>
<indexterm zone="xmlSecTransformIdsGet"><primary sortas="xmlSecTransformIdsGet">xmlSecTransformIdsGet</primary></indexterm><programlisting><link linkend="xmlSecPtrList">xmlSecPtrListPtr</link>    xmlSecTransformIdsGet               (void);</programlisting>
<para>
Gets global registered transform klasses list.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> the pointer to list of all registered transform klasses.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformIdsInit" role="function">
<title>xmlSecTransformIdsInit ()</title>
<indexterm zone="xmlSecTransformIdsInit"><primary sortas="xmlSecTransformIdsInit">xmlSecTransformIdsInit</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformIdsInit              (void);</programlisting>
<para>
Initializes the transform 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="xmlSecTransformIdsShutdown" role="function">
<title>xmlSecTransformIdsShutdown ()</title>
<indexterm zone="xmlSecTransformIdsShutdown"><primary sortas="xmlSecTransformIdsShutdown">xmlSecTransformIdsShutdown</primary></indexterm><programlisting><link linkend="void">void</link>                xmlSecTransformIdsShutdown          (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="xmlSecTransformIdsRegisterDefault" role="function">
<title>xmlSecTransformIdsRegisterDefault ()</title>
<indexterm zone="xmlSecTransformIdsRegisterDefault"><primary sortas="xmlSecTransformIdsRegisterDefault">xmlSecTransformIdsRegisterDefault</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformIdsRegisterDefault   (void);</programlisting>
<para>
Registers default (implemented by XML Security Library)
transform klasses: XPath transform, Base64 transform, ...</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="xmlSecTransformIdsRegister" role="function">
<title>xmlSecTransformIdsRegister ()</title>
<indexterm zone="xmlSecTransformIdsRegister"><primary sortas="xmlSecTransformIdsRegister">xmlSecTransformIdsRegister</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformIdsRegister          (<link linkend="xmlSecTransformId">xmlSecTransformId</link> id);</programlisting>
<para>
Registers <parameter>id</parameter> in the global list of transform klasses.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>id</parameter>&#160;:</term>
<listitem><simpara>                 the transform 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="xmlSecTransformStatus" role="enum">
<title>enum xmlSecTransformStatus</title>
<indexterm zone="xmlSecTransformStatus"><primary sortas="xmlSecTransformStatus">xmlSecTransformStatus</primary></indexterm><programlisting>typedef enum  {
    xmlSecTransformStatusNone = 0,
    xmlSecTransformStatusWorking,
    xmlSecTransformStatusFinished,
    xmlSecTransformStatusOk,
    xmlSecTransformStatusFail
} xmlSecTransformStatus;
</programlisting>
<para>
The transform execution status.</para>
<para>
</para><variablelist role="enum">
<varlistentry id="xmlSecTransformStatusNone" role="constant">
<term><literal>xmlSecTransformStatusNone</literal></term>
<listitem><simpara>          the status unknown.
</simpara></listitem>
</varlistentry>
<varlistentry id="xmlSecTransformStatusWorking" role="constant">
<term><literal>xmlSecTransformStatusWorking</literal></term>
<listitem><simpara>       the transform is executed.
</simpara></listitem>
</varlistentry>
<varlistentry id="xmlSecTransformStatusFinished" role="constant">
<term><literal>xmlSecTransformStatusFinished</literal></term>
<listitem><simpara>      the transform finished
</simpara></listitem>
</varlistentry>
<varlistentry id="xmlSecTransformStatusOk" role="constant">
<term><literal>xmlSecTransformStatusOk</literal></term>
<listitem><simpara>            the transform succeeded.
</simpara></listitem>
</varlistentry>
<varlistentry id="xmlSecTransformStatusFail" role="constant">
<term><literal>xmlSecTransformStatusFail</literal></term>
<listitem><simpara>          the transform failed (an error occur).
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformMode" role="enum">
<title>enum xmlSecTransformMode</title>
<indexterm zone="xmlSecTransformMode"><primary sortas="xmlSecTransformMode">xmlSecTransformMode</primary></indexterm><programlisting>typedef enum  {
    xmlSecTransformModeNone = 0,
    xmlSecTransformModePush,
    xmlSecTransformModePop
} xmlSecTransformMode;
</programlisting>
<para>
The transform operation mode</para>
<para>
</para><variablelist role="enum">
<varlistentry id="xmlSecTransformModeNone" role="constant">
<term><literal>xmlSecTransformModeNone</literal></term>
<listitem><simpara>            the mode is unknown.
</simpara></listitem>
</varlistentry>
<varlistentry id="xmlSecTransformModePush" role="constant">
<term><literal>xmlSecTransformModePush</literal></term>
<listitem><simpara>            pushing data thru transform.
</simpara></listitem>
</varlistentry>
<varlistentry id="xmlSecTransformModePop" role="constant">
<term><literal>xmlSecTransformModePop</literal></term>
<listitem><simpara>             popping data from transform.
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformOperation" role="enum">
<title>enum xmlSecTransformOperation</title>
<indexterm zone="xmlSecTransformOperation"><primary sortas="xmlSecTransformOperation">xmlSecTransformOperation</primary></indexterm><programlisting>typedef enum  {
    xmlSecTransformOperationNone = 0,
    xmlSecTransformOperationEncode,
    xmlSecTransformOperationDecode,
    xmlSecTransformOperationSign,
    xmlSecTransformOperationVerify,
    xmlSecTransformOperationEncrypt,
    xmlSecTransformOperationDecrypt
} xmlSecTransformOperation;
</programlisting>
<para>
The transform operation.</para>
<para>
</para><variablelist role="enum">
<varlistentry id="xmlSecTransformOperationNone" role="constant">
<term><literal>xmlSecTransformOperationNone</literal></term>
<listitem><simpara>       the operation is unknown.
</simpara></listitem>
</varlistentry>
<varlistentry id="xmlSecTransformOperationEncode" role="constant">
<term><literal>xmlSecTransformOperationEncode</literal></term>
<listitem><simpara>     the encode operation (for base64 transform).
</simpara></listitem>
</varlistentry>
<varlistentry id="xmlSecTransformOperationDecode" role="constant">
<term><literal>xmlSecTransformOperationDecode</literal></term>
<listitem><simpara>     the decode operation (for base64 transform).
</simpara></listitem>
</varlistentry>
<varlistentry id="xmlSecTransformOperationSign" role="constant">
<term><literal>xmlSecTransformOperationSign</literal></term>
<listitem><simpara>       the sign or digest operation.
</simpara></listitem>
</varlistentry>
<varlistentry id="xmlSecTransformOperationVerify" role="constant">
<term><literal>xmlSecTransformOperationVerify</literal></term>
<listitem><simpara>     the verification of signature or digest operation.
</simpara></listitem>
</varlistentry>
<varlistentry id="xmlSecTransformOperationEncrypt" role="constant">
<term><literal>xmlSecTransformOperationEncrypt</literal></term>
<listitem><simpara>    the encryption operation.
</simpara></listitem>
</varlistentry>
<varlistentry id="xmlSecTransformOperationDecrypt" role="constant">
<term><literal>xmlSecTransformOperationDecrypt</literal></term>
<listitem><simpara>    the decryption operation.
</simpara></listitem>
</varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformUriType" role="typedef">
<title>xmlSecTransformUriType</title>
<indexterm zone="xmlSecTransformUriType"><primary sortas="xmlSecTransformUriType">xmlSecTransformUriType</primary></indexterm><programlisting>typedef unsigned int                            xmlSecTransformUriType;
</programlisting>
<para>
URI transform type bit mask.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformUriTypeNone" role="macro">
<title>xmlSecTransformUriTypeNone</title>
<indexterm zone="xmlSecTransformUriTypeNone"><primary sortas="xmlSecTransformUriTypeNone">xmlSecTransformUriTypeNone</primary></indexterm><programlisting>#define xmlSecTransformUriTypeNone              0x0000
</programlisting>
<para>
The URI type is unknown or not set.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformUriTypeEmpty" role="macro">
<title>xmlSecTransformUriTypeEmpty</title>
<indexterm zone="xmlSecTransformUriTypeEmpty"><primary sortas="xmlSecTransformUriTypeEmpty">xmlSecTransformUriTypeEmpty</primary></indexterm><programlisting>#define xmlSecTransformUriTypeEmpty             0x0001
</programlisting>
<para>
The empty URI ("") type.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformUriTypeSameDocument" role="macro">
<title>xmlSecTransformUriTypeSameDocument</title>
<indexterm zone="xmlSecTransformUriTypeSameDocument"><primary sortas="xmlSecTransformUriTypeSameDocument">xmlSecTransformUriTypeSameDocument</primary></indexterm><programlisting>#define xmlSecTransformUriTypeSameDocument      0x0002
</programlisting>
<para>
The smae document ("#...") but not empty ("") URI type.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformUriTypeLocal" role="macro">
<title>xmlSecTransformUriTypeLocal</title>
<indexterm zone="xmlSecTransformUriTypeLocal"><primary sortas="xmlSecTransformUriTypeLocal">xmlSecTransformUriTypeLocal</primary></indexterm><programlisting>#define xmlSecTransformUriTypeLocal             0x0004
</programlisting>
<para>
The local URI ("file:///....") type.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformUriTypeRemote" role="macro">
<title>xmlSecTransformUriTypeRemote</title>
<indexterm zone="xmlSecTransformUriTypeRemote"><primary sortas="xmlSecTransformUriTypeRemote">xmlSecTransformUriTypeRemote</primary></indexterm><programlisting>#define xmlSecTransformUriTypeRemote            0x0008
</programlisting>
<para>
The remote URI type.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformUriTypeAny" role="macro">
<title>xmlSecTransformUriTypeAny</title>
<indexterm zone="xmlSecTransformUriTypeAny"><primary sortas="xmlSecTransformUriTypeAny">xmlSecTransformUriTypeAny</primary></indexterm><programlisting>#define xmlSecTransformUriTypeAny               0xFFFF
</programlisting>
<para>
Any URI type.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformUriTypeCheck" role="function">
<title>xmlSecTransformUriTypeCheck ()</title>
<indexterm zone="xmlSecTransformUriTypeCheck"><primary sortas="xmlSecTransformUriTypeCheck">xmlSecTransformUriTypeCheck</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformUriTypeCheck         (<link linkend="xmlSecTransformUriType">xmlSecTransformUriType</link> type,
                                                         const <link linkend="xmlChar">xmlChar</link> *uri);</programlisting>
<para>
Checks if <parameter>uri</parameter> matches expected type <parameter>type</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>type</parameter>&#160;:</term>
<listitem><simpara>               the expected URI type.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>uri</parameter>&#160;:</term>
<listitem><simpara>                the uri for checking.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> 1 if <parameter>uri</parameter> matches <parameter>type</parameter>, 0 if not or a negative value
if an error occurs.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformDataType" role="typedef">
<title>xmlSecTransformDataType</title>
<indexterm zone="xmlSecTransformDataType"><primary sortas="xmlSecTransformDataType">xmlSecTransformDataType</primary></indexterm><programlisting>typedef xmlSecByte                              xmlSecTransformDataType;
</programlisting>
<para>
Transform data type bit mask.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformDataTypeUnknown" role="macro">
<title>xmlSecTransformDataTypeUnknown</title>
<indexterm zone="xmlSecTransformDataTypeUnknown"><primary sortas="xmlSecTransformDataTypeUnknown">xmlSecTransformDataTypeUnknown</primary></indexterm><programlisting>#define xmlSecTransformDataTypeUnknown          0x0000
</programlisting>
<para>
The transform data type is unknown or nor data expected.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformDataTypeBin" role="macro">
<title>xmlSecTransformDataTypeBin</title>
<indexterm zone="xmlSecTransformDataTypeBin"><primary sortas="xmlSecTransformDataTypeBin">xmlSecTransformDataTypeBin</primary></indexterm><programlisting>#define xmlSecTransformDataTypeBin              0x0001
</programlisting>
<para>
The binary transform data.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformDataTypeXml" role="macro">
<title>xmlSecTransformDataTypeXml</title>
<indexterm zone="xmlSecTransformDataTypeXml"><primary sortas="xmlSecTransformDataTypeXml">xmlSecTransformDataTypeXml</primary></indexterm><programlisting>#define xmlSecTransformDataTypeXml              0x0002
</programlisting>
<para>
The xml transform data.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformUsage" role="typedef">
<title>xmlSecTransformUsage</title>
<indexterm zone="xmlSecTransformUsage"><primary sortas="xmlSecTransformUsage">xmlSecTransformUsage</primary></indexterm><programlisting>typedef unsigned int                            xmlSecTransformUsage;
</programlisting>
<para>
The transform usage bit mask.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformUsageUnknown" role="macro">
<title>xmlSecTransformUsageUnknown</title>
<indexterm zone="xmlSecTransformUsageUnknown"><primary sortas="xmlSecTransformUsageUnknown">xmlSecTransformUsageUnknown</primary></indexterm><programlisting>#define xmlSecTransformUsageUnknown             0x0000
</programlisting>
<para>
Transforms usage is unknown or undefined.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformUsageDSigTransform" role="macro">
<title>xmlSecTransformUsageDSigTransform</title>
<indexterm zone="xmlSecTransformUsageDSigTransform"><primary sortas="xmlSecTransformUsageDSigTransform">xmlSecTransformUsageDSigTransform</primary></indexterm><programlisting>#define xmlSecTransformUsageDSigTransform       0x0001
</programlisting>
<para>
Transform could be used in &lt;dsig:Transform&gt;.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformUsageC14NMethod" role="macro">
<title>xmlSecTransformUsageC14NMethod</title>
<indexterm zone="xmlSecTransformUsageC14NMethod"><primary sortas="xmlSecTransformUsageC14NMethod">xmlSecTransformUsageC14NMethod</primary></indexterm><programlisting>#define xmlSecTransformUsageC14NMethod          0x0002
</programlisting>
<para>
Transform could be used in &lt;dsig:CanonicalizationMethod&gt;.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformUsageDigestMethod" role="macro">
<title>xmlSecTransformUsageDigestMethod</title>
<indexterm zone="xmlSecTransformUsageDigestMethod"><primary sortas="xmlSecTransformUsageDigestMethod">xmlSecTransformUsageDigestMethod</primary></indexterm><programlisting>#define xmlSecTransformUsageDigestMethod        0x0004
</programlisting>
<para>
Transform could be used in &lt;dsig:DigestMethod&gt;.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformUsageSignatureMethod" role="macro">
<title>xmlSecTransformUsageSignatureMethod</title>
<indexterm zone="xmlSecTransformUsageSignatureMethod"><primary sortas="xmlSecTransformUsageSignatureMethod">xmlSecTransformUsageSignatureMethod</primary></indexterm><programlisting>#define xmlSecTransformUsageSignatureMethod     0x0008
</programlisting>
<para>
Transform could be used in &lt;dsig:SignatureMethod&gt;.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformUsageEncryptionMethod" role="macro">
<title>xmlSecTransformUsageEncryptionMethod</title>
<indexterm zone="xmlSecTransformUsageEncryptionMethod"><primary sortas="xmlSecTransformUsageEncryptionMethod">xmlSecTransformUsageEncryptionMethod</primary></indexterm><programlisting>#define xmlSecTransformUsageEncryptionMethod    0x0010
</programlisting>
<para>
Transform could be used in &lt;enc:EncryptionMethod&gt;.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformUsageAny" role="macro">
<title>xmlSecTransformUsageAny</title>
<indexterm zone="xmlSecTransformUsageAny"><primary sortas="xmlSecTransformUsageAny">xmlSecTransformUsageAny</primary></indexterm><programlisting>#define xmlSecTransformUsageAny                 0xFFFF
</programlisting>
<para>
Transform could be used for operation.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformCtxPreExecuteCallback" role="function">
<title>xmlSecTransformCtxPreExecuteCallback ()</title>
<indexterm zone="xmlSecTransformCtxPreExecuteCallback"><primary sortas="xmlSecTransformCtxPreExecuteCallback">xmlSecTransformCtxPreExecuteCallback</primary></indexterm><programlisting><link linkend="int">int</link>                 (*xmlSecTransformCtxPreExecuteCallback)
                                                        (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);</programlisting>
<para>
The callback called after creating transforms chain but before
starting data processing. Application can use this callback to
do additional transforms chain verification or modification and
aborting transforms execution (if necessary).</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transformCtx</parameter>&#160;:</term>
<listitem><simpara>       the pointer to transform's context.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> 0 on success and a negative value otherwise (in this case,
transforms chain will not be executed and xmlsec processing stops).
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="XMLSEC-TRANSFORMCTX-FLAGS-USE-VISA3D-HACK--CAPS" role="macro">
<title>XMLSEC_TRANSFORMCTX_FLAGS_USE_VISA3D_HACK</title>
<indexterm zone="XMLSEC-TRANSFORMCTX-FLAGS-USE-VISA3D-HACK--CAPS"><primary sortas="XMLSEC_TRANSFORMCTX_FLAGS_USE_VISA3D_HACK">XMLSEC_TRANSFORMCTX_FLAGS_USE_VISA3D_HACK</primary></indexterm><programlisting>#define XMLSEC_TRANSFORMCTX_FLAGS_USE_VISA3D_HACK               0x00000001
</programlisting>
<para>
If this flag is set then URI ID references are resolved directly
without using XPointers. This allows one to sign/verify Visa3D
documents that don't follow XML, XPointer and XML DSig specifications.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformCtx" role="struct">
<title>struct xmlSecTransformCtx</title>
<indexterm zone="xmlSecTransformCtx"><primary sortas="xmlSecTransformCtx">xmlSecTransformCtx</primary></indexterm><programlisting>struct xmlSecTransformCtx {
    /* user settings */
    void*                                       userData;
    unsigned int                                flags;
    unsigned int                                flags2;
    xmlSecTransformUriType                      enabledUris;
    xmlSecPtrList                               enabledTransforms;
    xmlSecTransformCtxPreExecuteCallback        preExecCallback;

    /* results */
    xmlSecBufferPtr                             result;
    xmlSecTransformStatus                       status;
    xmlChar*                                    uri;
    xmlChar*                                    xptrExpr;
    xmlSecTransformPtr                          first;
    xmlSecTransformPtr                          last;

    /* for the future */
    void*                                       reserved0;
    void*                                       reserved1;
};
</programlisting>
<para>
The transform execution context.</para>
<para>
</para><variablelist role="struct">
<varlistentry>
<term><link linkend="void">void</link>&#160;*<structfield>userData</structfield>;</term>
<listitem><simpara>           the pointer to user data (xmlsec and xmlsec-crypto never
                     touch this).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term>unsigned&#160;<link linkend="int">int</link>&#160;<structfield>flags</structfield>;</term>
<listitem><simpara>              the bit mask flags to control transforms execution
                     (reserved for the future).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term>unsigned&#160;<link linkend="int">int</link>&#160;<structfield>flags2</structfield>;</term>
<listitem><simpara>             the bit mask flags to control transforms execution
                     (reserved for the future).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecTransformUriType">xmlSecTransformUriType</link>&#160;<structfield>enabledUris</structfield>;</term>
<listitem><simpara>        the allowed transform data source uri types.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecPtrList">xmlSecPtrList</link>&#160;<structfield>enabledTransforms</structfield>;</term>
<listitem><simpara>  the list of enabled transforms; if list is empty (default)
                     then all registered transforms are enabled.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecTransformCtxPreExecuteCallback">xmlSecTransformCtxPreExecuteCallback</link>&#160;<structfield>preExecCallback</structfield>;</term>
<listitem><simpara>    the callback called after preparing transform chain
                     and right before actual data processing; application
                     can use this callback to change transforms parameters,
                     insert additional transforms in the chain or do
                     additional validation (and abort transform execution
                     if needed).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecBuffer">xmlSecBufferPtr</link>&#160;<structfield>result</structfield>;</term>
<listitem><simpara>             the pointer to transforms result buffer.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecTransformStatus">xmlSecTransformStatus</link>&#160;<structfield>status</structfield>;</term>
<listitem><simpara>             the transforms chain processng status.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlChar">xmlChar</link>&#160;*<structfield>uri</structfield>;</term>
<listitem><simpara>                the data source URI without xpointer expression.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlChar">xmlChar</link>&#160;*<structfield>xptrExpr</structfield>;</term>
<listitem><simpara>           the xpointer expression from data source URI (if any).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecTransform">xmlSecTransformPtr</link>&#160;<structfield>first</structfield>;</term>
<listitem><simpara>              the first transform in the chain.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecTransform">xmlSecTransformPtr</link>&#160;<structfield>last</structfield>;</term>
<listitem><simpara>               the last transform in the chain.
</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="xmlSecTransformCtxCreate" role="function">
<title>xmlSecTransformCtxCreate ()</title>
<indexterm zone="xmlSecTransformCtxCreate"><primary sortas="xmlSecTransformCtxCreate">xmlSecTransformCtxCreate</primary></indexterm><programlisting><link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link>  xmlSecTransformCtxCreate         (void);</programlisting>
<para>
Creates transforms chain processing context.
The caller is responsible for destroying returned object by calling
<link linkend="xmlSecTransformCtxDestroy"><type>xmlSecTransformCtxDestroy</type></link> function.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> pointer to newly allocated context object or NULL if an error
occurs.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformCtxDestroy" role="function">
<title>xmlSecTransformCtxDestroy ()</title>
<indexterm zone="xmlSecTransformCtxDestroy"><primary sortas="xmlSecTransformCtxDestroy">xmlSecTransformCtxDestroy</primary></indexterm><programlisting><link linkend="void">void</link>                xmlSecTransformCtxDestroy           (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx);</programlisting>
<para>
Destroy context object created with <link linkend="xmlSecTransformCtxCreate"><type>xmlSecTransformCtxCreate</type></link> function.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>ctx</parameter>&#160;:</term>
<listitem><simpara>                the pointer to transforms chain processing context.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformCtxInitialize" role="function">
<title>xmlSecTransformCtxInitialize ()</title>
<indexterm zone="xmlSecTransformCtxInitialize"><primary sortas="xmlSecTransformCtxInitialize">xmlSecTransformCtxInitialize</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformCtxInitialize        (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx);</programlisting>
<para>
Initializes transforms chain processing context.
The caller is responsible for cleaning up returned object by calling
<link linkend="xmlSecTransformCtxFinalize"><type>xmlSecTransformCtxFinalize</type></link> function.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>ctx</parameter>&#160;:</term>
<listitem><simpara>                the pointer to transforms chain 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="xmlSecTransformCtxFinalize" role="function">
<title>xmlSecTransformCtxFinalize ()</title>
<indexterm zone="xmlSecTransformCtxFinalize"><primary sortas="xmlSecTransformCtxFinalize">xmlSecTransformCtxFinalize</primary></indexterm><programlisting><link linkend="void">void</link>                xmlSecTransformCtxFinalize          (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx);</programlisting>
<para>
Cleans up <parameter>ctx</parameter> object initialized with <link linkend="xmlSecTransformCtxInitialize"><type>xmlSecTransformCtxInitialize</type></link> function.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>ctx</parameter>&#160;:</term>
<listitem><simpara>                the pointer to transforms chain processing context.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformCtxReset" role="function">
<title>xmlSecTransformCtxReset ()</title>
<indexterm zone="xmlSecTransformCtxReset"><primary sortas="xmlSecTransformCtxReset">xmlSecTransformCtxReset</primary></indexterm><programlisting><link linkend="void">void</link>                xmlSecTransformCtxReset             (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx);</programlisting>
<para>
Resets transfroms context for new processing.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>ctx</parameter>&#160;:</term>
<listitem><simpara>                the pointer to transforms chain processing context.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformCtxCopyUserPref" role="function">
<title>xmlSecTransformCtxCopyUserPref ()</title>
<indexterm zone="xmlSecTransformCtxCopyUserPref"><primary sortas="xmlSecTransformCtxCopyUserPref">xmlSecTransformCtxCopyUserPref</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformCtxCopyUserPref      (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> dst,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> src);</programlisting>
<para>
Copies user settings from <parameter>src</parameter> context to <parameter>dst</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>dst</parameter>&#160;:</term>
<listitem><simpara>                the pointer to destination transforms chain processing context.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>src</parameter>&#160;:</term>
<listitem><simpara>                the pointer to source transforms chain 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="xmlSecTransformCtxSetUri" role="function">
<title>xmlSecTransformCtxSetUri ()</title>
<indexterm zone="xmlSecTransformCtxSetUri"><primary sortas="xmlSecTransformCtxSetUri">xmlSecTransformCtxSetUri</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformCtxSetUri            (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx,
                                                         const <link linkend="xmlChar">xmlChar</link> *uri,
                                                         <link linkend="xmlNode">xmlNodePtr</link> hereNode);</programlisting>
<para>
Parses uri and adds xpointer transforms if required.
</para>
<para>
The following examples demonstrate what the URI attribute identifies and
how it is dereferenced
(http://www.w3.org/TR/xmldsig-core/<link linkend="sec-ReferenceProcessingModel"><type>sec-ReferenceProcessingModel</type></link>):
</para>
<para>
- URI="http://example.com/bar.xml"
identifies the octets that represent the external resource
'http://example.com/bar.xml', that is probably an XML document given
its file extension.
</para>
<para>
- URI="http://example.com/bar.xml<link linkend="chapter1"><type>chapter1</type></link>"
identifies the element with ID attribute value 'chapter1' of the
external XML resource 'http://example.com/bar.xml', provided as an
octet stream. Again, for the sake of interoperability, the element
identified as 'chapter1' should be obtained using an XPath transform
rather than a URI fragment (barename XPointer resolution in external
resources is not REQUIRED in this specification).
</para>
<para>
- URI=""
identifies the node-set (minus any comment nodes) of the XML resource
containing the signature
</para>
<para>
- URI="<link linkend="chapter1"><type>chapter1</type></link>"
identifies a node-set containing the element with ID attribute value
'chapter1' of the XML resource containing the signature. XML Signature
(and its applications) modify this node-set to include the element plus
all descendents including namespaces and attributes -- but not comments.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>ctx</parameter>&#160;:</term>
<listitem><simpara>                the pointer to transforms chain processing context.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>uri</parameter>&#160;:</term>
<listitem><simpara>                the URI.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>hereNode</parameter>&#160;:</term>
<listitem><simpara>           the pointer to "here" node required by some
                     XML transforms (may be NULL).
</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="xmlSecTransformCtxAppend" role="function">
<title>xmlSecTransformCtxAppend ()</title>
<indexterm zone="xmlSecTransformCtxAppend"><primary sortas="xmlSecTransformCtxAppend">xmlSecTransformCtxAppend</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformCtxAppend            (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx,
                                                         <link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform);</programlisting>
<para>
Connects the <parameter>transform</parameter> to the end of the chain of transforms in the <parameter>ctx</parameter>
(see <link linkend="xmlSecTransformConnect"><type>xmlSecTransformConnect</type></link> function for details).</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>ctx</parameter>&#160;:</term>
<listitem><simpara>                the pointer to transforms chain processing context.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>          the pointer to new transform.
</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="xmlSecTransformCtxPrepend" role="function">
<title>xmlSecTransformCtxPrepend ()</title>
<indexterm zone="xmlSecTransformCtxPrepend"><primary sortas="xmlSecTransformCtxPrepend">xmlSecTransformCtxPrepend</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformCtxPrepend           (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx,
                                                         <link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform);</programlisting>
<para>
Connects the <parameter>transform</parameter> to the beggining of the chain of transforms in the <parameter>ctx</parameter>
(see <link linkend="xmlSecTransformConnect"><type>xmlSecTransformConnect</type></link> function for details).</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>ctx</parameter>&#160;:</term>
<listitem><simpara>                the pointer to transforms chain processing context.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>          the pointer to new transform.
</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="xmlSecTransformCtxCreateAndAppend" role="function">
<title>xmlSecTransformCtxCreateAndAppend ()</title>
<indexterm zone="xmlSecTransformCtxCreateAndAppend"><primary sortas="xmlSecTransformCtxCreateAndAppend">xmlSecTransformCtxCreateAndAppend</primary></indexterm><programlisting><link linkend="xmlSecTransformPtr">xmlSecTransformPtr</link>  xmlSecTransformCtxCreateAndAppend   (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx,
                                                         <link linkend="xmlSecTransformId">xmlSecTransformId</link> id);</programlisting>
<para>
Creaeates new transform and connects it to the end of the chain of
transforms in the <parameter>ctx</parameter> (see <link linkend="xmlSecTransformConnect"><type>xmlSecTransformConnect</type></link> function for details).</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>ctx</parameter>&#160;:</term>
<listitem><simpara>                the pointer to transforms chain processing context.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>id</parameter>&#160;:</term>
<listitem><simpara>                 the new transform klass.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> pointer to newly created transform or NULL if an error occurs.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformCtxCreateAndPrepend" role="function">
<title>xmlSecTransformCtxCreateAndPrepend ()</title>
<indexterm zone="xmlSecTransformCtxCreateAndPrepend"><primary sortas="xmlSecTransformCtxCreateAndPrepend">xmlSecTransformCtxCreateAndPrepend</primary></indexterm><programlisting><link linkend="xmlSecTransformPtr">xmlSecTransformPtr</link>  xmlSecTransformCtxCreateAndPrepend  (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx,
                                                         <link linkend="xmlSecTransformId">xmlSecTransformId</link> id);</programlisting>
<para>
Creaeates new transform and connects it to the end of the chain of
transforms in the <parameter>ctx</parameter> (see <link linkend="xmlSecTransformConnect"><type>xmlSecTransformConnect</type></link> function for details).</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>ctx</parameter>&#160;:</term>
<listitem><simpara>                the pointer to transforms chain processing context.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>id</parameter>&#160;:</term>
<listitem><simpara>                 the new transform klass.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> pointer to newly created transform or NULL if an error occurs.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformCtxNodeRead" role="function">
<title>xmlSecTransformCtxNodeRead ()</title>
<indexterm zone="xmlSecTransformCtxNodeRead"><primary sortas="xmlSecTransformCtxNodeRead">xmlSecTransformCtxNodeRead</primary></indexterm><programlisting><link linkend="xmlSecTransformPtr">xmlSecTransformPtr</link>  xmlSecTransformCtxNodeRead          (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx,
                                                         <link linkend="xmlNode">xmlNodePtr</link> node,
                                                         <link linkend="xmlSecTransformUsage">xmlSecTransformUsage</link> usage);</programlisting>
<para>
Reads the transform from the <parameter>node</parameter> and appends it to the current chain
of transforms in <parameter>ctx</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>ctx</parameter>&#160;:</term>
<listitem><simpara>                the pointer to transforms chain processing context.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>node</parameter>&#160;:</term>
<listitem><simpara>               the pointer to transform's node.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>usage</parameter>&#160;:</term>
<listitem><simpara>              the transform's usage (signature, encryption, etc.).
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> pointer to newly created transform or NULL if an error occurs.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformCtxNodesListRead" role="function">
<title>xmlSecTransformCtxNodesListRead ()</title>
<indexterm zone="xmlSecTransformCtxNodesListRead"><primary sortas="xmlSecTransformCtxNodesListRead">xmlSecTransformCtxNodesListRead</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformCtxNodesListRead     (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx,
                                                         <link linkend="xmlNode">xmlNodePtr</link> node,
                                                         <link linkend="xmlSecTransformUsage">xmlSecTransformUsage</link> usage);</programlisting>
<para>
Reads transforms from the <ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-Transform">&lt;dsig:Transform/&gt;</ulink> children of the <parameter>node</parameter> and
appends them to the current transforms chain in <parameter>ctx</parameter> object.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>ctx</parameter>&#160;:</term>
<listitem><simpara>                the pointer to transforms chain processing context.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>node</parameter>&#160;:</term>
<listitem><simpara>               the pointer to <ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-Transform">&lt;dsig:Transform/&gt;</ulink> nodes parent node.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>usage</parameter>&#160;:</term>
<listitem><simpara>              the transform's usage (signature, encryption, etc.).
</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="xmlSecTransformCtxPrepare" role="function">
<title>xmlSecTransformCtxPrepare ()</title>
<indexterm zone="xmlSecTransformCtxPrepare"><primary sortas="xmlSecTransformCtxPrepare">xmlSecTransformCtxPrepare</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformCtxPrepare           (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx,
                                                         <link linkend="xmlSecTransformDataType">xmlSecTransformDataType</link> inputDataType);</programlisting>
<para>
Prepares the transform context for processing data of <parameter>inputDataType</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>ctx</parameter>&#160;:</term>
<listitem><simpara>                the pointer to transforms chain processing context.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>inputDataType</parameter>&#160;:</term>
<listitem><simpara>      the expected input 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="xmlSecTransformCtxBinaryExecute" role="function">
<title>xmlSecTransformCtxBinaryExecute ()</title>
<indexterm zone="xmlSecTransformCtxBinaryExecute"><primary sortas="xmlSecTransformCtxBinaryExecute">xmlSecTransformCtxBinaryExecute</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformCtxBinaryExecute     (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx,
                                                         const <link linkend="xmlSecByte">xmlSecByte</link> *data,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> dataSize);</programlisting>
<para>
Processes binary data using transforms chain in the <parameter>ctx</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>ctx</parameter>&#160;:</term>
<listitem><simpara>                the pointer to transforms chain processing context.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>               the input binary data buffer.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>dataSize</parameter>&#160;:</term>
<listitem><simpara>           the input data 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="xmlSecTransformCtxUriExecute" role="function">
<title>xmlSecTransformCtxUriExecute ()</title>
<indexterm zone="xmlSecTransformCtxUriExecute"><primary sortas="xmlSecTransformCtxUriExecute">xmlSecTransformCtxUriExecute</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformCtxUriExecute        (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx,
                                                         const <link linkend="xmlChar">xmlChar</link> *uri);</programlisting>
<para>
Process binary data from the URI using transforms chain in <parameter>ctx</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>ctx</parameter>&#160;:</term>
<listitem><simpara>                the pointer to transforms chain processing context.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>uri</parameter>&#160;:</term>
<listitem><simpara>                the URI.
</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="xmlSecTransformCtxXmlExecute" role="function">
<title>xmlSecTransformCtxXmlExecute ()</title>
<indexterm zone="xmlSecTransformCtxXmlExecute"><primary sortas="xmlSecTransformCtxXmlExecute">xmlSecTransformCtxXmlExecute</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformCtxXmlExecute        (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx,
                                                         <link linkend="xmlSecNodeSet">xmlSecNodeSetPtr</link> nodes);</programlisting>
<para>
Process <parameter>nodes</parameter> using transforms in the transforms chain in <parameter>ctx</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>ctx</parameter>&#160;:</term>
<listitem><simpara>                the pointer to transforms chain processing context.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>nodes</parameter>&#160;:</term>
<listitem><simpara>              the input node set.
</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="xmlSecTransformCtxExecute" role="function">
<title>xmlSecTransformCtxExecute ()</title>
<indexterm zone="xmlSecTransformCtxExecute"><primary sortas="xmlSecTransformCtxExecute">xmlSecTransformCtxExecute</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformCtxExecute           (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx,
                                                         <link linkend="xmlDoc">xmlDocPtr</link> doc);</programlisting>
<para>
Executes transforms chain in <parameter>ctx</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>ctx</parameter>&#160;:</term>
<listitem><simpara>                the pointer to transforms chain processing context.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>doc</parameter>&#160;:</term>
<listitem><simpara>                the pointer to input document.
</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="xmlSecTransformCtxDebugDump" role="function">
<title>xmlSecTransformCtxDebugDump ()</title>
<indexterm zone="xmlSecTransformCtxDebugDump"><primary sortas="xmlSecTransformCtxDebugDump">xmlSecTransformCtxDebugDump</primary></indexterm><programlisting><link linkend="void">void</link>                xmlSecTransformCtxDebugDump         (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx,
                                                         <link linkend="FILE--CAPS">FILE</link> *output);</programlisting>
<para>
Prints transforms context debug information to <parameter>output</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>ctx</parameter>&#160;:</term>
<listitem><simpara>                the pointer to transforms chain processing context.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>output</parameter>&#160;:</term>
<listitem><simpara>             the pointer to output FILE.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformCtxDebugXmlDump" role="function">
<title>xmlSecTransformCtxDebugXmlDump ()</title>
<indexterm zone="xmlSecTransformCtxDebugXmlDump"><primary sortas="xmlSecTransformCtxDebugXmlDump">xmlSecTransformCtxDebugXmlDump</primary></indexterm><programlisting><link linkend="void">void</link>                xmlSecTransformCtxDebugXmlDump      (<link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> ctx,
                                                         <link linkend="FILE--CAPS">FILE</link> *output);</programlisting>
<para>
Prints transforms context debug information to <parameter>output</parameter> in XML format.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>ctx</parameter>&#160;:</term>
<listitem><simpara>                the pointer to transforms chain processing context.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>output</parameter>&#160;:</term>
<listitem><simpara>             the pointer to output FILE.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransform" role="struct">
<title>struct xmlSecTransform</title>
<indexterm zone="xmlSecTransform"><primary sortas="xmlSecTransform">xmlSecTransform</primary></indexterm><programlisting>struct xmlSecTransform {
    xmlSecTransformId                   id;
    xmlSecTransformOperation            operation;
    xmlSecTransformStatus               status;
    xmlNodePtr                          hereNode;

    /* transforms chain */
    xmlSecTransformPtr                  next;
    xmlSecTransformPtr                  prev;

    /* binary data */
    xmlSecBuffer                        inBuf;
    xmlSecBuffer                        outBuf;

    /* xml data */
    xmlSecNodeSetPtr                    inNodes;
    xmlSecNodeSetPtr                    outNodes;

    /* reserved for the future */
    void*                               reserved0;
    void*                               reserved1;
};
</programlisting>
<para>
The transform structure.</para>
<para>
</para><variablelist role="struct">
<varlistentry>
<term><link linkend="xmlSecTransformId">xmlSecTransformId</link>&#160;<structfield>id</structfield>;</term>
<listitem><simpara>                 the transform id (pointer to <link linkend="xmlSecTransformId"><type>xmlSecTransformId</type></link>).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecTransformOperation">xmlSecTransformOperation</link>&#160;<structfield>operation</structfield>;</term>
<listitem><simpara>          the transform's opertaion.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecTransformStatus">xmlSecTransformStatus</link>&#160;<structfield>status</structfield>;</term>
<listitem><simpara>             the current status.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlNode">xmlNodePtr</link>&#160;<structfield>hereNode</structfield>;</term>
<listitem><simpara>           the pointer to transform's <ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-Transform ">&lt;dsig:Transform /&gt;</ulink> node.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecTransform">xmlSecTransformPtr</link>&#160;<structfield>next</structfield>;</term>
<listitem><simpara>               the pointer to next transform in the chain.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecTransform">xmlSecTransformPtr</link>&#160;<structfield>prev</structfield>;</term>
<listitem><simpara>               the pointer to previous transform in the chain.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecBuffer">xmlSecBuffer</link>&#160;<structfield>inBuf</structfield>;</term>
<listitem><simpara>              the input binary data buffer.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecBuffer">xmlSecBuffer</link>&#160;<structfield>outBuf</structfield>;</term>
<listitem><simpara>             the output binary data buffer.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecNodeSet">xmlSecNodeSetPtr</link>&#160;<structfield>inNodes</structfield>;</term>
<listitem><simpara>            the input XML nodes.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecNodeSet">xmlSecNodeSetPtr</link>&#160;<structfield>outNodes</structfield>;</term>
<listitem><simpara>           the output XML nodes.
</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="xmlSecTransformCreate" role="function">
<title>xmlSecTransformCreate ()</title>
<indexterm zone="xmlSecTransformCreate"><primary sortas="xmlSecTransformCreate">xmlSecTransformCreate</primary></indexterm><programlisting><link linkend="xmlSecTransform">xmlSecTransformPtr</link>  xmlSecTransformCreate               (<link linkend="xmlSecTransformId">xmlSecTransformId</link> id);</programlisting>
<para>
Creates new transform of the <parameter>id</parameter> klass. The caller is responsible for
destroying returned tansform using <link linkend="xmlSecTransformDestroy"><type>xmlSecTransformDestroy</type></link> function.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>id</parameter>&#160;:</term>
<listitem><simpara>                 the transform id to create.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> pointer to newly created transform or NULL if an error occurs.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformDestroy" role="function">
<title>xmlSecTransformDestroy ()</title>
<indexterm zone="xmlSecTransformDestroy"><primary sortas="xmlSecTransformDestroy">xmlSecTransformDestroy</primary></indexterm><programlisting><link linkend="void">void</link>                xmlSecTransformDestroy              (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform);</programlisting>
<para>
Destroys transform created with <link linkend="xmlSecTransformCreate"><type>xmlSecTransformCreate</type></link> function.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>          the pointer to transform.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformNodeRead" role="function">
<title>xmlSecTransformNodeRead ()</title>
<indexterm zone="xmlSecTransformNodeRead"><primary sortas="xmlSecTransformNodeRead">xmlSecTransformNodeRead</primary></indexterm><programlisting><link linkend="xmlSecTransformPtr">xmlSecTransformPtr</link>  xmlSecTransformNodeRead             (<link linkend="xmlNode">xmlNodePtr</link> node,
                                                         <link linkend="xmlSecTransformUsage">xmlSecTransformUsage</link> usage,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);</programlisting>
<para>
Reads transform from the <parameter>node</parameter> as follows:
</para>
<para>
   1) reads "Algorithm" attribute;
</para>
<para>
   2) checks the lists of known and allowed transforms;
</para>
<para>
   3) calls transform's create method;
</para>
<para>
   4) calls transform's read transform node method.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>node</parameter>&#160;:</term>
<listitem><simpara>               the pointer to the transform's node.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>usage</parameter>&#160;:</term>
<listitem><simpara>              the transform usage (signature, encryption, ...).
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>transformCtx</parameter>&#160;:</term>
<listitem><simpara>       the transform's chaing processing context.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> pointer to newly created transform or NULL if an error occurs.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformPump" role="function">
<title>xmlSecTransformPump ()</title>
<indexterm zone="xmlSecTransformPump"><primary sortas="xmlSecTransformPump">xmlSecTransformPump</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformPump                 (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> left,
                                                         <link linkend="xmlSecTransform">xmlSecTransformPtr</link> right,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);</programlisting>
<para>
Pops data from <parameter>left</parameter> transform and pushes to <parameter>right</parameter> transform until
no more data is available.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>left</parameter>&#160;:</term>
<listitem><simpara>               the source pumping transform.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>right</parameter>&#160;:</term>
<listitem><simpara>              the destination pumping transform.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>transformCtx</parameter>&#160;:</term>
<listitem><simpara>       the transform's chaing 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="xmlSecTransformSetKey" role="function">
<title>xmlSecTransformSetKey ()</title>
<indexterm zone="xmlSecTransformSetKey"><primary sortas="xmlSecTransformSetKey">xmlSecTransformSetKey</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformSetKey               (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecKey">xmlSecKeyPtr</link> key);</programlisting>
<para>
Sets the transform's key.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>          the pointer to transform.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>key</parameter>&#160;:</term>
<listitem><simpara>                the pointer to key.
</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="xmlSecTransformSetKeyReq" role="function">
<title>xmlSecTransformSetKeyReq ()</title>
<indexterm zone="xmlSecTransformSetKeyReq"><primary sortas="xmlSecTransformSetKeyReq">xmlSecTransformSetKeyReq</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformSetKeyReq            (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecKeyReq">xmlSecKeyReqPtr</link> keyReq);</programlisting>
<para>
Sets the key requirements for <parameter>transform</parameter> in the <parameter>keyReq</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>          the pointer to transform.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>keyReq</parameter>&#160;:</term>
<listitem><simpara>             the pointer to keys requirements object.
</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="xmlSecTransformVerify" role="function">
<title>xmlSecTransformVerify ()</title>
<indexterm zone="xmlSecTransformVerify"><primary sortas="xmlSecTransformVerify">xmlSecTransformVerify</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformVerify               (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         const <link linkend="xmlSecByte">xmlSecByte</link> *data,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> dataSize,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);</programlisting>
<para>
Verifies the data with transform's processing results
(for digest, HMAC and signature transforms). The verification
result is stored in the <link linkend="status"><type>status</type></link> member of <link linkend="xmlSecTransform"><type>xmlSecTransform</type></link> object.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>          the pointer to transform.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>               the binary data for verification.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>dataSize</parameter>&#160;:</term>
<listitem><simpara>           the data size.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>transformCtx</parameter>&#160;:</term>
<listitem><simpara>       the transform's chaing 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="xmlSecTransformVerifyNodeContent" role="function">
<title>xmlSecTransformVerifyNodeContent ()</title>
<indexterm zone="xmlSecTransformVerifyNodeContent"><primary sortas="xmlSecTransformVerifyNodeContent">xmlSecTransformVerifyNodeContent</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformVerifyNodeContent    (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlNode">xmlNodePtr</link> node,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);</programlisting>
<para>
Gets the <parameter>node</parameter> content, base64 decodes it and calls <link linkend="xmlSecTransformVerify"><type>xmlSecTransformVerify</type></link>
function to verify binary results.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>          the pointer to transform.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>node</parameter>&#160;:</term>
<listitem><simpara>               the pointer to node.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>transformCtx</parameter>&#160;:</term>
<listitem><simpara>       the transform's chaing 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="xmlSecTransformGetDataType" role="function">
<title>xmlSecTransformGetDataType ()</title>
<indexterm zone="xmlSecTransformGetDataType"><primary sortas="xmlSecTransformGetDataType">xmlSecTransformGetDataType</primary></indexterm><programlisting><link linkend="xmlSecTransformDataType">xmlSecTransformDataType</link>  xmlSecTransformGetDataType     (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecTransformMode">xmlSecTransformMode</link> mode,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);</programlisting>
<para>
Gets transform input (<parameter>mode</parameter> is "push") or output (<parameter>mode</parameter> is "pop") data
type (binary or XML).</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>          the pointer to transform.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>mode</parameter>&#160;:</term>
<listitem><simpara>               the data mode (push or pop).
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>transformCtx</parameter>&#160;:</term>
<listitem><simpara>       the transform's chaing processing context.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> the transform's data type for the <parameter>mode</parameter> operation.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformPushBin" role="function">
<title>xmlSecTransformPushBin ()</title>
<indexterm zone="xmlSecTransformPushBin"><primary sortas="xmlSecTransformPushBin">xmlSecTransformPushBin</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformPushBin              (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         const <link linkend="xmlSecByte">xmlSecByte</link> *data,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> dataSize,
                                                         <link linkend="int">int</link> final,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);</programlisting>
<para>
Process binary <parameter>data</parameter> and pushes results to next transform.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>          the pointer to transform object.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>               the input binary data,
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>dataSize</parameter>&#160;:</term>
<listitem><simpara>           the input data size.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>final</parameter>&#160;:</term>
<listitem><simpara>              the flag: if set to 1 then it's the last
                     data chunk.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>transformCtx</parameter>&#160;:</term>
<listitem><simpara>       the pointer to transform context object.
</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="xmlSecTransformPopBin" role="function">
<title>xmlSecTransformPopBin ()</title>
<indexterm zone="xmlSecTransformPopBin"><primary sortas="xmlSecTransformPopBin">xmlSecTransformPopBin</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformPopBin               (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecByte">xmlSecByte</link> *data,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> maxDataSize,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> *dataSize,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);</programlisting>
<para>
Pops data from previous transform in the chain, processes data and
returns result in the <parameter>data</parameter> buffer. The size of returned data is
placed in the <parameter>dataSize</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>          the pointer to transform object.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>               the buffer to store result data.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>maxDataSize</parameter>&#160;:</term>
<listitem><simpara>        the size of the buffer <link linkend="data"><type>data</type></link>.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>dataSize</parameter>&#160;:</term>
<listitem><simpara>           the pointer to returned data size.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>transformCtx</parameter>&#160;:</term>
<listitem><simpara>       the pointer to transform context object.
</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="xmlSecTransformPushXml" role="function">
<title>xmlSecTransformPushXml ()</title>
<indexterm zone="xmlSecTransformPushXml"><primary sortas="xmlSecTransformPushXml">xmlSecTransformPushXml</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformPushXml              (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecNodeSet">xmlSecNodeSetPtr</link> nodes,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);</programlisting>
<para>
Processes <parameter>nodes</parameter> and pushes result to the next transform in the chain.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>          the pointer to transform object.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>nodes</parameter>&#160;:</term>
<listitem><simpara>              the input nodes.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>transformCtx</parameter>&#160;:</term>
<listitem><simpara>       the pointer to transform context object.
</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="xmlSecTransformPopXml" role="function">
<title>xmlSecTransformPopXml ()</title>
<indexterm zone="xmlSecTransformPopXml"><primary sortas="xmlSecTransformPopXml">xmlSecTransformPopXml</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformPopXml               (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecNodeSet">xmlSecNodeSetPtr</link> *nodes,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);</programlisting>
<para>
Pops data from previous transform in the chain, processes the data and
returns result in <parameter>nodes</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>          the pointer to transform object.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>nodes</parameter>&#160;:</term>
<listitem><simpara>              the pointer to store popinter to result nodes.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>transformCtx</parameter>&#160;:</term>
<listitem><simpara>       the pointer to transform context object.
</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="xmlSecTransformExecute" role="function">
<title>xmlSecTransformExecute ()</title>
<indexterm zone="xmlSecTransformExecute"><primary sortas="xmlSecTransformExecute">xmlSecTransformExecute</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformExecute              (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="int">int</link> last,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);</programlisting>
<para>
Executes transform (used by default popBin/pushBin/popXml/pushXml methods).</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>          the pointer to transform.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>last</parameter>&#160;:</term>
<listitem><simpara>               the flag: if set to 1 then it's the last data chunk.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>transformCtx</parameter>&#160;:</term>
<listitem><simpara>       the transform's chaing 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="xmlSecTransformDebugDump" role="function">
<title>xmlSecTransformDebugDump ()</title>
<indexterm zone="xmlSecTransformDebugDump"><primary sortas="xmlSecTransformDebugDump">xmlSecTransformDebugDump</primary></indexterm><programlisting><link linkend="void">void</link>                xmlSecTransformDebugDump            (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="FILE--CAPS">FILE</link> *output);</programlisting>
<para>
Prints transform's debug information to <parameter>output</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>          the pointer to transform.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>output</parameter>&#160;:</term>
<listitem><simpara>             the pointer to output FILE.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformDebugXmlDump" role="function">
<title>xmlSecTransformDebugXmlDump ()</title>
<indexterm zone="xmlSecTransformDebugXmlDump"><primary sortas="xmlSecTransformDebugXmlDump">xmlSecTransformDebugXmlDump</primary></indexterm><programlisting><link linkend="void">void</link>                xmlSecTransformDebugXmlDump         (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="FILE--CAPS">FILE</link> *output);</programlisting>
<para>
Prints transform's debug information to <parameter>output</parameter> in XML format.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>          the pointer to transform.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>output</parameter>&#160;:</term>
<listitem><simpara>             the pointer to output FILE.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformGetName" role="macro">
<title>xmlSecTransformGetName()</title>
<indexterm zone="xmlSecTransformGetName"><primary sortas="xmlSecTransformGetName">xmlSecTransformGetName</primary></indexterm><programlisting>#define             xmlSecTransformGetName(transform)</programlisting>
<para>
Macro. Returns transform name.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>          the pointer to transform.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformIsValid" role="macro">
<title>xmlSecTransformIsValid()</title>
<indexterm zone="xmlSecTransformIsValid"><primary sortas="xmlSecTransformIsValid">xmlSecTransformIsValid</primary></indexterm><programlisting>#define             xmlSecTransformIsValid(transform)</programlisting>
<para>
Macro. Returns 1 if the <parameter>transform</parameter> is valid or 0 otherwise.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>          the pointer to transform.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformCheckId" role="macro">
<title>xmlSecTransformCheckId()</title>
<indexterm zone="xmlSecTransformCheckId"><primary sortas="xmlSecTransformCheckId">xmlSecTransformCheckId</primary></indexterm><programlisting>#define             xmlSecTransformCheckId(transform, i)</programlisting>
<para>
Macro. Returns 1 if the <parameter>transform</parameter> is valid and has specified id <parameter>i</parameter>
or 0 otherwise.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>          the pointer to transform.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>i</parameter>&#160;:</term>
<listitem><simpara>                  the transform id.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformCheckSize" role="macro">
<title>xmlSecTransformCheckSize()</title>
<indexterm zone="xmlSecTransformCheckSize"><primary sortas="xmlSecTransformCheckSize">xmlSecTransformCheckSize</primary></indexterm><programlisting>#define             xmlSecTransformCheckSize(transform, size)</programlisting>
<para>
Macro. Returns 1 if the <parameter>transform</parameter> is valid and has at least <parameter>size</parameter>
bytes or 0 otherwise.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>          the pointer to transform.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>size</parameter>&#160;:</term>
<listitem><simpara>               the transform object size.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformConnect" role="function">
<title>xmlSecTransformConnect ()</title>
<indexterm zone="xmlSecTransformConnect"><primary sortas="xmlSecTransformConnect">xmlSecTransformConnect</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformConnect              (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> left,
                                                         <link linkend="xmlSecTransform">xmlSecTransformPtr</link> right,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);</programlisting>
<para>
If the data object is a node-set and the next transform requires octets,
the signature application MUST attempt to convert the node-set to an octet
stream using Canonical XML [XML-C14N].
</para>
<para>
The story is different if the right transform is base64 decode
(http://www.w3.org/TR/xmldsig-core/<link linkend="sec-Base-64"><type>sec-Base-64</type></link>):
</para>
<para>
This transform requires an octet stream for input. If an XPath node-set
(or sufficiently functional alternative) is given as input, then it is
converted to an octet stream by performing operations logically equivalent
to 1) applying an XPath transform with expression self::<link linkend="text"><function>text()</function></link>, then 2)
taking the string-value of the node-set. Thus, if an XML element is
identified by a barename XPointer in the Reference URI, and its content
consists solely of base64 encoded character data, then this transform
automatically strips away the start and end tags of the identified element
and any of its descendant elements as well as any descendant comments and
processing instructions. The output of this transform is an octet stream.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>left</parameter>&#160;:</term>
<listitem><simpara>               the pointer to left (prev) transform.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>right</parameter>&#160;:</term>
<listitem><simpara>              the pointer to right (next) transform.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>transformCtx</parameter>&#160;:</term>
<listitem><simpara>       the transform's chaing 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="xmlSecTransformRemove" role="function">
<title>xmlSecTransformRemove ()</title>
<indexterm zone="xmlSecTransformRemove"><primary sortas="xmlSecTransformRemove">xmlSecTransformRemove</primary></indexterm><programlisting><link linkend="void">void</link>                xmlSecTransformRemove               (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform);</programlisting>
<para>
Removes <parameter>transform</parameter> from the chain.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara> the pointer to <link linkend="xmlSecTransform"><type>xmlSecTransform</type></link> structure.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformDefaultGetDataType" role="function">
<title>xmlSecTransformDefaultGetDataType ()</title>
<indexterm zone="xmlSecTransformDefaultGetDataType"><primary sortas="xmlSecTransformDefaultGetDataType">xmlSecTransformDefaultGetDataType</primary></indexterm><programlisting><link linkend="xmlSecTransformDataType">xmlSecTransformDataType</link>  xmlSecTransformDefaultGetDataType
                                                        (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecTransformMode">xmlSecTransformMode</link> mode,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);</programlisting>
<para>
Gets transform input (<parameter>mode</parameter> is "push") or output (<parameter>mode</parameter> is "pop") data
type (binary or XML) by analyzing available pushBin/popBin/pushXml/popXml
methods.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>          the pointer to transform.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>mode</parameter>&#160;:</term>
<listitem><simpara>               the data mode (push or pop).
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>transformCtx</parameter>&#160;:</term>
<listitem><simpara>       the transform's chaing processing context.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> the transform's data type for the <parameter>mode</parameter> operation.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformDefaultPushBin" role="function">
<title>xmlSecTransformDefaultPushBin ()</title>
<indexterm zone="xmlSecTransformDefaultPushBin"><primary sortas="xmlSecTransformDefaultPushBin">xmlSecTransformDefaultPushBin</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformDefaultPushBin       (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         const <link linkend="xmlSecByte">xmlSecByte</link> *data,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> dataSize,
                                                         <link linkend="int">int</link> final,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);</programlisting>
<para>
Process binary <parameter>data</parameter> by calling transform's execute method and pushes
results to next transform.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>          the pointer to transform object.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>               the input binary data,
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>dataSize</parameter>&#160;:</term>
<listitem><simpara>           the input data size.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>final</parameter>&#160;:</term>
<listitem><simpara>              the flag: if set to 1 then it's the last
                     data chunk.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>transformCtx</parameter>&#160;:</term>
<listitem><simpara>       the pointer to transform context object.
</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="xmlSecTransformDefaultPopBin" role="function">
<title>xmlSecTransformDefaultPopBin ()</title>
<indexterm zone="xmlSecTransformDefaultPopBin"><primary sortas="xmlSecTransformDefaultPopBin">xmlSecTransformDefaultPopBin</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformDefaultPopBin        (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecByte">xmlSecByte</link> *data,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> maxDataSize,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> *dataSize,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);</programlisting>
<para>
Pops data from previous transform in the chain, processes data by calling
transform's execute method and returns result in the <parameter>data</parameter> buffer. The
size of returned data is placed in the <parameter>dataSize</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>          the pointer to transform object.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>               the buffer to store result data.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>maxDataSize</parameter>&#160;:</term>
<listitem><simpara>        the size of the buffer <link linkend="data"><type>data</type></link>.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>dataSize</parameter>&#160;:</term>
<listitem><simpara>           the pointer to returned data size.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>transformCtx</parameter>&#160;:</term>
<listitem><simpara>       the pointer to transform context object.
</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="xmlSecTransformDefaultPushXml" role="function">
<title>xmlSecTransformDefaultPushXml ()</title>
<indexterm zone="xmlSecTransformDefaultPushXml"><primary sortas="xmlSecTransformDefaultPushXml">xmlSecTransformDefaultPushXml</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformDefaultPushXml       (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecNodeSet">xmlSecNodeSetPtr</link> nodes,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);</programlisting>
<para>
Processes <parameter>nodes</parameter> by calling transform's execute method and pushes
result to the next transform in the chain.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>          the pointer to transform object.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>nodes</parameter>&#160;:</term>
<listitem><simpara>              the input nodes.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>transformCtx</parameter>&#160;:</term>
<listitem><simpara>       the pointer to transform context object.
</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="xmlSecTransformDefaultPopXml" role="function">
<title>xmlSecTransformDefaultPopXml ()</title>
<indexterm zone="xmlSecTransformDefaultPopXml"><primary sortas="xmlSecTransformDefaultPopXml">xmlSecTransformDefaultPopXml</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformDefaultPopXml        (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecNodeSet">xmlSecNodeSetPtr</link> *nodes,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);</programlisting>
<para>
Pops data from previous transform in the chain, processes the data
by calling transform's execute method and returns result in <parameter>nodes</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>          the pointer to transform object.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>nodes</parameter>&#160;:</term>
<listitem><simpara>              the pointer to store popinter to result nodes.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>transformCtx</parameter>&#160;:</term>
<listitem><simpara>       the pointer to transform context object.
</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="xmlSecTransformCreateOutputBuffer" role="function">
<title>xmlSecTransformCreateOutputBuffer ()</title>
<indexterm zone="xmlSecTransformCreateOutputBuffer"><primary sortas="xmlSecTransformCreateOutputBuffer">xmlSecTransformCreateOutputBuffer</primary></indexterm><programlisting><link linkend="xmlOutputBufferPtr">xmlOutputBufferPtr</link>  xmlSecTransformCreateOutputBuffer   (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);</programlisting>
<para>
Creates output buffer to write data to <parameter>transform</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>          the pointer to transform.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>transformCtx</parameter>&#160;:</term>
<listitem><simpara>       the pointer to transform context object.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> pointer to new output buffer or NULL if an error occurs.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformCreateInputBuffer" role="function">
<title>xmlSecTransformCreateInputBuffer ()</title>
<indexterm zone="xmlSecTransformCreateInputBuffer"><primary sortas="xmlSecTransformCreateInputBuffer">xmlSecTransformCreateInputBuffer</primary></indexterm><programlisting><link linkend="xmlParserInputBuffer">xmlParserInputBufferPtr</link>  xmlSecTransformCreateInputBuffer
                                                        (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);</programlisting>
<para>
Creates input buffer to read data from <parameter>transform</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>          the pointer to transform.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>transformCtx</parameter>&#160;:</term>
<listitem><simpara>       the pointer to transform context object.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> pointer to new input buffer or NULL if an error occurs.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformInitializeMethod" role="function">
<title>xmlSecTransformInitializeMethod ()</title>
<indexterm zone="xmlSecTransformInitializeMethod"><primary sortas="xmlSecTransformInitializeMethod">xmlSecTransformInitializeMethod</primary></indexterm><programlisting><link linkend="int">int</link>                 (*xmlSecTransformInitializeMethod)  (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform);</programlisting>
<para>
The transform specific initialization method.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>                  the pointer to transform object.
</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="xmlSecTransformFinalizeMethod" role="function">
<title>xmlSecTransformFinalizeMethod ()</title>
<indexterm zone="xmlSecTransformFinalizeMethod"><primary sortas="xmlSecTransformFinalizeMethod">xmlSecTransformFinalizeMethod</primary></indexterm><programlisting><link linkend="void">void</link>                (*xmlSecTransformFinalizeMethod)    (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform);</programlisting>
<para>
The transform specific destroy method.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>                  the pointer to transform object.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformGetDataTypeMethod" role="function">
<title>xmlSecTransformGetDataTypeMethod ()</title>
<indexterm zone="xmlSecTransformGetDataTypeMethod"><primary sortas="xmlSecTransformGetDataTypeMethod">xmlSecTransformGetDataTypeMethod</primary></indexterm><programlisting><link linkend="xmlSecTransformDataType">xmlSecTransformDataType</link>  (*xmlSecTransformGetDataTypeMethod)
                                                        (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecTransformMode">xmlSecTransformMode</link> mode,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);</programlisting>
<para>
The transform specific method to query information about transform
data type in specified mode <parameter>mode</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>                  the pointer to transform object.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>mode</parameter>&#160;:</term>
<listitem><simpara>                       the mode.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>transformCtx</parameter>&#160;:</term>
<listitem><simpara>               the pointer to transform context object.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> transform data type.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformNodeReadMethod" role="function">
<title>xmlSecTransformNodeReadMethod ()</title>
<indexterm zone="xmlSecTransformNodeReadMethod"><primary sortas="xmlSecTransformNodeReadMethod">xmlSecTransformNodeReadMethod</primary></indexterm><programlisting><link linkend="int">int</link>                 (*xmlSecTransformNodeReadMethod)    (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlNode">xmlNodePtr</link> node,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);</programlisting>
<para>
The transform specific method to read the transform data from
the <parameter>node</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>                  the pointer to transform object.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>node</parameter>&#160;:</term>
<listitem><simpara>                       the pointer to <ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-Transform">&lt;dsig:Transform/&gt;</ulink> node.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>transformCtx</parameter>&#160;:</term>
<listitem><simpara>               the pointer to transform context object.
</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="xmlSecTransformNodeWriteMethod" role="function">
<title>xmlSecTransformNodeWriteMethod ()</title>
<indexterm zone="xmlSecTransformNodeWriteMethod"><primary sortas="xmlSecTransformNodeWriteMethod">xmlSecTransformNodeWriteMethod</primary></indexterm><programlisting><link linkend="int">int</link>                 (*xmlSecTransformNodeWriteMethod)   (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlNode">xmlNodePtr</link> node,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);</programlisting>
<para>
The transform specific method to write transform information to an XML node <parameter>node</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>                  the pointer to transform object.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>node</parameter>&#160;:</term>
<listitem><simpara>                       the pointer to <ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-Transform">&lt;dsig:Transform/&gt;</ulink> node.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>transformCtx</parameter>&#160;:</term>
<listitem><simpara>               the pointer to transform context object.
</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="xmlSecTransformSetKeyRequirementsMethod" role="function">
<title>xmlSecTransformSetKeyRequirementsMethod ()</title>
<indexterm zone="xmlSecTransformSetKeyRequirementsMethod"><primary sortas="xmlSecTransformSetKeyRequirementsMethod">xmlSecTransformSetKeyRequirementsMethod</primary></indexterm><programlisting><link linkend="int">int</link>                 (*xmlSecTransformSetKeyRequirementsMethod)
                                                        (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecKeyReq">xmlSecKeyReqPtr</link> keyReq);</programlisting>
<para>
Transform specific method to set transform's key requirements.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>                  the pointer to transform object.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>keyReq</parameter>&#160;:</term>
<listitem><simpara>                     the pointer to key requirements structure.
</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="xmlSecTransformSetKeyMethod" role="function">
<title>xmlSecTransformSetKeyMethod ()</title>
<indexterm zone="xmlSecTransformSetKeyMethod"><primary sortas="xmlSecTransformSetKeyMethod">xmlSecTransformSetKeyMethod</primary></indexterm><programlisting><link linkend="int">int</link>                 (*xmlSecTransformSetKeyMethod)      (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecKey">xmlSecKeyPtr</link> key);</programlisting>
<para>
The transform specific method to set the key for use.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>                  the pointer to transform object.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>key</parameter>&#160;:</term>
<listitem><simpara>                        the pointer to key.
</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="xmlSecTransformVerifyMethod" role="function">
<title>xmlSecTransformVerifyMethod ()</title>
<indexterm zone="xmlSecTransformVerifyMethod"><primary sortas="xmlSecTransformVerifyMethod">xmlSecTransformVerifyMethod</primary></indexterm><programlisting><link linkend="int">int</link>                 (*xmlSecTransformVerifyMethod)      (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         const <link linkend="xmlSecByte">xmlSecByte</link> *data,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> dataSize,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);</programlisting>
<para>
The transform specific method to verify transform processing results
(used by digest and signature transforms). This method sets <parameter>status</parameter>
member of the <link linkend="xmlSecTransform"><type>xmlSecTransform</type></link> structure to either <link linkend="xmlSecTransformStatusOk"><type>xmlSecTransformStatusOk</type></link>
if verification succeeded or <link linkend="xmlSecTransformStatusFail"><type>xmlSecTransformStatusFail</type></link> otherwise.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>                  the pointer to transform object.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>                       the input buffer.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>dataSize</parameter>&#160;:</term>
<listitem><simpara>                   the size of input buffer <parameter>data</parameter>.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>transformCtx</parameter>&#160;:</term>
<listitem><simpara>               the pointer to transform context object.
</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="xmlSecTransformPushBinMethod" role="function">
<title>xmlSecTransformPushBinMethod ()</title>
<indexterm zone="xmlSecTransformPushBinMethod"><primary sortas="xmlSecTransformPushBinMethod">xmlSecTransformPushBinMethod</primary></indexterm><programlisting><link linkend="int">int</link>                 (*xmlSecTransformPushBinMethod)     (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         const <link linkend="xmlSecByte">xmlSecByte</link> *data,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> dataSize,
                                                         <link linkend="int">int</link> final,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);</programlisting>
<para>
The transform specific method to process data from <parameter>data</parameter> and push
result to the next transform in the chain.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>                  the pointer to transform object.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>                       the input binary data,
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>dataSize</parameter>&#160;:</term>
<listitem><simpara>                   the input data size.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>final</parameter>&#160;:</term>
<listitem><simpara>                      the flag: if set to 1 then it's the last
                             data chunk.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>transformCtx</parameter>&#160;:</term>
<listitem><simpara>               the pointer to transform context object.
</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="xmlSecTransformPopBinMethod" role="function">
<title>xmlSecTransformPopBinMethod ()</title>
<indexterm zone="xmlSecTransformPopBinMethod"><primary sortas="xmlSecTransformPopBinMethod">xmlSecTransformPopBinMethod</primary></indexterm><programlisting><link linkend="int">int</link>                 (*xmlSecTransformPopBinMethod)      (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecByte">xmlSecByte</link> *data,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> maxDataSize,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> *dataSize,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);</programlisting>
<para>
The transform specific method to pop data from previous transform
in the chain and return result in the <parameter>data</parameter> buffer. The size of returned
data is placed in the <parameter>dataSize</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>                  the pointer to transform object.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>data</parameter>&#160;:</term>
<listitem><simpara>                       the buffer to store result data.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>maxDataSize</parameter>&#160;:</term>
<listitem><simpara>                the size of the buffer <parameter>data</parameter>.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>dataSize</parameter>&#160;:</term>
<listitem><simpara>                   the pointer to returned data size.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>transformCtx</parameter>&#160;:</term>
<listitem><simpara>               the pointer to transform context object.
</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="xmlSecTransformPushXmlMethod" role="function">
<title>xmlSecTransformPushXmlMethod ()</title>
<indexterm zone="xmlSecTransformPushXmlMethod"><primary sortas="xmlSecTransformPushXmlMethod">xmlSecTransformPushXmlMethod</primary></indexterm><programlisting><link linkend="int">int</link>                 (*xmlSecTransformPushXmlMethod)     (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecNodeSet">xmlSecNodeSetPtr</link> nodes,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);</programlisting>
<para>
The transform specific method to process <parameter>nodes</parameter> and push result to the next
transform in the chain.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>                  the pointer to transform object.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>nodes</parameter>&#160;:</term>
<listitem><simpara>                      the input nodes.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>transformCtx</parameter>&#160;:</term>
<listitem><simpara>               the pointer to transform context object.
</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="xmlSecTransformPopXmlMethod" role="function">
<title>xmlSecTransformPopXmlMethod ()</title>
<indexterm zone="xmlSecTransformPopXmlMethod"><primary sortas="xmlSecTransformPopXmlMethod">xmlSecTransformPopXmlMethod</primary></indexterm><programlisting><link linkend="int">int</link>                 (*xmlSecTransformPopXmlMethod)      (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecNodeSet">xmlSecNodeSetPtr</link> *nodes,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);</programlisting>
<para>
The transform specific method to pop data from previous transform in the chain,
process the data and return result in <parameter>nodes</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>                  the pointer to transform object.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>nodes</parameter>&#160;:</term>
<listitem><simpara>                      the pointer to store popinter to result nodes.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>transformCtx</parameter>&#160;:</term>
<listitem><simpara>               the pointer to transform context object.
</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="xmlSecTransformExecuteMethod" role="function">
<title>xmlSecTransformExecuteMethod ()</title>
<indexterm zone="xmlSecTransformExecuteMethod"><primary sortas="xmlSecTransformExecuteMethod">xmlSecTransformExecuteMethod</primary></indexterm><programlisting><link linkend="int">int</link>                 (*xmlSecTransformExecuteMethod)     (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="int">int</link> last,
                                                         <link linkend="xmlSecTransformCtx">xmlSecTransformCtxPtr</link> transformCtx);</programlisting>
<para>
Transform specific method to process a chunk of data.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>                  the pointer to transform object.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>last</parameter>&#160;:</term>
<listitem><simpara>                       the flag: if set to 1 then it's the last data chunk.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>transformCtx</parameter>&#160;:</term>
<listitem><simpara>               the pointer to transform context object.
</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="xmlSecTransformKlass" role="struct">
<title>struct xmlSecTransformKlass</title>
<indexterm zone="xmlSecTransformKlass"><primary sortas="xmlSecTransformKlass">xmlSecTransformKlass</primary></indexterm><programlisting>struct xmlSecTransformKlass {
    /* data */
    xmlSecSize                          klassSize;
    xmlSecSize                          objSize;
    const xmlChar*                      name;
    const xmlChar*                      href;
    xmlSecTransformUsage                usage;

    /* methods */
    xmlSecTransformInitializeMethod     initialize;
    xmlSecTransformFinalizeMethod       finalize;

    xmlSecTransformNodeReadMethod       readNode;
    xmlSecTransformNodeWriteMethod      writeNode;

    xmlSecTransformSetKeyRequirementsMethod     setKeyReq;
    xmlSecTransformSetKeyMethod         setKey;
    xmlSecTransformVerifyMethod         verify;
    xmlSecTransformGetDataTypeMethod    getDataType;

    xmlSecTransformPushBinMethod        pushBin;
    xmlSecTransformPopBinMethod         popBin;
    xmlSecTransformPushXmlMethod        pushXml;
    xmlSecTransformPopXmlMethod         popXml;

    /* low level method */
    xmlSecTransformExecuteMethod        execute;

    /* reserved for future */
    void*                               reserved0;
    void*                               reserved1;
};
</programlisting>
<para>
The transform klass desccription structure.</para>
<para>
</para><variablelist role="struct">
<varlistentry>
<term><link linkend="xmlSecSize">xmlSecSize</link>&#160;<structfield>klassSize</structfield>;</term>
<listitem><simpara>                  the transform klass structure size.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecSize">xmlSecSize</link>&#160;<structfield>objSize</structfield>;</term>
<listitem><simpara>                    the transform object size.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term>const&#160;<link linkend="xmlChar">xmlChar</link>&#160;*<structfield>name</structfield>;</term>
<listitem><simpara>                       the transform's name.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term>const&#160;<link linkend="xmlChar">xmlChar</link>&#160;*<structfield>href</structfield>;</term>
<listitem><simpara>                       the transform's identification string (href).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecTransformUsage">xmlSecTransformUsage</link>&#160;<structfield>usage</structfield>;</term>
<listitem><simpara>                      the allowed transforms usages.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecTransformInitializeMethod">xmlSecTransformInitializeMethod</link>&#160;<structfield>initialize</structfield>;</term>
<listitem><simpara>                 the initialization method.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecTransformFinalizeMethod">xmlSecTransformFinalizeMethod</link>&#160;<structfield>finalize</structfield>;</term>
<listitem><simpara>                   the finmalization (destroy) function.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecTransformNodeReadMethod">xmlSecTransformNodeReadMethod</link>&#160;<structfield>readNode</structfield>;</term>
<listitem><simpara>                   the XML node read method.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecTransformNodeWriteMethod">xmlSecTransformNodeWriteMethod</link>&#160;<structfield>writeNode</structfield>;</term>
<listitem><simpara>                  the XML node write method.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecTransformSetKeyRequirementsMethod">xmlSecTransformSetKeyRequirementsMethod</link>&#160;<structfield>setKeyReq</structfield>;</term>
<listitem><simpara>                  the set key requirements method.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecTransformSetKeyMethod">xmlSecTransformSetKeyMethod</link>&#160;<structfield>setKey</structfield>;</term>
<listitem><simpara>                     the set key method.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecTransformVerifyMethod">xmlSecTransformVerifyMethod</link>&#160;<structfield>verify</structfield>;</term>
<listitem><simpara>                     the verify method (for digest and signature transforms).
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecTransformGetDataTypeMethod">xmlSecTransformGetDataTypeMethod</link>&#160;<structfield>getDataType</structfield>;</term>
<listitem><simpara>                the input/output data type query method.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecTransformPushBinMethod">xmlSecTransformPushBinMethod</link>&#160;<structfield>pushBin</structfield>;</term>
<listitem><simpara>                    the binary data "push thru chain" processing method.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecTransformPopBinMethod">xmlSecTransformPopBinMethod</link>&#160;<structfield>popBin</structfield>;</term>
<listitem><simpara>                     the binary data "pop from chain" procesing method.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecTransformPushXmlMethod">xmlSecTransformPushXmlMethod</link>&#160;<structfield>pushXml</structfield>;</term>
<listitem><simpara>                    the XML data "push thru chain" processing method.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecTransformPopXmlMethod">xmlSecTransformPopXmlMethod</link>&#160;<structfield>popXml</structfield>;</term>
<listitem><simpara>                     the XML data "pop from chain" procesing method.
</simpara></listitem>
</varlistentry>
<varlistentry>
<term><link linkend="xmlSecTransformExecuteMethod">xmlSecTransformExecuteMethod</link>&#160;<structfield>execute</structfield>;</term>
<listitem><simpara>                    the low level data processing method used  by default
                             implementations of <parameter>pushBin</parameter>, <parameter>popBin</parameter>, <parameter>pushXml</parameter> and <parameter>popXml</parameter>.
</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="xmlSecTransformKlassGetName" role="macro">
<title>xmlSecTransformKlassGetName()</title>
<indexterm zone="xmlSecTransformKlassGetName"><primary sortas="xmlSecTransformKlassGetName">xmlSecTransformKlassGetName</primary></indexterm><programlisting>#define             xmlSecTransformKlassGetName(klass)</programlisting>
<para>
Macro. Returns transform klass name.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>klass</parameter>&#160;:</term>
<listitem><simpara>              the transofrm's klass.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformIdListId" role="macro">
<title>xmlSecTransformIdListId</title>
<indexterm zone="xmlSecTransformIdListId"><primary sortas="xmlSecTransformIdListId">xmlSecTransformIdListId</primary></indexterm><programlisting>#define xmlSecTransformIdListId xmlSecTransformIdListGetKlass()
</programlisting>
<para>
Transform klasses list klass.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformIdListGetKlass" role="function">
<title>xmlSecTransformIdListGetKlass ()</title>
<indexterm zone="xmlSecTransformIdListGetKlass"><primary sortas="xmlSecTransformIdListGetKlass">xmlSecTransformIdListGetKlass</primary></indexterm><programlisting><link linkend="xmlSecPtrListId">xmlSecPtrListId</link>     xmlSecTransformIdListGetKlass       (void);</programlisting>
<para>
The transform id list klass.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> pointer to the transform id list klass.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformIdListFind" role="function">
<title>xmlSecTransformIdListFind ()</title>
<indexterm zone="xmlSecTransformIdListFind"><primary sortas="xmlSecTransformIdListFind">xmlSecTransformIdListFind</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformIdListFind           (<link linkend="xmlSecPtrList">xmlSecPtrListPtr</link> list,
                                                         <link linkend="xmlSecTransformId">xmlSecTransformId</link> transformId);</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 transform ids list.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>transformId</parameter>&#160;:</term>
<listitem><simpara>        the transform 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="xmlSecTransformIdListFindByHref" role="function">
<title>xmlSecTransformIdListFindByHref ()</title>
<indexterm zone="xmlSecTransformIdListFindByHref"><primary sortas="xmlSecTransformIdListFindByHref">xmlSecTransformIdListFindByHref</primary></indexterm><programlisting><link linkend="xmlSecTransformId">xmlSecTransformId</link>   xmlSecTransformIdListFindByHref     (<link linkend="xmlSecPtrList">xmlSecPtrListPtr</link> list,
                                                         const <link linkend="xmlChar">xmlChar</link> *href,
                                                         <link linkend="xmlSecTransformUsage">xmlSecTransformUsage</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 transform ids list.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>href</parameter>&#160;:</term>
<listitem><simpara>               the desired transform klass href.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>usage</parameter>&#160;:</term>
<listitem><simpara>              the desired transform usage.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> transform klass is found and NULL otherwise.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformIdListFindByName" role="function">
<title>xmlSecTransformIdListFindByName ()</title>
<indexterm zone="xmlSecTransformIdListFindByName"><primary sortas="xmlSecTransformIdListFindByName">xmlSecTransformIdListFindByName</primary></indexterm><programlisting><link linkend="xmlSecTransformId">xmlSecTransformId</link>   xmlSecTransformIdListFindByName     (<link linkend="xmlSecPtrList">xmlSecPtrListPtr</link> list,
                                                         const <link linkend="xmlChar">xmlChar</link> *name,
                                                         <link linkend="xmlSecTransformUsage">xmlSecTransformUsage</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 transform ids list.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>name</parameter>&#160;:</term>
<listitem><simpara>               the desired transform klass name.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>usage</parameter>&#160;:</term>
<listitem><simpara>              the desired transform usage.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> transform klass is found and NULL otherwise.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformIdListDebugDump" role="function">
<title>xmlSecTransformIdListDebugDump ()</title>
<indexterm zone="xmlSecTransformIdListDebugDump"><primary sortas="xmlSecTransformIdListDebugDump">xmlSecTransformIdListDebugDump</primary></indexterm><programlisting><link linkend="void">void</link>                xmlSecTransformIdListDebugDump      (<link linkend="xmlSecPtrList">xmlSecPtrListPtr</link> list,
                                                         <link linkend="FILE--CAPS">FILE</link> *output);</programlisting>
<para>
Prints binary transform debug information to <parameter>output</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>list</parameter>&#160;:</term>
<listitem><simpara>               the pointer to transform 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="xmlSecTransformIdListDebugXmlDump" role="function">
<title>xmlSecTransformIdListDebugXmlDump ()</title>
<indexterm zone="xmlSecTransformIdListDebugXmlDump"><primary sortas="xmlSecTransformIdListDebugXmlDump">xmlSecTransformIdListDebugXmlDump</primary></indexterm><programlisting><link linkend="void">void</link>                xmlSecTransformIdListDebugXmlDump   (<link linkend="xmlSecPtrList">xmlSecPtrListPtr</link> list,
                                                         <link linkend="FILE--CAPS">FILE</link> *output);</programlisting>
<para>
Prints binary transform 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 transform 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="xmlSecTransformIdUnknown" role="macro">
<title>xmlSecTransformIdUnknown</title>
<indexterm zone="xmlSecTransformIdUnknown"><primary sortas="xmlSecTransformIdUnknown">xmlSecTransformIdUnknown</primary></indexterm><programlisting>#define xmlSecTransformIdUnknown                        ((xmlSecTransformId)NULL)
</programlisting>
<para>
The "unknown" transform id (NULL).</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformBase64Id" role="macro">
<title>xmlSecTransformBase64Id</title>
<indexterm zone="xmlSecTransformBase64Id"><primary sortas="xmlSecTransformBase64Id">xmlSecTransformBase64Id</primary></indexterm><programlisting>#define             xmlSecTransformBase64Id</programlisting>
<para>
The base64 encode transform klass.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformBase64GetKlass" role="function">
<title>xmlSecTransformBase64GetKlass ()</title>
<indexterm zone="xmlSecTransformBase64GetKlass"><primary sortas="xmlSecTransformBase64GetKlass">xmlSecTransformBase64GetKlass</primary></indexterm><programlisting><link linkend="xmlSecTransformId">xmlSecTransformId</link>   xmlSecTransformBase64GetKlass       (void);</programlisting>
<para>
The Base64 transform klass (http://www.w3.org/TR/xmldsig-core/<link linkend="sec-Base-64"><type>sec-Base-64</type></link>).
The normative specification for base64 decoding transforms is RFC 2045
(http://www.ietf.org/rfc/rfc2045.txt). The base64 Transform element has
no content. The input is decoded by the algorithms. This transform is
useful if an application needs to sign the raw data associated with
the encoded content of an element.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> base64 transform id.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformBase64SetLineSize" role="function">
<title>xmlSecTransformBase64SetLineSize ()</title>
<indexterm zone="xmlSecTransformBase64SetLineSize"><primary sortas="xmlSecTransformBase64SetLineSize">xmlSecTransformBase64SetLineSize</primary></indexterm><programlisting><link linkend="void">void</link>                xmlSecTransformBase64SetLineSize    (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         <link linkend="xmlSecSize">xmlSecSize</link> lineSize);</programlisting>
<para>
Sets the max line size to <parameter>lineSize</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>          the pointer to BASE64 encode transform.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>lineSize</parameter>&#160;:</term>
<listitem><simpara>           the new max line size.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformInclC14NId" role="macro">
<title>xmlSecTransformInclC14NId</title>
<indexterm zone="xmlSecTransformInclC14NId"><primary sortas="xmlSecTransformInclC14NId">xmlSecTransformInclC14NId</primary></indexterm><programlisting>#define             xmlSecTransformInclC14NId</programlisting>
<para>
The regular (inclusive) C14N without comments transform klass.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformInclC14NGetKlass" role="function">
<title>xmlSecTransformInclC14NGetKlass ()</title>
<indexterm zone="xmlSecTransformInclC14NGetKlass"><primary sortas="xmlSecTransformInclC14NGetKlass">xmlSecTransformInclC14NGetKlass</primary></indexterm><programlisting><link linkend="xmlSecTransformId">xmlSecTransformId</link>   xmlSecTransformInclC14NGetKlass     (void);</programlisting>
<para>
Inclusive (regular) canonicalization that omits comments transform klass
(http://www.w3.org/TR/xmldsig-core/<link linkend="sec-c14nAlg"><type>sec-c14nAlg</type></link> and
http://www.w3.org/TR/2001/REC-xml-c14n-20010315).</para>
<para>
</para><variablelist role="params">
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> c14n transform id.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformInclC14NWithCommentsId" role="macro">
<title>xmlSecTransformInclC14NWithCommentsId</title>
<indexterm zone="xmlSecTransformInclC14NWithCommentsId"><primary sortas="xmlSecTransformInclC14NWithCommentsId">xmlSecTransformInclC14NWithCommentsId</primary></indexterm><programlisting>#define             xmlSecTransformInclC14NWithCommentsId</programlisting>
<para>
The regular (inclusive) C14N with comments transform klass.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformInclC14NWithCommentsGetKlass" role="function">
<title>xmlSecTransformInclC14NWithCommentsGetKlass ()</title>
<indexterm zone="xmlSecTransformInclC14NWithCommentsGetKlass"><primary sortas="xmlSecTransformInclC14NWithCommentsGetKlass">xmlSecTransformInclC14NWithCommentsGetKlass</primary></indexterm><programlisting><link linkend="xmlSecTransformId">xmlSecTransformId</link>   xmlSecTransformInclC14NWithCommentsGetKlass
                                                        (void);</programlisting>
<para>
Inclusive (regular) canonicalization that includes comments transform klass
(http://www.w3.org/TR/xmldsig-core/<link linkend="sec-c14nAlg"><type>sec-c14nAlg</type></link> and
http://www.w3.org/TR/2001/REC-xml-c14n-20010315).</para>
<para>
</para><variablelist role="params">
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> c14n with comments transform id.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformInclC14N11Id" role="macro">
<title>xmlSecTransformInclC14N11Id</title>
<indexterm zone="xmlSecTransformInclC14N11Id"><primary sortas="xmlSecTransformInclC14N11Id">xmlSecTransformInclC14N11Id</primary></indexterm><programlisting>#define             xmlSecTransformInclC14N11Id</programlisting>
<para>
The regular (inclusive) C14N 1.1 without comments transform klass.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformInclC14N11GetKlass" role="function">
<title>xmlSecTransformInclC14N11GetKlass ()</title>
<indexterm zone="xmlSecTransformInclC14N11GetKlass"><primary sortas="xmlSecTransformInclC14N11GetKlass">xmlSecTransformInclC14N11GetKlass</primary></indexterm><programlisting><link linkend="xmlSecTransformId">xmlSecTransformId</link>   xmlSecTransformInclC14N11GetKlass   (void);</programlisting>
<para>
C14N version 1.1 (http://www.w3.org/TR/xml-c14n11)</para>
<para>
</para><variablelist role="params">
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> c14n v1.1 transform id.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformInclC14N11WithCommentsId" role="macro">
<title>xmlSecTransformInclC14N11WithCommentsId</title>
<indexterm zone="xmlSecTransformInclC14N11WithCommentsId"><primary sortas="xmlSecTransformInclC14N11WithCommentsId">xmlSecTransformInclC14N11WithCommentsId</primary></indexterm><programlisting>#define             xmlSecTransformInclC14N11WithCommentsId</programlisting>
<para>
The regular (inclusive) C14N 1.1 with comments transform klass.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformInclC14N11WithCommentsGetKlass" role="function">
<title>xmlSecTransformInclC14N11WithCommentsGetKlass ()</title>
<indexterm zone="xmlSecTransformInclC14N11WithCommentsGetKlass"><primary sortas="xmlSecTransformInclC14N11WithCommentsGetKlass">xmlSecTransformInclC14N11WithCommentsGetKlass</primary></indexterm><programlisting><link linkend="xmlSecTransformId">xmlSecTransformId</link>   xmlSecTransformInclC14N11WithCommentsGetKlass
                                                        (void);</programlisting>
<para>
C14N version 1.1 (http://www.w3.org/TR/xml-c14n11) with comments</para>
<para>
</para><variablelist role="params">
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> c14n v1.1 with comments transform id.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformExclC14NId" role="macro">
<title>xmlSecTransformExclC14NId</title>
<indexterm zone="xmlSecTransformExclC14NId"><primary sortas="xmlSecTransformExclC14NId">xmlSecTransformExclC14NId</primary></indexterm><programlisting>#define             xmlSecTransformExclC14NId</programlisting>
<para>
The exclusive C14N without comments transform klass.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformExclC14NGetKlass" role="function">
<title>xmlSecTransformExclC14NGetKlass ()</title>
<indexterm zone="xmlSecTransformExclC14NGetKlass"><primary sortas="xmlSecTransformExclC14NGetKlass">xmlSecTransformExclC14NGetKlass</primary></indexterm><programlisting><link linkend="xmlSecTransformId">xmlSecTransformId</link>   xmlSecTransformExclC14NGetKlass     (void);</programlisting>
<para>
Exclusive canoncicalization that ommits comments transform klass
(http://www.w3.org/TR/xml-exc-c14n/).</para>
<para>
</para><variablelist role="params">
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> exclusive c14n transform id.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformExclC14NWithCommentsId" role="macro">
<title>xmlSecTransformExclC14NWithCommentsId</title>
<indexterm zone="xmlSecTransformExclC14NWithCommentsId"><primary sortas="xmlSecTransformExclC14NWithCommentsId">xmlSecTransformExclC14NWithCommentsId</primary></indexterm><programlisting>#define             xmlSecTransformExclC14NWithCommentsId</programlisting>
<para>
The exclusive C14N with comments transform klass.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformExclC14NWithCommentsGetKlass" role="function">
<title>xmlSecTransformExclC14NWithCommentsGetKlass ()</title>
<indexterm zone="xmlSecTransformExclC14NWithCommentsGetKlass"><primary sortas="xmlSecTransformExclC14NWithCommentsGetKlass">xmlSecTransformExclC14NWithCommentsGetKlass</primary></indexterm><programlisting><link linkend="xmlSecTransformId">xmlSecTransformId</link>   xmlSecTransformExclC14NWithCommentsGetKlass
                                                        (void);</programlisting>
<para>
Exclusive canoncicalization that includes comments transform klass
(http://www.w3.org/TR/xml-exc-c14n/).</para>
<para>
</para><variablelist role="params">
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> exclusive c14n with comments transform id.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformEnvelopedId" role="macro">
<title>xmlSecTransformEnvelopedId</title>
<indexterm zone="xmlSecTransformEnvelopedId"><primary sortas="xmlSecTransformEnvelopedId">xmlSecTransformEnvelopedId</primary></indexterm><programlisting>#define             xmlSecTransformEnvelopedId</programlisting>
<para>
The "enveloped" transform klass.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformEnvelopedGetKlass" role="function">
<title>xmlSecTransformEnvelopedGetKlass ()</title>
<indexterm zone="xmlSecTransformEnvelopedGetKlass"><primary sortas="xmlSecTransformEnvelopedGetKlass">xmlSecTransformEnvelopedGetKlass</primary></indexterm><programlisting><link linkend="xmlSecTransformId">xmlSecTransformId</link>   xmlSecTransformEnvelopedGetKlass    (void);</programlisting>
<para>
The enveloped transform klass (http://www.w3.org/TR/xmldsig-core/<link linkend="sec-EnvelopedSignature"><type>sec-EnvelopedSignature</type></link>):
</para>
<para>
An enveloped signature transform T removes the whole Signature element
containing T from the digest calculation of the Reference element
containing T. The entire string of characters used by an XML processor
to match the Signature with the XML production element is removed.
The output of the transform is equivalent to the output that would
result from replacing T with an XPath transform containing the following
XPath parameter element:
</para>
<para>
&lt;XPath xmlns:dsig="&amp;dsig;"&gt;
  count(ancestor-or-self::dsig:Signature |
  <link linkend="here"><function>here()</function></link>/ancestor::dsig:Signature[1]) &gt;
  count(ancestor-or-self::dsig:Signature)&lt;/XPath&gt;
</para>
<para>
The input and output requirements of this transform are identical to
those of the XPath transform, but may only be applied to a node-set from
its parent XML document. Note that it is not necessary to use an XPath
expression evaluator to create this transform. However, this transform
MUST produce output in exactly the same manner as the XPath transform
parameterized by the XPath expression above.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> enveloped transform id.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformXPathId" role="macro">
<title>xmlSecTransformXPathId</title>
<indexterm zone="xmlSecTransformXPathId"><primary sortas="xmlSecTransformXPathId">xmlSecTransformXPathId</primary></indexterm><programlisting>#define             xmlSecTransformXPathId</programlisting>
<para>
The XPath transform klass.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformXPathGetKlass" role="function">
<title>xmlSecTransformXPathGetKlass ()</title>
<indexterm zone="xmlSecTransformXPathGetKlass"><primary sortas="xmlSecTransformXPathGetKlass">xmlSecTransformXPathGetKlass</primary></indexterm><programlisting><link linkend="xmlSecTransformId">xmlSecTransformId</link>   xmlSecTransformXPathGetKlass        (void);</programlisting>
<para>
The XPath transform evaluates given XPath expression and
intersects the result with the previous nodes set. See
http://www.w3.org/TR/xmldsig-core/<link linkend="sec-XPath"><type>sec-XPath</type></link> for more details.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> XPath transform id.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformXPath2Id" role="macro">
<title>xmlSecTransformXPath2Id</title>
<indexterm zone="xmlSecTransformXPath2Id"><primary sortas="xmlSecTransformXPath2Id">xmlSecTransformXPath2Id</primary></indexterm><programlisting>#define             xmlSecTransformXPath2Id</programlisting>
<para>
The XPath2 transform klass.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformXPath2GetKlass" role="function">
<title>xmlSecTransformXPath2GetKlass ()</title>
<indexterm zone="xmlSecTransformXPath2GetKlass"><primary sortas="xmlSecTransformXPath2GetKlass">xmlSecTransformXPath2GetKlass</primary></indexterm><programlisting><link linkend="xmlSecTransformId">xmlSecTransformId</link>   xmlSecTransformXPath2GetKlass       (void);</programlisting>
<para>
The XPath2 transform (http://www.w3.org/TR/xmldsig-filter2/).</para>
<para>
</para><variablelist role="params">
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> XPath2 transform klass.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformXPointerId" role="macro">
<title>xmlSecTransformXPointerId</title>
<indexterm zone="xmlSecTransformXPointerId"><primary sortas="xmlSecTransformXPointerId">xmlSecTransformXPointerId</primary></indexterm><programlisting>#define             xmlSecTransformXPointerId</programlisting>
<para>
The XPointer transform klass.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformXPointerGetKlass" role="function">
<title>xmlSecTransformXPointerGetKlass ()</title>
<indexterm zone="xmlSecTransformXPointerGetKlass"><primary sortas="xmlSecTransformXPointerGetKlass">xmlSecTransformXPointerGetKlass</primary></indexterm><programlisting><link linkend="xmlSecTransformId">xmlSecTransformId</link>   xmlSecTransformXPointerGetKlass     (void);</programlisting>
<para>
The XPointer transform klass
(http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt).</para>
<para>
</para><variablelist role="params">
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> XPointer transform klass.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformXPointerSetExpr" role="function">
<title>xmlSecTransformXPointerSetExpr ()</title>
<indexterm zone="xmlSecTransformXPointerSetExpr"><primary sortas="xmlSecTransformXPointerSetExpr">xmlSecTransformXPointerSetExpr</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformXPointerSetExpr      (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         const <link linkend="xmlChar">xmlChar</link> *expr,
                                                         <link linkend="xmlSecNodeSetType">xmlSecNodeSetType</link> nodeSetType,
                                                         <link linkend="xmlNode">xmlNodePtr</link> hereNode);</programlisting>
<para>
Sets the XPointer expression for an XPointer <parameter>transform</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>          the pointer to XPointer transform.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>expr</parameter>&#160;:</term>
<listitem><simpara>               the XPointer expression.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>nodeSetType</parameter>&#160;:</term>
<listitem><simpara>        the type of evaluated XPointer expression.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>hereNode</parameter>&#160;:</term>
<listitem><simpara>           the pointer to "here" node.
</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="xmlSecTransformXsltId" role="macro">
<title>xmlSecTransformXsltId</title>
<indexterm zone="xmlSecTransformXsltId"><primary sortas="xmlSecTransformXsltId">xmlSecTransformXsltId</primary></indexterm><programlisting>#define             xmlSecTransformXsltId</programlisting>
<para>
The XSLT transform klass.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformXsltGetKlass" role="function">
<title>xmlSecTransformXsltGetKlass ()</title>
<indexterm zone="xmlSecTransformXsltGetKlass"><primary sortas="xmlSecTransformXsltGetKlass">xmlSecTransformXsltGetKlass</primary></indexterm><programlisting><link linkend="xmlSecTransformId">xmlSecTransformId</link>   xmlSecTransformXsltGetKlass         (void);</programlisting>
<para>
XSLT transform klass (http://www.w3.org/TR/xmldsig-core/<link linkend="sec-XSLT"><type>sec-XSLT</type></link>):
</para>
<para>
The normative specification for XSL Transformations is [XSLT].
Specification of a namespace-qualified stylesheet element, which MUST be
the sole child of the Transform element, indicates that the specified style
sheet should be used. Whether this instantiates in-line processing of local
XSLT declarations within the resource is determined by the XSLT processing
model; the ordered application of multiple stylesheet may require multiple
Transforms. No special provision is made for the identification of a remote
stylesheet at a given URI because it can be communicated via an  xsl:include
or  xsl:import within the stylesheet child of the Transform.
</para>
<para>
This transform requires an octet stream as input. If the actual input is an
XPath node-set, then the signature application should attempt to convert it
to octets (apply Canonical XML]) as described in the Reference Processing
Model (section 4.3.3.2).]
</para>
<para>
The output of this transform is an octet stream. The processing rules for
the XSL style sheet or transform element are stated in the XSLT specification
[XSLT]. We RECOMMEND that XSLT transform authors use an output method of xml
for XML and HTML. As XSLT implementations do not produce consistent
serializations of their output, we further RECOMMEND inserting a transform
after the XSLT transform to canonicalize the output. These steps will help
to ensure interoperability of the resulting signatures among applications
that support the XSLT transform. Note that if the output is actually HTML,
then the result of these steps is logically equivalent [XHTML].</para>
<para>
</para><variablelist role="params">
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> pointer to XSLT transform klass.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformXsltSetDefaultSecurityPrefs" role="function">
<title>xmlSecTransformXsltSetDefaultSecurityPrefs ()</title>
<indexterm zone="xmlSecTransformXsltSetDefaultSecurityPrefs"><primary sortas="xmlSecTransformXsltSetDefaultSecurityPrefs">xmlSecTransformXsltSetDefaultSecurityPrefs</primary></indexterm><programlisting><link linkend="void">void</link>                xmlSecTransformXsltSetDefaultSecurityPrefs
                                                        (<link linkend="xsltSecurityPrefs">xsltSecurityPrefsPtr</link> sec);</programlisting>
<para>
Sets the new default security preferences. The xmlsec default security policy is 
to disable everything.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>sec</parameter>&#160;:</term>
<listitem><simpara> the new security preferences
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformRemoveXmlTagsC14NId" role="macro">
<title>xmlSecTransformRemoveXmlTagsC14NId</title>
<indexterm zone="xmlSecTransformRemoveXmlTagsC14NId"><primary sortas="xmlSecTransformRemoveXmlTagsC14NId">xmlSecTransformRemoveXmlTagsC14NId</primary></indexterm><programlisting>#define             xmlSecTransformRemoveXmlTagsC14NId</programlisting>
<para>
The "remove all xml tags" transform klass (used before base64 transforms).</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformRemoveXmlTagsC14NGetKlass" role="function">
<title>xmlSecTransformRemoveXmlTagsC14NGetKlass ()</title>
<indexterm zone="xmlSecTransformRemoveXmlTagsC14NGetKlass"><primary sortas="xmlSecTransformRemoveXmlTagsC14NGetKlass">xmlSecTransformRemoveXmlTagsC14NGetKlass</primary></indexterm><programlisting><link linkend="xmlSecTransformId">xmlSecTransformId</link>   xmlSecTransformRemoveXmlTagsC14NGetKlass
                                                        (void);</programlisting>
<para>
The "remove xml tags" transform klass (http://www.w3.org/TR/xmldsig-core/<link linkend="sec-Base-64"><type>sec-Base-64</type></link>):
Base64 transform requires an octet stream for input. If an XPath node-set
(or sufficiently functional alternative) is given as input, then it is
converted to an octet stream by performing operations logically equivalent
to 1) applying an XPath transform with expression self::<link linkend="text"><function>text()</function></link>, then 2)
taking the string-value of the node-set. Thus, if an XML element is
identified by a barename XPointer in the Reference URI, and its content
consists solely of base64 encoded character data, then this transform
automatically strips away the start and end tags of the identified element
and any of its descendant elements as well as any descendant comments and
processing instructions. The output of this transform is an octet stream.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> "remove xml tags" transform id.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformVisa3DHackId" role="macro">
<title>xmlSecTransformVisa3DHackId</title>
<indexterm zone="xmlSecTransformVisa3DHackId"><primary sortas="xmlSecTransformVisa3DHackId">xmlSecTransformVisa3DHackId</primary></indexterm><programlisting>#define             xmlSecTransformVisa3DHackId</programlisting>
<para>
Selects node subtree by given node id string. The only reason why we need this
is Visa3D protocol. It doesn't follow XML/XPointer/XMLDSig specs and allows
invalid XPointer expressions in the URI attribute. Since we couldn't evaluate
such expressions thru XPath/XPointer engine, we need to have this hack here.</para>
<para>
</para></refsect2>
<refsect2 id="xmlSecTransformVisa3DHackGetKlass" role="function">
<title>xmlSecTransformVisa3DHackGetKlass ()</title>
<indexterm zone="xmlSecTransformVisa3DHackGetKlass"><primary sortas="xmlSecTransformVisa3DHackGetKlass">xmlSecTransformVisa3DHackGetKlass</primary></indexterm><programlisting><link linkend="xmlSecTransformId">xmlSecTransformId</link>   xmlSecTransformVisa3DHackGetKlass   (void);</programlisting>
<para>
The Visa3DHack transform klass. The only reason why we need this
is Visa3D protocol. It doesn't follow XML/XPointer/XMLDSig specs and allows
invalid XPointer expressions in the URI attribute. Since we couldn't evaluate
such expressions thru XPath/XPointer engine, we need to have this hack here.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Visa3DHack transform klass.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="xmlSecTransformVisa3DHackSetID" role="function">
<title>xmlSecTransformVisa3DHackSetID ()</title>
<indexterm zone="xmlSecTransformVisa3DHackSetID"><primary sortas="xmlSecTransformVisa3DHackSetID">xmlSecTransformVisa3DHackSetID</primary></indexterm><programlisting><link linkend="int">int</link>                 xmlSecTransformVisa3DHackSetID      (<link linkend="xmlSecTransform">xmlSecTransformPtr</link> transform,
                                                         const <link linkend="xmlChar">xmlChar</link> *id);</programlisting>
<para>
Sets the ID value for an Visa3DHack <parameter>transform</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>transform</parameter>&#160;:</term>
<listitem><simpara>          the pointer to Visa3DHack transform.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>id</parameter>&#160;:</term>
<listitem><simpara>                 the ID value.
</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>

</refsect1>




</refentry>
