Home Download News Documentation FAQ Tutorial API reference Examples XML Digital Signature Online Verifier XML Encryption XML Canonicalization Reporting Bugs Mailing list Related Authors
# xmlenc ## Name xmlenc -- XML Encryption support. ## Synopsis
    enum                xmlEncCtxMode;
    #define             XMLSEC_ENC_RETURN_REPLACED_NODE
    struct              xmlSecEncCtx;
    xmlSecEncCtxPtr     xmlSecEncCtxCreate                  (xmlSecKeysMngrPtr keysMngr);
    void                xmlSecEncCtxDestroy                 (xmlSecEncCtxPtr encCtx);
    int                 xmlSecEncCtxInitialize              (xmlSecEncCtxPtr encCtx,
                                                             xmlSecKeysMngrPtr keysMngr);
    void                xmlSecEncCtxFinalize                (xmlSecEncCtxPtr encCtx);
    int                 xmlSecEncCtxCopyUserPref            (xmlSecEncCtxPtr dst,
                                                             xmlSecEncCtxPtr src);
    void                xmlSecEncCtxReset                   (xmlSecEncCtxPtr encCtx);
    int                 xmlSecEncCtxBinaryEncrypt           (xmlSecEncCtxPtr encCtx,
                                                             xmlNodePtr tmpl,
                                                             const xmlSecByte *data,
                                                             xmlSecSize dataSize);
    int                 xmlSecEncCtxXmlEncrypt              (xmlSecEncCtxPtr encCtx,
                                                             xmlNodePtr tmpl,
                                                             xmlNodePtr node);
    int                 xmlSecEncCtxUriEncrypt              (xmlSecEncCtxPtr encCtx,
                                                             xmlNodePtr tmpl,
                                                             const xmlChar *uri);
    int                 xmlSecEncCtxDecrypt                 (xmlSecEncCtxPtr encCtx,
                                                             xmlNodePtr node);
    xmlSecBufferPtr     xmlSecEncCtxDecryptToBuffer         (xmlSecEncCtxPtr encCtx,
                                                             xmlNodePtr node);
    void                xmlSecEncCtxDebugDump               (xmlSecEncCtxPtr encCtx,
                                                             FILE *output);
    void                xmlSecEncCtxDebugXmlDump            (xmlSecEncCtxPtr encCtx,
                                                             FILE *output);
## Description XML Encryption support. ## Details ### enum xmlEncCtxMode
    typedef enum {
        xmlEncCtxModeEncryptedData = 0,
        xmlEncCtxModeEncryptedKey
    } xmlEncCtxMode;
The xmlSecEncCtx mode.
`xmlEncCtxModeEncryptedData` | the <enc:EncryptedData/> element procesing.
`xmlEncCtxModeEncryptedKey` | the <enc:EncryptedKey/> element processing.
### XMLSEC_ENC_RETURN_REPLACED_NODE
    #define XMLSEC_ENC_RETURN_REPLACED_NODE                 0x00000001
If this flag is set, then the replaced node will be returned in the replacedNodeList ### struct xmlSecEncCtx
    struct xmlSecEncCtx {
        /* these data user can set before performing the operation */
        void*                       userData;
        unsigned int                flags;
        unsigned int                flags2;
        xmlEncCtxMode               mode;
        xmlSecKeyInfoCtx            keyInfoReadCtx;
        xmlSecKeyInfoCtx            keyInfoWriteCtx;
        xmlSecTransformCtx          transformCtx;
        xmlSecTransformId           defEncMethodId;

        /* these data are returned */
        xmlSecKeyPtr                encKey;
        xmlSecTransformOperation    operation;
        xmlSecBufferPtr             result;
        int                         resultBase64Encoded;
        int                         resultReplaced;
        xmlSecTransformPtr          encMethod;

        /* attributes from EncryptedData or EncryptedKey */
        xmlChar*                    id;
        xmlChar*                    type;
        xmlChar*                    mimeType;
        xmlChar*                    encoding;
        xmlChar*                    recipient;
        xmlChar*                    carriedKeyName;

        /* these are internal data, nobody should change that except us */
        xmlNodePtr                  encDataNode;
        xmlNodePtr                  encMethodNode;
        xmlNodePtr                  keyInfoNode;
        xmlNodePtr                  cipherValueNode;

        xmlNodePtr                  replacedNodeList; /* the pointer to the replaced node */
        void*                       reserved1;        /* reserved for future */
    };
