ProviderUtils.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.utils.security;
- import java.security.Security;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.List;
- /**
- * ProviderUtils
- *
- * @author Andrea Poli (apoli@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- *
- */
- public class ProviderUtils {
-
- private ProviderUtils(){}
- public static void addBouncyCastle() {
- add(new org.bouncycastle.jce.provider.BouncyCastleProvider());
- }
- public static void add(java.security.Provider provider) {
- java.security.Security.addProvider(provider);
- }
-
- public static void addBouncyCastleAfterSun(boolean overrideIfExists) {
- /**Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());*/
- if(overrideIfExists) {
- addOverrideIfExists(new org.bouncycastle.jce.provider.BouncyCastleProvider(), 2); // lasciare alla posizione 1 il provider 'SUN'
- }
- else {
- addIfNotExists(new org.bouncycastle.jce.provider.BouncyCastleProvider(), 2); // lasciare alla posizione 1 il provider 'SUN'
- }
- }
-
- public static void addIfNotExists(java.security.Provider provider, int position) {
- if(Security.getProvider(provider.getName())==null) {
- Security.insertProviderAt(provider, position);
- }
- }
- // NOTA: utility Security.insertProviderAt utilizza una posizione vera e non da programmatore che parte da 0!!!!!!!!!!!
- public static void addOverrideIfExists(java.security.Provider provider, int position) {
- if(Security.getProvider(provider.getName())!=null) {
- List<java.security.Provider> l = getProviders();
- if(!l.isEmpty() && l.size()>(position-1) && l.get((position-1)).getName().equals(provider.getName())) {
- return; // gia presente alla posizione due
- }
- Security.removeProvider(provider.getName());
- }
- Security.insertProviderAt(provider, position);
- }
-
- public static boolean existsBouncyCastle() {
- return exists(new org.bouncycastle.jce.provider.BouncyCastleProvider());
- }
- public static boolean exists(java.security.Provider provider) {
- return Security.getProvider(provider.getName())!=null;
- }
-
- public static boolean existsBouncyCastle(int position) {
- return exists(new org.bouncycastle.jce.provider.BouncyCastleProvider(), position);
- }
- public static boolean exists(java.security.Provider provider, int position) {
- List<java.security.Provider> l = getProviders();
- if(l.isEmpty() || l.size()<position) {
- return false;
- }
- return l.get(position).getName().equals(provider.getName());
- }
-
- public static void removeBouncyCastle() {
- remove(new org.bouncycastle.jce.provider.BouncyCastleProvider());
- }
- public static void remove(java.security.Provider provider) {
- Security.removeProvider(provider.getName());
- }
-
- public static List<java.security.Provider> getProviders(){
- List<java.security.Provider> l = new ArrayList<>();
- java.security.Provider [] p = Security.getProviders();
- if(p!=null && p.length>0) {
- l.addAll(Arrays.asList(p));
- }
- return l;
- }
- public static List<String> getProviderNames(){
- List<String> l = new ArrayList<>();
- List<java.security.Provider> lp = getProviders();
- if(!lp.isEmpty()) {
- for (java.security.Provider provider : lp) {
- l.add(provider.getName());
- }
- }
- return l;
- }
- }