soup-hsts-enforcer.h 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
  2. /*
  3. * Copyright (C) 2016, 2017, 2018 Igalia S.L.
  4. * Copyright (C) 2017, 2018 Metrological Group B.V.
  5. */
  6. #ifndef __SOUP_HSTS_ENFORCER_H__
  7. #define __SOUP_HSTS_ENFORCER_H__ 1
  8. #include <libsoup/soup-types.h>
  9. G_BEGIN_DECLS
  10. #define SOUP_TYPE_HSTS_ENFORCER (soup_hsts_enforcer_get_type ())
  11. #define SOUP_HSTS_ENFORCER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SOUP_TYPE_HSTS_ENFORCER, SoupHSTSEnforcer))
  12. #define SOUP_HSTS_ENFORCER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_HSTS_ENFORCER, SoupHSTSEnforcerClass))
  13. #define SOUP_IS_HSTS_ENFORCER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SOUP_TYPE_HSTS_ENFORCER))
  14. #define SOUP_IS_HSTS_ENFORCER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SOUP_TYPE_HSTS_ENFORCER))
  15. #define SOUP_HSTS_ENFORCER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_HSTS_ENFORCER, SoupHSTSEnforcerClass))
  16. typedef struct _SoupHSTSEnforcerPrivate SoupHSTSEnforcerPrivate;
  17. struct _SoupHSTSEnforcer {
  18. GObject parent;
  19. SoupHSTSEnforcerPrivate *priv;
  20. };
  21. /**
  22. * SoupHSTSEnforcerClass:
  23. * @parent_class: The parent class.
  24. * @is_persistent: The @is_persistent function advertises whether the enforcer is persistent or
  25. * whether changes made to it will be lost when the underlying #SoupSession is finished.
  26. * @has_valid_policy: The @has_valid_policy function is called to check whether there is a valid
  27. * policy for the given domain. This method should return %TRUE for #SoupHSTSEnforcer to
  28. * change the scheme of the #SoupURI in the #SoupMessage to HTTPS. Implementations might want to
  29. * chain up to the @has_valid_policy in the parent class to check, for instance, for runtime
  30. * policies.
  31. * @changed: the class closure for the #SoupHSTSEnforcer::changed signal.
  32. **/
  33. typedef struct {
  34. GObjectClass parent_class;
  35. gboolean (*is_persistent) (SoupHSTSEnforcer *hsts_enforcer);
  36. gboolean (*has_valid_policy) (SoupHSTSEnforcer *hsts_enforcer, const char *domain);
  37. /* signals */
  38. void (*changed) (SoupHSTSEnforcer *enforcer,
  39. SoupHSTSPolicy *old_policy,
  40. SoupHSTSPolicy *new_policy);
  41. void (*hsts_enforced) (SoupHSTSEnforcer *enforcer,
  42. SoupMessage *message);
  43. /* Padding for future expansion */
  44. void (*_libsoup_reserved1) (void);
  45. void (*_libsoup_reserved2) (void);
  46. void (*_libsoup_reserved3) (void);
  47. void (*_libsoup_reserved4) (void);
  48. } SoupHSTSEnforcerClass;
  49. SOUP_AVAILABLE_IN_2_68
  50. GType soup_hsts_enforcer_get_type (void);
  51. SOUP_AVAILABLE_IN_2_68
  52. SoupHSTSEnforcer *soup_hsts_enforcer_new (void);
  53. SOUP_AVAILABLE_IN_2_68
  54. gboolean soup_hsts_enforcer_is_persistent (SoupHSTSEnforcer *hsts_enforcer);
  55. SOUP_AVAILABLE_IN_2_68
  56. gboolean soup_hsts_enforcer_has_valid_policy (SoupHSTSEnforcer *hsts_enforcer,
  57. const char *domain);
  58. SOUP_AVAILABLE_IN_2_68
  59. void soup_hsts_enforcer_set_session_policy (SoupHSTSEnforcer *hsts_enforcer,
  60. const char *domain,
  61. gboolean include_subdomains);
  62. SOUP_AVAILABLE_IN_2_68
  63. void soup_hsts_enforcer_set_policy (SoupHSTSEnforcer *hsts_enforcer,
  64. SoupHSTSPolicy *policy);
  65. SOUP_AVAILABLE_IN_2_68
  66. GList *soup_hsts_enforcer_get_domains (SoupHSTSEnforcer *hsts_enforcer,
  67. gboolean session_policies);
  68. SOUP_AVAILABLE_IN_2_68
  69. GList *soup_hsts_enforcer_get_policies (SoupHSTSEnforcer *hsts_enforcer,
  70. gboolean session_policies);
  71. G_END_DECLS
  72. #endif /* __SOUP_HSTS_ENFORCER_H__ */