summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Kanakarakis <ivan.kanak@gmail.com>2018-11-27 22:49:26 +0200
committerIvan Kanakarakis <ivan.kanak@gmail.com>2018-11-27 22:49:26 +0200
commit0c1e26a6dd8759962857a30ebd67f63fe9e881ee (patch)
tree8888c7530f805626b242c54a086293c221cfdcea
parent65226caa34874a44a5752494a7001d87a5a523de (diff)
downloadpysaml2-0c1e26a6dd8759962857a30ebd67f63fe9e881ee.tar.gz
Group assurance-certification and entity-category
Assurance-certification and entity-category should be under the same EntityAttributes elements. Signed-off-by: Ivan Kanakarakis <ivan.kanak@gmail.com>
-rw-r--r--src/saml2/metadata.py26
1 files changed, 19 insertions, 7 deletions
diff --git a/src/saml2/metadata.py b/src/saml2/metadata.py
index 10f06d67..c1828cea 100644
--- a/src/saml2/metadata.py
+++ b/src/saml2/metadata.py
@@ -667,6 +667,19 @@ def do_pdp_descriptor(conf, cert=None, enc_cert=None):
return pdp
+def _add_attr_to_entity_attributes(extensions, attribute):
+ try:
+ entity_attributes = next(filter(
+ lambda el: el.tag == mdattr.EntityAttributes.c_tag,
+ extensions.extension_elements
+ ))
+ except StopIteration:
+ entity_attributes = mdattr.EntityAttributes(attribute=attribute)
+ extensions.add_extension_element(entity_attributes)
+ else:
+ entity_attributes.children.append(attribute)
+
+
def entity_descriptor(confd):
mycert = None
enc_cert = None
@@ -698,19 +711,18 @@ def entity_descriptor(confd):
ava = [AttributeValue(text=c) for c in confd.assurance_certification]
attr = Attribute(
attribute_value=ava,
- name="urn:oasis:names:tc:SAML:attribute:assurance-certification"
+ name="urn:oasis:names:tc:SAML:attribute:assurance-certification",
)
- item = mdattr.EntityAttributes(attribute=attr)
- entd.extensions.add_extension_element(item)
+ _add_attr_to_entity_attributes(entd.extensions, attr)
if confd.entity_category:
if not entd.extensions:
entd.extensions = md.Extensions()
ava = [AttributeValue(text=c) for c in confd.entity_category]
- attr = Attribute(attribute_value=ava,
- name="http://macedir.org/entity-category")
- item = mdattr.EntityAttributes(attribute=attr)
- entd.extensions.add_extension_element(item)
+ attr = Attribute(
+ attribute_value=ava, name="http://macedir.org/entity-category"
+ )
+ _add_attr_to_entity_attributes(entd.extensions, attr)
for item in algorithm_support_in_metadata(confd.xmlsec_binary):
if not entd.extensions: