Example #1
0
 def _create_nameid_ext_el(value):
     text = value["text"] if isinstance(value, dict) else value
     attributes = ({
         "Format": NAMEID_FORMAT_PERSISTENT,
         "NameQualifier": value["NameQualifier"],
         "SPNameQualifier": value["SPNameQualifier"],
     } if isinstance(value, dict) else {
         "Format": NAMEID_FORMAT_PERSISTENT
     })
     element = ExtensionElement("NameID",
                                NAMESPACE,
                                attributes=attributes,
                                text=text)
     return element
Example #2
0
def _instance(klass, ava, seccont, base64encode=False, elements_to_sign=None):
    instance = klass()

    for prop in instance.c_attributes.values():
        #print "# %s" % (prop)
        if prop in ava:
            if isinstance(ava[prop], bool):
                setattr(instance, prop, "%s" % ava[prop])
            elif isinstance(ava[prop], int):
                setattr(instance, prop, "%d" % ava[prop])
            else:
                setattr(instance, prop, ava[prop])

    if "text" in ava:
        instance.set_text(ava["text"], base64encode)

    for prop, klassdef in instance.c_children.values():
        #print "## %s, %s" % (prop, klassdef)
        if prop in ava:
            #print "### %s" % ava[prop]
            if isinstance(klassdef,
                          list):  # means there can be a list of values
                _make_vals(ava[prop],
                           klassdef[0],
                           seccont,
                           instance,
                           prop,
                           base64encode=base64encode,
                           elements_to_sign=elements_to_sign)
            else:
                cis = _make_vals(ava[prop], klassdef, seccont, instance, prop,
                                 True, base64encode, elements_to_sign)
                setattr(instance, prop, cis)

    if "extension_elements" in ava:
        for item in ava["extension_elements"]:
            instance.extension_elements.append(
                ExtensionElement(item["tag"]).loadd(item))

    if "extension_attributes" in ava:
        for key, val in ava["extension_attributes"].items():
            instance.extension_attributes[key] = val

    if "signature" in ava:
        elements_to_sign.append((class_name(instance), instance.id))

    return instance
    def to_(self, attrvals):
        """ Create a list of Attribute instances.

        :param attrvals: A dictionary of attributes and values
        :return: A list of Attribute instances
        """
        attributes = []
        for key, value in attrvals.items():
            name = self._to.get(key.lower())
            if name:
                if name == "urn:oid:1.3.6.1.4.1.5923.1.1.1.10":
                    # special case for eduPersonTargetedID
                    attr_value = []
                    for v in value:
                        extension_element = ExtensionElement(
                            "NameID",
                            NAMESPACE,
                            attributes={'Format': NAMEID_FORMAT_PERSISTENT},
                            text=v)
                        attrval = saml.AttributeValue(
                            extension_elements=[extension_element])
                        attr_value.append(attrval)
                else:
                    attr_value = do_ava(value)
                attributes.append(
                    factory(saml.Attribute,
                            name=name,
                            name_format=self.name_format,
                            friendly_name=key,
                            attribute_value=attr_value))
            else:
                attributes.append(
                    factory(saml.Attribute,
                            name=key,
                            attribute_value=do_ava(value)))

        return attributes