def check_idp_settings(self, settings):
assert isinstance(settings, dict)<EOL>errors = []<EOL>if not isinstance(settings, dict) or len(settings) == <NUM_LIT:0>:<EOL><INDENT>errors.append('<STR_LIT>')<EOL><DEDENT>else:<EOL><INDENT>if not settings.get('<STR_LIT>'):<EOL><INDENT>errors.append('<STR_LIT>')<EOL><DEDENT>else:<EOL><INDENT>idp = settings['<STR_LIT>']<EOL>if not idp.get('<STR_LIT>'):<EOL><INDENT>errors.append('<STR_LIT>')<EOL><DEDENT>if not idp.get('<STR_LIT>', {}).get('<STR_LIT:url>'):<EOL><INDENT>errors.append('<STR_LIT>')<EOL><DEDENT>elif not validate_url(idp['<STR_LIT>']['<STR_LIT:url>']):<EOL><INDENT>errors.append('<STR_LIT>')<EOL><DEDENT>slo_url = idp.get('<STR_LIT>', {}).get('<STR_LIT:url>')<EOL>if slo_url and not validate_url(slo_url):<EOL><INDENT>errors.append('<STR_LIT>')<EOL><DEDENT>if '<STR_LIT>' in settings:<EOL><INDENT>security = settings['<STR_LIT>']<EOL>exists_x509 = bool(idp.get('<STR_LIT>'))<EOL>exists_fingerprint = bool(idp.get('<STR_LIT>'))<EOL>exists_multix509sign = '<STR_LIT>' in idp and'<STR_LIT>' in idp['<STR_LIT>'] andidp['<STR_LIT>']['<STR_LIT>']<EOL>exists_multix509enc = '<STR_LIT>' in idp and'<STR_LIT>' in idp['<STR_LIT>'] andidp['<STR_LIT>']['<STR_LIT>']<EOL>want_assert_sign = bool(security.get('<STR_LIT>'))<EOL>want_mes_signed = bool(security.get('<STR_LIT>'))<EOL>nameid_enc = bool(security.get('<STR_LIT>'))<EOL>if (want_assert_sign or want_mes_signed) andnot(exists_x509 or exists_fingerprint or exists_multix509sign):<EOL><INDENT>errors.append('<STR_LIT>')<EOL><DEDENT>if nameid_enc and not (exists_x509 or exists_multix509enc):<EOL><INDENT>errors.append('<STR_LIT>')<EOL><DEDENT><DEDENT><DEDENT><DEDENT>return errors<EOL>
Checks the IdP settings info.

:param settings: Dict with settings data
:type settings: dict

:returns: Errors found on the IdP settings data
:rtype: list