15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Summary: interface for the libxslt security framework 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Description: the libxslt security framework allow to restrict 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the access to new resources (file or URL) from 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the stylesheet at runtime. 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copy: See Copyright for the status of this software. 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Author: Daniel Veillard 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef __XML_XSLT_SECURITY_H__ 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define __XML_XSLT_SECURITY_H__ 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <libxml/tree.h> 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "xsltexports.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "xsltInternals.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __cplusplus 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltSecurityPref: 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * structure to indicate the preferences for security in the XSLT 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * transformation. 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltSecurityPrefs xsltSecurityPrefs; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltSecurityPrefs *xsltSecurityPrefsPtr; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltSecurityOption: 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the set of option that can be configured 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum { 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XSLT_SECPREF_READ_FILE = 1, 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XSLT_SECPREF_WRITE_FILE, 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XSLT_SECPREF_CREATE_DIRECTORY, 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XSLT_SECPREF_READ_NETWORK, 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XSLT_SECPREF_WRITE_NETWORK 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} xsltSecurityOption; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltSecurityCheck: 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * User provided function to check the value of a string like a file 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * path or an URL ... 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef int (*xsltSecurityCheck) (xsltSecurityPrefsPtr sec, 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xsltTransformContextPtr ctxt, 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *value); 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Module interfaces 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN xsltSecurityPrefsPtr XSLTCALL 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xsltNewSecurityPrefs (void); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN void XSLTCALL 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xsltFreeSecurityPrefs (xsltSecurityPrefsPtr sec); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN int XSLTCALL 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xsltSetSecurityPrefs (xsltSecurityPrefsPtr sec, 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xsltSecurityOption option, 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xsltSecurityCheck func); 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN xsltSecurityCheck XSLTCALL 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xsltGetSecurityPrefs (xsltSecurityPrefsPtr sec, 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xsltSecurityOption option); 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN void XSLTCALL 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xsltSetDefaultSecurityPrefs (xsltSecurityPrefsPtr sec); 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN xsltSecurityPrefsPtr XSLTCALL 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xsltGetDefaultSecurityPrefs (void); 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN int XSLTCALL 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xsltSetCtxtSecurityPrefs (xsltSecurityPrefsPtr sec, 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xsltTransformContextPtr ctxt); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN int XSLTCALL 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xsltSecurityAllow (xsltSecurityPrefsPtr sec, 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xsltTransformContextPtr ctxt, 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *value); 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN int XSLTCALL 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xsltSecurityForbid (xsltSecurityPrefsPtr sec, 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xsltTransformContextPtr ctxt, 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *value); 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * internal interfaces 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN int XSLTCALL 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xsltCheckWrite (xsltSecurityPrefsPtr sec, 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xsltTransformContextPtr ctxt, 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const xmlChar *URL); 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN int XSLTCALL 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xsltCheckRead (xsltSecurityPrefsPtr sec, 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xsltTransformContextPtr ctxt, 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const xmlChar *URL); 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __cplusplus 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* __XML_XSLT_SECURITY_H__ */ 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105