XML Encrypiton context.
void *`userData`; | the pointer to user data (xmlsec and xmlsec-crypto libraries never touches this).
unsigned int `flags`; | the XML Encryption processing flags.
unsigned int `flags2`; | the XML Encryption processing flags.
xmlEncCtxMode `mode`; | the mode.
xmlSecKeyInfoCtx `keyInfoReadCtx`; | the reading key context.
xmlSecKeyInfoCtx `keyInfoWriteCtx`; | the writing key context (not used for signature verification).
xmlSecTransformCtx `transformCtx`; | the transforms processing context.
xmlSecTransformId `defEncMethodId`; | the default encryption method (used if <enc:EncryptionMethod/> node is not present).
xmlSecKeyPtr `encKey`; | the signature key; application may set encKey before calling encryption/decryption functions.
xmlSecTransformOperation `operation`; | the operation: encrypt or decrypt.
xmlSecBufferPtr `result`; | the pointer to signature (not valid for signature verification).
int `resultBase64Encoded`; | the flag: if set then result in result is base64 encoded.
int `resultReplaced`; | the flag: if set then resulted <enc:EncryptedData/> or <enc:EncryptedKey/> node is added to the document.
xmlSecTransformPtr `encMethod`; | the pointer to encryption transform.
xmlChar *`id`; | the ID attribute of <enc:EncryptedData/> or <enc:EncryptedKey/> node.
xmlChar *`type`; | the Type attribute of <enc:EncryptedData/> or <enc:EncryptedKey/> node.
xmlChar *`mimeType`; | the MimeType attribute of <enc:EncryptedData/> or <enc:EncryptedKey/> node.
xmlChar *`encoding`; | the Encoding attributeof <enc:EncryptedData/> or <enc:EncryptedKey/> node.
xmlChar *`recipient`; | the Recipient attribute of <enc:EncryptedKey/> node..
xmlChar *`carriedKeyName`; | the CarriedKeyName attribute of <enc:EncryptedKey/> node.
xmlNodePtr `encDataNode`; | the pointer to <enc:EncryptedData/> or <enc:EncryptedKey/> node.
xmlNodePtr `encMethodNode`; | the pointer to <enc:EncryptionMethod/> node.
xmlNodePtr `keyInfoNode`; | the pointer to <enc:KeyInfo/> node.
xmlNodePtr `cipherValueNode`; | the pointer to <enc:CipherValue/> node.
xmlNodePtr `replacedNodeList`; | the first node of the list of replaced nodes depending on the nodeReplacementMode
void *`reserved1`; | reserved for the future.
### xmlSecEncCtxCreate ()
    xmlSecEncCtxPtr     xmlSecEncCtxCreate                  (xmlSecKeysMngrPtr keysMngr);
Creates <enc:EncryptedData/> element processing context. The caller is responsible for destroying returned object by calling xmlSecEncCtxDestroy function.
`keysMngr` : | the pointer to keys manager.
Returns : | pointer to newly allocated context object or NULL if an error occurs.
### xmlSecEncCtxDestroy ()
    void                xmlSecEncCtxDestroy                 (xmlSecEncCtxPtr encCtx);
Destroy context object created with xmlSecEncCtxCreate function.
`encCtx` : | the pointer to <enc:EncryptedData/> processing context.
### xmlSecEncCtxInitialize ()
    int                 xmlSecEncCtxInitialize              (xmlSecEncCtxPtr encCtx,
                                                             xmlSecKeysMngrPtr keysMngr);
Initializes <enc:EncryptedData/> element processing context. The caller is responsible for cleaning up returned object by calling xmlSecEncCtxFinalize function.
`encCtx` : | the pointer to <enc:EncryptedData/> processing context.
`keysMngr` : | the pointer to keys manager.
Returns : | 0 on success or a negative value if an error occurs.
### xmlSecEncCtxFinalize ()
    void                xmlSecEncCtxFinalize                (xmlSecEncCtxPtr encCtx);
