summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Dauvergne <bdauvergne@entrouvert.com>2010-03-27 16:51:34 +0000
committerBenjamin Dauvergne <bdauvergne@entrouvert.com>2010-03-27 16:51:34 +0000
commitd5994b2bae7a8e1ea42a758546f505f58aa5e1c3 (patch)
tree4baf7a3ac02376146d7a8944088523a09588e11f
parent7930eba5a3d38be225c510c63a39ac7fec9fc43c (diff)
downloadlasso-d5994b2bae7a8e1ea42a758546f505f58aa5e1c3.tar.gz
lasso-d5994b2bae7a8e1ea42a758546f505f58aa5e1c3.tar.xz
lasso-d5994b2bae7a8e1ea42a758546f505f58aa5e1c3.zip
Add signature_verify_hint accessor methods to LassoProfile
* lasso/id-ff/profile.{c,h}: add a LassoProfileSignatureVerifyHint enumeration and two accessor methods: - lasso_profile_get_signature_verify_hint - lasso_profile_set_signature_verify_hint * lasso/id-ff/profileprivate.h: add private field signature_verify_hint.
-rw-r--r--docs/reference/lasso/lasso-sections.txt2
-rw-r--r--lasso/id-ff/profile.c35
-rw-r--r--lasso/id-ff/profile.h20
-rw-r--r--lasso/id-ff/profileprivate.h1
4 files changed, 57 insertions, 1 deletions
diff --git a/docs/reference/lasso/lasso-sections.txt b/docs/reference/lasso/lasso-sections.txt
index d1342e7e..95ff1101 100644
--- a/docs/reference/lasso/lasso-sections.txt
+++ b/docs/reference/lasso/lasso-sections.txt
@@ -87,6 +87,8 @@ lasso_profile_set_artifact_message
lasso_profile_get_server
lasso_profile_set_signature_hint
lasso_profile_get_signature_hint
+lasso_profile_set_signature_verify_hint
+lasso_profile_get_signature_verify_hint
LassoProfileSignatureHint
<SUBSECTION Standard>
LASSO_PROFILE
diff --git a/lasso/id-ff/profile.c b/lasso/id-ff/profile.c
index 631278f8..e30c1691 100644
--- a/lasso/id-ff/profile.c
+++ b/lasso/id-ff/profile.c
@@ -626,6 +626,41 @@ lasso_profile_get_signature_hint(LassoProfile *profile)
}
/**
+ * lasso_profile_set_signature_verify_hint:
+ * @profile: a #LassoProfile object
+ * @signature_verify_hint: whether next received message signatures should be checked or not (or let
+ * Lasso choose from implicit information).
+ *
+ * By default each profile will choose to sign or not its messages, this method allow to force or
+ * forbid the signature of messages, on a per transaction basis.
+ */
+void
+lasso_profile_set_signature_verify_hint(LassoProfile *profile, LassoProfileSignatureVerifyHint signature_verify_hint)
+{
+ if (! LASSO_IS_PROFILE(profile) && ! profile->private_data)
+ return;
+ profile->private_data->signature_verify_hint = signature_verify_hint;
+}
+
+/**
+ * lasso_profile_get_signature_verify_hint:
+ * @profile: a #LassoProfile object
+ *
+ * Return the value of the signature verify hint attribute (see
+ * lasso_profile_set_signature_verify_hint()).
+ *
+ * Return value: a value in the enum type #LassoProfileSignatureVerifyHint.
+ */
+LassoProfileSignatureVerifyHint
+lasso_profile_get_signature_verify_hint(LassoProfile *profile)
+{
+ if (! LASSO_IS_PROFILE(profile) && ! profile->private_data)
+ return LASSO_PROFILE_SIGNATURE_HINT_MAYBE;
+ return profile->private_data->signature_verify_hint;
+}
+
+
+/**
* lasso_profile_set_soap_fault_response:
* @profile: a #LassoProfile object
* @faultcode: the code for the SOAP fault
diff --git a/lasso/id-ff/profile.h b/lasso/id-ff/profile.h
index 12020407..a42ad5b5 100644
--- a/lasso/id-ff/profile.h
+++ b/lasso/id-ff/profile.h
@@ -98,7 +98,7 @@ typedef enum {
* @LASSO_PROFILE_SIGNATURE_HINT_FORCE: generate and validate all signatures.
* @LASSO_PROFILE_SIGNATURE_HINT_FORBID: do not generate or validate any signature.
*
- * Advice a #LassoProfile object about the policy for generating and validating request and response
+ * Advice a #LassoProfile object about the policy for generating request and response
* signatures.
*/
typedef enum {
@@ -108,6 +108,21 @@ typedef enum {
} LassoProfileSignatureHint;
/**
+ * LassoProfileSignatureVerifyHint:
+ * @LASSO_PROFILE_SIGNATURE_VERIFY_HINT_MAYBE: let Lasso decide what to do.
+ * @LASSO_PROFILE_SIGNATURE_VERIFY_HINT_IGNORE: check signatures but do not stop protocol handling
+ * on failures. The result of signature checking is still available in
+ * #LassoProfile.signature_status
+ *
+ * Advice a #LassoProfile object about the policy checking request and response
+ * signatures.
+ */
+typedef enum {
+ LASSO_PROFILE_SIGNATURE_VERIFY_HINT_MAYBE = 0,
+ LASSO_PROFILE_SIGNATURE_VERIFY_HINT_IGNORE = 1
+} LassoProfileSignatureVerifyHint;
+
+/**
* LassoProfile:
* @server: #LassoServer object representing the provider intiating this profile,
* @request: the currently initialized request, or the last request parsed,
@@ -185,6 +200,9 @@ LASSO_EXPORT void lasso_profile_set_signature_hint(LassoProfile *profile,
LASSO_EXPORT LassoProfileSignatureHint lasso_profile_get_signature_hint(LassoProfile *profile);
LASSO_EXPORT gint lasso_profile_set_soap_fault_response(LassoProfile *profile, const char
*faultcode, const char *faultstring, GList *details);
+LASSO_EXPORT void lasso_profile_set_signature_verify_hint(LassoProfile *profile,
+ LassoProfileSignatureVerifyHint signature_verify_hint);
+LASSO_EXPORT LassoProfileSignatureVerifyHint lasso_profile_get_signature_verify_hint(LassoProfile *profile);
#ifdef __cplusplus
}
diff --git a/lasso/id-ff/profileprivate.h b/lasso/id-ff/profileprivate.h
index 7103e2ca..df449ca6 100644
--- a/lasso/id-ff/profileprivate.h
+++ b/lasso/id-ff/profileprivate.h
@@ -38,6 +38,7 @@ struct _LassoProfilePrivate
char *artifact_message;
gboolean dispose_has_run;
LassoProfileSignatureHint signature_hint;
+ LassoProfileSignatureVerifyHint signature_verify_hint;
};
void lasso_profile_set_response_status(LassoProfile *profile, const gchar *statusCodeValue);