summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/reference/snippet-types.rst6
-rw-r--r--lasso/xml/private.h2
-rw-r--r--lasso/xml/saml-2.0/samlp2_requested_authn_context.c6
-rw-r--r--lasso/xml/saml-2.0/samlp2_requested_authn_context.h4
-rw-r--r--lasso/xml/xml.c8
5 files changed, 20 insertions, 6 deletions
diff --git a/docs/reference/snippet-types.rst b/docs/reference/snippet-types.rst
index 88b7736b..9f03f942 100644
--- a/docs/reference/snippet-types.rst
+++ b/docs/reference/snippet-types.rst
@@ -26,7 +26,7 @@ SNIPPET_TEXT_CHILD
SNIPPET_NAME_IDENTIFIER
- (same result as SNIPPET_NODE)
+ (same result as SNIPPET_NODE (with Value forced as a LassoSamlNameIdentifier))
SNIPPET_ATTRIBUTE
@@ -64,6 +64,10 @@ SNIPPET_LIST_CONTENT
<Name>Value-n</Name>
</Parent>
+[note: Name will be in the same namespace as Parent by default but it is
+ possible to set 4th and 5th members of snippet to get a different namespace
+ (name, uri).]
+
SNIPPET_LIST_XMLNODES
<Parent>
diff --git a/lasso/xml/private.h b/lasso/xml/private.h
index 4345bd03..be3f766a 100644
--- a/lasso/xml/private.h
+++ b/lasso/xml/private.h
@@ -61,6 +61,8 @@ struct XmlSnippet {
SnippetType type;
guint offset;
char *class_name;
+ char *ns_name;
+ char *ns_uri;
};
struct QuerySnippet {
diff --git a/lasso/xml/saml-2.0/samlp2_requested_authn_context.c b/lasso/xml/saml-2.0/samlp2_requested_authn_context.c
index 428c827b..06d22ef6 100644
--- a/lasso/xml/saml-2.0/samlp2_requested_authn_context.c
+++ b/lasso/xml/saml-2.0/samlp2_requested_authn_context.c
@@ -43,9 +43,11 @@
static struct XmlSnippet schema_snippets[] = {
{ "AuthnContextClassRef", SNIPPET_LIST_CONTENT,
- G_STRUCT_OFFSET(LassoSamlp2RequestedAuthnContext, AuthnContextClassRef) },
+ G_STRUCT_OFFSET(LassoSamlp2RequestedAuthnContext, AuthnContextClassRef),
+ NULL, LASSO_SAML2_ASSERTION_PREFIX, LASSO_SAML2_ASSERTION_HREF },
{ "AuthnContextDeclRef", SNIPPET_LIST_CONTENT,
- G_STRUCT_OFFSET(LassoSamlp2RequestedAuthnContext, AuthnContextDeclRef) },
+ G_STRUCT_OFFSET(LassoSamlp2RequestedAuthnContext, AuthnContextDeclRef),
+ NULL, LASSO_SAML2_ASSERTION_PREFIX, LASSO_SAML2_ASSERTION_HREF },
{ "Comparison", SNIPPET_CONTENT,
G_STRUCT_OFFSET(LassoSamlp2RequestedAuthnContext, Comparison) },
{NULL, 0, 0}
diff --git a/lasso/xml/saml-2.0/samlp2_requested_authn_context.h b/lasso/xml/saml-2.0/samlp2_requested_authn_context.h
index e8ccc6a2..6886f31b 100644
--- a/lasso/xml/saml-2.0/samlp2_requested_authn_context.h
+++ b/lasso/xml/saml-2.0/samlp2_requested_authn_context.h
@@ -55,8 +55,8 @@ struct _LassoSamlp2RequestedAuthnContext {
/*< public >*/
/* elements */
- GList *AuthnContextClassRef;
- GList *AuthnContextDeclRef;
+ GList *AuthnContextClassRef; /* of strings */
+ GList *AuthnContextDeclRef; /* of strings */
/* attributes */
char *Comparison;
};
diff --git a/lasso/xml/xml.c b/lasso/xml/xml.c
index 388a7188..72795847 100644
--- a/lasso/xml/xml.c
+++ b/lasso/xml/xml.c
@@ -1565,7 +1565,13 @@ lasso_node_build_xmlNode_from_snippets(LassoNode *node, xmlNode *xmlnode,
* no attrs, just content) */
elem = (GList *)value;
while (elem) {
- xmlNewTextChild(xmlnode, NULL, (xmlChar*)snippet->name,
+ xmlNs *content_ns = NULL;
+ if (snippet->ns_name) {
+ content_ns = xmlNewNs(xmlnode,
+ snippet->ns_uri, snippet->ns_name);
+ }
+ xmlNewTextChild(xmlnode, content_ns,
+ (xmlChar*)snippet->name,
(xmlChar*)(elem->data));
elem = g_list_next(elem);
}