SignalHubUtils.java
/*
* GovWay - A customizable API Gateway
* https://govway.org
*
* Copyright (c) 2005-2025 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.utils;
import java.time.Instant;
import java.util.Base64;
import java.util.List;
import java.util.stream.Collectors;
import org.openspcoop2.core.id.IDServizio;
import org.openspcoop2.core.registry.ProtocolProperty;
import org.openspcoop2.pdd.config.DigestServiceParams;
import org.openspcoop2.protocol.modipa.constants.ModICostanti;
import org.openspcoop2.protocol.sdk.Context;
import org.openspcoop2.protocol.sdk.ProtocolException;
import org.openspcoop2.protocol.sdk.properties.ProtocolPropertiesUtils;
import org.openspcoop2.utils.digest.DigestType;
import org.openspcoop2.utils.random.RandomUtilities;
/**
* SignalHubUtils classe con metodi di utilita signal hub
*
* @author Tommaso Burlon (tommaso.burlon@link.it)
* @author $Author$
* @version $Rev$, $Date$
*/
public class SignalHubUtils {
private SignalHubUtils() {}
/**
* Funzioone per fare il parsing delle protocolProperties di un erogazione impostata per supportare singnal hub
* per generare nuove informazioni crittografiche per la creazione del digest
* @param idServizio
* @param eServiceProperties
* @param serial
* @return
* @throws ProtocolException
*/
public static DigestServiceParams generateDigestServiceParams(IDServizio idServizio, List<ProtocolProperty> eServiceProperties, Long serial) throws ProtocolException {
Long durata = ProtocolPropertiesUtils.getRequiredNumberValuePropertyRegistry(eServiceProperties, ModICostanti.MODIPA_API_IMPL_INFO_SIGNAL_HUB_SEED_LIFETIME_ID, true);
String algorithm = ProtocolPropertiesUtils.getRequiredStringValuePropertyRegistry(eServiceProperties, ModICostanti.MODIPA_API_IMPL_INFO_SIGNAL_HUB_ALGORITHM_ID);
Long seedSize = ProtocolPropertiesUtils.getRequiredNumberValuePropertyRegistry(eServiceProperties, ModICostanti.MODIPA_API_IMPL_INFO_SIGNAL_HUB_SEED_SIZE_ID, true);
DigestServiceParams param = new DigestServiceParams();
param.setIdServizio(idServizio);
param.setDataRegistrazione(Instant.now());
param.setDurata(durata.intValue());
param.setDigestAlgorithm(DigestType.fromAlgorithmName(algorithm));
param.setSeed(Base64.getEncoder().encode(RandomUtilities.getSecureRandom().generateSeed(seedSize.intValue())));
param.setSerialNumber(serial);
return param;
}
public static List<ProtocolProperty> obtainSignalHubProtocolProperty(Context context) {
return ((List<?>) context.get(ModICostanti.MODIPA_KEY_INFO_SIGNAL_HUB_PROPERTIES))
.stream()
.map(e -> (ProtocolProperty)e)
.collect(Collectors.toList());
}
}