Cleans up `encCtx` object.
`encCtx` : | the pointer to <enc:EncryptedData/> processing context.
### xmlSecEncCtxCopyUserPref ()
    int                 xmlSecEncCtxCopyUserPref            (xmlSecEncCtxPtr dst,
                                                             xmlSecEncCtxPtr src);
Copies user preference from `src` context to `dst`.
`dst` : | the pointer to destination context.
`src` : | the pointer to source context.
Returns : | 0 on success or a negative value if an error occurs.
### xmlSecEncCtxReset ()
    void                xmlSecEncCtxReset                   (xmlSecEncCtxPtr encCtx);
Resets `encCtx` object, user settings are not touched.
`encCtx` : | the pointer to <enc:EncryptedData/> processing context.
### xmlSecEncCtxBinaryEncrypt ()
    int                 xmlSecEncCtxBinaryEncrypt           (xmlSecEncCtxPtr encCtx,
                                                             xmlNodePtr tmpl,
                                                             const xmlSecByte *data,
                                                             xmlSecSize dataSize);
Encrypts `data` according to template `tmpl`.
`encCtx` : | the pointer to <enc:EncryptedData/> processing context.
`tmpl` : | the pointer to <enc:EncryptedData/> template node.
`data` : | the pointer for binary buffer.
`dataSize` : | the `data` buffer size.
Returns : | 0 on success or a negative value if an error occurs.
### xmlSecEncCtxXmlEncrypt ()
    int                 xmlSecEncCtxXmlEncrypt              (xmlSecEncCtxPtr encCtx,
                                                             xmlNodePtr tmpl,
                                                             xmlNodePtr node);
Encrypts `node` according to template `tmpl`. If requested, `node` is replaced with result <enc:EncryptedData/> node.
`encCtx` : | the pointer to <enc:EncryptedData/> processing context.
`tmpl` : | the pointer to <enc:EncryptedData/> template node.
`node` : | the pointer to node for encryption.
Returns : | 0 on success or a negative value if an error occurs.
### xmlSecEncCtxUriEncrypt ()
    int                 xmlSecEncCtxUriEncrypt              (xmlSecEncCtxPtr encCtx,
                                                             xmlNodePtr tmpl,
                                                             const xmlChar *uri);
Encrypts data from `uri` according to template `tmpl`.
`encCtx` : | the pointer to <enc:EncryptedData/> processing context.
`tmpl` : | the pointer to <enc:EncryptedData/> template node.
`uri` : | the URI.
Returns : | 0 on success or a negative value if an error occurs.
### xmlSecEncCtxDecrypt ()
    int                 xmlSecEncCtxDecrypt                 (xmlSecEncCtxPtr encCtx,
                                                             xmlNodePtr node);
Decrypts `node` and if necessary replaces `node` with decrypted data.
`encCtx` : | the pointer to <enc:EncryptedData/> processing context.
`node` : | the pointer to <enc:EncryptedData/> node.
Returns : | 0 on success or a negative value if an error occurs.
### xmlSecEncCtxDecryptToBuffer ()
    xmlSecBufferPtr     xmlSecEncCtxDecryptToBuffer         (xmlSecEncCtxPtr encCtx,
                                                             xmlNodePtr node);
Decrypts `node` data to the `encCtx` buffer.
`encCtx` : | the pointer to <enc:EncryptedData/> processing context.
`node` : | the pointer to <enc:EncryptedData/> node.
Returns : | 0 on success or a negative value if an error occurs.
### xmlSecEncCtxDebugDump ()
    void                xmlSecEncCtxDebugDump               (xmlSecEncCtxPtr encCtx,
                                                             FILE *output);
Prints the debug information about `encCtx` to `output`.
`encCtx` : | the pointer to <enc:EncryptedData/> processing context.
`output` : | the pointer to output FILE.
### xmlSecEncCtxDebugXmlDump ()
    void                xmlSecEncCtxDebugXmlDump            (xmlSecEncCtxPtr encCtx,
                                                             FILE *output);
Prints the debug information about `encCtx` to `output` in XML format.
`encCtx` : | the pointer to <enc:EncryptedData/> processing context.
`output` : | the pointer to output FILE.