ModIDynamicConfigurationKeystoreUtilities.java
/*
* GovWay - A customizable API Gateway
* https://govway.org
*
* Copyright (c) 2005-2024 Link.it srl (https://link.it).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3, as published by
* the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package org.openspcoop2.protocol.modipa.properties;
import java.security.KeyStore;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.openspcoop2.core.config.ConfigurazioneMultitenant;
import org.openspcoop2.core.config.constants.PortaApplicativaSoggettiFruitori;
import org.openspcoop2.core.config.constants.StatoFunzionalita;
import org.openspcoop2.protocol.modipa.constants.ModIConsoleCostanti;
import org.openspcoop2.protocol.sdk.ProtocolException;
import org.openspcoop2.protocol.sdk.constants.ConsoleItemType;
import org.openspcoop2.protocol.sdk.constants.ConsoleItemValueType;
import org.openspcoop2.protocol.sdk.properties.AbstractConsoleItem;
import org.openspcoop2.protocol.sdk.properties.BaseConsoleItem;
import org.openspcoop2.protocol.sdk.properties.BinaryConsoleItem;
import org.openspcoop2.protocol.sdk.properties.BinaryProperty;
import org.openspcoop2.protocol.sdk.properties.BooleanConsoleItem;
import org.openspcoop2.protocol.sdk.properties.BooleanProperty;
import org.openspcoop2.protocol.sdk.properties.ConsoleConfiguration;
import org.openspcoop2.protocol.sdk.properties.ProtocolProperties;
import org.openspcoop2.protocol.sdk.properties.ProtocolPropertiesFactory;
import org.openspcoop2.protocol.sdk.properties.ProtocolPropertiesUtils;
import org.openspcoop2.protocol.sdk.properties.StringConsoleItem;
import org.openspcoop2.protocol.sdk.properties.StringProperty;
import org.openspcoop2.utils.certificate.ArchiveLoader;
import org.openspcoop2.utils.certificate.ArchiveType;
import org.openspcoop2.utils.certificate.Certificate;
import org.openspcoop2.utils.certificate.CertificateInfo;
import org.openspcoop2.utils.certificate.KeystoreUtils;
import org.openspcoop2.utils.certificate.byok.BYOKProvider;
import org.openspcoop2.utils.certificate.hsm.HSMUtils;
import org.openspcoop2.utils.certificate.ocsp.OCSPProvider;
import org.openspcoop2.utils.certificate.remote.RemoteStoreConfig;
/**
* ModIDynamicConfigurationKeystoreUtilities
*
* @author Poli Andrea (apoli@link.it)
* @author $Author$
* @version $Rev$, $Date$
*/
public class ModIDynamicConfigurationKeystoreUtilities {
private ModIDynamicConfigurationKeystoreUtilities() {}
static void addKeystoreConfig(ConsoleConfiguration configuration, boolean checkRidefinisci, boolean addHiddenSubjectIssuer, boolean requiredValue) throws ProtocolException {
if(checkRidefinisci) {
BaseConsoleItem subTitleItem =
ProtocolPropertiesFactory.newSubTitleItem(
ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_KEYSTORE_ID,
ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_KEYSTORE_LABEL);
subTitleItem.setType(ConsoleItemType.HIDDEN);
configuration.addConsoleItem(subTitleItem);
}
StringConsoleItem modeItem = (StringConsoleItem)
ProtocolPropertiesFactory.newConsoleItem(ConsoleItemValueType.STRING,
ConsoleItemType.HIDDEN,
ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_ID,
ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_LABEL);
modeItem.setDefaultValue(ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_DEFAULT_VALUE);
modeItem.setReloadOnChange(true, true);
configuration.addConsoleItem(modeItem);
StringConsoleItem typeItem = (StringConsoleItem)
ProtocolPropertiesFactory.newConsoleItem(ConsoleItemValueType.STRING,
ConsoleItemType.HIDDEN,
ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_ID,
ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_LABEL);
typeItem.setDefaultValue(ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_DEFAULT_VALUE);
typeItem.setReloadOnChange(true, true);
configuration.addConsoleItem(typeItem);
AbstractConsoleItem<?> archiveItem =
ProtocolPropertiesFactory.newConsoleItem(
ConsoleItemValueType.BINARY,
ConsoleItemType.HIDDEN,
ModIConsoleCostanti.MODIPA_KEYSTORE_ARCHIVE_ID,
ModIConsoleCostanti.MODIPA_KEYSTORE_ARCHIVE_LABEL);
((BinaryConsoleItem)archiveItem).setShowContent(false);
((BinaryConsoleItem)archiveItem).setReadOnly(false);
((BinaryConsoleItem)archiveItem).setRequired(true);
((BinaryConsoleItem)archiveItem).setNoteUpdate(ModIConsoleCostanti.MODIPA_KEYSTORE_ARCHIVE_NOTE_UPDATE);
((BinaryConsoleItem)archiveItem).setLock(true);
configuration.addConsoleItem(archiveItem);
AbstractConsoleItem<?> pathItem =
ProtocolPropertiesFactory.newConsoleItem(
ConsoleItemValueType.STRING,
ConsoleItemType.HIDDEN,
ModIConsoleCostanti.MODIPA_KEYSTORE_PATH_ID,
ModIConsoleCostanti.MODIPA_KEYSTORE_PATH_LABEL);
configuration.addConsoleItem(pathItem);
AbstractConsoleItem<?> pathPublicKeyItem =
ProtocolPropertiesFactory.newConsoleItem(
ConsoleItemValueType.STRING,
ConsoleItemType.HIDDEN,
ModIConsoleCostanti.MODIPA_KEYSTORE_PATH_PUBLIC_KEY_ID,
ModIConsoleCostanti.MODIPA_KEYSTORE_PATH_PUBLIC_KEY_LABEL);
configuration.addConsoleItem(pathPublicKeyItem);
StringConsoleItem pathKeyAlgorithmItem = (StringConsoleItem)
ProtocolPropertiesFactory.newConsoleItem(
ConsoleItemValueType.STRING,
ConsoleItemType.HIDDEN,
ModIConsoleCostanti.MODIPA_KEYSTORE_KEY_ALGORITHM_ID,
ModIConsoleCostanti.MODIPA_KEYSTORE_KEY_ALGORITHM_LABEL);
pathKeyAlgorithmItem.setDefaultValue(ModIConsoleCostanti.MODIPA_KEYSTORE_KEY_ALGORITHM_DEFAULT_VALUE);
configuration.addConsoleItem(pathKeyAlgorithmItem);
AbstractConsoleItem<?> keystorePasswordItem =
ProtocolPropertiesFactory.newConsoleItem(
ConsoleItemValueType.STRING,
ConsoleItemType.LOCK_HIDDEN,
ModIConsoleCostanti.MODIPA_KEYSTORE_PASSWORD_ID,
ModIConsoleCostanti.MODIPA_KEYSTORE_PASSWORD_LABEL);
keystorePasswordItem.setRequired(requiredValue);
configuration.addConsoleItem(keystorePasswordItem);
AbstractConsoleItem<?> keyAliasItem =
ProtocolPropertiesFactory.newConsoleItem(
ConsoleItemValueType.STRING,
ConsoleItemType.HIDDEN,
ModIConsoleCostanti.MODIPA_KEY_ALIAS_ID,
ModIConsoleCostanti.MODIPA_KEY_ALIAS_LABEL);
keyAliasItem.setRequired(requiredValue);
configuration.addConsoleItem(keyAliasItem);
AbstractConsoleItem<?> keyPasswordItem =
ProtocolPropertiesFactory.newConsoleItem(
ConsoleItemValueType.STRING,
ConsoleItemType.LOCK_HIDDEN,
ModIConsoleCostanti.MODIPA_KEY_PASSWORD_ID,
ModIConsoleCostanti.MODIPA_KEY_PASSWORD_LABEL);
keyPasswordItem.setRequired(requiredValue);
configuration.addConsoleItem(keyPasswordItem);
AbstractConsoleItem<?> keystoreByokPolicyItem =
ProtocolPropertiesFactory.newConsoleItem(
ConsoleItemValueType.STRING,
ConsoleItemType.HIDDEN,
ModIConsoleCostanti.MODIPA_KEYSTORE_BYOK_POLICY_ID,
ModIConsoleCostanti.MODIPA_KEYSTORE_BYOK_POLICY_LABEL);
keystoreByokPolicyItem.setRequired(false);
configuration.addConsoleItem(keystoreByokPolicyItem);
AbstractConsoleItem<?> certificateItem =
ProtocolPropertiesFactory.newConsoleItem(
ConsoleItemValueType.BINARY,
ConsoleItemType.HIDDEN,
ModIConsoleCostanti.MODIPA_KEYSTORE_CERTIFICATO_ID,
ModIConsoleCostanti.MODIPA_KEYSTORE_CERTIFICATO_LABEL);
((BinaryConsoleItem)certificateItem).setShowContent(false);
((BinaryConsoleItem)certificateItem).setReadOnly(false);
((BinaryConsoleItem)certificateItem).setRequired(false);
configuration.addConsoleItem(certificateItem);
if(addHiddenSubjectIssuer) {
AbstractConsoleItem<?> cnSubjectItem =
ProtocolPropertiesFactory.newConsoleItem(
ConsoleItemValueType.STRING,
ConsoleItemType.HIDDEN,
ModIConsoleCostanti.MODIPA_KEY_CN_SUBJECT_ID,
ModIConsoleCostanti.MODIPA_KEY_CN_SUBJECT_ID);
configuration.addConsoleItem(cnSubjectItem);
AbstractConsoleItem<?> cnIssuerItem =
ProtocolPropertiesFactory.newConsoleItem(
ConsoleItemValueType.STRING,
ConsoleItemType.HIDDEN,
ModIConsoleCostanti.MODIPA_KEY_CN_ISSUER_ID,
ModIConsoleCostanti.MODIPA_KEY_CN_ISSUER_ID);
configuration.addConsoleItem(cnIssuerItem);
}
}
static boolean updateKeystoreConfig(ConsoleConfiguration consoleConfiguration, ProtocolProperties properties, boolean checkRidefinisci,
boolean hideSceltaArchivioFilePath, boolean addHiddenSubjectIssuer,
boolean requiredValue, ConfigurazioneMultitenant configurazioneMultitenant,
boolean rest) throws ProtocolException {
return updateKeystoreConfig(consoleConfiguration, properties, checkRidefinisci, false,
hideSceltaArchivioFilePath, addHiddenSubjectIssuer,
requiredValue, configurazioneMultitenant,
rest);
}
static boolean updateKeystoreConfig(ConsoleConfiguration consoleConfiguration, ProtocolProperties properties, boolean checkRidefinisci, boolean checkRidefinisciOauth,
boolean hideSceltaArchivioFilePath, boolean addHiddenSubjectIssuer,
boolean requiredValue, ConfigurazioneMultitenant configurazioneMultitenant,
boolean rest) throws ProtocolException {
boolean ridefinisci = true;
if(checkRidefinisci) {
if(checkRidefinisciOauth) {
BooleanProperty booleanItemValue = (BooleanProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_OAUTH_KEYSTORE_MODE_ID);
if(booleanItemValue==null || booleanItemValue.getValue()==null || (!booleanItemValue.getValue())) {
ridefinisci = false;
}
else {
ridefinisci = true;
}
}
else {
StringProperty selectModeItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_KEYSTORE_MODE_ID);
if(selectModeItemValue==null) {
ridefinisci = false;
}
else {
ridefinisci = ModIConsoleCostanti.MODIPA_PROFILO_MODE_VALUE_RIDEFINISCI.equals(selectModeItemValue.getValue());
}
BaseConsoleItem subTitleItem =
ProtocolPropertiesUtils.getBaseConsoleItem(consoleConfiguration.getConsoleItem(), ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_KEYSTORE_ID);
if(subTitleItem!=null) {
if(ridefinisci) {
subTitleItem.setType(ConsoleItemType.SUBTITLE);
}
else {
subTitleItem.setType(ConsoleItemType.HIDDEN);
}
}
}
}
AbstractConsoleItem<?> modeItem =
ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(), ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_ID);
if(modeItem!=null) {
if(ridefinisci && !hideSceltaArchivioFilePath) {
modeItem.setType(ConsoleItemType.SELECT);
}
else {
modeItem.setType(ConsoleItemType.HIDDEN);
}
((StringConsoleItem)modeItem).addLabelValue(ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_LABEL_ARCHIVE,
ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_VALUE_ARCHIVE);
((StringConsoleItem)modeItem).addLabelValue(ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_LABEL_PATH,
ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_VALUE_PATH);
if(HSMUtils.existsTipologieKeystoreHSM(false, false)) {
((StringConsoleItem)modeItem).addLabelValue(ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_LABEL_HSM,
ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_VALUE_HSM);
}
}
StringProperty selectModeItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_ID);
AbstractConsoleItem<?> archiveItem =
ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(), ModIConsoleCostanti.MODIPA_KEYSTORE_ARCHIVE_ID);
AbstractConsoleItem<?> pathItem =
ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(), ModIConsoleCostanti.MODIPA_KEYSTORE_PATH_ID);
AbstractConsoleItem<?> certificateItem =
ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(), ModIConsoleCostanti.MODIPA_KEYSTORE_CERTIFICATO_ID);
boolean permitCertificate = false;
boolean hsm = false;
boolean archive = false;
String modalita = ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_DEFAULT_VALUE;
if(selectModeItemValue!=null && selectModeItemValue.getValue()!=null && !"".equals(selectModeItemValue.getValue())) {
modalita = selectModeItemValue.getValue();
}
if(ridefinisci) {
if(selectModeItemValue!=null &&
(selectModeItemValue.getValue()==null || "".equals(selectModeItemValue.getValue()))) {
selectModeItemValue.setValue(modalita);
}
if(ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_VALUE_HSM.equals(modalita)) {
permitCertificate = true;
hsm = true;
archiveItem.setType(ConsoleItemType.HIDDEN);
archiveItem.setRequired(false);
BinaryProperty archiveItemValue = (BinaryProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_ARCHIVE_ID);
if(archiveItemValue!=null) {
archiveItemValue.setValue(null);
archiveItemValue.setFileName(null);
archiveItemValue.setClearContent(true);
}
pathItem.setType(ConsoleItemType.HIDDEN);
pathItem.setRequired(false);
StringProperty pathItemItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_PATH_ID);
if(pathItemItemValue!=null) {
pathItemItemValue.setValue(null);
}
if(configurazioneMultitenant!=null &&
StatoFunzionalita.ABILITATO.equals(configurazioneMultitenant.getStato()) &&
!PortaApplicativaSoggettiFruitori.SOGGETTI_ESTERNI.equals(configurazioneMultitenant.getErogazioneSceltaSoggettiFruitori())) {
modeItem.setNote(ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_NOTE_PATH);
}
else {
modeItem.setNote(null);
}
StringProperty keyPasswordMODIItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEY_PASSWORD_ID);
if(keyPasswordMODIItemValue!=null) {
keyPasswordMODIItemValue.setValue(null);
}
StringProperty keystorePasswordMODIItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_PASSWORD_ID);
if(keystorePasswordMODIItemValue!=null) {
keystorePasswordMODIItemValue.setValue(null);
}
StringProperty keystoreByokPolicyMODIItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_BYOK_POLICY_ID);
if(keystoreByokPolicyMODIItemValue!=null) {
keystoreByokPolicyMODIItemValue.setValue(null);
}
}
else if(ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_VALUE_ARCHIVE.equals(modalita)) {
archive = true;
archiveItem.setType(ConsoleItemType.FILE);
archiveItem.setRequired(requiredValue);
if(addHiddenSubjectIssuer) {
((BinaryConsoleItem)archiveItem).setReadOnly(true);
}
pathItem.setType(ConsoleItemType.HIDDEN);
pathItem.setRequired(false);
StringProperty pathItemItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_PATH_ID);
if(pathItemItemValue!=null) {
pathItemItemValue.setValue(null);
}
modeItem.setNote(null);
}
else {
permitCertificate = true;
StringProperty typeItemItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_ID);
if(typeItemItemValue!=null && typeItemItemValue.getValue()!=null &&
( ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_VALUE_JWK.equals(typeItemItemValue.getValue())
||
ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_VALUE_KEY_PAIR.equals(typeItemItemValue.getValue()))
){
permitCertificate = false;
}
archiveItem.setType(ConsoleItemType.HIDDEN);
archiveItem.setRequired(false);
BinaryProperty archiveItemValue = (BinaryProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_ARCHIVE_ID);
if(archiveItemValue!=null) {
archiveItemValue.setValue(null);
archiveItemValue.setFileName(null);
archiveItemValue.setClearContent(true);
}
pathItem.setType(ConsoleItemType.TEXT_AREA);
((StringConsoleItem)pathItem).setRows(3);
pathItem.setRequired(requiredValue);
if(configurazioneMultitenant!=null &&
StatoFunzionalita.ABILITATO.equals(configurazioneMultitenant.getStato()) &&
!PortaApplicativaSoggettiFruitori.SOGGETTI_ESTERNI.equals(configurazioneMultitenant.getErogazioneSceltaSoggettiFruitori())) {
modeItem.setNote(ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_NOTE_PATH);
}
else {
modeItem.setNote(null);
}
}
if(certificateItem!=null) {
if(addHiddenSubjectIssuer // ha senso solo per l'applicativo per ovviare al problema di riconoscimento multi-tenant
&& permitCertificate) {
certificateItem.setType(ConsoleItemType.FILE);
certificateItem.setRequired(false);
((BinaryConsoleItem)archiveItem).setReadOnly(true);
BinaryProperty certificateItemValue = (BinaryProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_CERTIFICATO_ID);
if(certificateItemValue!=null && certificateItemValue.getValue()!=null && certificateItemValue.getValue().length>0) {
modeItem.setNote(null);
}
}
else {
certificateItem.setType(ConsoleItemType.HIDDEN);
certificateItem.setRequired(false);
BinaryProperty certificateItemValue = (BinaryProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_CERTIFICATO_ID);
if(certificateItemValue!=null) {
certificateItemValue.setValue(null);
certificateItemValue.setFileName(null);
certificateItemValue.setClearContent(true);
}
}
}
if(addHiddenSubjectIssuer) {
try {
CertificateInfo cert = ModIDynamicConfigurationKeystoreUtilities.readKeystoreConfig(properties, permitCertificate);
if(cert!=null && cert.getSubject()!=null) {
StringProperty subjectItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEY_CN_SUBJECT_ID);
subjectItemValue.setValue(cert.getSubject().toString());
StringProperty issuerItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEY_CN_ISSUER_ID);
if(cert.getIssuer()!=null) {
issuerItemValue.setValue(cert.getIssuer().toString());
}
else {
if(issuerItemValue!=null) {
issuerItemValue.setValue(null);
}
}
}
}catch(Exception e) {
// errore sollevato in validazione
}
}
}
else {
if(pathItem!=null) {
pathItem.setType(ConsoleItemType.HIDDEN);
pathItem.setRequired(false);
}
StringProperty pathItemItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_PATH_ID);
if(pathItemItemValue!=null) {
pathItemItemValue.setValue(null);
}
if(archiveItem!=null) {
archiveItem.setType(ConsoleItemType.HIDDEN);
archiveItem.setRequired(false);
}
BinaryProperty archiveItemValue = (BinaryProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_ARCHIVE_ID);
if(archiveItemValue!=null) {
archiveItemValue.setValue(null);
archiveItemValue.setFileName(null);
archiveItemValue.setClearContent(true);
}
if(certificateItem!=null) {
certificateItem.setType(ConsoleItemType.HIDDEN);
certificateItem.setRequired(false);
}
BinaryProperty certificateItemValue = (BinaryProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_CERTIFICATO_ID);
if(certificateItemValue!=null) {
certificateItemValue.setValue(null);
certificateItemValue.setFileName(null);
certificateItemValue.setClearContent(true);
}
}
AbstractConsoleItem<?> typeItem =
ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(), ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_ID);
List<String> lHsmTypes = null;
if(typeItem!=null) {
if(hsm) {
lHsmTypes = new ArrayList<>();
HSMUtils.fillTipologieKeystore(false, false, lHsmTypes);
if(lHsmTypes!=null && !lHsmTypes.isEmpty()) {
for (String hsmType : lHsmTypes) {
((StringConsoleItem)typeItem).addLabelValue(hsmType, hsmType);
}
}
}
else {
((StringConsoleItem)typeItem).addLabelValue(ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_LABEL_JKS,
ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_VALUE_JKS);
((StringConsoleItem)typeItem).addLabelValue(ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_LABEL_PKCS12,
ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_VALUE_PKCS12);
if(ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_VALUE_PATH.equals(modalita) && rest) {
((StringConsoleItem)typeItem).addLabelValue(ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_LABEL_JWK,
ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_VALUE_JWK);
((StringConsoleItem)typeItem).addLabelValue(ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_LABEL_KEY_PAIR,
ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_VALUE_KEY_PAIR);
}
}
if(ridefinisci) {
typeItem.setType(ConsoleItemType.SELECT);
}
else {
typeItem.setType(ConsoleItemType.HIDDEN);
}
}
StringProperty typeItemItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_ID);
String keystoreType = null;
boolean keystoreKeyPair = false;
boolean keystoreJWK = false;
if(typeItemItemValue!=null && typeItemItemValue.getValue()!=null) {
keystoreType = typeItemItemValue.getValue();
if(hsm && (lHsmTypes==null || !lHsmTypes.contains(keystoreType))) {
keystoreType = null;
typeItemItemValue.setValue(null);
}
keystoreKeyPair = ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_VALUE_KEY_PAIR.equals(keystoreType);
keystoreJWK = ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_VALUE_JWK.equals(keystoreType);
if(ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_VALUE_ARCHIVE.equals(modalita) &&
(keystoreKeyPair || keystoreJWK)
){
keystoreKeyPair = false;
keystoreJWK = false;
keystoreType = ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_DEFAULT_VALUE;
typeItemItemValue.setValue(keystoreType);
}
}
AbstractConsoleItem<?> pathPublicKeyItem =
ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(), ModIConsoleCostanti.MODIPA_KEYSTORE_PATH_PUBLIC_KEY_ID);
boolean pathPublicKeyRestoreDefaultValue = true;
if(pathPublicKeyItem!=null && ridefinisci &&
ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_VALUE_PATH.equals(modalita) &&
keystoreKeyPair) {
pathPublicKeyItem.setType(ConsoleItemType.TEXT_AREA);
((StringConsoleItem)pathPublicKeyItem).setRows(3);
pathPublicKeyItem.setRequired(true);
pathPublicKeyRestoreDefaultValue = false;
// Ridefinisco anche label Path
if(pathItem!=null) {
pathItem.setLabel(ModIConsoleCostanti.MODIPA_KEYSTORE_PATH_PRIVATE_KEY_LABEL);
}
}
if(pathPublicKeyRestoreDefaultValue) {
if(pathPublicKeyItem!=null) {
pathPublicKeyItem.setType(ConsoleItemType.HIDDEN);
pathPublicKeyItem.setRequired(false);
}
StringProperty pathPublicKeyItemItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_PATH_PUBLIC_KEY_ID);
if(pathPublicKeyItemItemValue!=null) {
pathPublicKeyItemItemValue.setValue(null);
}
// Ripristino anche label Path
if(pathItem!=null) {
pathItem.setLabel(ModIConsoleCostanti.MODIPA_KEYSTORE_PATH_LABEL);
}
}
AbstractConsoleItem<?> keystorePasswordItem =
ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(), ModIConsoleCostanti.MODIPA_KEYSTORE_PASSWORD_ID);
if(keystorePasswordItem!=null) {
if(ridefinisci && !hsm && !keystoreKeyPair && !keystoreJWK) {
keystorePasswordItem.setType(ConsoleItemType.LOCK);
}
else {
keystorePasswordItem.setType(ConsoleItemType.LOCK_HIDDEN);
StringProperty keystorePasswordItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_PASSWORD_ID);
if(keystorePasswordItemValue!=null) {
keystorePasswordItemValue.setValue(null);
}
}
}
AbstractConsoleItem<?> keystoreByokItem =
ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(), ModIConsoleCostanti.MODIPA_KEYSTORE_BYOK_POLICY_ID);
if(keystoreByokItem!=null) {
BYOKProvider byokProvider = null;
try {
byokProvider = BYOKProvider.getUnwrapInstance();
}catch(Exception e) {
throw new ProtocolException(e.getMessage(),e);
}
if(ridefinisci && !hsm && !archive && byokProvider.isByokEnabled()) {
List<String> ocspTypes = byokProvider.getValues();
List<String> ocspLabels = byokProvider.getLabels();
for (int i = 0; i < ocspTypes.size(); i++) {
String type = ocspTypes.get(i);
String label = ocspLabels.get(i);
((StringConsoleItem)keystoreByokItem).addLabelValue(label, type);
}
keystoreByokItem.setType(ConsoleItemType.SELECT);
}
else {
keystoreByokItem.setType(ConsoleItemType.HIDDEN);
StringProperty keystoreByokPolicyItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_BYOK_POLICY_ID);
if(keystoreByokPolicyItemValue!=null) {
keystoreByokPolicyItemValue.setValue(null);
}
}
}
AbstractConsoleItem<?> keyAliasItem =
ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(), ModIConsoleCostanti.MODIPA_KEY_ALIAS_ID);
if(keyAliasItem!=null) {
if(ridefinisci && !keystoreKeyPair) {
keyAliasItem.setType(ConsoleItemType.TEXT_EDIT);
}
else {
keyAliasItem.setType(ConsoleItemType.HIDDEN);
StringProperty keyAliasItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEY_ALIAS_ID);
if(keyAliasItemValue!=null) {
keyAliasItemValue.setValue(null);
}
}
}
AbstractConsoleItem<?> keyPasswordItem =
ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(), ModIConsoleCostanti.MODIPA_KEY_PASSWORD_ID);
if(keyPasswordItem!=null) {
if(ridefinisci && (!hsm || HSMUtils.isHsmConfigurableKeyPassword()) && !keystoreJWK) {
keyPasswordItem.setType(ConsoleItemType.LOCK);
if(keystoreKeyPair) {
keyPasswordItem.setRequired(false);
}
}
else {
keyPasswordItem.setType(ConsoleItemType.LOCK_HIDDEN);
StringProperty keyPasswordItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEY_PASSWORD_ID);
if(keyPasswordItemValue!=null) {
keyPasswordItemValue.setValue(null);
}
keyPasswordItem.setRequired(requiredValue);
}
}
StringProperty keyPairAlgorithmItemItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_KEY_ALGORITHM_ID);
if(keystoreKeyPair &&
keyPairAlgorithmItemItemValue!=null &&
(keyPairAlgorithmItemItemValue.getValue()==null || StringUtils.isEmpty(keyPairAlgorithmItemItemValue.getValue()))) {
keyPairAlgorithmItemItemValue.setValue(ModIConsoleCostanti.MODIPA_KEYSTORE_KEY_ALGORITHM_DEFAULT_VALUE);
}
return ridefinisci;
}
public static CertificateInfo readKeystoreConfig(ProtocolProperties properties, boolean onlyCert) throws Exception {
Certificate cert = null;
StringProperty selectModeItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_ID);
String modalita = ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_DEFAULT_VALUE;
if(selectModeItemValue!=null && selectModeItemValue.getValue()!=null && !"".equals(selectModeItemValue.getValue())) {
modalita = selectModeItemValue.getValue();
}
if(onlyCert) {
if(!ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_VALUE_ARCHIVE.equals(modalita)) {
BinaryProperty certificateItemValue = (BinaryProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_CERTIFICATO_ID);
if(certificateItemValue!=null && certificateItemValue.getValue()!=null) {
byte [] certificate = certificateItemValue.getValue();
cert = ArchiveLoader.load(certificate);
}
}
else {
// deve essere gestito invocando questo metodo con onlyCert
}
}
else {
StringProperty keystoreTypeItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_ID);
StringProperty keystorePasswordItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_PASSWORD_ID);
StringProperty keystoreByokPolicyItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_BYOK_POLICY_ID);
StringProperty keyAliasItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEY_ALIAS_ID);
StringProperty keyPasswordItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEY_PASSWORD_ID);
if(keystoreTypeItemValue!=null && keystorePasswordItemValue!=null && keyAliasItemValue!=null && keyPasswordItemValue!=null) {
String type = keystoreTypeItemValue.getValue();
ArchiveType archiveType = null;
if(ModIConsoleCostanti.MODIPA_KEYSTORE_TYPE_VALUE_JKS.equals(type)) {
archiveType = ArchiveType.JKS;
}
else {
archiveType = ArchiveType.PKCS12;
}
byte [] archive = null;
if(ModIConsoleCostanti.MODIPA_KEYSTORE_MODE_VALUE_ARCHIVE.equals(modalita)) {
BinaryProperty archiveItemValue = (BinaryProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_ARCHIVE_ID);
if(archiveItemValue!=null && archiveItemValue.getValue()!=null) {
archive = archiveItemValue.getValue();
cert = ArchiveLoader.load(archiveType, archive, keyAliasItemValue.getValue(), keystorePasswordItemValue.getValue());
}
}
else {
// Il PATH o HSM indicato non e' disponibile nella macchina dove gira la console.
if(keystoreByokPolicyItemValue!=null) {
// nop: path non viene acceduto
}
/** StringProperty pathItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties, ModIConsoleCostanti.MODIPA_KEYSTORE_PATH_ID);
// if(pathItemValue!=null && pathItemValue.getValue()!=null && !"".equals(pathItemValue.getValue())) {
// archive = org.openspcoop2.utils.resources.FileSystemUtilities.readBytesFromFile(pathItemValue.getValue());
// cert = ArchiveLoader.load(archiveType, archive, keyAliasItemValue.getValue(), keystorePasswordItemValue.getValue());
// }*/
}
// Verifico chiave privata
if(archive!=null) {
KeyStore ks = KeystoreUtils.readKeystore(archive, archiveType.name(), keystorePasswordItemValue.getValue());
ks.getKey(keyAliasItemValue.getValue(), keyPasswordItemValue.getValue().toCharArray());
}
}
}
if(cert!=null) {
return cert.getCertificate();
}
return null;
}
static void addTrustStoreSSLConfigChoice(ConsoleConfiguration configuration, boolean x5u) throws ProtocolException {
addTrustStoreConfigChoice(configuration, true, false,
false,
false, false, false,
x5u);
}
static void addTrustStoreCertificatiConfigChoice(ConsoleConfiguration configuration, boolean x5u) throws ProtocolException {
addTrustStoreConfigChoice(configuration, false, true,
false,
false, false, false,
x5u);
}
static void addTrustStoreKeystoreErogazioneConfigChoice(ConsoleConfiguration configuration) throws ProtocolException {
addTrustStoreConfigChoice(configuration, false, false,
true,
false, false, false,
false);
}
static void addTrustStoreKeystoreFruizioneConfigChoice(ConsoleConfiguration configuration, boolean tokenNonLocale) throws ProtocolException {
addTrustStoreConfigChoice(configuration, false, false,
false,
true, tokenNonLocale, false,
false);
}
static void addTrustStoreKeystoreFruizioneOAuthConfigChoice(ConsoleConfiguration configuration) throws ProtocolException {
addTrustStoreConfigChoice(configuration, false, false,
false,
false, false, true,
false);
}
private static void addTrustStoreConfigChoice(ConsoleConfiguration configuration, boolean ssl, boolean truststore,
boolean keystoreErogazione,
boolean keystoreFruizione, boolean tokenNonLocale, boolean keystoreFruizioneOauthNoSicurezzaMessaggio,
boolean x5u) throws ProtocolException {
if(keystoreErogazione) {
// nop
}
if(keystoreFruizione) {
StringConsoleItem modeItem = (StringConsoleItem)
ProtocolPropertiesFactory.newConsoleItem(ConsoleItemValueType.STRING,
ConsoleItemType.SELECT,
ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_FRUIZIONE_KEYSTORE_MODE_ID,
ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_FRUIZIONE_KEYSTORE_MODE_LABEL);
modeItem.addLabelValue(ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_FRUIZIONE_KEYSTORE_MODE_LABEL_APPLICATIVO,
ModIConsoleCostanti.MODIPA_KEYSTORE_FRUIZIONE_APPLICATIVO);
modeItem.addLabelValue(ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_FRUIZIONE_KEYSTORE_MODE_LABEL_FRUIZIONE,
ModIConsoleCostanti.MODIPA_KEYSTORE_FRUIZIONE);
if(tokenNonLocale) {
modeItem.addLabelValue(ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_FRUIZIONE_KEYSTORE_MODE_LABEL_TOKEN_POLICY,
ModIConsoleCostanti.MODIPA_KEYSTORE_FRUIZIONE_TOKEN_POLICY);
}
modeItem.setDefaultValue(ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_FRUIZIONE_KEYSTORE_MODE_DEFAULT_VALUE);
modeItem.setReloadOnChange(true, true);
configuration.addConsoleItem(modeItem);
}
if(keystoreFruizioneOauthNoSicurezzaMessaggio) {
// nop
}
String id = null;
if(ssl) {
id = ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_MODE_ID;
}
else if(truststore) {
id = ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_MODE_ID;
}
else {
id = ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_KEYSTORE_MODE_ID;
}
String label = null;
if(ssl) {
label = ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_MODE_LABEL;
}
else if(truststore) {
label = ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_MODE_LABEL;
}
else {
if(keystoreFruizione) {
label = "";
}
else {
label = ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_KEYSTORE_MODE_LABEL;
}
}
StringConsoleItem modeItem = (StringConsoleItem)
ProtocolPropertiesFactory.newConsoleItem(ConsoleItemValueType.STRING,
ConsoleItemType.SELECT,
id,
label);
if(keystoreFruizioneOauthNoSicurezzaMessaggio) {
modeItem.addLabelValue(ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_STORE_MODE_LABEL_UNDEFINED,
ModIConsoleCostanti.MODIPA_PROFILO_MODE_VALUE_UNDEFINED);
}
modeItem.addLabelValue(ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_STORE_MODE_LABEL_DEFAULT,
ModIConsoleCostanti.MODIPA_PROFILO_MODE_VALUE_DEFAULT);
modeItem.addLabelValue(ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_STORE_MODE_LABEL_RIDEFINISCI,
ModIConsoleCostanti.MODIPA_PROFILO_MODE_VALUE_RIDEFINISCI);
if(keystoreFruizioneOauthNoSicurezzaMessaggio) {
modeItem.setDefaultValue(ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_KEYSTORE_OAUTH_MODE_DEFAULT_VALUE);
}
else {
modeItem.setDefaultValue(ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_MODE_DEFAULT_VALUE);
}
modeItem.setReloadOnChange(true, true);
if( (ssl && !x5u) || keystoreFruizione) {
modeItem.setType(ConsoleItemType.HIDDEN);
}
configuration.addConsoleItem(modeItem);
}
public static void addKeStoreConfigOAuthChoice(ConsoleConfiguration configuration) throws ProtocolException {
String id = ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_OAUTH_KEYSTORE_MODE_ID;
String label = ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_OAUTH_KEYSTORE_MODE_LABEL;
BooleanConsoleItem booleanConsoleItem =
(BooleanConsoleItem) ProtocolPropertiesFactory.newConsoleItem(ConsoleItemValueType.BOOLEAN, ConsoleItemType.CHECKBOX,
id, label);
booleanConsoleItem.setDefaultValue(ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_OAUTH_KEYSTORE_MODE_DEFAULT_VALUE);
booleanConsoleItem.setReloadOnChange(true, true);
configuration.addConsoleItem(booleanConsoleItem);
}
static void addTrustStoreConfigSubSection(ConsoleConfiguration configuration, boolean ssl, boolean x5u) throws ProtocolException {
if(x5u) {
// nop
}
BaseConsoleItem subTitleItem =
ProtocolPropertiesFactory.newSubTitleItem(
ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_SSL_TRUSTSTORE_ID
:
ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_CERTIFICATI_TRUSTSTORE_ID,
ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_SSL_TRUSTSTORE_LABEL
:
ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_CERTIFICATI_TRUSTSTORE_LABEL);
if(subTitleItem!=null) {
subTitleItem.setType(ConsoleItemType.HIDDEN);
configuration.addConsoleItem(subTitleItem);
}
StringConsoleItem typeItem = (StringConsoleItem)
ProtocolPropertiesFactory.newConsoleItem(
ConsoleItemValueType.STRING,
ConsoleItemType.HIDDEN,
ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_TYPE_ID
:
ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_TYPE_ID,
ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_TYPE_LABEL
:
ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_TYPE_LABEL);
typeItem.setDefaultValue(ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_TYPE_VALUE_JKS
:
ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_TYPE_VALUE_JKS);
configuration.addConsoleItem(typeItem);
AbstractConsoleItem<?> pathItem =
ProtocolPropertiesFactory.newConsoleItem(
ConsoleItemValueType.STRING,
ConsoleItemType.HIDDEN,
ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_PATH_ID
:
ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_PATH_ID,
ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_PATH_LABEL
:
ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_PATH_LABEL);
configuration.addConsoleItem(pathItem);
StringConsoleItem passwordItem = (StringConsoleItem)
ProtocolPropertiesFactory.newConsoleItem(
ConsoleItemValueType.STRING,
ConsoleItemType.LOCK_HIDDEN,
ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_PASSWORD_ID
:
ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_PASSWORD_ID,
ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_PASSWORD_LABEL
:
ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_PASSWORD_LABEL);
configuration.addConsoleItem(passwordItem);
StringConsoleItem ocspPolicyItem = (StringConsoleItem)
ProtocolPropertiesFactory.newConsoleItem(
ConsoleItemValueType.STRING,
ConsoleItemType.HIDDEN,
ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_OCSP_ID
:
ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_OCSP_ID,
ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_OCSP_LABEL
:
ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_OCSP_LABEL );
ocspPolicyItem.setRequired(false);
configuration.addConsoleItem(ocspPolicyItem);
StringConsoleItem crlsItem = (StringConsoleItem)
ProtocolPropertiesFactory.newConsoleItem(
ConsoleItemValueType.STRING,
ConsoleItemType.HIDDEN,
ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_CRLS_ID
:
ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_CRLS_ID,
ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_CRLS_LABEL
:
ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_CRLS_LABEL );
crlsItem.setRequired(false);
crlsItem.setRows(2);
crlsItem.setNote(ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_CRLS_NOTE
:
ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_CRLS_NOTE);
configuration.addConsoleItem(crlsItem);
}
static void updateTrustConfig(ConsoleConfiguration consoleConfiguration, ProtocolProperties properties, boolean ssl, boolean x5u, boolean requiredValue,
boolean addTrustStoreTypesChiaviPubbliche, List<RemoteStoreConfig> remoteStoreConfig) throws ProtocolException {
if(ssl) {
StringConsoleItem modeItem = (StringConsoleItem)
ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(), ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_MODE_ID);
if(x5u) {
modeItem.setType(ConsoleItemType.SELECT);
modeItem.addLabelValue(ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_STORE_MODE_LABEL_DEFAULT,
ModIConsoleCostanti.MODIPA_PROFILO_MODE_VALUE_DEFAULT);
modeItem.addLabelValue(ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_STORE_MODE_LABEL_RIDEFINISCI,
ModIConsoleCostanti.MODIPA_PROFILO_MODE_VALUE_RIDEFINISCI);
}
else {
modeItem.setType(ConsoleItemType.HIDDEN);
}
}
StringProperty selectModeItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties,
ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_MODE_ID
:
ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_MODE_ID);
boolean ridefinisci = selectModeItemValue!=null && ModIConsoleCostanti.MODIPA_PROFILO_MODE_VALUE_RIDEFINISCI.equals(selectModeItemValue.getValue());
BaseConsoleItem subTitleItem =
ProtocolPropertiesUtils.getBaseConsoleItem(consoleConfiguration.getConsoleItem(),
ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_SSL_TRUSTSTORE_ID
:
ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_CERTIFICATI_TRUSTSTORE_ID);
if(subTitleItem!=null) {
subTitleItem.setType(ridefinisci ? ConsoleItemType.SUBTITLE : ConsoleItemType.HIDDEN);
}
boolean hsm = false;
boolean remoteStore = false;
boolean jwk = false;
AbstractConsoleItem<?> typeItem =
ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(),
ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_TYPE_ID
:
ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_TYPE_ID);
typeItem.setType(ridefinisci ? ConsoleItemType.SELECT : ConsoleItemType.HIDDEN);
if(ridefinisci) {
boolean reloadOnChange = false;
if(ssl) {
((StringConsoleItem)typeItem).addLabelValue(ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_TYPE_LABEL_JKS,
ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_TYPE_VALUE_JKS);
}
else {
((StringConsoleItem)typeItem).addLabelValue(ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_TYPE_LABEL_JKS,
ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_TYPE_VALUE_JKS);
if(addTrustStoreTypesChiaviPubbliche) {
((StringConsoleItem)typeItem).addLabelValue(ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_TYPE_LABEL_JWK,
ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_TYPE_VALUE_JWK);
reloadOnChange=true;
}
if(remoteStoreConfig!=null && !remoteStoreConfig.isEmpty()) {
for (RemoteStoreConfig rsc : remoteStoreConfig) {
((StringConsoleItem)typeItem).addLabelValue(rsc.getStoreLabel(),
rsc.getStoreName());
reloadOnChange=true;
}
}
}
if(HSMUtils.existsTipologieKeystoreHSM(true, false)) {
List<String> l = new ArrayList<>();
HSMUtils.fillTipologieKeystore(true, false, l);
if(l!=null && !l.isEmpty()) {
typeItem.setReloadOnChange(true, true);
for (String hsmType : l) {
((StringConsoleItem)typeItem).addLabelValue(hsmType, hsmType);
}
}
}
else {
typeItem.setReloadOnChange(reloadOnChange, true);
}
StringProperty typeItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties,
ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_TYPE_ID
:
ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_TYPE_ID);
if(typeItemValue!=null && typeItemValue.getValue()!=null) {
hsm = HSMUtils.isKeystoreHSM(typeItemValue.getValue());
if(!hsm) {
jwk = ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_TYPE_VALUE_JWK.equals(typeItemValue.getValue());
if(!jwk &&
remoteStoreConfig!=null && !remoteStoreConfig.isEmpty()) {
for (RemoteStoreConfig rsc : remoteStoreConfig) {
if(typeItemValue.getValue().equals(rsc.getStoreName())) {
remoteStore = true;
}
}
}
}
}
}
String pathId = ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_PATH_ID
:
ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_PATH_ID;
boolean path = ridefinisci && !hsm && !remoteStore;
AbstractConsoleItem<?> pathItem =
ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(),
pathId);
pathItem.setType(path ? ConsoleItemType.TEXT_AREA : ConsoleItemType.HIDDEN);
((StringConsoleItem)pathItem).setRows(3);
if(path)
pathItem.setRequired(requiredValue);
else
pathItem.setRequired(false);
StringProperty pathItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties,
pathId);
if(pathItemValue!=null && !path) {
pathItemValue.setValue(null);
}
String passwordId = ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_PASSWORD_ID
:
ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_PASSWORD_ID;
boolean password = ridefinisci && !hsm && !jwk && !remoteStore;
AbstractConsoleItem<?> passwordItem =
ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(),
passwordId);
passwordItem.setType(password ? ConsoleItemType.LOCK : ConsoleItemType.LOCK_HIDDEN);
if(password)
passwordItem.setRequired(requiredValue);
else
passwordItem.setRequired(false);
StringProperty passwordItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties,
passwordId);
if(passwordItemValue!=null && !password) {
passwordItemValue.setValue(null);
}
String ocspId = ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_OCSP_ID
:
ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_OCSP_ID;
AbstractConsoleItem<?> ocspItem =
ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(),
ocspId );
OCSPProvider ocspProvider = new OCSPProvider();
boolean ocsp = (ridefinisci && !jwk && !remoteStore && ocspProvider.isOcspEnabled());
ocspItem.setType(ocsp ? ConsoleItemType.SELECT : ConsoleItemType.HIDDEN);
if(ocsp) {
List<String> ocspTypes = ocspProvider.getValues();
List<String> ocspLabels = ocspProvider.getLabels();
for (int i = 0; i < ocspTypes.size(); i++) {
String type = ocspTypes.get(i);
String label = ocspLabels.get(i);
((StringConsoleItem)ocspItem).addLabelValue(label, type);
}
}
StringProperty ocspItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties,
ocspId);
if(ocspItemValue!=null && !ocsp) {
ocspItemValue.setValue(null);
}
String crlId = ssl ? ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_SSL_TRUSTSTORE_CRLS_ID
:
ModIConsoleCostanti.MODIPA_API_IMPL_PROFILO_SICUREZZA_MESSAGGIO_CERTIFICATI_TRUSTSTORE_CRLS_ID;
AbstractConsoleItem<?> crlsItem =
ProtocolPropertiesUtils.getAbstractConsoleItem(consoleConfiguration.getConsoleItem(),
crlId );
boolean crl = ridefinisci && !jwk && !remoteStore;
crlsItem.setType(crl ? ConsoleItemType.TEXT_AREA : ConsoleItemType.HIDDEN);
StringProperty crlsItemValue = (StringProperty) ProtocolPropertiesUtils.getAbstractPropertyById(properties,
crlId);
if(crlsItemValue!=null && !crl) {
crlsItemValue.setValue(null);
}
}
}