ModIDynamicConfigurationKeystoreUtilities.java

  1. /*
  2.  * GovWay - A customizable API Gateway
  3.  * https://govway.org
  4.  *
  5.  * Copyright (c) 2005-2025 Link.it srl (https://link.it).
  6.  *
  7.  * This program is free software: you can redistribute it and/or modify
  8.  * it under the terms of the GNU General Public License version 3, as published by
  9.  * the Free Software Foundation.
  10.  *
  11.  * This program is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public License
  17.  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  18.  *
  19.  */
  20. package org.openspcoop2.protocol.modipa.properties;

  21. import java.security.KeyStore;
  22. import java.util.ArrayList;
  23. import java.util.List;

  24. import org.apache.commons.lang.StringUtils;
  25. import org.openspcoop2.core.commons.DBUtils;
  26. import org.openspcoop2.core.config.ConfigurazioneMultitenant;
  27. import org.openspcoop2.core.config.constants.PortaApplicativaSoggettiFruitori;
  28. import org.openspcoop2.core.config.constants.StatoFunzionalita;
  29. import org.openspcoop2.protocol.modipa.constants.ModIConsoleCostanti;
  30. import org.openspcoop2.protocol.sdk.ProtocolException;
  31. import org.openspcoop2.protocol.sdk.constants.ConsoleItemType;
  32. import org.openspcoop2.protocol.sdk.constants.ConsoleItemValueType;
  33. import org.openspcoop2.protocol.sdk.properties.AbstractConsoleItem;
  34. import org.openspcoop2.protocol.sdk.properties.BaseConsoleItem;
  35. import org.openspcoop2.protocol.sdk.properties.BinaryConsoleItem;
  36. import org.openspcoop2.protocol.sdk.properties.BinaryProperty;
  37. import org.openspcoop2.protocol.sdk.properties.BooleanConsoleItem;
  38. import org.openspcoop2.protocol.sdk.properties.BooleanProperty;
  39. import org.openspcoop2.protocol.sdk.properties.ConsoleConfiguration;
  40. import org.openspcoop2.protocol.sdk.properties.ProtocolProperties;
  41. import org.openspcoop2.protocol.sdk.properties.ProtocolPropertiesFactory;
  42. import org.openspcoop2.protocol.sdk.properties.ProtocolPropertiesUtils;
  43. import org.openspcoop2.protocol.sdk.properties.StringConsoleItem;
  44. import org.openspcoop2.protocol.sdk.properties.StringProperty;
  45. import org.openspcoop2.utils.certificate.ArchiveLoader;
  46. import org.openspcoop2.utils.certificate.ArchiveType;
  47. import org.openspcoop2.utils.certificate.Certificate;
  48. import org.openspcoop2.utils.certificate.CertificateInfo;
  49. import org.openspcoop2.utils.certificate.KeystoreUtils;
  50. import org.openspcoop2.utils.certificate.byok.BYOKProvider;
  51. import org.openspcoop2.utils.certificate.hsm.HSMUtils;
  52. import org.openspcoop2.utils.certificate.ocsp.OCSPProvider;
  53. import org.openspcoop2.utils.certificate.remote.RemoteStoreConfig;

  54. /**
  55.  * ModIDynamicConfigurationKeystoreUtilities
  56.  *
  57.  * @author Poli Andrea (apoli@link.it)
  58.  * @author $Author$
  59.  * @version $Rev$, $Date$
  60.  */
  61. public class ModIDynamicConfigurationKeystoreUtilities {
  62.    
  63.     private ModIDynamicConfigurationKeystoreUtilities() {}

  64.     static void addKeystoreConfig(ConsoleConfiguration configuration, boolean checkRidefinisci, boolean addHiddenSubjectIssuer, boolean requiredValue) throws ProtocolException {
  65.        
  66.         if(checkRidefinisci) {
  67.             BaseConsoleItem subTitleItem =
  68.                     ProtocolPropertiesFactory.newSubTitleItem(
  69.                             ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_KEYSTORE_ID,
  70.                             ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_KEYSTORE_LABEL);
  71.             subTitleItem.setType(ConsoleItemType.HIDDEN);
  72.             configuration.addConsoleItem(subTitleItem);
  73.         }
  74.        
  75.         StringConsoleItem modeItem = (StringConsoleItem)
  76.                 ProtocolPropertiesFactory.newConsoleItem(ConsoleItemValueType.STRING,
  77.                 ConsoleItemType.HIDDEN,
  78.                 ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_ID,
  79.                 ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_LABEL);
  80.         modeItem.setDefaultValue(ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_DEFAULT_VALUE);
  81.         modeItem.setReloadOnChange(true, true);
  82.         configuration.addConsoleItem(modeItem);
  83.                
  84.         StringConsoleItem typeItem = (StringConsoleItem)
  85.                 ProtocolPropertiesFactory.newConsoleItem(ConsoleItemValueType.STRING,
  86.                 ConsoleItemType.HIDDEN,
  87.                 ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_ID,
  88.                 ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_LABEL);
  89.         typeItem.setDefaultValue(ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_DEFAULT_VALUE);
  90.         typeItem.setReloadOnChange(true, true);
  91.         configuration.addConsoleItem(typeItem);
  92.        
  93.         AbstractConsoleItem<?> archiveItem =
  94.                 ProtocolPropertiesFactory.newConsoleItem(
  95.                         ConsoleItemValueType.BINARY,
  96.                         ConsoleItemType.HIDDEN,
  97.                         ModIConsoleCostanti.MODIPA_KEYSTORE_ARCHIVE_ID,
  98.                         ModIConsoleCostanti.MODIPA_KEYSTORE_ARCHIVE_LABEL);
  99.         ((BinaryConsoleItem)archiveItem).setShowContent(false);
  100.         ((BinaryConsoleItem)archiveItem).setReadOnly(false);
  101.         ((BinaryConsoleItem)archiveItem).setRequired(true);
  102.         ((BinaryConsoleItem)archiveItem).setNoteUpdate(ModIConsoleCostanti.MODIPA_KEYSTORE_ARCHIVE_NOTE_UPDATE);
  103.         ((BinaryConsoleItem)archiveItem).setLock(true);
  104.         configuration.addConsoleItem(archiveItem);
  105.        
  106.         AbstractConsoleItem<?> pathItem =
  107.                 ProtocolPropertiesFactory.newConsoleItem(
  108.                         ConsoleItemValueType.STRING,
  109.                         ConsoleItemType.HIDDEN,
  110.                         ModIConsoleCostanti.MODIPA_KEYSTORE_PATH_ID,
  111.                         ModIConsoleCostanti.MODIPA_KEYSTORE_PATH_LABEL);
  112.         configuration.addConsoleItem(pathItem);
  113.        
  114.         AbstractConsoleItem<?> pathPublicKeyItem =
  115.                 ProtocolPropertiesFactory.newConsoleItem(
  116.                         ConsoleItemValueType.STRING,
  117.                         ConsoleItemType.HIDDEN,
  118.                         ModIConsoleCostanti.MODIPA_KEYSTORE_PATH_PUBLIC_KEY_ID,
  119.                         ModIConsoleCostanti.MODIPA_KEYSTORE_PATH_PUBLIC_KEY_LABEL);
  120.         configuration.addConsoleItem(pathPublicKeyItem);
  121.        
  122.         StringConsoleItem pathKeyAlgorithmItem = (StringConsoleItem)
  123.                 ProtocolPropertiesFactory.newConsoleItem(
  124.                         ConsoleItemValueType.STRING,
  125.                         ConsoleItemType.HIDDEN,
  126.                         ModIConsoleCostanti.MODIPA_KEYSTORE_KEY_ALGORITHM_ID,
  127.                         ModIConsoleCostanti.MODIPA_KEYSTORE_KEY_ALGORITHM_LABEL);
  128.         pathKeyAlgorithmItem.setDefaultValue(ModIConsoleCostanti.MODIPA_KEYSTORE_KEY_ALGORITHM_DEFAULT_VALUE);
  129.         configuration.addConsoleItem(pathKeyAlgorithmItem);
  130.        
  131.         AbstractConsoleItem<?> keystorePasswordItem =
  132.                 ProtocolPropertiesFactory.newConsoleItem(
  133.                         ConsoleItemValueType.STRING,
  134.                         ConsoleItemType.LOCK_HIDDEN,
  135.                         ModIConsoleCostanti.MODIPA_KEYSTORE_PASSWORD_ID,
  136.                         ModIConsoleCostanti.MODIPA_KEYSTORE_PASSWORD_LABEL);
  137.         keystorePasswordItem.setRequired(requiredValue);
  138.         configuration.addConsoleItem(keystorePasswordItem);
  139.        
  140.         AbstractConsoleItem<?> keyAliasItem =
  141.                 ProtocolPropertiesFactory.newConsoleItem(
  142.                         ConsoleItemValueType.STRING,
  143.                         ConsoleItemType.HIDDEN,
  144.                         ModIConsoleCostanti.MODIPA_KEY_ALIAS_ID,
  145.                         ModIConsoleCostanti.MODIPA_KEY_ALIAS_LABEL);
  146.         keyAliasItem.setRequired(requiredValue);
  147.         configuration.addConsoleItem(keyAliasItem);
  148.        
  149.         AbstractConsoleItem<?> keyPasswordItem =
  150.                 ProtocolPropertiesFactory.newConsoleItem(
  151.                         ConsoleItemValueType.STRING,
  152.                         ConsoleItemType.LOCK_HIDDEN,
  153.                         ModIConsoleCostanti.MODIPA_KEY_PASSWORD_ID,
  154.                         ModIConsoleCostanti.MODIPA_KEY_PASSWORD_LABEL);
  155.         keyPasswordItem.setRequired(requiredValue);
  156.         configuration.addConsoleItem(keyPasswordItem);

  157.         AbstractConsoleItem<?> keystoreByokPolicyItem =
  158.                 ProtocolPropertiesFactory.newConsoleItem(
  159.                         ConsoleItemValueType.STRING,
  160.                         ConsoleItemType.HIDDEN,
  161.                         ModIConsoleCostanti.MODIPA_KEYSTORE_BYOK_POLICY_ID,
  162.                         ModIConsoleCostanti.MODIPA_KEYSTORE_BYOK_POLICY_LABEL);
  163.         keystoreByokPolicyItem.setRequired(false);
  164.         configuration.addConsoleItem(keystoreByokPolicyItem);
  165.        
  166.         AbstractConsoleItem<?> certificateItem =
  167.                 ProtocolPropertiesFactory.newConsoleItem(
  168.                         ConsoleItemValueType.BINARY,
  169.                         ConsoleItemType.HIDDEN,
  170.                         ModIConsoleCostanti.MODIPA_KEYSTORE_CERTIFICATO_ID,
  171.                         ModIConsoleCostanti.MODIPA_KEYSTORE_CERTIFICATO_LABEL);
  172.         ((BinaryConsoleItem)certificateItem).setShowContent(false);
  173.         ((BinaryConsoleItem)certificateItem).setReadOnly(false);
  174.         ((BinaryConsoleItem)certificateItem).setRequired(false);
  175.         configuration.addConsoleItem(certificateItem);
  176.        
  177.         if(addHiddenSubjectIssuer) {
  178.            
  179.             AbstractConsoleItem<?> cnSubjectItem =
  180.                     ProtocolPropertiesFactory.newConsoleItem(
  181.                             ConsoleItemValueType.STRING,
  182.                             ConsoleItemType.HIDDEN,
  183.                             ModIConsoleCostanti.MODIPA_KEY_CN_SUBJECT_ID,
  184.                             ModIConsoleCostanti.MODIPA_KEY_CN_SUBJECT_ID);
  185.             configuration.addConsoleItem(cnSubjectItem);
  186.            
  187.             AbstractConsoleItem<?> cnIssuerItem =
  188.                     ProtocolPropertiesFactory.newConsoleItem(
  189.                             ConsoleItemValueType.STRING,
  190.                             ConsoleItemType.HIDDEN,
  191.                             ModIConsoleCostanti.MODIPA_KEY_CN_ISSUER_ID,
  192.                             ModIConsoleCostanti.MODIPA_KEY_CN_ISSUER_ID);
  193.             configuration.addConsoleItem(cnIssuerItem);
  194.            
  195.         }
  196.     }
  197.    
  198.     static boolean updateKeystoreConfig(ConsoleConfiguration consoleConfiguration, ProtocolProperties properties, boolean checkRidefinisci,
  199.             boolean hideSceltaArchivioFilePath, boolean addHiddenSubjectIssuer,
  200.             boolean requiredValue, ConfigurazioneMultitenant configurazioneMultitenant,
  201.             boolean rest) throws ProtocolException {
  202.         return updateKeystoreConfig(consoleConfiguration, properties, checkRidefinisci, false,
  203.                 hideSceltaArchivioFilePath, addHiddenSubjectIssuer,
  204.                 requiredValue, configurazioneMultitenant,
  205.                 rest);
  206.     }
  207.     static boolean updateKeystoreConfig(ConsoleConfiguration consoleConfiguration, ProtocolProperties properties, boolean checkRidefinisci, boolean checkRidefinisciOauth,
  208.             boolean hideSceltaArchivioFilePath, boolean addHiddenSubjectIssuer,
  209.             boolean requiredValue, ConfigurazioneMultitenant configurazioneMultitenant,
  210.             boolean rest) throws ProtocolException {
  211.        
  212.         boolean ridefinisci = true;
  213.         if(checkRidefinisci) {
  214.            
  215.             if(checkRidefinisciOauth) {
  216.                
  217.                 BooleanProperty booleanItemValue = (BooleanProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_OAUTH_KEYSTORE_MODE_ID);
  218.                 if(booleanItemValue==null || booleanItemValue.getValue()==null || (!booleanItemValue.getValue())) {
  219.                     ridefinisci = false;    
  220.                 }
  221.                 else {
  222.                     ridefinisci = true;
  223.                 }
  224.                
  225.             }
  226.             else {
  227.            
  228.                 StringProperty selectModeItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_KEYSTORE_MODE_ID);
  229.                 if(selectModeItemValue==null) {
  230.                     ridefinisci = false;    
  231.                 }
  232.                 else {
  233.                     ridefinisci = ModIConsoleCostanti.MODIPA_PROFILO_MODE_VALUE_RIDEFINISCI.equals(selectModeItemValue.getValue());
  234.                 }
  235.            
  236.                 BaseConsoleItem subTitleItem =  
  237.                         ProtocolPropertiesUtils.getBaseConsoleItem(consoleConfiguration.getConsoleItem(), ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_KEYSTORE_ID);
  238.                 if(subTitleItem!=null) {
  239.                     if(ridefinisci) {
  240.                         subTitleItem.setType(ConsoleItemType.SUBTITLE);
  241.                     }
  242.                     else {
  243.                         subTitleItem.setType(ConsoleItemType.HIDDEN);  
  244.                     }
  245.                 }
  246.                
  247.             }
  248.         }
  249.        
  250.         AbstractConsoleItem<?> modeItem =  
  251.                 ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(), ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_ID);
  252.         if(modeItem!=null) {
  253.             if(ridefinisci && !hideSceltaArchivioFilePath) {
  254.                 modeItem.setType(ConsoleItemType.SELECT);
  255.             }
  256.             else {
  257.                 modeItem.setType(ConsoleItemType.HIDDEN);
  258.             }
  259.             ((StringConsoleItem)modeItem).addLabelValue(ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_LABEL_ARCHIVE,
  260.                     ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_VALUE_ARCHIVE);
  261.             ((StringConsoleItem)modeItem).addLabelValue(ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_LABEL_PATH,
  262.                     ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_VALUE_PATH);
  263.             if(HSMUtils.existsTipologieKeystoreHSM(false, false)) {
  264.                 ((StringConsoleItem)modeItem).addLabelValue(ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_LABEL_HSM,
  265.                         ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_VALUE_HSM);
  266.             }
  267.         }
  268.        
  269.         StringProperty selectModeItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_ID);
  270.         AbstractConsoleItem<?> archiveItem =    
  271.                 ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(), ModIConsoleCostanti.MODIPA_KEYSTORE_ARCHIVE_ID);
  272.         AbstractConsoleItem<?> pathItem =  
  273.                 ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(), ModIConsoleCostanti.MODIPA_KEYSTORE_PATH_ID);
  274.         AbstractConsoleItem<?> certificateItem =    
  275.                 ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(), ModIConsoleCostanti.MODIPA_KEYSTORE_CERTIFICATO_ID);
  276.                
  277.         boolean permitCertificate = false;
  278.         boolean hsm = false;
  279.         boolean archive = false;
  280.         String modalita = ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_DEFAULT_VALUE;
  281.         if(selectModeItemValue!=null && selectModeItemValue.getValue()!=null && !"".equals(selectModeItemValue.getValue())) {
  282.             modalita = selectModeItemValue.getValue();
  283.         }
  284.         if(ridefinisci) {
  285.            
  286.             if(selectModeItemValue!=null &&
  287.                     (selectModeItemValue.getValue()==null || "".equals(selectModeItemValue.getValue()))) {
  288.                 selectModeItemValue.setValue(modalita);
  289.             }
  290.            
  291.             if(ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_VALUE_HSM.equals(modalita)) {
  292.                
  293.                 permitCertificate = true;
  294.                
  295.                 hsm = true;
  296.                
  297.                 archiveItem.setType(ConsoleItemType.HIDDEN);
  298.                 archiveItem.setRequired(false);
  299.                 BinaryProperty archiveItemValue = (BinaryProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_ARCHIVE_ID);
  300.                 if(archiveItemValue!=null) {
  301.                     archiveItemValue.setValue(null);
  302.                     archiveItemValue.setFileName(null);
  303.                     archiveItemValue.setClearContent(true);
  304.                 }
  305.                
  306.                 pathItem.setType(ConsoleItemType.HIDDEN);
  307.                 pathItem.setRequired(false);
  308.                 StringProperty pathItemItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_PATH_ID);
  309.                 if(pathItemItemValue!=null) {
  310.                     pathItemItemValue.setValue(null);
  311.                 }
  312.                
  313.                 if(configurazioneMultitenant!=null &&
  314.                         StatoFunzionalita.ABILITATO.equals(configurazioneMultitenant.getStato()) &&
  315.                         !PortaApplicativaSoggettiFruitori.SOGGETTI_ESTERNI.equals(configurazioneMultitenant.getErogazioneSceltaSoggettiFruitori())) {
  316.                     modeItem.setNote(ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_NOTE_PATH);
  317.                 }
  318.                 else {
  319.                     modeItem.setNote(null);
  320.                 }
  321.                
  322.                 StringProperty keyPasswordMODIItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEY_PASSWORD_ID);
  323.                 if(keyPasswordMODIItemValue!=null) {
  324.                     keyPasswordMODIItemValue.setValue(null);
  325.                 }
  326.                
  327.                 StringProperty keystorePasswordMODIItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_PASSWORD_ID);
  328.                 if(keystorePasswordMODIItemValue!=null) {
  329.                     keystorePasswordMODIItemValue.setValue(null);
  330.                 }
  331.                
  332.                 StringProperty keystoreByokPolicyMODIItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_BYOK_POLICY_ID);
  333.                 if(keystoreByokPolicyMODIItemValue!=null) {
  334.                     keystoreByokPolicyMODIItemValue.setValue(null);
  335.                 }
  336.             }
  337.             else if(ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_VALUE_ARCHIVE.equals(modalita)) {
  338.                
  339.                 archive = true;
  340.                
  341.                 archiveItem.setType(ConsoleItemType.FILE);
  342.                 archiveItem.setRequired(requiredValue);
  343.                 if(addHiddenSubjectIssuer) {
  344.                     ((BinaryConsoleItem)archiveItem).setReadOnly(true);
  345.                 }
  346.                
  347.                 pathItem.setType(ConsoleItemType.HIDDEN);
  348.                 pathItem.setRequired(false);
  349.                 StringProperty pathItemItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_PATH_ID);
  350.                 if(pathItemItemValue!=null) {
  351.                     pathItemItemValue.setValue(null);
  352.                 }
  353.                
  354.                 modeItem.setNote(null);
  355.             }
  356.             else {
  357.            
  358.                 permitCertificate = true;
  359.                 StringProperty typeItemItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_ID);
  360.                 if(typeItemItemValue!=null && typeItemItemValue.getValue()!=null &&
  361.                     ( ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_VALUE_JWK.equals(typeItemItemValue.getValue())
  362.                             ||
  363.                             ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_VALUE_KEY_PAIR.equals(typeItemItemValue.getValue()))
  364.                     ){
  365.                     permitCertificate = false;
  366.                 }
  367.                
  368.                 archiveItem.setType(ConsoleItemType.HIDDEN);
  369.                 archiveItem.setRequired(false);
  370.                 BinaryProperty archiveItemValue = (BinaryProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_ARCHIVE_ID);
  371.                 if(archiveItemValue!=null) {
  372.                     archiveItemValue.setValue(null);
  373.                     archiveItemValue.setFileName(null);
  374.                     archiveItemValue.setClearContent(true);
  375.                 }
  376.                
  377.                 pathItem.setType(ConsoleItemType.TEXT_AREA);
  378.                 ((StringConsoleItem)pathItem).setRows(3);
  379.                 pathItem.setRequired(requiredValue);
  380.                
  381.                 if(configurazioneMultitenant!=null &&
  382.                         StatoFunzionalita.ABILITATO.equals(configurazioneMultitenant.getStato()) &&
  383.                         !PortaApplicativaSoggettiFruitori.SOGGETTI_ESTERNI.equals(configurazioneMultitenant.getErogazioneSceltaSoggettiFruitori())) {
  384.                     modeItem.setNote(ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_NOTE_PATH);
  385.                 }
  386.                 else {
  387.                     modeItem.setNote(null);
  388.                 }
  389.                
  390.             }
  391.            
  392.             if(certificateItem!=null) {
  393.                 if(addHiddenSubjectIssuer // ha senso solo per l'applicativo per ovviare al problema di riconoscimento multi-tenant
  394.                         && permitCertificate) {
  395.                     certificateItem.setType(ConsoleItemType.FILE);
  396.                     certificateItem.setRequired(false);
  397.                     ((BinaryConsoleItem)archiveItem).setReadOnly(true);
  398.                    
  399.                     BinaryProperty certificateItemValue = (BinaryProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_CERTIFICATO_ID);
  400.                     if(certificateItemValue!=null && certificateItemValue.getValue()!=null && certificateItemValue.getValue().length>0) {
  401.                         modeItem.setNote(null);
  402.                     }
  403.                 }
  404.                 else {
  405.                     certificateItem.setType(ConsoleItemType.HIDDEN);
  406.                     certificateItem.setRequired(false);
  407.                     BinaryProperty certificateItemValue = (BinaryProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_CERTIFICATO_ID);
  408.                     if(certificateItemValue!=null) {
  409.                         certificateItemValue.setValue(null);
  410.                         certificateItemValue.setFileName(null);
  411.                         certificateItemValue.setClearContent(true);
  412.                     }
  413.                 }
  414.             }
  415.            
  416.             if(addHiddenSubjectIssuer) {
  417.                
  418.                 try {
  419.                     CertificateInfo cert = ModIDynamicConfigurationKeystoreUtilities.readKeystoreConfig(properties, permitCertificate);
  420.                     if(cert!=null && cert.getSubject()!=null) {
  421.                         StringProperty subjectItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEY_CN_SUBJECT_ID);
  422.                         subjectItemValue.setValue(cert.getSubject().toString());
  423.                        
  424.                         StringProperty issuerItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEY_CN_ISSUER_ID);
  425.                         if(cert.getIssuer()!=null) {
  426.                             issuerItemValue.setValue(cert.getIssuer().toString());
  427.                         }
  428.                         else {
  429.                             if(issuerItemValue!=null) {
  430.                                 issuerItemValue.setValue(null);
  431.                             }
  432.                         }
  433.                     }
  434.                 }catch(Exception e) {
  435.                     // errore sollevato in validazione
  436.                 }
  437.                
  438.             }
  439.         }
  440.         else {
  441.             if(pathItem!=null) {
  442.                 pathItem.setType(ConsoleItemType.HIDDEN);
  443.                 pathItem.setRequired(false);
  444.             }
  445.            
  446.             StringProperty pathItemItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_PATH_ID);
  447.             if(pathItemItemValue!=null) {
  448.                 pathItemItemValue.setValue(null);
  449.             }
  450.            
  451.             if(archiveItem!=null) {
  452.                 archiveItem.setType(ConsoleItemType.HIDDEN);
  453.                 archiveItem.setRequired(false);
  454.             }
  455.            
  456.             BinaryProperty archiveItemValue = (BinaryProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_ARCHIVE_ID);
  457.             if(archiveItemValue!=null) {
  458.                 archiveItemValue.setValue(null);
  459.                 archiveItemValue.setFileName(null);
  460.                 archiveItemValue.setClearContent(true);
  461.             }
  462.            
  463.             if(certificateItem!=null) {
  464.                 certificateItem.setType(ConsoleItemType.HIDDEN);
  465.                 certificateItem.setRequired(false);
  466.             }
  467.            
  468.             BinaryProperty certificateItemValue = (BinaryProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_CERTIFICATO_ID);
  469.             if(certificateItemValue!=null) {
  470.                 certificateItemValue.setValue(null);
  471.                 certificateItemValue.setFileName(null);
  472.                 certificateItemValue.setClearContent(true);
  473.             }
  474.                        
  475.         }
  476.        
  477.         AbstractConsoleItem<?> typeItem =  
  478.                 ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(), ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_ID);
  479.         List<String> lHsmTypes = null;
  480.         if(typeItem!=null) {
  481.             if(hsm) {
  482.                 lHsmTypes = new ArrayList<>();
  483.                 HSMUtils.fillTipologieKeystore(false, false, lHsmTypes);
  484.                 if(lHsmTypes!=null && !lHsmTypes.isEmpty()) {
  485.                     for (String hsmType : lHsmTypes) {
  486.                         ((StringConsoleItem)typeItem).addLabelValue(hsmType, hsmType);
  487.                     }
  488.                 }
  489.             }  
  490.             else {
  491.                 ((StringConsoleItem)typeItem).addLabelValue(ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_LABEL_JKS,
  492.                         ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_VALUE_JKS);
  493.                 ((StringConsoleItem)typeItem).addLabelValue(ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_LABEL_PKCS12,
  494.                         ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_VALUE_PKCS12);
  495.                 if(ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_VALUE_PATH.equals(modalita) && rest) {
  496.                     ((StringConsoleItem)typeItem).addLabelValue(ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_LABEL_JWK,
  497.                             ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_VALUE_JWK);
  498.                     ((StringConsoleItem)typeItem).addLabelValue(ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_LABEL_KEY_PAIR,
  499.                             ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_VALUE_KEY_PAIR);
  500.                 }
  501.             }
  502.             if(ridefinisci) {
  503.                 typeItem.setType(ConsoleItemType.SELECT);
  504.             }
  505.             else {
  506.                 typeItem.setType(ConsoleItemType.HIDDEN);
  507.             }
  508.         }
  509.        
  510.         StringProperty typeItemItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_ID);
  511.         String keystoreType = null;
  512.         boolean keystoreKeyPair = false;
  513.         boolean keystoreJWK = false;
  514.         boolean keystoreJks = false;
  515.         boolean keystorePkcs12 = false;
  516.         if(typeItemItemValue!=null && typeItemItemValue.getValue()!=null) {
  517.             keystoreType = typeItemItemValue.getValue();
  518.             if(hsm && (lHsmTypes==null || !lHsmTypes.contains(keystoreType))) {
  519.                 keystoreType = null;
  520.                 typeItemItemValue.setValue(null);
  521.             }
  522.              
  523.             keystoreKeyPair = ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_VALUE_KEY_PAIR.equals(keystoreType);
  524.             keystoreJWK = ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_VALUE_JWK.equals(keystoreType);
  525.            
  526.             if(ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_VALUE_ARCHIVE.equals(modalita) &&
  527.                 (keystoreKeyPair || keystoreJWK)
  528.                 ){
  529.                 keystoreKeyPair = false;
  530.                 keystoreJWK = false;
  531.                 keystoreType = ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_DEFAULT_VALUE;
  532.                 typeItemItemValue.setValue(keystoreType);
  533.             }
  534.             if(keystoreType==null || "".equals(keystoreType)) {
  535.                 keystoreJks = ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_VALUE_JKS.equals(ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_DEFAULT_VALUE);
  536.                 keystorePkcs12 = ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_VALUE_PKCS12.equals(ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_DEFAULT_VALUE);
  537.             }
  538.             else {
  539.                 keystoreJks = ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_VALUE_JKS.equals(keystoreType);
  540.                 keystorePkcs12 = ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_VALUE_PKCS12.equals(keystoreType);
  541.             }
  542.         }
  543.        
  544.         AbstractConsoleItem<?> pathPublicKeyItem =  
  545.                 ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(), ModIConsoleCostanti.MODIPA_KEYSTORE_PATH_PUBLIC_KEY_ID);
  546.         boolean pathPublicKeyRestoreDefaultValue = true;
  547.         if(pathPublicKeyItem!=null && ridefinisci &&
  548.             ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_VALUE_PATH.equals(modalita) &&
  549.             keystoreKeyPair) {
  550.             pathPublicKeyItem.setType(ConsoleItemType.TEXT_AREA);
  551.             ((StringConsoleItem)pathPublicKeyItem).setRows(3);
  552.             pathPublicKeyItem.setRequired(true);
  553.             pathPublicKeyRestoreDefaultValue = false;
  554.            
  555.             // Ridefinisco anche label Path
  556.             if(pathItem!=null) {
  557.                 pathItem.setLabel(ModIConsoleCostanti.MODIPA_KEYSTORE_PATH_PRIVATE_KEY_LABEL);
  558.             }
  559.         }
  560.         if(pathPublicKeyRestoreDefaultValue) {
  561.             if(pathPublicKeyItem!=null) {
  562.                 pathPublicKeyItem.setType(ConsoleItemType.HIDDEN);
  563.                 pathPublicKeyItem.setRequired(false);
  564.             }
  565.             StringProperty pathPublicKeyItemItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_PATH_PUBLIC_KEY_ID);
  566.             if(pathPublicKeyItemItemValue!=null) {
  567.                 pathPublicKeyItemItemValue.setValue(null);
  568.             }
  569.            
  570.             // Ripristino anche label Path
  571.             if(pathItem!=null) {
  572.                 pathItem.setLabel(ModIConsoleCostanti.MODIPA_KEYSTORE_PATH_LABEL);
  573.             }
  574.         }
  575.        
  576.        
  577.         AbstractConsoleItem<?> keystorePasswordItem =  
  578.                 ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(), ModIConsoleCostanti.MODIPA_KEYSTORE_PASSWORD_ID);
  579.         if(keystorePasswordItem!=null) {
  580.             if(ridefinisci && !hsm && !keystoreKeyPair && !keystoreJWK) {
  581.                 keystorePasswordItem.setType(ConsoleItemType.LOCK);
  582.                 if(
  583.                         (keystoreJks && !DBUtils.isKeystoreJksPasswordRequired())
  584.                         ||
  585.                         (keystorePkcs12 && !DBUtils.isKeystorePkcs12PasswordRequired())
  586.                 ) {
  587.                     keystorePasswordItem.setRequired(false);
  588.                 }
  589.             }
  590.             else {
  591.                 keystorePasswordItem.setType(ConsoleItemType.LOCK_HIDDEN);
  592.                
  593.                 StringProperty keystorePasswordItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_PASSWORD_ID);
  594.                 if(keystorePasswordItemValue!=null) {
  595.                     keystorePasswordItemValue.setValue(null);
  596.                 }
  597.             }
  598.         }
  599.        
  600.         AbstractConsoleItem<?> keystoreByokItem =  
  601.                 ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(), ModIConsoleCostanti.MODIPA_KEYSTORE_BYOK_POLICY_ID);
  602.         if(keystoreByokItem!=null) {
  603.             BYOKProvider byokProvider = null;
  604.             try {
  605.                 byokProvider = BYOKProvider.getUnwrapInstance();
  606.             }catch(Exception e) {
  607.                 throw new ProtocolException(e.getMessage(),e);
  608.             }
  609.             if(ridefinisci && !hsm && !archive && byokProvider.isByokEnabled()) {
  610.                
  611.                 List<String> ocspTypes = byokProvider.getValues();
  612.                 List<String> ocspLabels = byokProvider.getLabels();
  613.                 for (int i = 0; i < ocspTypes.size(); i++) {
  614.                     String type = ocspTypes.get(i);
  615.                     String label = ocspLabels.get(i);
  616.                     ((StringConsoleItem)keystoreByokItem).addLabelValue(label, type);
  617.                 }
  618.                
  619.                 keystoreByokItem.setType(ConsoleItemType.SELECT);
  620.             }
  621.             else {
  622.                 keystoreByokItem.setType(ConsoleItemType.HIDDEN);
  623.                
  624.                 StringProperty keystoreByokPolicyItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_BYOK_POLICY_ID);
  625.                 if(keystoreByokPolicyItemValue!=null) {
  626.                     keystoreByokPolicyItemValue.setValue(null);
  627.                 }
  628.             }
  629.         }
  630.        
  631.         AbstractConsoleItem<?> keyAliasItem =  
  632.                 ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(), ModIConsoleCostanti.MODIPA_KEY_ALIAS_ID);
  633.         if(keyAliasItem!=null) {
  634.             if(ridefinisci && !keystoreKeyPair) {
  635.                 keyAliasItem.setType(ConsoleItemType.TEXT_EDIT);
  636.             }
  637.             else {
  638.                 keyAliasItem.setType(ConsoleItemType.HIDDEN);
  639.                
  640.                 StringProperty keyAliasItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEY_ALIAS_ID);
  641.                 if(keyAliasItemValue!=null) {
  642.                     keyAliasItemValue.setValue(null);
  643.                 }
  644.             }
  645.         }
  646.        
  647.         AbstractConsoleItem<?> keyPasswordItem =    
  648.                 ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(), ModIConsoleCostanti.MODIPA_KEY_PASSWORD_ID);
  649.         if(keyPasswordItem!=null) {
  650.             if(ridefinisci && (!hsm || HSMUtils.isHsmConfigurableKeyPassword()) && !keystoreJWK) {
  651.                 keyPasswordItem.setType(ConsoleItemType.LOCK);
  652.                
  653.                 if(
  654.                         keystoreKeyPair
  655.                         ||
  656.                         (keystoreJks && !DBUtils.isKeystoreJksKeyPasswordRequired())
  657.                         ||
  658.                         (keystorePkcs12 && !DBUtils.isKeystorePkcs12KeyPasswordRequired())
  659.                 ) {
  660.                     keyPasswordItem.setRequired(false);
  661.                 }
  662.             }
  663.             else {
  664.                 keyPasswordItem.setType(ConsoleItemType.LOCK_HIDDEN);
  665.                
  666.                 StringProperty keyPasswordItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEY_PASSWORD_ID);
  667.                 if(keyPasswordItemValue!=null) {
  668.                     keyPasswordItemValue.setValue(null);
  669.                 }
  670.                
  671.                 keyPasswordItem.setRequired(requiredValue);
  672.             }
  673.         }
  674.        
  675.         StringProperty keyPairAlgorithmItemItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_KEY_ALGORITHM_ID);
  676.         if(keystoreKeyPair &&
  677.             keyPairAlgorithmItemItemValue!=null &&
  678.             (keyPairAlgorithmItemItemValue.getValue()==null || StringUtils.isEmpty(keyPairAlgorithmItemItemValue.getValue()))) {
  679.             keyPairAlgorithmItemItemValue.setValue(ModIConsoleCostanti.MODIPA_KEYSTORE_KEY_ALGORITHM_DEFAULT_VALUE);
  680.         }
  681.        
  682.         return ridefinisci;
  683.     }
  684.    
  685.     public static CertificateInfo readKeystoreConfig(ProtocolProperties properties, boolean onlyCert) throws Exception {
  686.        
  687.         Certificate cert = null;
  688.            
  689.         StringProperty selectModeItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_ID);
  690.         String modalita = ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_DEFAULT_VALUE;
  691.         if(selectModeItemValue!=null && selectModeItemValue.getValue()!=null && !"".equals(selectModeItemValue.getValue())) {
  692.             modalita = selectModeItemValue.getValue();
  693.         }
  694.        
  695.         if(onlyCert) {
  696.            
  697.             if(!ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_VALUE_ARCHIVE.equals(modalita)) {
  698.                
  699.                 BinaryProperty certificateItemValue = (BinaryProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_CERTIFICATO_ID);
  700.                 if(certificateItemValue!=null && certificateItemValue.getValue()!=null) {
  701.                     byte [] certificate = certificateItemValue.getValue();
  702.                     cert = ArchiveLoader.load(certificate);
  703.                 }
  704.                
  705.             }
  706.             else {
  707.                 // deve essere gestito invocando questo metodo con onlyCert
  708.             }
  709.            
  710.         }
  711.         else {
  712.                    
  713.             StringProperty keystoreTypeItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_ID);
  714.             StringProperty keystorePasswordItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_PASSWORD_ID);
  715.             StringProperty keystoreByokPolicyItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_BYOK_POLICY_ID);
  716.             StringProperty keyAliasItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEY_ALIAS_ID);
  717.             StringProperty keyPasswordItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEY_PASSWORD_ID);
  718.             if(keystoreTypeItemValue!=null && keystorePasswordItemValue!=null && keyAliasItemValue!=null && keyPasswordItemValue!=null) {
  719.                 String type = keystoreTypeItemValue.getValue();
  720.                 ArchiveType archiveType = null;
  721.                 if(ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_VALUE_JKS.equals(type)) {
  722.                     archiveType = ArchiveType.JKS;
  723.                 }
  724.                 else {
  725.                     archiveType = ArchiveType.PKCS12;
  726.                 }
  727.                
  728.                 byte [] archive = null;
  729.                 if(ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_VALUE_ARCHIVE.equals(modalita)) {
  730.                     BinaryProperty archiveItemValue = (BinaryProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_ARCHIVE_ID);
  731.                     if(archiveItemValue!=null && archiveItemValue.getValue()!=null) {
  732.                         archive = archiveItemValue.getValue();
  733.                         cert = ArchiveLoader.load(archiveType, archive, keyAliasItemValue.getValue(), keystorePasswordItemValue.getValue());
  734.                     }
  735.                 }
  736.                 else {
  737.                     // Il PATH o HSM indicato non e' disponibile nella macchina dove gira la console.
  738.                     if(keystoreByokPolicyItemValue!=null) {
  739.                         // nop: path non viene acceduto
  740.                     }
  741.     /**             StringProperty pathItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_PATH_ID);
  742.     //              if(pathItemValue!=null && pathItemValue.getValue()!=null && !"".equals(pathItemValue.getValue())) {
  743.     //                  archive = org.openspcoop2.utils.resources.FileSystemUtilities.readBytesFromFile(pathItemValue.getValue());
  744.     //                  cert = ArchiveLoader.load(archiveType, archive, keyAliasItemValue.getValue(), keystorePasswordItemValue.getValue());
  745.     //              }*/
  746.                 }
  747.                
  748.                 // Verifico chiave privata
  749.                 if(archive!=null) {
  750.                     KeyStore ks = KeystoreUtils.readKeystore(archive, archiveType.name(), keystorePasswordItemValue.getValue());
  751.                     ks.getKey(keyAliasItemValue.getValue(), keyPasswordItemValue.getValue()!=null ? keyPasswordItemValue.getValue().toCharArray() : "".toCharArray());
  752.                 }
  753.             }
  754.         }
  755.        
  756.         if(cert!=null) {
  757.             return cert.getCertificate();
  758.         }
  759.         return null;
  760.     }
  761.    
  762.    
  763.     static void addTrustStoreSSLConfigChoice(ConsoleConfiguration configuration, boolean x5u) throws ProtocolException {
  764.         addTrustStoreConfigChoice(configuration, true, false,
  765.                 false,
  766.                 false, false, false,
  767.                 x5u);
  768.     }
  769.     static void addTrustStoreCertificatiConfigChoice(ConsoleConfiguration configuration, boolean x5u) throws ProtocolException {
  770.         addTrustStoreConfigChoice(configuration, false, true,
  771.                 false,
  772.                 false, false, false,
  773.                 x5u);
  774.     }
  775.     static void addTrustStoreKeystoreErogazioneConfigChoice(ConsoleConfiguration configuration) throws ProtocolException {
  776.         addTrustStoreConfigChoice(configuration, false, false,
  777.                 true,
  778.                 false, false, false,
  779.                 false);
  780.     }
  781.     static void addTrustStoreKeystoreFruizioneConfigChoice(ConsoleConfiguration configuration, boolean tokenNonLocale) throws ProtocolException {
  782.         addTrustStoreConfigChoice(configuration, false, false,
  783.                 false,
  784.                 true, tokenNonLocale, false,
  785.                 false);
  786.     }
  787.     static void addTrustStoreKeystoreFruizioneOAuthConfigChoice(ConsoleConfiguration configuration) throws ProtocolException {
  788.         addTrustStoreConfigChoice(configuration, false, false,
  789.                 false,
  790.                 false, false, true,
  791.                 false);
  792.     }
  793.     private static void addTrustStoreConfigChoice(ConsoleConfiguration configuration, boolean ssl, boolean truststore,
  794.             boolean keystoreErogazione,
  795.             boolean keystoreFruizione, boolean tokenNonLocale, boolean keystoreFruizioneOauthNoSicurezzaMessaggio,
  796.             boolean x5u) throws ProtocolException {
  797.        
  798.         if(keystoreErogazione) {
  799.             // nop
  800.         }
  801.         if(keystoreFruizione) {
  802.             StringConsoleItem modeItem = (StringConsoleItem)
  803.                     ProtocolPropertiesFactory.newConsoleItem(ConsoleItemValueType.STRING,
  804.                     ConsoleItemType.SELECT,
  805.                     ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_FRUIZIONE_KEYSTORE_MODE_ID,
  806.                     ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_FRUIZIONE_KEYSTORE_MODE_LABEL);
  807.             modeItem.addLabelValue(ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_FRUIZIONE_KEYSTORE_MODE_LABEL_APPLICATIVO,
  808.                     ModIConsoleCostanti.MODIPA_KEYSTORE_FRUIZIONE_APPLICATIVO);
  809.             modeItem.addLabelValue(ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_FRUIZIONE_KEYSTORE_MODE_LABEL_FRUIZIONE,
  810.                     ModIConsoleCostanti.MODIPA_KEYSTORE_FRUIZIONE);
  811.             if(tokenNonLocale) {
  812.                 modeItem.addLabelValue(ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_FRUIZIONE_KEYSTORE_MODE_LABEL_TOKEN_POLICY,
  813.                         ModIConsoleCostanti.MODIPA_KEYSTORE_FRUIZIONE_TOKEN_POLICY);
  814.             }
  815.             modeItem.setDefaultValue(ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_FRUIZIONE_KEYSTORE_MODE_DEFAULT_VALUE);
  816.             modeItem.setReloadOnChange(true, true);
  817.             configuration.addConsoleItem(modeItem);
  818.         }
  819.         if(keystoreFruizioneOauthNoSicurezzaMessaggio) {
  820.             // nop
  821.         }
  822.        
  823.         String id = null;
  824.         if(ssl) {
  825.             id = ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_MODE_ID;
  826.         }
  827.         else if(truststore) {
  828.             id = ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_MODE_ID;
  829.         }
  830.         else {
  831.             id = ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_KEYSTORE_MODE_ID;
  832.         }
  833.        
  834.         String label = null;
  835.         if(ssl) {
  836.             label = ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_MODE_LABEL;
  837.         }
  838.         else if(truststore) {
  839.             label = ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_MODE_LABEL;
  840.         }
  841.         else {
  842.             if(keystoreFruizione) {
  843.                 label = "";
  844.             }
  845.             else {
  846.                 label = ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_KEYSTORE_MODE_LABEL;
  847.             }
  848.         }
  849.        
  850.         StringConsoleItem modeItem = (StringConsoleItem)
  851.                 ProtocolPropertiesFactory.newConsoleItem(ConsoleItemValueType.STRING,
  852.                 ConsoleItemType.SELECT,
  853.                 id,
  854.                 label);
  855.         if(keystoreFruizioneOauthNoSicurezzaMessaggio) {
  856.             modeItem.addLabelValue(ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_STORE_MODE_LABEL_UNDEFINED,
  857.                     ModIConsoleCostanti.MODIPA_PROFILO_MODE_VALUE_UNDEFINED);
  858.         }
  859.         modeItem.addLabelValue(ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_STORE_MODE_LABEL_DEFAULT,
  860.                 ModIConsoleCostanti.MODIPA_PROFILO_MODE_VALUE_DEFAULT);
  861.         modeItem.addLabelValue(ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_STORE_MODE_LABEL_RIDEFINISCI,
  862.                 ModIConsoleCostanti.MODIPA_PROFILO_MODE_VALUE_RIDEFINISCI);
  863.         if(keystoreFruizioneOauthNoSicurezzaMessaggio) {
  864.             modeItem.setDefaultValue(ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_KEYSTORE_OAUTH_MODE_DEFAULT_VALUE);
  865.         }
  866.         else {
  867.             modeItem.setDefaultValue(ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_MODE_DEFAULT_VALUE);
  868.         }
  869.         modeItem.setReloadOnChange(true, true);
  870.         if( (ssl && !x5u) || keystoreFruizione) {
  871.             modeItem.setType(ConsoleItemType.HIDDEN);
  872.         }
  873.         configuration.addConsoleItem(modeItem);
  874.        
  875.     }
  876.     public static void addKeStoreConfigOAuthChoice(ConsoleConfiguration configuration) throws ProtocolException {
  877.        
  878.         String id = ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_OAUTH_KEYSTORE_MODE_ID;
  879.        
  880.         String label = ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_OAUTH_KEYSTORE_MODE_LABEL;
  881.        
  882.         BooleanConsoleItem booleanConsoleItem =
  883.                 (BooleanConsoleItem) ProtocolPropertiesFactory.newConsoleItem(ConsoleItemValueType.BOOLEAN, ConsoleItemType.CHECKBOX,
  884.                         id, label);
  885.         booleanConsoleItem.setDefaultValue(ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_OAUTH_KEYSTORE_MODE_DEFAULT_VALUE);
  886.         booleanConsoleItem.setReloadOnChange(true, true);
  887.         configuration.addConsoleItem(booleanConsoleItem);
  888.                
  889.     }
  890.     static void addTrustStoreConfigSubSection(ConsoleConfiguration configuration, boolean ssl, boolean x5u) throws ProtocolException {
  891.        
  892.         if(x5u) {
  893.             // nop
  894.         }
  895.        
  896.         BaseConsoleItem subTitleItem =
  897.                 ProtocolPropertiesFactory.newSubTitleItem(
  898.                         ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_SSL_TRUSTSTORE_ID
  899.                             :
  900.                             ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_CERTIFICATI_TRUSTSTORE_ID,
  901.                         ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_SSL_TRUSTSTORE_LABEL
  902.                             :
  903.                             ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_CERTIFICATI_TRUSTSTORE_LABEL);
  904.         if(subTitleItem!=null) {
  905.             subTitleItem.setType(ConsoleItemType.HIDDEN);
  906.             configuration.addConsoleItem(subTitleItem);
  907.         }
  908.                
  909.         StringConsoleItem typeItem =  (StringConsoleItem)
  910.                 ProtocolPropertiesFactory.newConsoleItem(
  911.                         ConsoleItemValueType.STRING,
  912.                         ConsoleItemType.HIDDEN,
  913.                         ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_TYPE_ID
  914.                             :
  915.                             ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_TYPE_ID,
  916.                         ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_TYPE_LABEL
  917.                             :
  918.                             ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_TYPE_LABEL);
  919.         typeItem.setDefaultValue(ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_TYPE_VALUE_JKS
  920.                                     :
  921.                                     ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_TYPE_VALUE_JKS);
  922.         configuration.addConsoleItem(typeItem);
  923.        
  924.         AbstractConsoleItem<?> pathItem =
  925.                 ProtocolPropertiesFactory.newConsoleItem(
  926.                         ConsoleItemValueType.STRING,
  927.                         ConsoleItemType.HIDDEN,
  928.                         ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_PATH_ID
  929.                             :
  930.                             ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_PATH_ID,
  931.                         ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_PATH_LABEL
  932.                             :
  933.                             ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_PATH_LABEL);
  934.         configuration.addConsoleItem(pathItem);
  935.        
  936.         StringConsoleItem passwordItem =  (StringConsoleItem)
  937.                 ProtocolPropertiesFactory.newConsoleItem(
  938.                         ConsoleItemValueType.STRING,
  939.                         ConsoleItemType.LOCK_HIDDEN,
  940.                         ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_PASSWORD_ID
  941.                             :
  942.                             ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_PASSWORD_ID,
  943.                         ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_PASSWORD_LABEL
  944.                             :
  945.                             ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_PASSWORD_LABEL);
  946.         configuration.addConsoleItem(passwordItem);
  947.                
  948.         StringConsoleItem ocspPolicyItem =  (StringConsoleItem)
  949.                 ProtocolPropertiesFactory.newConsoleItem(
  950.                         ConsoleItemValueType.STRING,
  951.                         ConsoleItemType.HIDDEN,
  952.                         ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_OCSP_ID
  953.                                 :
  954.                               ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_OCSP_ID,
  955.                         ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_OCSP_LABEL
  956.                                 :
  957.                               ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_OCSP_LABEL     );
  958.         ocspPolicyItem.setRequired(false);
  959.         configuration.addConsoleItem(ocspPolicyItem);
  960.        
  961.         StringConsoleItem crlsItem =  (StringConsoleItem)
  962.                 ProtocolPropertiesFactory.newConsoleItem(
  963.                         ConsoleItemValueType.STRING,
  964.                         ConsoleItemType.HIDDEN,
  965.                         ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_CRLS_ID
  966.                                 :
  967.                               ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_CRLS_ID,
  968.                         ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_CRLS_LABEL
  969.                                 :
  970.                               ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_CRLS_LABEL     );
  971.         crlsItem.setRequired(false);
  972.         crlsItem.setRows(2);
  973.         crlsItem.setNote(ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_CRLS_NOTE
  974.                     :
  975.                     ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_CRLS_NOTE);
  976.         configuration.addConsoleItem(crlsItem);
  977.        
  978.     }
  979.    
  980.     static void updateTrustConfig(ConsoleConfiguration consoleConfiguration, ProtocolProperties properties, boolean ssl, boolean x5u, boolean requiredValue,
  981.             boolean addTrustStoreTypesChiaviPubbliche, List<RemoteStoreConfig> remoteStoreConfig) throws ProtocolException {

  982.        
  983.         if(ssl) {
  984.             StringConsoleItem modeItem = (StringConsoleItem)
  985.                     ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(), ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_MODE_ID);
  986.             if(x5u) {
  987.                 modeItem.setType(ConsoleItemType.SELECT);
  988.                 modeItem.addLabelValue(ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_STORE_MODE_LABEL_DEFAULT,
  989.                         ModIConsoleCostanti.MODIPA_PROFILO_MODE_VALUE_DEFAULT);
  990.                 modeItem.addLabelValue(ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_STORE_MODE_LABEL_RIDEFINISCI,
  991.                         ModIConsoleCostanti.MODIPA_PROFILO_MODE_VALUE_RIDEFINISCI);
  992.             }  
  993.             else {
  994.                 modeItem.setType(ConsoleItemType.HIDDEN);
  995.             }
  996.         }
  997.        
  998.        
  999.        
  1000.         StringProperty selectModeItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties,
  1001.                 ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_MODE_ID
  1002.                         :
  1003.                         ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_MODE_ID);
  1004.         boolean ridefinisci = selectModeItemValue!=null && ModIConsoleCostanti.MODIPA_PROFILO_MODE_VALUE_RIDEFINISCI.equals(selectModeItemValue.getValue());
  1005.        

  1006.         BaseConsoleItem subTitleItem =  
  1007.                 ProtocolPropertiesUtils.getBaseConsoleItem(consoleConfiguration.getConsoleItem(),
  1008.                         ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_SSL_TRUSTSTORE_ID
  1009.                                 :
  1010.                                 ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_CERTIFICATI_TRUSTSTORE_ID);
  1011.         if(subTitleItem!=null) {
  1012.             subTitleItem.setType(ridefinisci ? ConsoleItemType.SUBTITLE : ConsoleItemType.HIDDEN);
  1013.         }
  1014.        
  1015.                
  1016.         boolean hsm = false;
  1017.         boolean remoteStore = false;
  1018.         boolean jwk = false;
  1019.         boolean jks = false;
  1020.         AbstractConsoleItem<?> typeItem =  
  1021.                 ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(),
  1022.                         ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_TYPE_ID
  1023.                             :
  1024.                             ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_TYPE_ID);
  1025.         typeItem.setType(ridefinisci ? ConsoleItemType.SELECT : ConsoleItemType.HIDDEN);
  1026.         if(ridefinisci) {
  1027.             boolean reloadOnChange = false;
  1028.             if(ssl) {
  1029.                 ((StringConsoleItem)typeItem).addLabelValue(ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_TYPE_LABEL_JKS,
  1030.                         ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_TYPE_VALUE_JKS);
  1031.             }
  1032.             else {
  1033.                 ((StringConsoleItem)typeItem).addLabelValue(ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_TYPE_LABEL_JKS,
  1034.                         ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_TYPE_VALUE_JKS);
  1035.                
  1036.                 if(addTrustStoreTypesChiaviPubbliche) {
  1037.                     ((StringConsoleItem)typeItem).addLabelValue(ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_TYPE_LABEL_JWK,
  1038.                             ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_TYPE_VALUE_JWK);
  1039.                     reloadOnChange=true;
  1040.                 }
  1041.                 if(remoteStoreConfig!=null && !remoteStoreConfig.isEmpty()) {
  1042.                     for (RemoteStoreConfig rsc : remoteStoreConfig) {
  1043.                         ((StringConsoleItem)typeItem).addLabelValue(rsc.getStoreLabel(),
  1044.                                 rsc.getStoreName());
  1045.                         reloadOnChange=true;
  1046.                     }
  1047.                 }
  1048.             }
  1049.             if(HSMUtils.existsTipologieKeystoreHSM(true, false)) {
  1050.                 List<String> l = new ArrayList<>();
  1051.                 HSMUtils.fillTipologieKeystore(true, false, l);
  1052.                 if(l!=null && !l.isEmpty()) {
  1053.                     typeItem.setReloadOnChange(true, true);
  1054.                     for (String hsmType : l) {
  1055.                         ((StringConsoleItem)typeItem).addLabelValue(hsmType, hsmType);
  1056.                     }
  1057.                 }
  1058.             }
  1059.             else {
  1060.                 typeItem.setReloadOnChange(reloadOnChange, true);
  1061.             }
  1062.            
  1063.             StringProperty typeItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties,
  1064.                     ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_TYPE_ID
  1065.                             :
  1066.                             ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_TYPE_ID);
  1067.             if(typeItemValue!=null && typeItemValue.getValue()!=null) {
  1068.                 hsm = HSMUtils.isKeystoreHSM(typeItemValue.getValue());
  1069.                 if(!hsm) {
  1070.                     jwk = ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_TYPE_VALUE_JWK.equals(typeItemValue.getValue());
  1071.                     jks = ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_TYPE_VALUE_JKS.equals(typeItemValue.getValue());
  1072.                     if(!jwk &&
  1073.                         remoteStoreConfig!=null && !remoteStoreConfig.isEmpty()) {
  1074.                         for (RemoteStoreConfig rsc : remoteStoreConfig) {
  1075.                             if(typeItemValue.getValue().equals(rsc.getStoreName())) {
  1076.                                 remoteStore = true;
  1077.                             }
  1078.                         }
  1079.                     }
  1080.                 }
  1081.             }
  1082.         }
  1083.        
  1084.        
  1085.         String pathId = ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_PATH_ID
  1086.                 :
  1087.                 ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_PATH_ID;
  1088.        
  1089.         boolean path = ridefinisci && !hsm && !remoteStore;
  1090.         AbstractConsoleItem<?> pathItem =  
  1091.                 ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(),
  1092.                         pathId);
  1093.         pathItem.setType(path ? ConsoleItemType.TEXT_AREA : ConsoleItemType.HIDDEN);
  1094.         ((StringConsoleItem)pathItem).setRows(3);
  1095.         if(path)
  1096.             pathItem.setRequired(requiredValue);
  1097.         else
  1098.             pathItem.setRequired(false);
  1099.        
  1100.         StringProperty pathItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties,
  1101.                 pathId);
  1102.         if(pathItemValue!=null && !path) {
  1103.             pathItemValue.setValue(null);
  1104.         }
  1105.        
  1106.        
  1107.         String passwordId = ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_PASSWORD_ID
  1108.                 :
  1109.                 ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_PASSWORD_ID;
  1110.        
  1111.         boolean password = ridefinisci && !hsm && !jwk && !remoteStore;
  1112.         AbstractConsoleItem<?> passwordItem =  
  1113.                 ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(),
  1114.                         passwordId);
  1115.         passwordItem.setType(password ? ConsoleItemType.LOCK : ConsoleItemType.LOCK_HIDDEN);
  1116.         if(password) {
  1117.             if(jks && !DBUtils.isTruststoreJksPasswordRequired()) {
  1118.                 passwordItem.setRequired(false);
  1119.             }
  1120.             else {
  1121.                 passwordItem.setRequired(requiredValue);
  1122.             }
  1123.         }
  1124.         else {
  1125.             passwordItem.setRequired(false);
  1126.         }
  1127.        
  1128.         StringProperty passwordItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties,
  1129.                 passwordId);
  1130.         if(passwordItemValue!=null && !password) {
  1131.             passwordItemValue.setValue(null);
  1132.         }
  1133.        
  1134.        
  1135.         String ocspId = ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_OCSP_ID
  1136.                 :
  1137.                 ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_OCSP_ID;
  1138.        
  1139.         AbstractConsoleItem<?> ocspItem =  
  1140.                 ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(),
  1141.                         ocspId  );
  1142.         OCSPProvider ocspProvider = new OCSPProvider();
  1143.         boolean ocsp = (ridefinisci && !jwk && !remoteStore && ocspProvider.isOcspEnabled());
  1144.         ocspItem.setType(ocsp ? ConsoleItemType.SELECT : ConsoleItemType.HIDDEN);
  1145.         if(ocsp) {
  1146.             List<String> ocspTypes = ocspProvider.getValues();
  1147.             List<String> ocspLabels = ocspProvider.getLabels();
  1148.             for (int i = 0; i < ocspTypes.size(); i++) {
  1149.                 String type = ocspTypes.get(i);
  1150.                 String label = ocspLabels.get(i);
  1151.                 ((StringConsoleItem)ocspItem).addLabelValue(label, type);
  1152.             }
  1153.         }
  1154.        
  1155.         StringProperty ocspItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties,
  1156.                 ocspId);
  1157.         if(ocspItemValue!=null && !ocsp) {
  1158.             ocspItemValue.setValue(null);
  1159.         }
  1160.        
  1161.        
  1162.         String crlId = ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_CRLS_ID
  1163.                 :
  1164.                 ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_CRLS_ID;
  1165.        
  1166.         AbstractConsoleItem<?> crlsItem =  
  1167.                 ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(),
  1168.                         crlId   );
  1169.         boolean crl = ridefinisci && !jwk && !remoteStore;
  1170.         crlsItem.setType(crl ? ConsoleItemType.TEXT_AREA : ConsoleItemType.HIDDEN);

  1171.         StringProperty crlsItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties,
  1172.                 crlId);
  1173.         if(crlsItemValue!=null && !crl) {
  1174.             crlsItemValue.setValue(null);
  1175.         }
  1176.     }
  1177. }