def check_sp_settings(self, settings):
    '\n        Checks the SP settings info.\n        :param settings: Dict with settings data\n        :type settings: dict\n        :returns: Errors found on the SP settings data\n        :rtype: list\n        '
    assert isinstance(settings, dict)
    errors = []
    if ((not isinstance(settings, dict)) or (not settings)):
        errors.append('invalid_syntax')
    else:
        if (not settings.get('sp')):
            errors.append('sp_not_found')
        else:
            old_sp = self.__sp
            self.__sp = settings['sp']
            sp = settings['sp']
            security = settings.get('security', {})
            if (not sp.get('entityId')):
                errors.append('sp_entityId_not_found')
            if (not sp.get('assertionConsumerService', {}).get('url')):
                errors.append('sp_acs_not_found')
            elif (not validate_url(sp['assertionConsumerService']['url'])):
                errors.append('sp_acs_url_invalid')
            if sp.get('attributeConsumingService'):
                attributeConsumingService = sp['attributeConsumingService']
                if ('serviceName' not in attributeConsumingService):
                    errors.append('sp_attributeConsumingService_serviceName_not_found')
                elif (not isinstance(attributeConsumingService['serviceName'], basestring)):
                    errors.append('sp_attributeConsumingService_serviceName_type_invalid')
                if ('requestedAttributes' not in attributeConsumingService):
                    errors.append('sp_attributeConsumingService_requestedAttributes_not_found')
                elif (not isinstance(attributeConsumingService['requestedAttributes'], list)):
                    errors.append('sp_attributeConsumingService_serviceName_type_invalid')
                else:
                    for req_attrib in attributeConsumingService['requestedAttributes']:
                        if ('name' not in req_attrib):
                            errors.append('sp_attributeConsumingService_requestedAttributes_name_not_found')
                        if (('name' in req_attrib) and (not req_attrib['name'].strip())):
                            errors.append('sp_attributeConsumingService_requestedAttributes_name_invalid')
                        if (('attributeValue' in req_attrib) and (type(req_attrib['attributeValue']) != list)):
                            errors.append('sp_attributeConsumingService_requestedAttributes_attributeValue_type_invalid')
                        if (('isRequired' in req_attrib) and (type(req_attrib['isRequired']) != bool)):
                            errors.append('sp_attributeConsumingService_requestedAttributes_isRequired_type_invalid')
                if (('serviceDescription' in attributeConsumingService) and (not isinstance(attributeConsumingService['serviceDescription'], basestring))):
                    errors.append('sp_attributeConsumingService_serviceDescription_type_invalid')
            slo_url = sp.get('singleLogoutService', {}).get('url')
            if (slo_url and (not validate_url(slo_url))):
                errors.append('sp_sls_url_invalid')
            if (('signMetadata' in security) and isinstance(security['signMetadata'], dict)):
                if (('keyFileName' not in security['signMetadata']) or ('certFileName' not in security['signMetadata'])):
                    errors.append('sp_signMetadata_invalid')
            authn_sign = bool(security.get('authnRequestsSigned'))
            logout_req_sign = bool(security.get('logoutRequestSigned'))
            logout_res_sign = bool(security.get('logoutResponseSigned'))
            want_assert_enc = bool(security.get('wantAssertionsEncrypted'))
            want_nameid_enc = bool(security.get('wantNameIdEncrypted'))
            if (not self.check_sp_certs()):
                if (authn_sign or logout_req_sign or logout_res_sign or want_assert_enc or want_nameid_enc):
                    errors.append('sp_cert_not_found_and_required')
        if ('contactPerson' in settings):
            types = settings['contactPerson']
            valid_types = ['technical', 'support', 'administrative', 'billing', 'other']
            for c_type in types:
                if (c_type not in valid_types):
                    errors.append('contact_type_invalid')
                    break
            for c_type in settings['contactPerson']:
                contact = settings['contactPerson'][c_type]
                if ((('givenName' not in contact) or (len(contact['givenName']) == 0)) or (('emailAddress' not in contact) or (len(contact['emailAddress']) == 0))):
                    errors.append('contact_not_enought_data')
                    break
        if ('organization' in settings):
            for org in settings['organization']:
                organization = settings['organization'][org]
                if ((('name' not in organization) or (len(organization['name']) == 0)) or (('displayname' not in organization) or (len(organization['displayname']) == 0)) or (('url' not in organization) or (len(organization['url']) == 0))):
                    errors.append('organization_not_enought_data')
                    break
    if ('old_sp' in locals()):
        self.__sp = old_sp
    return errors
