3
3
# Flag to track if we downloaded BC during this session
4
4
BC_DOWNLOADED=false
5
5
6
- # Function to download Bouncy Castle JARs
6
+ # Function to get the latest Bouncy Castle version from Maven Central
7
+ get_latest_version () {
8
+ local metadata_url=" https://repo1.maven.org/maven2/org/bouncycastle/bcprov-jdk18on/maven-metadata.xml"
9
+ if command -v curl > /dev/null; then
10
+ curl -s " $metadata_url " | grep ' <latest>' | sed -e ' s/.*<latest>\(.*\)<\/latest>.*/\1/'
11
+ elif command -v wget > /dev/null; then
12
+ wget -q -O - " $metadata_url " | grep ' <latest>' | sed -e ' s/.*<latest>\(.*\)<\/latest>.*/\1/'
13
+ else
14
+ echo " Error: Neither curl nor wget is installed. Please install one to fetch the latest version."
15
+ exit 1
16
+ fi
17
+ }
18
+
19
+ # Function to download Bouncy Castle JARs with the latest version
7
20
download_bc_jars () {
8
- local bc_version=" 1.79 "
21
+ local bc_version=$( get_latest_version )
9
22
local lib_dir=" ../../../lib"
10
- local bc_url=" https://downloads.bouncycastle .org/java "
23
+ local bc_url=" https://repo1.maven .org/maven2/org/bouncycastle "
11
24
12
- echo -n " Downloading Bouncy Castle JARs... "
25
+ if [ -z " $bc_version " ]; then
26
+ echo " failed (could not determine latest version)"
27
+ return 1
28
+ fi
13
29
14
- # Create lib directory if it doesn't exist
15
- mkdir -p " $lib_dir " 2> /dev/null
30
+ echo -n " Downloading Bouncy Castle JARs (version $bc_version )... "
31
+ mkdir -p " $lib_dir " || {
32
+ echo " failed (cannot create $lib_dir )"
33
+ return 1
34
+ }
16
35
17
- # Download both required JARs
18
36
if command -v wget > /dev/null; then
19
- wget -q -P " $lib_dir " " $bc_url /bcprov-jdk18on-$bc_version .jar" 2> /dev/null &&
20
- wget -q -P " $lib_dir " " $bc_url /bctls-jdk18on-$bc_version .jar" 2> /dev/null || return 1
37
+ wget -P " $lib_dir " " $bc_url /bcprov-jdk18on/$bc_version /bcprov-jdk18on-$bc_version .jar" &&
38
+ wget -P " $lib_dir " " $bc_url /bctls-jdk18on/$bc_version /bctls-jdk18on-$bc_version .jar" || {
39
+ echo " failed (wget error: check URL or network)"
40
+ return 1
41
+ }
21
42
elif command -v curl > /dev/null; then
22
- curl -s -L -o " $lib_dir /bcprov-jdk18on-$bc_version .jar" " $bc_url /bcprov-jdk18on-$bc_version .jar" 2> /dev/null &&
23
- curl -s -L -o " $lib_dir /bctls-jdk18on-$bc_version .jar" " $bc_url /bctls-jdk18on-$bc_version .jar" 2> /dev/null || return 1
43
+ curl -L -o " $lib_dir /bcprov-jdk18on-$bc_version .jar" " $bc_url /bcprov-jdk18on/$bc_version /bcprov-jdk18on-$bc_version .jar" &&
44
+ curl -L -o " $lib_dir /bctls-jdk18on-$bc_version .jar" " $bc_url /bctls-jdk18on/$bc_version /bctls-jdk18on-$bc_version .jar" || {
45
+ echo " failed (curl error: check URL or network)"
46
+ return 1
47
+ }
24
48
else
25
- echo " failed"
26
- echo " Error: Neither wget nor curl is available. Please install either wget or curl."
49
+ echo " failed (neither wget nor curl installed) "
50
+ echo " Please install wget or curl."
27
51
return 1
28
52
fi
29
53
30
- # Verify downloads were successful
31
54
if [ -f " $lib_dir /bcprov-jdk18on-$bc_version .jar" ] && [ -f " $lib_dir /bctls-jdk18on-$bc_version .jar" ]; then
32
55
echo " done"
33
56
BC_DOWNLOADED=true
34
57
return 0
35
58
else
36
- echo " failed"
59
+ echo " failed (downloaded files not found) "
37
60
return 1
38
61
fi
39
62
}
@@ -42,33 +65,32 @@ download_bc_jars() {
42
65
cleanup_bc_jars () {
43
66
local lib_dir=" ../../../lib"
44
67
echo -n " Removing Bouncy Castle JARs... "
45
- rm -f " $lib_dir /bcprov-jdk18on-1.79.jar" " $lib_dir /bctls-jdk18on-1.79.jar" 2> /dev/null
46
- if [ $? -eq 0 ]; then
47
- echo " done"
48
- return 0
49
- else
50
- echo " failed"
51
- return 1
52
- fi
68
+ rm -f " $lib_dir /bcprov-jdk18on-" * " .jar" " $lib_dir /bctls-jdk18on-" * " .jar" && echo " done" || echo " failed"
53
69
}
54
70
55
- cd ./examples/build/provider
56
-
57
- export LD_LIBRARY_PATH=$LD_LIBRARY_PATH :../../../lib/:/usr/local/lib
71
+ cd ./examples/build/provider || {
72
+ echo " Error: Cannot change to ./examples/build/provider"
73
+ exit 1
74
+ }
58
75
76
+ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH :../../../lib:/usr/local/lib
59
77
CLASSPATH=" ../../../lib/wolfcrypt-jni.jar:."
60
78
61
- if [ -f " ../../../lib/bcprov-jdk18on-1.79.jar" ] && [ -f " ../../../lib/bctls-jdk18on-1.79.jar" ]; then
62
- echo " Running crypto benchmark with Bouncy Castle"
63
- CLASSPATH=" $CLASSPATH :../../../lib/bcprov-jdk18on-1.79.jar:../../../lib/bctls-jdk18on-1.79.jar"
79
+ # Check for existing Bouncy Castle JARs (any version)
80
+ if ls " ../../../lib/bcprov-jdk18on-" * " .jar" " ../../../lib/bctls-jdk18on-" * " .jar" 2> /dev/null; then
81
+ latest_bc_jar=$( ls -t " ../../../lib/bcprov-jdk18on-" * " .jar" | head -n 1)
82
+ bc_version=$( basename " $latest_bc_jar " | sed -e ' s/bcprov-jdk18on-//' -e ' s/.jar$//' )
83
+ echo " Running crypto benchmark with Bouncy Castle (version $bc_version )"
84
+ CLASSPATH=" $CLASSPATH :$latest_bc_jar :../../../lib/bctls-jdk18on-$bc_version .jar"
64
85
else
65
86
echo " Bouncy Castle JARs not found in lib directory"
66
87
read -p " Would you like to download Bouncy Castle JARs? (y/n) " -n 1 -r
67
88
echo
68
89
if [[ $REPLY =~ ^[Yy]$ ]]; then
69
90
if download_bc_jars; then
70
- echo " Running crypto benchmark with Bouncy Castle"
71
- CLASSPATH=" $CLASSPATH :../../../lib/bcprov-jdk18on-1.79.jar:../../../lib/bctls-jdk18on-1.79.jar"
91
+ bc_version=$( get_latest_version)
92
+ echo " Running crypto benchmark with Bouncy Castle (version $bc_version )"
93
+ CLASSPATH=" $CLASSPATH :../../../lib/bcprov-jdk18on-$bc_version .jar:../../../lib/bctls-jdk18on-$bc_version .jar"
72
94
else
73
95
echo " Running crypto benchmark without Bouncy Castle due to download failure"
74
96
fi
77
99
fi
78
100
fi
79
101
80
- # Run the benchmark
81
- java -classpath $CLASSPATH -Dsun.boot.library.path=../../../lib/ CryptoBenchmark $@
102
+ java -XX:-TieredCompilation -XX:ReservedCodeCacheSize=1024m -classpath " $CLASSPATH " -Dsun.boot.library.path=../../../lib/ CryptoBenchmark " $@ "
82
103
83
- # Always prompt for cleanup after benchmark completion if Bouncy Castle files exist
84
- if [ -f " ../../../lib/bcprov-jdk18on-1.79.jar" ] && [ -f " ../../../lib/bctls-jdk18on-1.79.jar" ]; then
104
+ if ls " ../../../lib/bcprov-jdk18on-" * " .jar" " ../../../lib/bctls-jdk18on-" * " .jar" 2> /dev/null; then
85
105
echo
86
106
read -p " Would you like to remove the Bouncy Castle JARs? (y/n) " -n 1 -r
87
107
echo
0 commit comments