diff options
Diffstat (limited to 'include/xmlsec/transforms.h')
-rw-r--r-- | include/xmlsec/transforms.h | 933 |
1 files changed, 462 insertions, 471 deletions
diff --git a/include/xmlsec/transforms.h b/include/xmlsec/transforms.h index 4008caef..f0c70c91 100644 --- a/include/xmlsec/transforms.h +++ b/include/xmlsec/transforms.h @@ -1,19 +1,19 @@ -/** +/** * XML Security Library (http://www.aleksey.com/xmlsec). * - * The transforms engine + * The transforms engine * * This is free software; see Copyright file in the source * distribution for preciese wording. - * + * * Copyright (C) 2002-2003 Aleksey Sanin <aleksey@aleksey.com> */ #ifndef __XMLSEC_TRANSFORMS_H__ -#define __XMLSEC_TRANSFORMS_H__ +#define __XMLSEC_TRANSFORMS_H__ #ifdef __cplusplus extern "C" { -#endif /* __cplusplus */ +#endif /* __cplusplus */ #include <libxml/tree.h> #include <libxml/xpath.h> @@ -24,35 +24,35 @@ extern "C" { #include <xmlsec/nodeset.h> #include <xmlsec/keys.h> -typedef const struct _xmlSecTransformKlass xmlSecTransformKlass, - *xmlSecTransformId; +typedef const struct _xmlSecTransformKlass xmlSecTransformKlass, + *xmlSecTransformId; /** * XMLSEC_TRANSFORM_BINARY_CHUNK: * - * The binary data chunks size. XMLSec processes binary data one chunk + * The binary data chunks size. XMLSec processes binary data one chunk * at a time. Changing this impacts xmlsec memory usage and performance. */ -#define XMLSEC_TRANSFORM_BINARY_CHUNK 64 +#define XMLSEC_TRANSFORM_BINARY_CHUNK 64 /********************************************************************** * - * Hi-level functions + * High-level functions * *********************************************************************/ -XMLSEC_EXPORT xmlSecPtrListPtr xmlSecTransformIdsGet (void); -XMLSEC_EXPORT int xmlSecTransformIdsInit (void); -XMLSEC_EXPORT void xmlSecTransformIdsShutdown (void); -XMLSEC_EXPORT int xmlSecTransformIdsRegisterDefault(void); -XMLSEC_EXPORT int xmlSecTransformIdsRegister (xmlSecTransformId id); +XMLSEC_EXPORT xmlSecPtrListPtr xmlSecTransformIdsGet (void); +XMLSEC_EXPORT int xmlSecTransformIdsInit (void); +XMLSEC_EXPORT void xmlSecTransformIdsShutdown (void); +XMLSEC_EXPORT int xmlSecTransformIdsRegisterDefault(void); +XMLSEC_EXPORT int xmlSecTransformIdsRegister (xmlSecTransformId id); /** * xmlSecTransformStatus: - * @xmlSecTransformStatusNone: the status unknown. - * @xmlSecTransformStatusWorking: the transform is executed. - * @xmlSecTransformStatusFinished: the transform finished - * @xmlSecTransformStatusOk: the transform succeeded. - * @xmlSecTransformStatusFail: the transform failed (an error occur). + * @xmlSecTransformStatusNone: the status unknown. + * @xmlSecTransformStatusWorking: the transform is executed. + * @xmlSecTransformStatusFinished: the transform finished + * @xmlSecTransformStatusOk: the transform succeeded. + * @xmlSecTransformStatusFail: the transform failed (an error occur). * * The transform execution status. */ @@ -66,9 +66,9 @@ typedef enum { /** * xmlSecTransformMode: - * @xmlSecTransformModeNone: the mode is unknown. - * @xmlSecTransformModePush: pushing data thru transform. - * @xmlSecTransformModePop: popping data from transform. + * @xmlSecTransformModeNone: the mode is unknown. + * @xmlSecTransformModePush: pushing data thru transform. + * @xmlSecTransformModePop: popping data from transform. * * The transform operation mode */ @@ -80,14 +80,14 @@ typedef enum { /** * xmlSecTransformOperation: - * @xmlSecTransformOperationNone: the operation is unknown. - * @xmlSecTransformOperationEncode: the encode operation (for base64 transform). - * @xmlSecTransformOperationDecode: the decode operation (for base64 transform). - * @xmlSecTransformOperationSign: the sign or digest operation. - * @xmlSecTransformOperationVerify: the verification of signature or digest operation. - * @xmlSecTransformOperationEncrypt: the encryption operation. - * @xmlSecTransformOperationDecrypt: the decryption operation. - * + * @xmlSecTransformOperationNone: the operation is unknown. + * @xmlSecTransformOperationEncode: the encode operation (for base64 transform). + * @xmlSecTransformOperationDecode: the decode operation (for base64 transform). + * @xmlSecTransformOperationSign: the sign or digest operation. + * @xmlSecTransformOperationVerify: the verification of signature or digest operation. + * @xmlSecTransformOperationEncrypt: the encryption operation. + * @xmlSecTransformOperationDecrypt: the decryption operation. + * * The transform operation. */ typedef enum { @@ -110,52 +110,52 @@ typedef enum { * * URI transform type bit mask. */ -typedef unsigned int xmlSecTransformUriType; +typedef unsigned int xmlSecTransformUriType; /** * xmlSecTransformUriTypeNone: * * The URI type is unknown or not set. */ -#define xmlSecTransformUriTypeNone 0x0000 +#define xmlSecTransformUriTypeNone 0x0000 /** * xmlSecTransformUriTypeEmpty: * * The empty URI ("") type. */ -#define xmlSecTransformUriTypeEmpty 0x0001 +#define xmlSecTransformUriTypeEmpty 0x0001 /** * xmlSecTransformUriTypeSameDocument: * * The smae document ("#...") but not empty ("") URI type. */ -#define xmlSecTransformUriTypeSameDocument 0x0002 +#define xmlSecTransformUriTypeSameDocument 0x0002 /** * xmlSecTransformUriTypeLocal: * * The local URI ("file:///....") type. */ -#define xmlSecTransformUriTypeLocal 0x0004 +#define xmlSecTransformUriTypeLocal 0x0004 /** * xmlSecTransformUriTypeRemote: * * The remote URI type. */ -#define xmlSecTransformUriTypeRemote 0x0008 +#define xmlSecTransformUriTypeRemote 0x0008 /** * xmlSecTransformUriTypeAny: * * Any URI type. */ -#define xmlSecTransformUriTypeAny 0xFFFF +#define xmlSecTransformUriTypeAny 0xFFFF -XMLSEC_EXPORT int xmlSecTransformUriTypeCheck (xmlSecTransformUriType type, - const xmlChar* uri); +XMLSEC_EXPORT int xmlSecTransformUriTypeCheck (xmlSecTransformUriType type, + const xmlChar* uri); /************************************************************************** * * xmlSecTransformDataType @@ -163,31 +163,31 @@ XMLSEC_EXPORT int xmlSecTransformUriTypeCheck (xmlSecTransformUriType type, *************************************************************************/ /** * xmlSecTransformDataType: - * + * * Transform data type bit mask. - */ -typedef xmlSecByte xmlSecTransformDataType; + */ +typedef xmlSecByte xmlSecTransformDataType; /** * xmlSecTransformDataTypeUnknown: * * The transform data type is unknown or nor data expected. */ -#define xmlSecTransformDataTypeUnknown 0x0000 +#define xmlSecTransformDataTypeUnknown 0x0000 /** * xmlSecTransformDataTypeBin: * * The binary transform data. */ -#define xmlSecTransformDataTypeBin 0x0001 +#define xmlSecTransformDataTypeBin 0x0001 /** * xmlSecTransformDataTypeXml: * * The xml transform data. */ -#define xmlSecTransformDataTypeXml 0x0002 +#define xmlSecTransformDataTypeXml 0x0002 /************************************************************************** * @@ -199,56 +199,56 @@ typedef xmlSecByte xmlSecTransformDataType; * * The transform usage bit mask. */ -typedef unsigned int xmlSecTransformUsage; +typedef unsigned int xmlSecTransformUsage; /** * xmlSecTransformUsageUnknown: * * Transforms usage is unknown or undefined. */ -#define xmlSecTransformUsageUnknown 0x0000 +#define xmlSecTransformUsageUnknown 0x0000 /** * xmlSecTransformUsageDSigTransform: * * Transform could be used in <dsig:Transform>. */ -#define xmlSecTransformUsageDSigTransform 0x0001 +#define xmlSecTransformUsageDSigTransform 0x0001 /** * xmlSecTransformUsageC14NMethod: * * Transform could be used in <dsig:CanonicalizationMethod>. */ -#define xmlSecTransformUsageC14NMethod 0x0002 +#define xmlSecTransformUsageC14NMethod 0x0002 /** * xmlSecTransformUsageDigestMethod: * * Transform could be used in <dsig:DigestMethod>. */ -#define xmlSecTransformUsageDigestMethod 0x0004 +#define xmlSecTransformUsageDigestMethod 0x0004 -/** - * xmlSecTransformUsageSignatureMethod: +/** + * xmlSecTransformUsageSignatureMethod: * * Transform could be used in <dsig:SignatureMethod>. */ -#define xmlSecTransformUsageSignatureMethod 0x0008 +#define xmlSecTransformUsageSignatureMethod 0x0008 /** * xmlSecTransformUsageEncryptionMethod: * * Transform could be used in <enc:EncryptionMethod>. */ -#define xmlSecTransformUsageEncryptionMethod 0x0010 +#define xmlSecTransformUsageEncryptionMethod 0x0010 /** * xmlSecTransformUsageAny: * * Transform could be used for operation. */ -#define xmlSecTransformUsageAny 0xFFFF +#define xmlSecTransformUsageAny 0xFFFF /************************************************************************** * @@ -257,7 +257,7 @@ typedef unsigned int xmlSecTransformUsage; *************************************************************************/ /** * xmlSecTransformCtxPreExecuteCallback: - * @transformCtx: the pointer to transform's context. + * @transformCtx: the pointer to transform's context. * * The callback called after creating transforms chain but before * starting data processing. Application can use this callback to @@ -267,107 +267,107 @@ typedef unsigned int xmlSecTransformUsage; * Returns: 0 on success and a negative value otherwise (in this case, * transforms chain will not be executed and xmlsec processing stops). */ -typedef int (*xmlSecTransformCtxPreExecuteCallback) (xmlSecTransformCtxPtr transformCtx); +typedef int (*xmlSecTransformCtxPreExecuteCallback) (xmlSecTransformCtxPtr transformCtx); /** * XMLSEC_TRANSFORMCTX_FLAGS_USE_VISA3D_HACK: * * 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. + * documents that don't follow XML, XPointer and XML DSig specifications. */ -#define XMLSEC_TRANSFORMCTX_FLAGS_USE_VISA3D_HACK 0x00000001 +#define XMLSEC_TRANSFORMCTX_FLAGS_USE_VISA3D_HACK 0x00000001 /** * xmlSecTransformCtx: - * @userData: the pointer to user data (xmlsec and xmlsec-crypto never - * touch this). - * @flags: the bit mask flags to control transforms execution - * (reserved for the future). - * @flags2: the bit mask flags to control transforms execution - * (reserved for the future). - * @enabledUris: the allowed transform data source uri types. - * @enabledTransforms: the list of enabled transforms; if list is empty (default) - * then all registered transforms are enabled. - * @preExecCallback: 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). - * @result: the pointer to transforms result buffer. - * @status: the transforms chain processng status. - * @uri: the data source URI without xpointer expression. - * @xptrExpr: the xpointer expression from data source URI (if any). - * @first: the first transform in the chain. - * @last: the last transform in the chain. - * @reserved0: reserved for the future. - * @reserved1: reserved for the future. + * @userData: the pointer to user data (xmlsec and xmlsec-crypto never + * touch this). + * @flags: the bit mask flags to control transforms execution + * (reserved for the future). + * @flags2: the bit mask flags to control transforms execution + * (reserved for the future). + * @enabledUris: the allowed transform data source uri types. + * @enabledTransforms: the list of enabled transforms; if list is empty (default) + * then all registered transforms are enabled. + * @preExecCallback: 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). + * @result: the pointer to transforms result buffer. + * @status: the transforms chain processng status. + * @uri: the data source URI without xpointer expression. + * @xptrExpr: the xpointer expression from data source URI (if any). + * @first: the first transform in the chain. + * @last: the last transform in the chain. + * @reserved0: reserved for the future. + * @reserved1: reserved for the future. * * The transform execution context. */ struct _xmlSecTransformCtx { /* user settings */ - void* userData; - unsigned int flags; - unsigned int flags2; - xmlSecTransformUriType enabledUris; - xmlSecPtrList enabledTransforms; - xmlSecTransformCtxPreExecuteCallback preExecCallback; - + 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; + xmlSecBufferPtr result; + xmlSecTransformStatus status; + xmlChar* uri; + xmlChar* xptrExpr; + xmlSecTransformPtr first; + xmlSecTransformPtr last; /* for the future */ - void* reserved0; - void* reserved1; + void* reserved0; + void* reserved1; }; -XMLSEC_EXPORT xmlSecTransformCtxPtr xmlSecTransformCtxCreate (void); -XMLSEC_EXPORT void xmlSecTransformCtxDestroy (xmlSecTransformCtxPtr ctx); -XMLSEC_EXPORT int xmlSecTransformCtxInitialize (xmlSecTransformCtxPtr ctx); -XMLSEC_EXPORT void xmlSecTransformCtxFinalize (xmlSecTransformCtxPtr ctx); -XMLSEC_EXPORT void xmlSecTransformCtxReset (xmlSecTransformCtxPtr ctx); -XMLSEC_EXPORT int xmlSecTransformCtxCopyUserPref (xmlSecTransformCtxPtr dst, - xmlSecTransformCtxPtr src); -XMLSEC_EXPORT int xmlSecTransformCtxSetUri (xmlSecTransformCtxPtr ctx, - const xmlChar* uri, - xmlNodePtr hereNode); -XMLSEC_EXPORT int xmlSecTransformCtxAppend (xmlSecTransformCtxPtr ctx, - xmlSecTransformPtr transform); -XMLSEC_EXPORT int xmlSecTransformCtxPrepend (xmlSecTransformCtxPtr ctx, - xmlSecTransformPtr transform); -XMLSEC_EXPORT xmlSecTransformPtr xmlSecTransformCtxCreateAndAppend(xmlSecTransformCtxPtr ctx, - xmlSecTransformId id); -XMLSEC_EXPORT xmlSecTransformPtr xmlSecTransformCtxCreateAndPrepend(xmlSecTransformCtxPtr ctx, - xmlSecTransformId id); -XMLSEC_EXPORT xmlSecTransformPtr xmlSecTransformCtxNodeRead (xmlSecTransformCtxPtr ctx, - xmlNodePtr node, - xmlSecTransformUsage usage); -XMLSEC_EXPORT int xmlSecTransformCtxNodesListRead (xmlSecTransformCtxPtr ctx, - xmlNodePtr node, - xmlSecTransformUsage usage); -XMLSEC_EXPORT int xmlSecTransformCtxPrepare (xmlSecTransformCtxPtr ctx, - xmlSecTransformDataType inputDataType); -XMLSEC_EXPORT int xmlSecTransformCtxBinaryExecute (xmlSecTransformCtxPtr ctx, - const xmlSecByte* data, - xmlSecSize dataSize); -XMLSEC_EXPORT int xmlSecTransformCtxUriExecute (xmlSecTransformCtxPtr ctx, - const xmlChar* uri); -XMLSEC_EXPORT int xmlSecTransformCtxXmlExecute (xmlSecTransformCtxPtr ctx, - xmlSecNodeSetPtr nodes); -XMLSEC_EXPORT int xmlSecTransformCtxExecute (xmlSecTransformCtxPtr ctx, - xmlDocPtr doc); -XMLSEC_EXPORT void xmlSecTransformCtxDebugDump (xmlSecTransformCtxPtr ctx, - FILE* output); -XMLSEC_EXPORT void xmlSecTransformCtxDebugXmlDump (xmlSecTransformCtxPtr ctx, - FILE* output); - +XMLSEC_EXPORT xmlSecTransformCtxPtr xmlSecTransformCtxCreate (void); +XMLSEC_EXPORT void xmlSecTransformCtxDestroy (xmlSecTransformCtxPtr ctx); +XMLSEC_EXPORT int xmlSecTransformCtxInitialize (xmlSecTransformCtxPtr ctx); +XMLSEC_EXPORT void xmlSecTransformCtxFinalize (xmlSecTransformCtxPtr ctx); +XMLSEC_EXPORT void xmlSecTransformCtxReset (xmlSecTransformCtxPtr ctx); +XMLSEC_EXPORT int xmlSecTransformCtxCopyUserPref (xmlSecTransformCtxPtr dst, + xmlSecTransformCtxPtr src); +XMLSEC_EXPORT int xmlSecTransformCtxSetUri (xmlSecTransformCtxPtr ctx, + const xmlChar* uri, + xmlNodePtr hereNode); +XMLSEC_EXPORT int xmlSecTransformCtxAppend (xmlSecTransformCtxPtr ctx, + xmlSecTransformPtr transform); +XMLSEC_EXPORT int xmlSecTransformCtxPrepend (xmlSecTransformCtxPtr ctx, + xmlSecTransformPtr transform); +XMLSEC_EXPORT xmlSecTransformPtr xmlSecTransformCtxCreateAndAppend(xmlSecTransformCtxPtr ctx, + xmlSecTransformId id); +XMLSEC_EXPORT xmlSecTransformPtr xmlSecTransformCtxCreateAndPrepend(xmlSecTransformCtxPtr ctx, + xmlSecTransformId id); +XMLSEC_EXPORT xmlSecTransformPtr xmlSecTransformCtxNodeRead (xmlSecTransformCtxPtr ctx, + xmlNodePtr node, + xmlSecTransformUsage usage); +XMLSEC_EXPORT int xmlSecTransformCtxNodesListRead (xmlSecTransformCtxPtr ctx, + xmlNodePtr node, + xmlSecTransformUsage usage); +XMLSEC_EXPORT int xmlSecTransformCtxPrepare (xmlSecTransformCtxPtr ctx, + xmlSecTransformDataType inputDataType); +XMLSEC_EXPORT int xmlSecTransformCtxBinaryExecute (xmlSecTransformCtxPtr ctx, + const xmlSecByte* data, + xmlSecSize dataSize); +XMLSEC_EXPORT int xmlSecTransformCtxUriExecute (xmlSecTransformCtxPtr ctx, + const xmlChar* uri); +XMLSEC_EXPORT int xmlSecTransformCtxXmlExecute (xmlSecTransformCtxPtr ctx, + xmlSecNodeSetPtr nodes); +XMLSEC_EXPORT int xmlSecTransformCtxExecute (xmlSecTransformCtxPtr ctx, + xmlDocPtr doc); +XMLSEC_EXPORT void xmlSecTransformCtxDebugDump (xmlSecTransformCtxPtr ctx, + FILE* output); +XMLSEC_EXPORT void xmlSecTransformCtxDebugXmlDump (xmlSecTransformCtxPtr ctx, + FILE* output); + /************************************************************************** * * xmlSecTransform @@ -375,450 +375,438 @@ XMLSEC_EXPORT void xmlSecTransformCtxDebugXmlDump (xmlSecTransformCtxPtr ctx, *************************************************************************/ /** * xmlSecTransform: - * @id: the transform id (pointer to #xmlSecTransformId). - * @operation: the transform's opertaion. - * @status: the current status. - * @hereNode: the pointer to transform's <dsig:Transform /> node. - * @next: the pointer to next transform in the chain. - * @prev: the pointer to previous transform in the chain. - * @inBuf: the input binary data buffer. - * @outBuf: the output binary data buffer. - * @inNodes: the input XML nodes. - * @outNodes: the output XML nodes. - * @reserved0: reserved for the future. - * @reserved1: reserved for the future. + * @id: the transform id (pointer to #xmlSecTransformId). + * @operation: the transform's opertaion. + * @status: the current status. + * @hereNode: the pointer to transform's <dsig:Transform /> node. + * @next: the pointer to next transform in the chain. + * @prev: the pointer to previous transform in the chain. + * @inBuf: the input binary data buffer. + * @outBuf: the output binary data buffer. + * @inNodes: the input XML nodes. + * @outNodes: the output XML nodes. + * @reserved0: reserved for the future. + * @reserved1: reserved for the future. * * The transform structure. */ struct _xmlSecTransform { - xmlSecTransformId id; - xmlSecTransformOperation operation; - xmlSecTransformStatus status; - xmlNodePtr hereNode; + xmlSecTransformId id; + xmlSecTransformOperation operation; + xmlSecTransformStatus status; + xmlNodePtr hereNode; /* transforms chain */ - xmlSecTransformPtr next; - xmlSecTransformPtr prev; + xmlSecTransformPtr next; + xmlSecTransformPtr prev; /* binary data */ - xmlSecBuffer inBuf; - xmlSecBuffer outBuf; - + xmlSecBuffer inBuf; + xmlSecBuffer outBuf; + /* xml data */ - xmlSecNodeSetPtr inNodes; - xmlSecNodeSetPtr outNodes; + xmlSecNodeSetPtr inNodes; + xmlSecNodeSetPtr outNodes; - /* reserved for the future */ - void* reserved0; - void* reserved1; + /* reserved for the future */ + void* reserved0; + void* reserved1; }; -XMLSEC_EXPORT xmlSecTransformPtr xmlSecTransformCreate (xmlSecTransformId id); -XMLSEC_EXPORT void xmlSecTransformDestroy (xmlSecTransformPtr transform); -XMLSEC_EXPORT xmlSecTransformPtr xmlSecTransformNodeRead (xmlNodePtr node, - xmlSecTransformUsage usage, - xmlSecTransformCtxPtr transformCtx); -XMLSEC_EXPORT int xmlSecTransformPump (xmlSecTransformPtr left, - xmlSecTransformPtr right, - xmlSecTransformCtxPtr transformCtx); -XMLSEC_EXPORT int xmlSecTransformSetKey (xmlSecTransformPtr transform, - xmlSecKeyPtr key); -XMLSEC_EXPORT int xmlSecTransformSetKeyReq(xmlSecTransformPtr transform, - xmlSecKeyReqPtr keyReq); -XMLSEC_EXPORT int xmlSecTransformVerify (xmlSecTransformPtr transform, - const xmlSecByte* data, - xmlSecSize dataSize, - xmlSecTransformCtxPtr transformCtx); -XMLSEC_EXPORT int xmlSecTransformVerifyNodeContent(xmlSecTransformPtr transform, - xmlNodePtr node, - xmlSecTransformCtxPtr transformCtx); -XMLSEC_EXPORT xmlSecTransformDataType xmlSecTransformGetDataType(xmlSecTransformPtr transform, - xmlSecTransformMode mode, - xmlSecTransformCtxPtr transformCtx); -XMLSEC_EXPORT int xmlSecTransformPushBin (xmlSecTransformPtr transform, - const xmlSecByte* data, - xmlSecSize dataSize, - int final, - xmlSecTransformCtxPtr transformCtx); -XMLSEC_EXPORT int xmlSecTransformPopBin (xmlSecTransformPtr transform, - xmlSecByte* data, - xmlSecSize maxDataSize, - xmlSecSize* dataSize, - xmlSecTransformCtxPtr transformCtx); -XMLSEC_EXPORT int xmlSecTransformPushXml (xmlSecTransformPtr transform, - xmlSecNodeSetPtr nodes, - xmlSecTransformCtxPtr transformCtx); -XMLSEC_EXPORT int xmlSecTransformPopXml (xmlSecTransformPtr transform, - xmlSecNodeSetPtr* nodes, - xmlSecTransformCtxPtr transformCtx); -XMLSEC_EXPORT int xmlSecTransformExecute (xmlSecTransformPtr transform, - int last, - xmlSecTransformCtxPtr transformCtx); -XMLSEC_EXPORT void xmlSecTransformDebugDump(xmlSecTransformPtr transform, - FILE* output); -XMLSEC_EXPORT void xmlSecTransformDebugXmlDump(xmlSecTransformPtr transform, - FILE* output); +XMLSEC_EXPORT xmlSecTransformPtr xmlSecTransformCreate (xmlSecTransformId id); +XMLSEC_EXPORT void xmlSecTransformDestroy (xmlSecTransformPtr transform); +XMLSEC_EXPORT xmlSecTransformPtr xmlSecTransformNodeRead (xmlNodePtr node, + xmlSecTransformUsage usage, + xmlSecTransformCtxPtr transformCtx); +XMLSEC_EXPORT int xmlSecTransformPump (xmlSecTransformPtr left, + xmlSecTransformPtr right, + xmlSecTransformCtxPtr transformCtx); +XMLSEC_EXPORT int xmlSecTransformSetKey (xmlSecTransformPtr transform, + xmlSecKeyPtr key); +XMLSEC_EXPORT int xmlSecTransformSetKeyReq(xmlSecTransformPtr transform, + xmlSecKeyReqPtr keyReq); +XMLSEC_EXPORT int xmlSecTransformVerify (xmlSecTransformPtr transform, + const xmlSecByte* data, + xmlSecSize dataSize, + xmlSecTransformCtxPtr transformCtx); +XMLSEC_EXPORT int xmlSecTransformVerifyNodeContent(xmlSecTransformPtr transform, + xmlNodePtr node, + xmlSecTransformCtxPtr transformCtx); +XMLSEC_EXPORT xmlSecTransformDataType xmlSecTransformGetDataType(xmlSecTransformPtr transform, + xmlSecTransformMode mode, + xmlSecTransformCtxPtr transformCtx); +XMLSEC_EXPORT int xmlSecTransformPushBin (xmlSecTransformPtr transform, + const xmlSecByte* data, + xmlSecSize dataSize, + int final, + xmlSecTransformCtxPtr transformCtx); +XMLSEC_EXPORT int xmlSecTransformPopBin (xmlSecTransformPtr transform, + xmlSecByte* data, + xmlSecSize maxDataSize, + xmlSecSize* dataSize, + xmlSecTransformCtxPtr transformCtx); +XMLSEC_EXPORT int xmlSecTransformPushXml (xmlSecTransformPtr transform, + xmlSecNodeSetPtr nodes, + xmlSecTransformCtxPtr transformCtx); +XMLSEC_EXPORT int xmlSecTransformPopXml (xmlSecTransformPtr transform, + xmlSecNodeSetPtr* nodes, + xmlSecTransformCtxPtr transformCtx); +XMLSEC_EXPORT int xmlSecTransformExecute (xmlSecTransformPtr transform, + int last, + xmlSecTransformCtxPtr transformCtx); +XMLSEC_EXPORT void xmlSecTransformDebugDump(xmlSecTransformPtr transform, + FILE* output); +XMLSEC_EXPORT void xmlSecTransformDebugXmlDump(xmlSecTransformPtr transform, + FILE* output); /** * xmlSecTransformGetName: - * @transform: the pointer to transform. + * @transform: the pointer to transform. * * Macro. Returns transform name. */ #define xmlSecTransformGetName(transform) \ - ((xmlSecTransformIsValid((transform))) ? \ - xmlSecTransformKlassGetName((transform)->id) : NULL) + ((xmlSecTransformIsValid((transform))) ? \ + xmlSecTransformKlassGetName((transform)->id) : NULL) /** * xmlSecTransformIsValid: - * @transform: the pointer to transform. + * @transform: the pointer to transform. * * Macro. Returns 1 if the @transform is valid or 0 otherwise. */ #define xmlSecTransformIsValid(transform) \ - ((( transform ) != NULL) && \ - (( transform )->id != NULL) && \ - (( transform )->id->klassSize >= sizeof(xmlSecTransformKlass)) && \ - (( transform )->id->objSize >= sizeof(xmlSecTransform)) && \ - (( transform )->id->name != NULL)) - -/** - * xmlSecTransformCheckType: - * @transform: the pointer to transform. - * @t: the transform type. - * - * Macro. Returns 1 if the @transform is valid and has specified type @t - * or 0 otherwise. - */ -#define xmlSecTransformCheckType(transform, t) \ - (xmlSecTransformIsValid(( transform )) && \ - ((( transform )->id->type) == ( t ))) + ((( transform ) != NULL) && \ + (( transform )->id != NULL) && \ + (( transform )->id->klassSize >= sizeof(xmlSecTransformKlass)) && \ + (( transform )->id->objSize >= sizeof(xmlSecTransform)) && \ + (( transform )->id->name != NULL)) /** * xmlSecTransformCheckId: - * @transform: the pointer to transform. - * @i: the transform id. + * @transform: the pointer to transform. + * @i: the transform id. * - * Macro. Returns 1 if the @transform is valid and has specified id @i + * Macro. Returns 1 if the @transform is valid and has specified id @i * or 0 otherwise. */ #define xmlSecTransformCheckId(transform, i) \ - (xmlSecTransformIsValid(( transform )) && \ - ((((const xmlSecTransformId) (( transform )->id))) == ( i ))) + (xmlSecTransformIsValid(( transform )) && \ + ((((const xmlSecTransformId) (( transform )->id))) == ( i ))) /** * xmlSecTransformCheckSize: - * @transform: the pointer to transform. - * @size: the transform object size. + * @transform: the pointer to transform. + * @size: the transform object size. * * Macro. Returns 1 if the @transform is valid and has at least @size * bytes or 0 otherwise. */ #define xmlSecTransformCheckSize(transform, size) \ - (xmlSecTransformIsValid(( transform )) && \ - ((( transform )->id->objSize) >= ( size ))) + (xmlSecTransformIsValid(( transform )) && \ + ((( transform )->id->objSize) >= ( size ))) /************************************************************************ * * Operations on transforms chain * - ************************************************************************/ -XMLSEC_EXPORT int xmlSecTransformConnect (xmlSecTransformPtr left, - xmlSecTransformPtr right, - xmlSecTransformCtxPtr transformCtx); -XMLSEC_EXPORT void xmlSecTransformRemove (xmlSecTransformPtr transform); + ************************************************************************/ +XMLSEC_EXPORT int xmlSecTransformConnect (xmlSecTransformPtr left, + xmlSecTransformPtr right, + xmlSecTransformCtxPtr transformCtx); +XMLSEC_EXPORT void xmlSecTransformRemove (xmlSecTransformPtr transform); /************************************************************************ * * Default callbacks, most of the transforms can use them * - ************************************************************************/ -XMLSEC_EXPORT xmlSecTransformDataType xmlSecTransformDefaultGetDataType(xmlSecTransformPtr transform, - xmlSecTransformMode mode, - xmlSecTransformCtxPtr transformCtx); -XMLSEC_EXPORT int xmlSecTransformDefaultPushBin(xmlSecTransformPtr transform, - const xmlSecByte* data, - xmlSecSize dataSize, - int final, - xmlSecTransformCtxPtr transformCtx); -XMLSEC_EXPORT int xmlSecTransformDefaultPopBin(xmlSecTransformPtr transform, - xmlSecByte* data, - xmlSecSize maxDataSize, - xmlSecSize* dataSize, - xmlSecTransformCtxPtr transformCtx); -XMLSEC_EXPORT int xmlSecTransformDefaultPushXml(xmlSecTransformPtr transform, - xmlSecNodeSetPtr nodes, - xmlSecTransformCtxPtr transformCtx); -XMLSEC_EXPORT int xmlSecTransformDefaultPopXml(xmlSecTransformPtr transform, - xmlSecNodeSetPtr* nodes, - xmlSecTransformCtxPtr transformCtx); + ************************************************************************/ +XMLSEC_EXPORT xmlSecTransformDataType xmlSecTransformDefaultGetDataType(xmlSecTransformPtr transform, + xmlSecTransformMode mode, + xmlSecTransformCtxPtr transformCtx); +XMLSEC_EXPORT int xmlSecTransformDefaultPushBin(xmlSecTransformPtr transform, + const xmlSecByte* data, + xmlSecSize dataSize, + int final, + xmlSecTransformCtxPtr transformCtx); +XMLSEC_EXPORT int xmlSecTransformDefaultPopBin(xmlSecTransformPtr transform, + xmlSecByte* data, + xmlSecSize maxDataSize, + xmlSecSize* dataSize, + xmlSecTransformCtxPtr transformCtx); +XMLSEC_EXPORT int xmlSecTransformDefaultPushXml(xmlSecTransformPtr transform, + xmlSecNodeSetPtr nodes, + xmlSecTransformCtxPtr transformCtx); +XMLSEC_EXPORT int xmlSecTransformDefaultPopXml(xmlSecTransformPtr transform, + xmlSecNodeSetPtr* nodes, + xmlSecTransformCtxPtr transformCtx); /************************************************************************ * * IO buffers for transforms * - ************************************************************************/ -XMLSEC_EXPORT xmlOutputBufferPtr xmlSecTransformCreateOutputBuffer(xmlSecTransformPtr transform, - xmlSecTransformCtxPtr transformCtx); -XMLSEC_EXPORT xmlParserInputBufferPtr xmlSecTransformCreateInputBuffer(xmlSecTransformPtr transform, - xmlSecTransformCtxPtr transformCtx); + ************************************************************************/ +XMLSEC_EXPORT xmlOutputBufferPtr xmlSecTransformCreateOutputBuffer(xmlSecTransformPtr transform, + xmlSecTransformCtxPtr transformCtx); +XMLSEC_EXPORT xmlParserInputBufferPtr xmlSecTransformCreateInputBuffer(xmlSecTransformPtr transform, + xmlSecTransformCtxPtr transformCtx); /************************************************************************ * * Transform Klass * - ************************************************************************/ + ************************************************************************/ /** * xmlSecTransformInitializeMethod: - * @transform: the pointer to transform object. + * @transform: the pointer to transform object. * * The transform specific initialization method. * * Returns: 0 on success or a negative value otherwise. */ -typedef int (*xmlSecTransformInitializeMethod) (xmlSecTransformPtr transform); +typedef int (*xmlSecTransformInitializeMethod) (xmlSecTransformPtr transform); /** * xmlSecTransformFinalizeMethod: - * @transform: the pointer to transform object. + * @transform: the pointer to transform object. * * The transform specific destroy method. */ -typedef void (*xmlSecTransformFinalizeMethod) (xmlSecTransformPtr transform); +typedef void (*xmlSecTransformFinalizeMethod) (xmlSecTransformPtr transform); /** * xmlSecTransformGetDataTypeMethod: - * @transform: the pointer to transform object. - * @mode: the mode. - * @transformCtx: the pointer to transform context object. + * @transform: the pointer to transform object. + * @mode: the mode. + * @transformCtx: the pointer to transform context object. * * The transform specific method to query information about transform * data type in specified mode @mode. * * Returns: transform data type. */ -typedef xmlSecTransformDataType (*xmlSecTransformGetDataTypeMethod)(xmlSecTransformPtr transform, - xmlSecTransformMode mode, - xmlSecTransformCtxPtr transformCtx); +typedef xmlSecTransformDataType (*xmlSecTransformGetDataTypeMethod)(xmlSecTransformPtr transform, + xmlSecTransformMode mode, + xmlSecTransformCtxPtr transformCtx); /** * xmlSecTransformNodeReadMethod: - * @transform: the pointer to transform object. - * @node: the pointer to <dsig:Transform/> node. - * @transformCtx: the pointer to transform context object. + * @transform: the pointer to transform object. + * @node: the pointer to <dsig:Transform/> node. + * @transformCtx: the pointer to transform context object. * - * The transform specific method to read the transform data from + * The transform specific method to read the transform data from * the @node. * * Returns: 0 on success or a negative value otherwise. */ -typedef int (*xmlSecTransformNodeReadMethod) (xmlSecTransformPtr transform, - xmlNodePtr node, - xmlSecTransformCtxPtr transformCtx); +typedef int (*xmlSecTransformNodeReadMethod) (xmlSecTransformPtr transform, + xmlNodePtr node, + xmlSecTransformCtxPtr transformCtx); /** * xmlSecTransformNodeWriteMethod: - * @transform: the pointer to transform object. - * @node: the pointer to <dsig:Transform/> node. - * @transformCtx: the pointer to transform context object. + * @transform: the pointer to transform object. + * @node: the pointer to <dsig:Transform/> node. + * @transformCtx: the pointer to transform context object. * * The transform specific method to write transform information to an XML node @node. * * Returns: 0 on success or a negative value otherwise. */ -typedef int (*xmlSecTransformNodeWriteMethod) (xmlSecTransformPtr transform, - xmlNodePtr node, - xmlSecTransformCtxPtr transformCtx); +typedef int (*xmlSecTransformNodeWriteMethod) (xmlSecTransformPtr transform, + xmlNodePtr node, + xmlSecTransformCtxPtr transformCtx); /** * xmlSecTransformSetKeyRequirementsMethod: - * @transform: the pointer to transform object. - * @keyReq: the pointer to key requirements structure. + * @transform: the pointer to transform object. + * @keyReq: the pointer to key requirements structure. * * Transform specific method to set transform's key requirements. - * + * * Returns: 0 on success or a negative value otherwise. */ -typedef int (*xmlSecTransformSetKeyRequirementsMethod)(xmlSecTransformPtr transform, - xmlSecKeyReqPtr keyReq); +typedef int (*xmlSecTransformSetKeyRequirementsMethod)(xmlSecTransformPtr transform, + xmlSecKeyReqPtr keyReq); /** * xmlSecTransformSetKeyMethod: - * @transform: the pointer to transform object. - * @key: the pointer to key. + * @transform: the pointer to transform object. + * @key: the pointer to key. * * The transform specific method to set the key for use. - * + * * Returns: 0 on success or a negative value otherwise. */ -typedef int (*xmlSecTransformSetKeyMethod) (xmlSecTransformPtr transform, - xmlSecKeyPtr key); +typedef int (*xmlSecTransformSetKeyMethod) (xmlSecTransformPtr transform, + xmlSecKeyPtr key); /** * xmlSecTransformVerifyMethod: - * @transform: the pointer to transform object. - * @data: the input buffer. - * @dataSize: the size of input buffer @data. - * @transformCtx: the pointer to transform context object. + * @transform: the pointer to transform object. + * @data: the input buffer. + * @dataSize: the size of input buffer @data. + * @transformCtx: the pointer to transform context object. * * The transform specific method to verify transform processing results * (used by digest and signature transforms). This method sets @status * member of the #xmlSecTransform structure to either #xmlSecTransformStatusOk * if verification succeeded or #xmlSecTransformStatusFail otherwise. - * + * * Returns: 0 on success or a negative value otherwise. */ -typedef int (*xmlSecTransformVerifyMethod) (xmlSecTransformPtr transform, - const xmlSecByte* data, - xmlSecSize dataSize, - xmlSecTransformCtxPtr transformCtx); +typedef int (*xmlSecTransformVerifyMethod) (xmlSecTransformPtr transform, + const xmlSecByte* data, + xmlSecSize dataSize, + xmlSecTransformCtxPtr transformCtx); /** * xmlSecTransformPushBinMethod: - * @transform: the pointer to transform object. - * @data: the input binary data, - * @dataSize: the input data size. - * @final: the flag: if set to 1 then it's the last - * data chunk. - * @transformCtx: the pointer to transform context object. + * @transform: the pointer to transform object. + * @data: the input binary data, + * @dataSize: the input data size. + * @final: the flag: if set to 1 then it's the last + * data chunk. + * @transformCtx: the pointer to transform context object. * * The transform specific method to process data from @data and push * result to the next transform in the chain. * * Returns: 0 on success or a negative value otherwise. */ -typedef int (*xmlSecTransformPushBinMethod) (xmlSecTransformPtr transform, - const xmlSecByte* data, - xmlSecSize dataSize, - int final, - xmlSecTransformCtxPtr transformCtx); +typedef int (*xmlSecTransformPushBinMethod) (xmlSecTransformPtr transform, + const xmlSecByte* data, + xmlSecSize dataSize, + int final, + xmlSecTransformCtxPtr transformCtx); /** * xmlSecTransformPopBinMethod: - * @transform: the pointer to transform object. - * @data: the buffer to store result data. - * @maxDataSize: the size of the buffer @data. - * @dataSize: the pointer to returned data size. - * @transformCtx: the pointer to transform context object. + * @transform: the pointer to transform object. + * @data: the buffer to store result data. + * @maxDataSize: the size of the buffer @data. + * @dataSize: the pointer to returned data size. + * @transformCtx: the pointer to transform context object. * - * The transform specific method to pop data from previous transform + * The transform specific method to pop data from previous transform * in the chain and return result in the @data buffer. The size of returned * data is placed in the @dataSize. * * Returns: 0 on success or a negative value otherwise. */ -typedef int (*xmlSecTransformPopBinMethod) (xmlSecTransformPtr transform, - xmlSecByte* data, - xmlSecSize maxDataSize, - xmlSecSize* dataSize, - xmlSecTransformCtxPtr transformCtx); +typedef int (*xmlSecTransformPopBinMethod) (xmlSecTransformPtr transform, + xmlSecByte* data, + xmlSecSize maxDataSize, + xmlSecSize* dataSize, + xmlSecTransformCtxPtr transformCtx); /** * xmlSecTransformPushXmlMethod: - * @transform: the pointer to transform object. - * @nodes: the input nodes. - * @transformCtx: the pointer to transform context object. + * @transform: the pointer to transform object. + * @nodes: the input nodes. + * @transformCtx: the pointer to transform context object. * - * The transform specific method to process @nodes and push result to the next + * The transform specific method to process @nodes and push result to the next * transform in the chain. * * Returns: 0 on success or a negative value otherwise. */ -typedef int (*xmlSecTransformPushXmlMethod) (xmlSecTransformPtr transform, - xmlSecNodeSetPtr nodes, - xmlSecTransformCtxPtr transformCtx); +typedef int (*xmlSecTransformPushXmlMethod) (xmlSecTransformPtr transform, + xmlSecNodeSetPtr nodes, + xmlSecTransformCtxPtr transformCtx); /** * xmlSecTransformPopXmlMethod: - * @transform: the pointer to transform object. - * @nodes: the pointer to store popinter to result nodes. - * @transformCtx: the pointer to transform context object. + * @transform: the pointer to transform object. + * @nodes: the pointer to store popinter to result nodes. + * @transformCtx: the pointer to transform context object. * * The transform specific method to pop data from previous transform in the chain, * process the data and return result in @nodes. - * + * * Returns: 0 on success or a negative value otherwise. */ -typedef int (*xmlSecTransformPopXmlMethod) (xmlSecTransformPtr transform, - xmlSecNodeSetPtr* nodes, - xmlSecTransformCtxPtr transformCtx); +typedef int (*xmlSecTransformPopXmlMethod) (xmlSecTransformPtr transform, + xmlSecNodeSetPtr* nodes, + xmlSecTransformCtxPtr transformCtx); /** * xmlSecTransformExecuteMethod: - * @transform: the pointer to transform object. - * @last: the flag: if set to 1 then it's the last data chunk. - * @transformCtx: the pointer to transform context object. + * @transform: the pointer to transform object. + * @last: the flag: if set to 1 then it's the last data chunk. + * @transformCtx: the pointer to transform context object. * * Transform specific method to process a chunk of data. * * Returns: 0 on success or a negative value otherwise. */ -typedef int (*xmlSecTransformExecuteMethod) (xmlSecTransformPtr transform, - int last, - xmlSecTransformCtxPtr transformCtx); +typedef int (*xmlSecTransformExecuteMethod) (xmlSecTransformPtr transform, + int last, + xmlSecTransformCtxPtr transformCtx); /** * xmlSecTransformKlass: - * @klassSize: the transform klass structure size. - * @objSize: the transform object size. - * @name: the transform's name. - * @href: the transform's identification string (href). - * @usage: the allowed transforms usages. - * @initialize: the initialization method. - * @finalize: the finmalization (destroy) function. - * @readNode: the XML node read method. - * @writeNode: the XML node write method. - * @setKeyReq: the set key requirements method. - * @setKey: the set key method. - * @verify: the verify method (for digest and signature transforms). - * @getDataType: the input/output data type query method. - * @pushBin: the binary data "push thru chain" processing method. - * @popBin: the binary data "pop from chain" procesing method. - * @pushXml: the XML data "push thru chain" processing method. - * @popXml: the XML data "pop from chain" procesing method. - * @execute: the low level data processing method used by default - * implementations of @pushBin, @popBin, @pushXml and @popXml. - * @reserved0: reserved for the future. - * @reserved1: reserved for the future. - * + * @klassSize: the transform klass structure size. + * @objSize: the transform object size. + * @name: the transform's name. + * @href: the transform's identification string (href). + * @usage: the allowed transforms usages. + * @initialize: the initialization method. + * @finalize: the finmalization (destroy) function. + * @readNode: the XML node read method. + * @writeNode: the XML node write method. + * @setKeyReq: the set key requirements method. + * @setKey: the set key method. + * @verify: the verify method (for digest and signature transforms). + * @getDataType: the input/output data type query method. + * @pushBin: the binary data "push thru chain" processing method. + * @popBin: the binary data "pop from chain" procesing method. + * @pushXml: the XML data "push thru chain" processing method. + * @popXml: the XML data "pop from chain" procesing method. + * @execute: the low level data processing method used by default + * implementations of @pushBin, @popBin, @pushXml and @popXml. + * @reserved0: reserved for the future. + * @reserved1: reserved for the future. + * * The transform klass desccription structure. */ struct _xmlSecTransformKlass { /* data */ - xmlSecSize klassSize; - xmlSecSize objSize; - const xmlChar* name; - const xmlChar* href; - xmlSecTransformUsage usage; + 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; - + 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; + xmlSecTransformExecuteMethod execute; - /* reserved for future */ - void* reserved0; - void* reserved1; + /* reserved for future */ + void* reserved0; + void* reserved1; }; /** * xmlSecTransformKlassGetName: - * @klass: the transofrm's klass. + * @klass: the transofrm's klass. * * Macro. Returns transform klass name. */ #define xmlSecTransformKlassGetName(klass) \ - (((klass)) ? ((klass)->name) : NULL) + (((klass)) ? ((klass)->name) : NULL) /*********************************************************************** * @@ -830,23 +818,23 @@ struct _xmlSecTransformKlass { * * Transform klasses list klass. */ -#define xmlSecTransformIdListId xmlSecTransformIdListGetKlass() -XMLSEC_EXPORT xmlSecPtrListId xmlSecTransformIdListGetKlass (void); -XMLSEC_EXPORT int xmlSecTransformIdListFind (xmlSecPtrListPtr list, - xmlSecTransformId transformId); -XMLSEC_EXPORT xmlSecTransformId xmlSecTransformIdListFindByHref (xmlSecPtrListPtr list, - const xmlChar* href, - xmlSecTransformUsage usage); -XMLSEC_EXPORT xmlSecTransformId xmlSecTransformIdListFindByName (xmlSecPtrListPtr list, - const xmlChar* name, - xmlSecTransformUsage usage); -XMLSEC_EXPORT void xmlSecTransformIdListDebugDump (xmlSecPtrListPtr list, - FILE* output); -XMLSEC_EXPORT void xmlSecTransformIdListDebugXmlDump(xmlSecPtrListPtr list, - FILE* output); +#define xmlSecTransformIdListId xmlSecTransformIdListGetKlass() +XMLSEC_EXPORT xmlSecPtrListId xmlSecTransformIdListGetKlass (void); +XMLSEC_EXPORT int xmlSecTransformIdListFind (xmlSecPtrListPtr list, + xmlSecTransformId transformId); +XMLSEC_EXPORT xmlSecTransformId xmlSecTransformIdListFindByHref (xmlSecPtrListPtr list, + const xmlChar* href, + xmlSecTransformUsage usage); +XMLSEC_EXPORT xmlSecTransformId xmlSecTransformIdListFindByName (xmlSecPtrListPtr list, + const xmlChar* name, + xmlSecTransformUsage usage); +XMLSEC_EXPORT void xmlSecTransformIdListDebugDump (xmlSecPtrListPtr list, + FILE* output); +XMLSEC_EXPORT void xmlSecTransformIdListDebugXmlDump(xmlSecPtrListPtr list, + FILE* output); -/******************************************************************** +/******************************************************************** * * XML Sec Library Transform Ids * @@ -856,144 +844,147 @@ XMLSEC_EXPORT void xmlSecTransformIdListDebugXmlDump(xmlSecPtrListPtr list, * * The "unknown" transform id (NULL). */ -#define xmlSecTransformIdUnknown ((xmlSecTransformId)NULL) +#define xmlSecTransformIdUnknown ((xmlSecTransformId)NULL) /** * xmlSecTransformBase64Id: * * The base64 encode transform klass. - */ + */ #define xmlSecTransformBase64Id \ - xmlSecTransformBase64GetKlass() -XMLSEC_EXPORT xmlSecTransformId xmlSecTransformBase64GetKlass (void); -XMLSEC_EXPORT void xmlSecTransformBase64SetLineSize (xmlSecTransformPtr transform, - xmlSecSize lineSize); + xmlSecTransformBase64GetKlass() +XMLSEC_EXPORT xmlSecTransformId xmlSecTransformBase64GetKlass (void); +XMLSEC_EXPORT void xmlSecTransformBase64SetLineSize (xmlSecTransformPtr transform, + xmlSecSize lineSize); /** * xmlSecTransformInclC14NId: - * + * * The regular (inclusive) C14N without comments transform klass. */ #define xmlSecTransformInclC14NId \ - xmlSecTransformInclC14NGetKlass() -XMLSEC_EXPORT xmlSecTransformId xmlSecTransformInclC14NGetKlass (void); + xmlSecTransformInclC14NGetKlass() +XMLSEC_EXPORT xmlSecTransformId xmlSecTransformInclC14NGetKlass (void); /** * xmlSecTransformInclC14NWithCommentsId: - * + * * The regular (inclusive) C14N with comments transform klass. */ #define xmlSecTransformInclC14NWithCommentsId \ - xmlSecTransformInclC14NWithCommentsGetKlass() -XMLSEC_EXPORT xmlSecTransformId xmlSecTransformInclC14NWithCommentsGetKlass(void); + xmlSecTransformInclC14NWithCommentsGetKlass() +XMLSEC_EXPORT xmlSecTransformId xmlSecTransformInclC14NWithCommentsGetKlass(void); /** * xmlSecTransformInclC14N11Id: - * + * * The regular (inclusive) C14N 1.1 without comments transform klass. */ #define xmlSecTransformInclC14N11Id \ - xmlSecTransformInclC14N11GetKlass() -XMLSEC_EXPORT xmlSecTransformId xmlSecTransformInclC14N11GetKlass (void); + xmlSecTransformInclC14N11GetKlass() +XMLSEC_EXPORT xmlSecTransformId xmlSecTransformInclC14N11GetKlass (void); /** * xmlSecTransformInclC14N11WithCommentsId: - * + * * The regular (inclusive) C14N 1.1 with comments transform klass. */ #define xmlSecTransformInclC14N11WithCommentsId \ - xmlSecTransformInclC14N11WithCommentsGetKlass() -XMLSEC_EXPORT xmlSecTransformId xmlSecTransformInclC14N11WithCommentsGetKlass(void); + xmlSecTransformInclC14N11WithCommentsGetKlass() +XMLSEC_EXPORT xmlSecTransformId xmlSecTransformInclC14N11WithCommentsGetKlass(void); /** * xmlSecTransformExclC14NId - * + * * The exclusive C14N without comments transform klass. */ #define xmlSecTransformExclC14NId \ - xmlSecTransformExclC14NGetKlass() -XMLSEC_EXPORT xmlSecTransformId xmlSecTransformExclC14NGetKlass (void); + xmlSecTransformExclC14NGetKlass() +XMLSEC_EXPORT xmlSecTransformId xmlSecTransformExclC14NGetKlass (void); /** * xmlSecTransformExclC14NWithCommentsId: - * + * * The exclusive C14N with comments transform klass. */ #define xmlSecTransformExclC14NWithCommentsId \ - xmlSecTransformExclC14NWithCommentsGetKlass() -XMLSEC_EXPORT xmlSecTransformId xmlSecTransformExclC14NWithCommentsGetKlass(void); + xmlSecTransformExclC14NWithCommentsGetKlass() +XMLSEC_EXPORT xmlSecTransformId xmlSecTransformExclC14NWithCommentsGetKlass(void); /** * xmlSecTransformEnvelopedId: - * + * * The "enveloped" transform klass. */ #define xmlSecTransformEnvelopedId \ - xmlSecTransformEnvelopedGetKlass() -XMLSEC_EXPORT xmlSecTransformId xmlSecTransformEnvelopedGetKlass (void); + xmlSecTransformEnvelopedGetKlass() +XMLSEC_EXPORT xmlSecTransformId xmlSecTransformEnvelopedGetKlass (void); /** * xmlSecTransformXPathId: - * + * * The XPath transform klass. */ #define xmlSecTransformXPathId \ - xmlSecTransformXPathGetKlass() -XMLSEC_EXPORT xmlSecTransformId xmlSecTransformXPathGetKlass (void); + xmlSecTransformXPathGetKlass() +XMLSEC_EXPORT xmlSecTransformId xmlSecTransformXPathGetKlass (void); /** * xmlSecTransformXPath2Id: - * + * * The XPath2 transform klass. */ #define xmlSecTransformXPath2Id \ - xmlSecTransformXPath2GetKlass() -XMLSEC_EXPORT xmlSecTransformId xmlSecTransformXPath2GetKlass (void); + xmlSecTransformXPath2GetKlass() +XMLSEC_EXPORT xmlSecTransformId xmlSecTransformXPath2GetKlass (void); /** * xmlSecTransformXPointerId: - * + * * The XPointer transform klass. */ #define xmlSecTransformXPointerId \ - xmlSecTransformXPointerGetKlass() -XMLSEC_EXPORT xmlSecTransformId xmlSecTransformXPointerGetKlass (void); -XMLSEC_EXPORT int xmlSecTransformXPointerSetExpr (xmlSecTransformPtr transform, - const xmlChar* expr, - xmlSecNodeSetType nodeSetType, - xmlNodePtr hereNode); + xmlSecTransformXPointerGetKlass() +XMLSEC_EXPORT xmlSecTransformId xmlSecTransformXPointerGetKlass (void); +XMLSEC_EXPORT int xmlSecTransformXPointerSetExpr (xmlSecTransformPtr transform, + const xmlChar* expr, + xmlSecNodeSetType nodeSetType, + xmlNodePtr hereNode); #ifndef XMLSEC_NO_XSLT +#include <libxslt/security.h> + /** * xmlSecTransformXsltId: - * + * * The XSLT transform klass. */ #define xmlSecTransformXsltId \ - xmlSecTransformXsltGetKlass() -XMLSEC_EXPORT xmlSecTransformId xmlSecTransformXsltGetKlass (void); + xmlSecTransformXsltGetKlass() +XMLSEC_EXPORT xmlSecTransformId xmlSecTransformXsltGetKlass (void); +XMLSEC_EXPORT void xmlSecTransformXsltSetDefaultSecurityPrefs(xsltSecurityPrefsPtr sec); #endif /* XMLSEC_NO_XSLT */ /** * xmlSecTransformRemoveXmlTagsC14NId: - * + * * The "remove all xml tags" transform klass (used before base64 transforms). */ #define xmlSecTransformRemoveXmlTagsC14NId \ - xmlSecTransformRemoveXmlTagsC14NGetKlass() -XMLSEC_EXPORT xmlSecTransformId xmlSecTransformRemoveXmlTagsC14NGetKlass(void); + xmlSecTransformRemoveXmlTagsC14NGetKlass() +XMLSEC_EXPORT xmlSecTransformId xmlSecTransformRemoveXmlTagsC14NGetKlass(void); /** * xmlSecTransformVisa3DHackId: * - * 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 + * 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. */ #define xmlSecTransformVisa3DHackId \ - xmlSecTransformVisa3DHackGetKlass() -XMLSEC_EXPORT xmlSecTransformId xmlSecTransformVisa3DHackGetKlass (void); -XMLSEC_EXPORT int xmlSecTransformVisa3DHackSetID (xmlSecTransformPtr transform, - const xmlChar* id); + xmlSecTransformVisa3DHackGetKlass() +XMLSEC_EXPORT xmlSecTransformId xmlSecTransformVisa3DHackGetKlass (void); +XMLSEC_EXPORT int xmlSecTransformVisa3DHackSetID (xmlSecTransformPtr transform, + const xmlChar* id); #ifdef __cplusplus } |