Checks the SP settings info.
:param settings: Dict with settings data
:type settings: dict
:returns: Errors found on the SP settings data
:rtype: list
def check_sp_settings(self, settings):
    '\n        Checks the SP settings info.\n        :param settings: Dict with settings data\n        :type settings: dict\n        :returns: Errors found on the SP settings data\n        :rtype: list\n        '
    assert isinstance(settings, dict)
    errors = []
    if ((not isinstance(settings, dict)) or (not settings)):
        errors.append('invalid_syntax')
    else:
        if (not settings.get('sp')):
            errors.append('sp_not_found')
        else:
            old_sp = self.__sp
            self.__sp = settings['sp']
            sp = settings['sp']
            security = settings.get('security', {})
            if (not sp.get('entityId')):
                errors.append('sp_entityId_not_found')
            if (not sp.get('assertionConsumerService', {}).get('url')):
                errors.append('sp_acs_not_found')
            elif (not validate_url(sp['assertionConsumerService']['url'])):
                errors.append('sp_acs_url_invalid')
            if sp.get('attributeConsumingService'):
                attributeConsumingService = sp['attributeConsumingService']
                if ('serviceName' not in attributeConsumingService):
                    errors.append('sp_attributeConsumingService_serviceName_not_found')
                elif (not isinstance(attributeConsumingService['serviceName'], basestring)):
                    errors.append('sp_attributeConsumingService_serviceName_type_invalid')
                if ('requestedAttributes' not in attributeConsumingService):
                    errors.append('sp_attributeConsumingService_requestedAttributes_not_found')
                elif (not isinstance(attributeConsumingService['requestedAttributes'], list)):
                    errors.append('sp_attributeConsumingService_serviceName_type_invalid')
                else:
                    for req_attrib in attributeConsumingService['requestedAttributes']:
                        if ('name' not in req_attrib):
                            errors.append('sp_attributeConsumingService_requestedAttributes_name_not_found')
                        if (('name' in req_attrib) and (not req_attrib['name'].strip())):
                            errors.append('sp_attributeConsumingService_requestedAttributes_name_invalid')
                        if (('attributeValue' in req_attrib) and (type(req_attrib['attributeValue']) != list)):
                            errors.append('sp_attributeConsumingService_requestedAttributes_attributeValue_type_invalid')
                        if (('isRequired' in req_attrib) and (type(req_attrib['isRequired']) != bool)):
                            errors.append('sp_attributeConsumingService_requestedAttributes_isRequired_type_invalid')
                if (('serviceDescription' in attributeConsumingService) and (not isinstance(attributeConsumingService['serviceDescription'], basestring))):
                    errors.append('sp_attributeConsumingService_serviceDescription_type_invalid')
            slo_url = sp.get('singleLogoutService', {}).get('url')
            if (slo_url and (not validate_url(slo_url))):
                errors.append('sp_sls_url_invalid')
            if (('signMetadata' in security) and isinstance(security['signMetadata'], dict)):
                if (('keyFileName' not in security['signMetadata']) or ('certFileName' not in security['signMetadata'])):
                    errors.append('sp_signMetadata_invalid')
            authn_sign = bool(security.get('authnRequestsSigned'))
            logout_req_sign = bool(security.get('logoutRequestSigned'))
            logout_res_sign = bool(security.get('logoutResponseSigned'))
            want_assert_enc = bool(security.get('wantAssertionsEncrypted'))
            want_nameid_enc = bool(security.get('wantNameIdEncrypted'))
            if (not self.check_sp_certs()):
                if (authn_sign or logout_req_sign or logout_res_sign or want_assert_enc or want_nameid_enc):
                    errors.append('sp_cert_not_found_and_required')
        if ('contactPerson' in settings):
            types = settings['contactPerson']
            valid_types = ['technical', 'support', 'administrative', 'billing', 'other']
            for c_type in types:
                if (c_type not in valid_types):
                    errors.append('contact_type_invalid')
                    break
            for c_type in settings['contactPerson']:
                contact = settings['contactPerson'][c_type]
                if ((('givenName' not in contact) or (len(contact['givenName']) == 0)) or (('emailAddress' not in contact) or (len(contact['emailAddress']) == 0))):
                    errors.append('contact_not_enought_data')
                    break
        if ('organization' in settings):
            for org in settings['organization']:
                organization = settings['organization'][org]
                if ((('name' not in organization) or (len(organization['name']) == 0)) or (('displayname' not in organization) or (len(organization['displayname']) == 0)) or (('url' not in organization) or (len(organization['url']) == 0))):
                    errors.append('organization_not_enought_data')
                    break
    if ('old_sp' in locals()):
        self.__sp = old_sp
    return errors