private void validateConfig() throws ConfigXMLParsingException {
    if (logger.isDebugEnabled()) {
      logger.debug("validateConfig() - start"); // $NON-NLS-1$
    }

    assertConfigForTag(localEntityId == null, "LOCAL_ENTITY_ID");
    assertConfigForTag(postAttrSAML == null, "SAML_POST_ATTRIBUTE_NAME");
    if (SAMLTokenEncrypted) validateSAMLDecryptorKey("SAML_TOKEN_ENCRYPTION");
    validateDecryptKey("SAML_ENCRYPTED_ASSERTION_DECRYPTOR");
    // validateSignerKeyKey("SAML_SIGNATURE_VERIFIER");
    assertConfigForTag(metadataProvider == null, "SAML_METADATA_PROVIDER");
    assertConfigForTag(idpURL == null, "IDP_URL");
    assertConfigForTag(verifySignature == null, "ASSERTION_SIGNATURE_VERIFICATION");

    if (contextDataExtractor != null) {
      assertConfigForAttribute(contextDataStore == null, "ATTRIBUTE_NAME", "STOREAS");
      assertConfigForAttribute(
          contextDataStore != ContextDataStoreType.none && contextDataStoreParam == null,
          "ATTRIBUTE_NAME",
          "STOREIN");
    }

    createDefaultInvalidSessionHandler(invalidSessionHandler == null);
    createDefaultErrorHandler(errorHandler == null);

    if (logger.isDebugEnabled()) {
      logger.debug("validateConfig() - end"); // $NON-NLS-1$
    }
  }
  private void validateSAMLDecryptorKey(String parent) throws ConfigXMLParsingException {
    if (logger.isDebugEnabled()) {
      logger.debug("validateSAMLDecryptorKey(String) - start"); // $NON-NLS-1$
    }

    assertConfigForTag(SAMLTokenDecryptionKey == null, parent);
    assertConfigForAttribute(SAMLTokenDecryptionKey.getAlgorithm() == null, parent, "ALGORITHM");
    assertConfigForAttribute(SAMLTokenDecryptionKey.getInit() == null, parent, "INIT");
    assertConfigForAttribute(SAMLTokenDecryptionKey.getKey() == null, parent, "KEY");

    if (logger.isDebugEnabled()) {
      logger.debug("validateSAMLDecryptorKey(String) - end"); // $NON-NLS-1$
    }
  }
  private void validateDecryptKey(String parent) throws ConfigXMLParsingException {
    if (logger.isDebugEnabled()) {
      logger.debug("validateDecryptKey(String) - start"); // $NON-NLS-1$
    }

    assertConfigForTag(decryptionKey == null, parent);
    assertConfigForAttribute(decryptionKey.getKeystore() == null, parent, "KEYSTORE");
    assertConfigForAttribute(decryptionKey.getKeystore().getAlias() == null, parent, "ALIAS");
    assertConfigForAttribute(decryptionKey.getKeystore().getKeystore() == null, parent, "KEYSTORE");
    assertConfigForAttribute(decryptionKey.getKeystore().getPassword() == null, parent, "PASSWORD");
    assertConfigForAttribute(decryptionKey.getKeystore().getType() == null, parent, "TYPE");
    assertConfigForAttribute(
        decryptionKey.getKeystore().getKeyPassword() == null, parent, "KEY_PASSWORD");

    if (logger.isDebugEnabled()) {
      logger.debug("validateDecryptKey(String) - end"); // $NON-NLS-1$
    }
  }