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