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