1 /* 2 * Summary: interface for the libxslt security framework 3 * Description: the libxslt security framework allow to restrict 4 * the access to new resources (file or URL) from 5 * the stylesheet at runtime. 6 * 7 * Copy: See Copyright for the status of this software. 8 * 9 * Author: Daniel Veillard 10 */ 11 12 #ifndef __XML_XSLT_SECURITY_H__ 13 #define __XML_XSLT_SECURITY_H__ 14 15 #include <libxml/tree.h> 16 #include "xsltexports.h" 17 #include "xsltInternals.h" 18 19 #ifdef __cplusplus 20 extern "C" { 21 #endif 22 23 /** 24 * xsltSecurityPref: 25 * 26 * structure to indicate the preferences for security in the XSLT 27 * transformation. 28 */ 29 typedef struct _xsltSecurityPrefs xsltSecurityPrefs; 30 typedef xsltSecurityPrefs *xsltSecurityPrefsPtr; 31 32 /** 33 * xsltSecurityOption: 34 * 35 * the set of option that can be configured 36 */ 37 typedef enum { 38 XSLT_SECPREF_READ_FILE = 1, 39 XSLT_SECPREF_WRITE_FILE, 40 XSLT_SECPREF_CREATE_DIRECTORY, 41 XSLT_SECPREF_READ_NETWORK, 42 XSLT_SECPREF_WRITE_NETWORK 43 } xsltSecurityOption; 44 45 /** 46 * xsltSecurityCheck: 47 * 48 * User provided function to check the value of a string like a file 49 * path or an URL ... 50 */ 51 typedef int (*xsltSecurityCheck) (xsltSecurityPrefsPtr sec, 52 xsltTransformContextPtr ctxt, 53 const char *value); 54 55 /* 56 * Module interfaces 57 */ 58 XSLTPUBFUN xsltSecurityPrefsPtr XSLTCALL 59 xsltNewSecurityPrefs (void); 60 XSLTPUBFUN void XSLTCALL 61 xsltFreeSecurityPrefs (xsltSecurityPrefsPtr sec); 62 XSLTPUBFUN int XSLTCALL 63 xsltSetSecurityPrefs (xsltSecurityPrefsPtr sec, 64 xsltSecurityOption option, 65 xsltSecurityCheck func); 66 XSLTPUBFUN xsltSecurityCheck XSLTCALL 67 xsltGetSecurityPrefs (xsltSecurityPrefsPtr sec, 68 xsltSecurityOption option); 69 70 XSLTPUBFUN void XSLTCALL 71 xsltSetDefaultSecurityPrefs (xsltSecurityPrefsPtr sec); 72 XSLTPUBFUN xsltSecurityPrefsPtr XSLTCALL 73 xsltGetDefaultSecurityPrefs (void); 74 75 XSLTPUBFUN int XSLTCALL 76 xsltSetCtxtSecurityPrefs (xsltSecurityPrefsPtr sec, 77 xsltTransformContextPtr ctxt); 78 79 XSLTPUBFUN int XSLTCALL 80 xsltSecurityAllow (xsltSecurityPrefsPtr sec, 81 xsltTransformContextPtr ctxt, 82 const char *value); 83 XSLTPUBFUN int XSLTCALL 84 xsltSecurityForbid (xsltSecurityPrefsPtr sec, 85 xsltTransformContextPtr ctxt, 86 const char *value); 87 /* 88 * internal interfaces 89 */ 90 XSLTPUBFUN int XSLTCALL 91 xsltCheckWrite (xsltSecurityPrefsPtr sec, 92 xsltTransformContextPtr ctxt, 93 const xmlChar *URL); 94 XSLTPUBFUN int XSLTCALL 95 xsltCheckRead (xsltSecurityPrefsPtr sec, 96 xsltTransformContextPtr ctxt, 97 const xmlChar *URL); 98 99 #ifdef __cplusplus 100 } 101 #endif 102 103 #endif /* __XML_XSLT_SECURITY_H__ */ 104 105