From a86067d2741c908d50c66c46df9984aac6ff1304 Mon Sep 17 00:00:00 2001 From: Jack Tjaden Date: Mon, 6 Jan 2025 13:47:31 -0700 Subject: [PATCH] Implemented logic to check if BC is available --- examples/provider/CryptoBenchmark.java | 38 ++++++++++++++++++++------ 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/examples/provider/CryptoBenchmark.java b/examples/provider/CryptoBenchmark.java index 7caebef..656a47a 100644 --- a/examples/provider/CryptoBenchmark.java +++ b/examples/provider/CryptoBenchmark.java @@ -11,7 +11,6 @@ import java.util.Arrays; import com.wolfssl.provider.jce.WolfCryptProvider; -import org.bouncycastle.jce.provider.BouncyCastleProvider; public class CryptoBenchmark { /* Constants for benchmark configuration */ @@ -151,14 +150,37 @@ private static void runBenchmark(String algorithm, String mode, String providerN public static void main(String[] args) { try { - /* Array of providers to test */ - Provider[] providers = { - new WolfCryptProvider(), - new com.sun.crypto.provider.SunJCE(), - new BouncyCastleProvider() - }; + /* Check if Bouncy Castle is available */ + boolean hasBouncyCastle = false; + Provider bcProvider = null; + try { + Class bcClass = Class.forName("org.bouncycastle.jce.provider.BouncyCastleProvider"); + bcProvider = (Provider) bcClass.getDeclaredConstructor().newInstance(); + hasBouncyCastle = true; + } catch (Exception e) { + // Bouncy Castle not available + } + + /* Create provider list based on availability */ + java.util.List providerList = new java.util.ArrayList<>(); + java.util.List providerNameList = new java.util.ArrayList<>(); + + /* Always add wolfJCE first */ + providerList.add(new WolfCryptProvider()); + providerNameList.add("wolfJCE"); + + /* Always add SunJCE second */ + providerList.add(new com.sun.crypto.provider.SunJCE()); + providerNameList.add("SunJCE"); + + /* Add Bouncy Castle if available */ + if (hasBouncyCastle && bcProvider != null) { + providerList.add(bcProvider); + providerNameList.add("BC"); + } - String[] providerNames = {"wolfJCE", "SunJCE", "BC"}; + Provider[] providers = providerList.toArray(new Provider[0]); + String[] providerNames = providerNameList.toArray(new String[0]); System.out.println("------------------------------------------------------------------------------"); System.out.println(" JCE Crypto Provider Benchmark");