Editorial PEP-8

This commit is contained in:
Roland Hedberg
2013-03-01 11:48:37 +01:00
parent a9cbeb471a
commit f87df7d649
3 changed files with 136 additions and 105 deletions

View File

@@ -86,6 +86,7 @@ class LocalizedURIType_(SamlBase):
)
self.lang=lang
def localized_uri_type__from_string(xml_string):
return saml2.create_class_from_xml_string(LocalizedURIType_, xml_string)
@@ -100,6 +101,7 @@ class ExtensionsType_(SamlBase):
c_child_order = SamlBase.c_child_order[:]
c_cardinality = SamlBase.c_cardinality.copy()
def extensions_type__from_string(xml_string):
return saml2.create_class_from_xml_string(ExtensionsType_, xml_string)
@@ -134,6 +136,7 @@ class EndpointType_(SamlBase):
self.location=location
self.response_location=response_location
def endpoint_type__from_string(xml_string):
return saml2.create_class_from_xml_string(EndpointType_, xml_string)
@@ -171,6 +174,7 @@ class IndexedEndpointType_(EndpointType_):
self.index=index
self.is_default=is_default
def indexed_endpoint_type__from_string(xml_string):
return saml2.create_class_from_xml_string(IndexedEndpointType_, xml_string)
@@ -185,12 +189,14 @@ class OrganizationName(LocalizedNameType_):
c_child_order = LocalizedNameType_.c_child_order[:]
c_cardinality = LocalizedNameType_.c_cardinality.copy()
def organization_name_from_string(xml_string):
return saml2.create_class_from_xml_string(OrganizationName, xml_string)
class OrganizationDisplayName(LocalizedNameType_):
"""The urn:oasis:names:tc:SAML:2.0:metadata:OrganizationDisplayName element """
"""The urn:oasis:names:tc:SAML:2.0:metadata:OrganizationDisplayName
element """
c_tag = 'OrganizationDisplayName'
c_namespace = NAMESPACE
@@ -199,6 +205,7 @@ class OrganizationDisplayName(LocalizedNameType_):
c_child_order = LocalizedNameType_.c_child_order[:]
c_cardinality = LocalizedNameType_.c_cardinality.copy()
def organization_display_name_from_string(xml_string):
return saml2.create_class_from_xml_string(OrganizationDisplayName,
xml_string)
@@ -214,6 +221,7 @@ class OrganizationURL(LocalizedURIType_):
c_child_order = LocalizedURIType_.c_child_order[:]
c_cardinality = LocalizedURIType_.c_cardinality.copy()
def organization_url_from_string(xml_string):
return saml2.create_class_from_xml_string(OrganizationURL, xml_string)
@@ -229,6 +237,7 @@ class Company(SamlBase):
c_child_order = SamlBase.c_child_order[:]
c_cardinality = SamlBase.c_cardinality.copy()
def company_from_string(xml_string):
return saml2.create_class_from_xml_string(Company, xml_string)
@@ -244,6 +253,7 @@ class GivenName(SamlBase):
c_child_order = SamlBase.c_child_order[:]
c_cardinality = SamlBase.c_cardinality.copy()
def given_name_from_string(xml_string):
return saml2.create_class_from_xml_string(GivenName, xml_string)
@@ -259,6 +269,7 @@ class SurName(SamlBase):
c_child_order = SamlBase.c_child_order[:]
c_cardinality = SamlBase.c_cardinality.copy()
def sur_name_from_string(xml_string):
return saml2.create_class_from_xml_string(SurName, xml_string)
@@ -274,6 +285,7 @@ class EmailAddress(SamlBase):
c_child_order = SamlBase.c_child_order[:]
c_cardinality = SamlBase.c_cardinality.copy()
def email_address_from_string(xml_string):
return saml2.create_class_from_xml_string(EmailAddress, xml_string)
@@ -289,6 +301,7 @@ class TelephoneNumber(SamlBase):
c_child_order = SamlBase.c_child_order[:]
c_cardinality = SamlBase.c_cardinality.copy()
def telephone_number_from_string(xml_string):
return saml2.create_class_from_xml_string(TelephoneNumber, xml_string)
@@ -306,12 +319,14 @@ class ContactTypeType_(SamlBase):
c_child_order = SamlBase.c_child_order[:]
c_cardinality = SamlBase.c_cardinality.copy()
def contact_type_type__from_string(xml_string):
return saml2.create_class_from_xml_string(ContactTypeType_, xml_string)
class AdditionalMetadataLocationType_(SamlBase):
"""The urn:oasis:names:tc:SAML:2.0:metadata:AdditionalMetadataLocationType element """
"""The urn:oasis:names:tc:SAML:2.0:metadata:AdditionalMetadataLocationType
element """
c_tag = 'AdditionalMetadataLocationType'
c_namespace = NAMESPACE
@@ -322,19 +337,14 @@ class AdditionalMetadataLocationType_(SamlBase):
c_cardinality = SamlBase.c_cardinality.copy()
c_attributes['namespace'] = ('namespace', 'anyURI', True)
def __init__(self,
namespace=None,
text=None,
extension_elements=None,
extension_attributes=None,
):
SamlBase.__init__(self,
text=text,
extension_elements=extension_elements,
extension_attributes=extension_attributes,
)
def __init__(self, namespace=None, text=None, extension_elements=None,
extension_attributes=None):
SamlBase.__init__(self, text=text,
extension_elements=extension_elements,
extension_attributes=extension_attributes)
self.namespace=namespace
def additional_metadata_location_type__from_string(xml_string):
return saml2.create_class_from_xml_string(AdditionalMetadataLocationType_,
xml_string)
@@ -351,6 +361,7 @@ class AnyURIListType_(SamlBase):
c_child_order = SamlBase.c_child_order[:]
c_cardinality = SamlBase.c_cardinality.copy()
def any_uri_list_type__from_string(xml_string):
return saml2.create_class_from_xml_string(AnyURIListType_, xml_string)
@@ -366,6 +377,7 @@ class KeyTypes_(SamlBase):
c_child_order = SamlBase.c_child_order[:]
c_cardinality = SamlBase.c_cardinality.copy()
def key_types__from_string(xml_string):
return saml2.create_class_from_xml_string(KeyTypes_, xml_string)
@@ -380,12 +392,14 @@ class EncryptionMethod(xenc.EncryptionMethodType_):
c_child_order = xenc.EncryptionMethodType_.c_child_order[:]
c_cardinality = xenc.EncryptionMethodType_.c_cardinality.copy()
def encryption_method_from_string(xml_string):
return saml2.create_class_from_xml_string(EncryptionMethod, xml_string)
class ArtifactResolutionService(IndexedEndpointType_):
"""The urn:oasis:names:tc:SAML:2.0:metadata:ArtifactResolutionService element """
"""The urn:oasis:names:tc:SAML:2.0:metadata:ArtifactResolutionService
element """
c_tag = 'ArtifactResolutionService'
c_namespace = NAMESPACE
@@ -394,6 +408,7 @@ class ArtifactResolutionService(IndexedEndpointType_):
c_child_order = IndexedEndpointType_.c_child_order[:]
c_cardinality = IndexedEndpointType_.c_cardinality.copy()
def artifact_resolution_service_from_string(xml_string):
return saml2.create_class_from_xml_string(ArtifactResolutionService,
xml_string)
@@ -409,6 +424,7 @@ class SingleLogoutService(EndpointType_):
c_child_order = EndpointType_.c_child_order[:]
c_cardinality = EndpointType_.c_cardinality.copy()
def single_logout_service_from_string(xml_string):
return saml2.create_class_from_xml_string(SingleLogoutService, xml_string)
@@ -423,6 +439,7 @@ class ManageNameIDService(EndpointType_):
c_child_order = EndpointType_.c_child_order[:]
c_cardinality = EndpointType_.c_cardinality.copy()
def manage_name_id_service_from_string(xml_string):
return saml2.create_class_from_xml_string(ManageNameIDService, xml_string)
@@ -438,6 +455,7 @@ class NameIDFormat(SamlBase):
c_child_order = SamlBase.c_child_order[:]
c_cardinality = SamlBase.c_cardinality.copy()
def name_id_format_from_string(xml_string):
return saml2.create_class_from_xml_string(NameIDFormat, xml_string)
@@ -452,6 +470,7 @@ class SingleSignOnService(EndpointType_):
c_child_order = EndpointType_.c_child_order[:]
c_cardinality = EndpointType_.c_cardinality.copy()
def single_sign_on_service_from_string(xml_string):
return saml2.create_class_from_xml_string(SingleSignOnService, xml_string)
@@ -466,12 +485,14 @@ class NameIDMappingService(EndpointType_):
c_child_order = EndpointType_.c_child_order[:]
c_cardinality = EndpointType_.c_cardinality.copy()
def name_id_mapping_service_from_string(xml_string):
return saml2.create_class_from_xml_string(NameIDMappingService, xml_string)
class AssertionIDRequestService(EndpointType_):
"""The urn:oasis:names:tc:SAML:2.0:metadata:AssertionIDRequestService element """
"""The urn:oasis:names:tc:SAML:2.0:metadata:AssertionIDRequestService
element """
c_tag = 'AssertionIDRequestService'
c_namespace = NAMESPACE
@@ -480,6 +501,7 @@ class AssertionIDRequestService(EndpointType_):
c_child_order = EndpointType_.c_child_order[:]
c_cardinality = EndpointType_.c_cardinality.copy()
def assertion_id_request_service_from_string(xml_string):
return saml2.create_class_from_xml_string(AssertionIDRequestService,
xml_string)
@@ -496,12 +518,14 @@ class AttributeProfile(SamlBase):
c_child_order = SamlBase.c_child_order[:]
c_cardinality = SamlBase.c_cardinality.copy()
def attribute_profile_from_string(xml_string):
return saml2.create_class_from_xml_string(AttributeProfile, xml_string)
class AssertionConsumerService(IndexedEndpointType_):
"""The urn:oasis:names:tc:SAML:2.0:metadata:AssertionConsumerService element """
"""The urn:oasis:names:tc:SAML:2.0:metadata:AssertionConsumerService
element """
c_tag = 'AssertionConsumerService'
c_namespace = NAMESPACE
@@ -510,8 +534,10 @@ class AssertionConsumerService(IndexedEndpointType_):
c_child_order = IndexedEndpointType_.c_child_order[:]
c_cardinality = IndexedEndpointType_.c_cardinality.copy()
def assertion_consumer_service_from_string(xml_string):
return saml2.create_class_from_xml_string(AssertionConsumerService, xml_string)
return saml2.create_class_from_xml_string(AssertionConsumerService,
xml_string)
class ServiceName(LocalizedNameType_):
@@ -524,6 +550,7 @@ class ServiceName(LocalizedNameType_):
c_child_order = LocalizedNameType_.c_child_order[:]
c_cardinality = LocalizedNameType_.c_cardinality.copy()
def service_name_from_string(xml_string):
return saml2.create_class_from_xml_string(ServiceName, xml_string)
@@ -538,12 +565,14 @@ class ServiceDescription(LocalizedNameType_):
c_child_order = LocalizedNameType_.c_child_order[:]
c_cardinality = LocalizedNameType_.c_cardinality.copy()
def service_description_from_string(xml_string):
return saml2.create_class_from_xml_string(ServiceDescription, xml_string)
class RequestedAttributeType_(saml.AttributeType_):
"""The urn:oasis:names:tc:SAML:2.0:metadata:RequestedAttributeType element """
"""The urn:oasis:names:tc:SAML:2.0:metadata:RequestedAttributeType
element """
c_tag = 'RequestedAttributeType'
c_namespace = NAMESPACE
@@ -553,27 +582,18 @@ class RequestedAttributeType_(saml.AttributeType_):
c_cardinality = saml.AttributeType_.c_cardinality.copy()
c_attributes['isRequired'] = ('is_required', 'boolean', False)
def __init__(self,
is_required=None,
friendly_name=None,
name=None,
name_format=None,
attribute_value=None,
text=None,
extension_elements=None,
extension_attributes=None,
):
saml.AttributeType_.__init__(self,
friendly_name=friendly_name,
name=name,
name_format=name_format,
attribute_value=attribute_value,
text=text,
extension_elements=extension_elements,
extension_attributes=extension_attributes,
)
def __init__(self, is_required=None, friendly_name=None, name=None,
name_format=None, attribute_value=None, text=None,
extension_elements=None, extension_attributes=None):
saml.AttributeType_.__init__(self, friendly_name=friendly_name,
name=name, name_format=name_format,
attribute_value=attribute_value,
text=text,
extension_elements=extension_elements,
extension_attributes=extension_attributes)
self.is_required=is_required
def requested_attribute_type__from_string(xml_string):
return saml2.create_class_from_xml_string(RequestedAttributeType_,
xml_string)
@@ -589,6 +609,7 @@ class AuthnQueryService(EndpointType_):
c_child_order = EndpointType_.c_child_order[:]
c_cardinality = EndpointType_.c_cardinality.copy()
def authn_query_service_from_string(xml_string):
return saml2.create_class_from_xml_string(AuthnQueryService, xml_string)
@@ -603,6 +624,7 @@ class AuthzService(EndpointType_):
c_child_order = EndpointType_.c_child_order[:]
c_cardinality = EndpointType_.c_cardinality.copy()
def authz_service_from_string(xml_string):
return saml2.create_class_from_xml_string(AuthzService, xml_string)
@@ -617,6 +639,7 @@ class AttributeService(EndpointType_):
c_child_order = EndpointType_.c_child_order[:]
c_cardinality = EndpointType_.c_cardinality.copy()
def attribute_service_from_string(xml_string):
return saml2.create_class_from_xml_string(AttributeService, xml_string)
@@ -631,6 +654,7 @@ class AffiliateMember(EntityIDType_):
c_child_order = EntityIDType_.c_child_order[:]
c_cardinality = EntityIDType_.c_cardinality.copy()
def affiliate_member_from_string(xml_string):
return saml2.create_class_from_xml_string(AffiliateMember, xml_string)
@@ -645,6 +669,7 @@ class Extensions(ExtensionsType_):
c_child_order = ExtensionsType_.c_child_order[:]
c_cardinality = ExtensionsType_.c_cardinality.copy()
def extensions_from_string(xml_string):
return saml2.create_class_from_xml_string(Extensions, xml_string)
@@ -659,43 +684,33 @@ class OrganizationType_(SamlBase):
c_child_order = SamlBase.c_child_order[:]
c_cardinality = SamlBase.c_cardinality.copy()
c_children['{urn:oasis:names:tc:SAML:2.0:metadata}Extensions'] = (
'extensions',
Extensions)
'extensions', Extensions)
c_cardinality['extensions'] = {"min":0, "max":1}
c_children['{urn:oasis:names:tc:SAML:2.0:metadata}OrganizationName'] = (
'organization_name',
[OrganizationName])
'organization_name', [OrganizationName])
c_cardinality['organization_name'] = {"min":1}
c_children['{urn:oasis:names:tc:SAML:2.0:metadata}OrganizationDisplayName'] = (
'organization_display_name',
[OrganizationDisplayName])
c_children[
'{urn:oasis:names:tc:SAML:2.0:metadata}OrganizationDisplayName'] = (
'organization_display_name', [OrganizationDisplayName])
c_cardinality['organization_display_name'] = {"min":1}
c_children['{urn:oasis:names:tc:SAML:2.0:metadata}OrganizationURL'] = (
'organization_url',
[OrganizationURL])
'organization_url', [OrganizationURL])
c_cardinality['organization_url'] = {"min":1}
c_child_order.extend(['extensions', 'organization_name',
'organization_display_name', 'organization_url'])
def __init__(self,
extensions=None,
organization_name=None,
organization_display_name=None,
organization_url=None,
text=None,
extension_elements=None,
extension_attributes=None,
):
SamlBase.__init__(self,
text=text,
extension_elements=extension_elements,
extension_attributes=extension_attributes,
)
def __init__(self, extensions=None, organization_name=None,
organization_display_name=None, organization_url=None,
text=None, extension_elements=None, extension_attributes=None):
SamlBase.__init__(self, text=text,
extension_elements=extension_elements,
extension_attributes=extension_attributes)
self.extensions=extensions
self.organization_name=organization_name or []
self.organization_display_name=organization_display_name or []
self.organization_url=organization_url or []
def organization_type__from_string(xml_string):
return saml2.create_class_from_xml_string(OrganizationType_, xml_string)
@@ -709,25 +724,23 @@ class ContactType_(SamlBase):
c_attributes = SamlBase.c_attributes.copy()
c_child_order = SamlBase.c_child_order[:]
c_cardinality = SamlBase.c_cardinality.copy()
c_children['{urn:oasis:names:tc:SAML:2.0:metadata}Extensions'] = ('extensions',
Extensions)
c_children['{urn:oasis:names:tc:SAML:2.0:metadata}Extensions'] = (
'extensions', Extensions)
c_cardinality['extensions'] = {"min":0, "max":1}
c_children['{urn:oasis:names:tc:SAML:2.0:metadata}Company'] = ('company',
Company)
c_children['{urn:oasis:names:tc:SAML:2.0:metadata}Company'] = (
'company', Company)
c_cardinality['company'] = {"min":0, "max":1}
c_children['{urn:oasis:names:tc:SAML:2.0:metadata}GivenName'] = ('given_name',
GivenName)
c_children['{urn:oasis:names:tc:SAML:2.0:metadata}GivenName'] = (
'given_name', GivenName)
c_cardinality['given_name'] = {"min":0, "max":1}
c_children['{urn:oasis:names:tc:SAML:2.0:metadata}SurName'] = ('sur_name',
SurName)
c_children['{urn:oasis:names:tc:SAML:2.0:metadata}SurName'] = (
'sur_name', SurName)
c_cardinality['sur_name'] = {"min":0, "max":1}
c_children['{urn:oasis:names:tc:SAML:2.0:metadata}EmailAddress'] = (
'email_address',
[EmailAddress])
'email_address', [EmailAddress])
c_cardinality['email_address'] = {"min":0}
c_children['{urn:oasis:names:tc:SAML:2.0:metadata}TelephoneNumber'] = (
'telephone_number',
[TelephoneNumber])
'telephone_number', [TelephoneNumber])
c_cardinality['telephone_number'] = {"min":0}
c_attributes['contactType'] = ('contact_type', ContactTypeType_, True)
c_child_order.extend(['extensions', 'company', 'given_name', 'sur_name',
@@ -758,12 +771,14 @@ class ContactType_(SamlBase):
self.telephone_number=telephone_number or []
self.contact_type=contact_type
def contact_type__from_string(xml_string):
return saml2.create_class_from_xml_string(ContactType_, xml_string)
class AdditionalMetadataLocation(AdditionalMetadataLocationType_):
"""The urn:oasis:names:tc:SAML:2.0:metadata:AdditionalMetadataLocation element """
"""The urn:oasis:names:tc:SAML:2.0:metadata:AdditionalMetadataLocation
element """
c_tag = 'AdditionalMetadataLocation'
c_namespace = NAMESPACE
@@ -772,6 +787,7 @@ class AdditionalMetadataLocation(AdditionalMetadataLocationType_):
c_child_order = AdditionalMetadataLocationType_.c_child_order[:]
c_cardinality = AdditionalMetadataLocationType_.c_cardinality.copy()
def additional_metadata_location_from_string(xml_string):
return saml2.create_class_from_xml_string(AdditionalMetadataLocation,
xml_string)
@@ -786,12 +802,11 @@ class KeyDescriptorType_(SamlBase):
c_attributes = SamlBase.c_attributes.copy()
c_child_order = SamlBase.c_child_order[:]
c_cardinality = SamlBase.c_cardinality.copy()
c_children['{http://www.w3.org/2000/09/xmldsig#}KeyInfo'] = ('key_info',
ds.KeyInfo)
c_children['{http://www.w3.org/2000/09/xmldsig#}KeyInfo'] = (
'key_info', ds.KeyInfo)
c_children['{urn:oasis:names:tc:SAML:2.0:metadata}EncryptionMethod'] = (
'encryption_method',
[EncryptionMethod])
c_cardinality['encryption_method'] = {"min":0}
'encryption_method', [EncryptionMethod])
c_cardinality['encryption_method'] = {"min": 0}
c_attributes['use'] = ('use', KeyTypes_, False)
c_child_order.extend(['key_info', 'encryption_method'])
@@ -902,8 +917,8 @@ class RoleDescriptorType_(SamlBase):
c_attributes['ID'] = ('id', 'ID', False)
c_attributes['validUntil'] = ('valid_until', 'dateTime', False)
c_attributes['cacheDuration'] = ('cache_duration', 'duration', False)
c_attributes['protocolSupportEnumeration'] = ('protocol_support_enumeration',
AnyURIListType_, True)
c_attributes['protocolSupportEnumeration'] = (
'protocol_support_enumeration', AnyURIListType_, True)
c_attributes['errorURL'] = ('error_url', 'anyURI', False)
c_child_order.extend(['signature', 'extensions', 'key_descriptor',
'organization', 'contact_person'])

View File

@@ -13,6 +13,7 @@ Functions used to import metadata from and export it to a pysaml2 format
IMP_SKIP = ["_certs", "e_e_", "_extatt"]
EXP_SKIP = ["__class__"]
# From pysaml2 SAML2 metadata format to Python dictionary
def _eval(val, onts):
"""
@@ -39,6 +40,7 @@ def _eval(val, onts):
return lv
return val
def to_dict(_dict, onts):
"""
Convert a pysaml2 SAML2 message class instance into a basic dictionary
@@ -46,12 +48,12 @@ def to_dict(_dict, onts):
The export interface.
:param _dict: The pysaml2 metadata instance
:param onts: Schemas to use for the conversion
:param onts: List of schemas to use for the conversion
:return: The converted information
"""
res = {}
if isinstance(_dict, SamlBase):
res["__class__"] = "%s&%s" % (_dict.c_namespace,_dict.c_tag)
res["__class__"] = "%s&%s" % (_dict.c_namespace, _dict.c_tag)
for key in _dict.keyswv():
if key in IMP_SKIP:
continue
@@ -81,10 +83,13 @@ def _kwa(val, onts):
Key word argument conversion
:param val: A dictionary
:param onts: Schemas to use in the conversion
:param onts: dictionary with schemas to use in the conversion
schema namespase is the key in the dictionary
:return: A converted dictionary
"""
return dict([(k,from_dict(v, onts)) for k,v in val.items() if k not in EXP_SKIP])
return dict([(k, from_dict(v, onts)) for k, v in val.items()
if k not in EXP_SKIP])
def from_dict(val, onts):
"""
@@ -124,4 +129,3 @@ def from_dict(val, onts):
return [from_dict(v, onts) for v in val]
else:
return val

View File

@@ -43,13 +43,15 @@ REQ2SRV = {
"assertion_response": "assertion_consumer_service",
"attribute_response": "attribute_consuming_service",
"discovery_service_request": "discovery_response"
}
}
# ---------------------------------------------------
def destinations(srvs):
return [s["location"] for s in srvs]
def attribute_requirement(entity):
res = {"required": [], "optional": []}
for acs in entity["attribute_consuming_service"]:
@@ -60,6 +62,7 @@ def attribute_requirement(entity):
res["optional"].append(attr)
return res
def name(ent, langpref="en"):
try:
org = ent["organization"]
@@ -77,6 +80,7 @@ def name(ent, langpref="en"):
pass
return None
def repack_cert(cert):
part = cert.split("\n")
if len(part) == 1:
@@ -120,14 +124,14 @@ class MetaData(object):
except KeyError:
continue
if descr == "affiliation": # Not protocol specific
if descr == "affiliation": # Not protocol specific
flag += 1
continue
for item in _items:
for prot in item["protocol_support_enumeration"].split(" "):
if prot == samlp.NAMESPACE:
item["protocol_support_enumeration"] = [prot]
item["protocol_support_enumeration"] = prot
_res.append(item)
break
if not _res:
@@ -279,9 +283,9 @@ class MetaData(object):
def with_descriptor(self, descriptor):
res = {}
desc = "%s_descriptor" % descriptor
for id, ent in self.entity.items():
for eid, ent in self.entity.items():
if desc in ent:
res[id] = ent
res[eid] = ent
return res
def __str__(self):
@@ -289,18 +293,19 @@ class MetaData(object):
def construct_source_id(self):
res = {}
for id,ent in self.entity.items():
for eid, ent in self.entity.items():
for desc in ["spsso_descriptor", "idpsso_descriptor"]:
try:
for srv in ent[desc]:
if "artifact_resolution_service" in srv:
s = sha1(id)
s = sha1(eid)
res[s.digest()] = ent
except KeyError:
pass
return res
class MetaDataFile(MetaData):
def __init__(self, onts, attrc, filename):
MetaData.__init__(self, onts, attrc)
@@ -309,6 +314,7 @@ class MetaDataFile(MetaData):
def load(self):
self.parse(open(self.filename).read())
class MetaDataExtern(MetaData):
def __init__(self, onts, attrc, url, xmlsec_binary, cert, http):
MetaData.__init__(self, onts, attrc)
@@ -324,15 +330,17 @@ class MetaDataExtern(MetaData):
"""
(response, content) = self.http.request(self.url)
if response.status == 200:
if verify_signature(content, self.xmlsec_binary, self.cert,
node_name="%s:%s" % (md.EntitiesDescriptor.c_namespace,
md.EntitiesDescriptor.c_tag)):
if verify_signature(
content, self.xmlsec_binary, self.cert,
node_name="%s:%s" % (md.EntitiesDescriptor.c_namespace,
md.EntitiesDescriptor.c_tag)):
self.parse(content)
return True
else:
logger.info("Response status: %s" % response.status)
return False
class MetaDataMD(MetaData):
def __init__(self, onts, attrc, filename):
MetaData.__init__(self, onts, attrc)
@@ -341,35 +349,37 @@ class MetaDataMD(MetaData):
def load(self):
self.entity = eval(open(self.filename).read())
class MetadataStore(object):
def __init__(self, onts, attrc, xmlsec_binary=None, ca_certs=None,
disable_ssl_certificate_validation=False):
self.onts = onts
self.attrc = attrc
self.http = httplib2.Http(ca_certs=ca_certs,
disable_ssl_certificate_validation=disable_ssl_certificate_validation)
self.http = httplib2.Http(
ca_certs=ca_certs,
disable_ssl_certificate_validation=disable_ssl_certificate_validation)
self.xmlsec_binary = xmlsec_binary
self.ii = 0
self.metadata = {}
def load(self, type, *args, **kwargs):
if type == "local":
def load(self, typ, *args, **kwargs):
if typ == "local":
key = args[0]
md = MetaDataFile(self.onts, self.attrc, args[0])
elif type == "inline":
elif typ == "inline":
self.ii += 1
key = self.ii
md = MetaData(self.onts, self.attrc)
elif type == "remote":
elif typ == "remote":
key = kwargs["url"]
md = MetaDataExtern(self.onts, self.attrc,
kwargs["url"], self.xmlsec_binary,
kwargs["cert"], self.http)
elif type == "mdfile":
elif typ == "mdfile":
key = args[0]
md = MetaDataMD(self.onts, self.attrc, args[0])
else:
raise Exception("Unknown metadata type '%s'" % type)
raise Exception("Unknown metadata type '%s'" % typ)
md.load()
self.metadata[key] = md
@@ -566,12 +576,14 @@ class MetadataStore(object):
for key in srv["key_descriptor"]:
if "use" in key and key["use"] == use:
for dat in key["key_info"]["x509_data"]:
cert = repack_cert(dat["x509_certificate"]["text"])
cert = repack_cert(
dat["x509_certificate"]["text"])
if cert not in res:
res.append(cert)
elif not "use" in key:
for dat in key["key_info"]["x509_data"]:
cert = repack_cert(dat["x509_certificate"]["text"])
cert = repack_cert(
dat["x509_certificate"]["text"])
if cert not in res:
res.append(cert)
else: