Skip to content

Commit 3e42f42

Browse files
Merge pull request #367 from cconlon/android_fips_ready
Add FIPS Ready support and instructions to Android Studio wolfJSSE sample app
2 parents b1d05ac + 186be0f commit 3e42f42

8 files changed

Lines changed: 274 additions & 84 deletions

File tree

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
*.i*86
2525
*.x86_64
2626
*.hex
27-
*app
2827

2928
# IDE Temp Files
3029
**/*.swp

android/README.md

Lines changed: 77 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,22 +38,29 @@ wolfCrypt JNI/JCE + wolfSSL bundle on the Emulator:
3838

3939
1) Change directories into the android/wolfssljni-ndk-gradle directory
4040

41-
2) Checkout wolfssl and wolfssljni git submodules
42-
43-
3) Create stub options.h (when using GitHub repo for wolfSSL)
41+
```
42+
$ cd android/wolfssljni-ndk-gradle
43+
```
4444

45-
4) Open "wolfssljni-ndk-gradle" project in Android Studio and build project
45+
2) Checkout wolfssl and wolfssljni git submodules
4646

4747
```
48-
$ cd android/wolfssljni-ndk-gradle
4948
$ git submodule init
5049
$ git submodule update
50+
```
51+
52+
3) Create stub options.h (when using GitHub repo for wolfSSL)
53+
54+
```
5155
$ cp ./wolfssl/wolfssl/options.h.in ./wolfssl/wolfssl/options.h
5256
```
5357

58+
4) Open "wolfssljni-ndk-gradle" project in Android Studio and build project
59+
5460
wolfSSL stable releases, available from the wolfSSL download page, contain
55-
<wolfssl/options.h>, but the GitHub development branch for wolfSSL does not.
56-
This is why options.h.in needs to be copied to options.h above.
61+
`<wolfssl/options.h>`, but wolfSSL cloned from GitHub does not.
62+
This is why `options.h.in` needs to be copied to `options.h` above for a GitHub
63+
cloned repository.
5764

5865
If you would like to update the git submodules for wolfssl and wolfssljni to
5966
the most current development HEAD, use the following submodule update command
@@ -82,6 +89,69 @@ while the emulator is running and issuing:
8289
$ adb logcat
8390
```
8491

92+
### wolfSSL JNI/JSSE Sample App with wolfSSL FIPS Ready Package
93+
94+
The wolfSSL JNI/JSSE Android Studio gradle sample application can be used
95+
along with the wolfSSL FIPS Ready package, in place of a normal/standard
96+
wolfSSL distribution. To use the `wolfssljni-ndk-gradle` sample app with
97+
wolfSSL FIPS Ready use the following steps.
98+
99+
For more information about wolfSSL FIPS Ready, see the
100+
[wolfSSL Website](https://www.wolfssl.com/license/fips/).
101+
102+
1) Download a GPLv3-licensed wolfSSL FIPS Ready package from the
103+
[wolfSSL Download Page](https://www.wolfssl.com/download/).
104+
105+
2) Move the archive under the `wolfssljni-ndk-gradle` app directory, extract,
106+
and rename to `wolfssl`:
107+
108+
```
109+
$ cd wolfssl-examples/android/wolfssljni-ndk-gradle
110+
$ mv /path/to/wolfssl-X.X.X-gplv3-fips-ready.zip ./
111+
$ unzip wolfssl-X.X.X-gplv3-fips-ready.zip
112+
$ mv wolfssl-X.X.X-gplv3-fips-ready wolfssl
113+
```
114+
115+
3) Edit the following `CMakeLists.txt` file and change `WOLFSSL_PKG_TYPE` to
116+
`fipsready`:
117+
118+
```
119+
wolfssl-examples/android/wolfssljni-ndk-gradle/app/CMakeLists.txt
120+
```
121+
122+
The `WOLFSSL_PKG_TYPE` selection should look like:
123+
124+
```
125+
set(WOLFSSL_PKG_TYPE "fipsready")
126+
```
127+
128+
4) Compile and Install the application on a device or in an emulator
129+
130+
5) Run the "WOLFCRYPT TEST" selection to run the wolfCrypt test application.
131+
You will need to monitor the adb logcat output to see the expected
132+
in-core integrity hash. wolfSSL FIPS Ready does an in-core integrity check
133+
using HMAC-SHA256 over the object files within the FIPS Ready boundary. The
134+
calculated HMAC at runtime is compared to an expected HMAC. If the values do
135+
not match, access is not allowed into the wolfCrypt library.
136+
137+
Upon first compilation, or if settings change and the library is recompiled,
138+
the expected verifyCore[] needs to be updated. To do this:
139+
140+
a) Copy the expected hash from the "adb logcat" output:
141+
142+
```
143+
D/[WOLFCRYPT]: in my Fips callback, ok = 0, err = -203
144+
D/[WOLFCRYPT]: message = In Core Integrity check FIPS error
145+
D/[WOLFCRYPT]: hash = C4EAF104446F5B6918B266A5D65223C8E7ADED2CC41D547ED0C855A50858DE82
146+
D/[WOLFCRYPT]: In core integrity hash check failure, copy above hash
147+
D/[WOLFCRYPT]: into verifyCore[] in fips_test.c and rebuild
148+
```
149+
150+
b) Open `app/wolfssl/wolfcrypt/src/fips_test.c` and copy the hash into the
151+
`verifyCore[]` array and save the file.
152+
153+
c) Re-compile the application again, and re-run the wolfCrypt test.
154+
85155
### Sample Application Functionality
86156

87157
#### Native wolfCrypt Test Application

android/wolfssljni-ndk-gradle/app/CMakeLists.txt

Lines changed: 155 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -11,62 +11,113 @@ project("wolfssljni-ndk-gradle" C ASM)
1111
set(wolfssljni_DIR ${CMAKE_SOURCE_DIR}/../wolfssljni)
1212
set(wolfssl_DIR ${CMAKE_SOURCE_DIR}/../wolfssl)
1313

14-
# Math library selection, used to switch on below. Should be one of:
14+
# ------------------------- wolfSSL Normal vs. FIPS Ready Selection --------------------------------
15+
# Select if wolfSSL is normal ("normal") or FIPS Ready ("fipsready")
16+
# wolfSSL FIPS Ready is available for download on the wolfssl.com download page. For more
17+
# information on wolfSSL FIPS Ready see: https://www.wolfssl.com/license/fips/
18+
#
19+
# FIPS Ready requires different preprocessor flags, files, and a specific file ordering
20+
# as set up below.
21+
set(WOLFSSL_PKG_TYPE "normal")
22+
23+
# -------------------------------- Math Library Selection ------------------------------------------
24+
# wolfCrypt math library selection, used to switch on below. Should be one of:
1525
# fastmath
1626
# spmath
1727
set(WOLFSSL_MATH_LIB "spmath")
1828

29+
# --------------------------------- Include Directories --------------------------------------------
1930
# Add header directories to include paths
2031
include_directories(
2132
${wolfssl_DIR}
2233
${wolfssljni_DIR}/native
2334
)
2435

25-
# Add TLS sources to TLS_SOURCES list and remove files that are included inline by other files
26-
aux_source_directory(${wolfssl_DIR}/src TLS_SOURCES)
27-
list(REMOVE_ITEM TLS_SOURCES ${wolfssl_DIR}/src/bio.c)
28-
list(REMOVE_ITEM TLS_SOURCES ${wolfssl_DIR}/src/conf.c)
29-
list(REMOVE_ITEM TLS_SOURCES ${wolfssl_DIR}/src/pk.c)
30-
list(REMOVE_ITEM TLS_SOURCES ${wolfssl_DIR}/src/x509.c)
31-
list(REMOVE_ITEM TLS_SOURCES ${wolfssl_DIR}/src/x509_str.c)
36+
# ------------------------------- Preprocessor Defines ---------------------------------------------
37+
38+
if ("${WOLFSSL_PKG_TYPE}" MATCHES "normal")
39+
# Add preprocessor defines to CFLAGS, these match those placed into
40+
# wolfssl/options.h by configure if using: "./configure --enable-jni".
41+
# This list may be configurable depending on use case and desired optimizations.
42+
add_definitions(-DWC_RSA_BLINDING -DWOLFSSL_SHA224 -DWOLFSSL_SHA384
43+
-DWOLFSSL_SHA512 -DHAVE_HKDF -DNO_DSA -DHAVE_ECC
44+
-DECC_SHAMIR -DWC_RSA_PSS -DWOLFSSL_BASE64_ENCODE
45+
-DWOLFSSL_SHA3 -DHAVE_POLY1305 -DHAVE_CHACHA -DHAVE_HASHDRBG
46+
-DHAVE_TLS_EXTENSIONS -DHAVE_SUPPORTED_CURVES -DHAVE_FFDHE_2048
47+
-DWOLFSSL_TLS13 -DHAVE_EXTENDED_MASTER -DWOLFSSL_JNI
48+
-DHAVE_EX_DATA -DWOLFSSL_DTLS -DOPENSSL_EXTRA -DOPENSSL_ALL
49+
-DHAVE_CRL -DHAVE_OCSP -DHAVE_CRL_MONITOR
50+
-DPERSIST_SESSION_CACHE -DPERSIST_CERT_CACHE -DATOMIC_USER
51+
-DHAVE_PK_CALLBACKS -DWOLFSSL_CERT_EXT -DWOLFSSL_CERT_GEN
52+
-DHAVE_SNI -DHAVE_ALPN -DNO_RC4 -DHAVE_ENCRYPT_THEN_MAC
53+
-DNO_MD4 -DWOLFSSL_ENCRYPTED_KEYS -DHAVE_DH_DEFAULT_PARAMS
54+
-DNO_ERROR_QUEUE -DWOLFSSL_EITHER_SIDE -DWC_RSA_NO_PADDING
55+
-DWC_RSA_PSS -DWOLFSSL_PSS_LONG_SALT -DWOLFSSL_TICKET_HAVE_ID
56+
-DWOLFSSL_ERROR_CODE_OPENSSL -DWOLFSSL_ALWAYS_VERIFY_CB
57+
-DWOLFSSL_VERIFY_CB_ALL_CERTS -DWOLFSSL_EXTRA_ALERTS
58+
-DHAVE_EXT_CACHE -DWOLFSSL_FORCE_CACHE_ON_TICKET
59+
-DWOLFSSL_AKID_NAME -DHAVE_CTS -DNO_DES3 -DGCM_TABLE_4BIT
60+
-DTFM_TIMING_RESISTANT -DECC_TIMING_RESISTANT
61+
-DHAVE_AESGCM -DSIZEOF_LONG=4 -DSIZEOF_LONG_LONG=8
62+
63+
# Defines added for wolfCrypt test and benchmark only, may not be needed for your
64+
# own application.
65+
-DUSE_CERT_BUFFERS_2048 -DUSE_CERT_BUFFERS_256 -DNO_WRITE_TEMP_FILES
66+
-DNO_FILESYSTEM -DNO_MAIN_DRIVER
67+
68+
# Defines added for debugging. These can be removed if debug logging is not needed
69+
# and will increase performance and reduce library footprint size if removed.
70+
-DEBUG_WOLFSSL)
71+
72+
elseif("${WOLFSSL_PKG_TYPE}" MATCHES "fipsready")
73+
# Add preprocessor defines to CFLAGS, these match those placed into
74+
# wolfssl/options.h by configure if using: "./configure" on a Unix/Linux platform. The options
75+
# below have been chosen to match a FIPS Ready build, and are based on the example
76+
# user_settings.h file located here:
77+
# https://github.com/wolfSSL/wolfssl/blob/master/examples/configs/user_settings_fipsv5.h
78+
# This list may be configurable depending on use case and desired optimizations, being careful
79+
# not to break FIPS compatibility if targeting FIPS proper in the future.
80+
add_definitions(-DHAVE_FIPS -DHAVE_FIPS_VERSION=5 -DHAVE_FIPS_VERSION_MINOR=3
81+
-DHAVE_HASHDRBG -DHAVE_THREAD_LS -DHAVE_REPRODUCIBLE_BUILD
82+
-DFP_MAX_BITS=16384 -DSP_INT_BITS=8192 -DWOLFSSL_PUBLIC_MP
83+
-DTFM_TIMING_RESISTANT -DECC_TIMING_RESISTANT -DWC_RSA_BLINDING
84+
-DWC_RNG_SEED_CB -DWOLFSSL_VALIDATE_ECC_IMPORT -DWOLFSSL_VALIDATE_ECC_KEYGEN
85+
-DWOLFSSL_VALIDATE_FFC_IMPORT
86+
-DWOLFSSL_TLS13 -DHAVE_TLS_EXTENSIONS -DHAVE_ENCRYPT_THEN_MAC
87+
-DHAVE_SUPPORTED_CURVES -DHAVE_EXTENDED_MASTER -DHAVE_ONE_TIME_AUTH
88+
-DHAVE_SECURE_RENEGOTIATION -DHAVE_SERVER_RENEGOTIATION_INFO -DHAVE_SESSION_TICKET
89+
-DWOLFSSL_USE_ALIGN -DWOLFSSL_BASE64_ENCODE -DHAVE_CRL
90+
-DHAVE_EXT_CACHE -DWOLFSSL_VERIFY_CB_ALL_CERTS -DWOLFSSL_ALWAYS_VERIFY_CB
91+
-DWOLFSSL_DH_EXTRA -DWOLFSSL_WOLFSSH -DOPENSSL_EXTRA -DOPENSSL_ALL
92+
-DHAVE_FFDHE_Q -DHAVE_FFDHE_2048 -DHAVE_FFDHE_3072 -DHAVE_FFDHE_4096
93+
-DHAVE_FFDHE_6144 -DHAVE_FFDHE_8192 -DHAVE_DH_DEFAULT_PARAMS -DHAVE_PUBLIC_FFDHE
94+
-DHAVE_ECC -DTFM_ECC256 -DECC_SHAMIR -DHAVE_ECC_CDH -DECC_USER_CURVES
95+
-DHAVE_ECC256 -DHAVE_ECC384 -DHAVE_ECC521 -DWOLFSSL_ECDSA_SET_K
96+
-DWC_RSA_PSS -DWOLFSSL_KEY_GEN -DWC_RSA_NO_PADDING
97+
-DWOLFSSL_AES_COUNTER -DHAVE_AESCCM -DHAVE_AES_ECB -DWOLFSSL_AES_DIRECT
98+
-DWOLFSSL_AES_OFB -DHAVE_AESGCM -DGCM_TABLE_4BIT -DWOLFSSL_CMAC
99+
-DWOLFSSL_SHA224 -DWOLFSSL_SHA512 -DWOLFSSL_SHA384 -DWOLFSSL_NO_SHAKE256
100+
-DWOLFSSL_NOSHA512_224 -DWOLFSSL_NOSHA512_256 -DWOLFSSL_SHA3 -DHAVE_HKDF
101+
-DNO_OLD_TLS -DNO_PSK -DNO_DO178
102+
-DNO_RC4 -DNO_MD4 -DNO_MD5 -DNO_DES3 -DNO_DSA -DNO_RABBIT
103+
104+
-DWOLFSSL_JNI -DHAVE_EX_DATA -DHAVE_OCSP -DHAVE_CRL_MONITOR
105+
-DWOLFSSL_CERT_EXT -DWOLFSSL_CERT_GEN -DHAVE_SNI -DHAVE_ALPN
106+
-DWOLFSSL_ENCRYPTED_KEYS -DNO_ERROR_QUEUE -DWOLFSSL_EITHER_SIDE
107+
-DWOLFSSL_PSS_LONG_SALT -DWOLFSSL_TICKET_HAVE_ID
108+
-DWOLFSSL_ERROR_CODE_OPENSSL -DWOLFSSL_EXTRA_ALERTS
109+
-DWOLFSSL_FORCE_CACHE_ON_TICKET -DWOLFSSL_AKID_NAME -DHAVE_CTS
110+
-DKEEP_PEER_CERT -DSESSION_CERTS
111+
-DSIZEOF_LONG=4 -DSIZEOF_LONG_LONG=8
32112

33-
# Add crypto sources to CRYPTO_SOURCES list and remove files that are included inline by other files
34-
aux_source_directory(${wolfssl_DIR}/wolfcrypt/src CRYPTO_SOURCES)
35-
list(REMOVE_ITEM CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/evp.c)
36-
list(REMOVE_ITEM CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/misc.c)
37-
38-
# Add preprocessor defines to CFLAGS, these match those placed into
39-
# wolfssl/options.h by configure if using: "./configure --enable-jni".
40-
# This list may be configurable depending on use case and desired optimizations.
41-
add_definitions(-DWC_RSA_BLINDING -DWOLFSSL_SHA224 -DWOLFSSL_SHA384
42-
-DWOLFSSL_SHA512 -DHAVE_HKDF -DNO_DSA -DHAVE_ECC
43-
-DECC_SHAMIR -DWC_RSA_PSS -DWOLFSSL_BASE64_ENCODE
44-
-DWOLFSSL_SHA3 -DHAVE_POLY1305 -DHAVE_CHACHA -DHAVE_HASHDRBG
45-
-DHAVE_TLS_EXTENSIONS -DHAVE_SUPPORTED_CURVES -DHAVE_FFDHE_2048
46-
-DWOLFSSL_TLS13 -DHAVE_EXTENDED_MASTER -DWOLFSSL_JNI
47-
-DHAVE_EX_DATA -DWOLFSSL_DTLS -DOPENSSL_EXTRA -DOPENSSL_ALL
48-
-DHAVE_CRL -DHAVE_OCSP -DHAVE_CRL_MONITOR
49-
-DPERSIST_SESSION_CACHE -DPERSIST_CERT_CACHE -DATOMIC_USER
50-
-DHAVE_PK_CALLBACKS -DWOLFSSL_CERT_EXT -DWOLFSSL_CERT_GEN
51-
-DHAVE_SNI -DHAVE_ALPN -DNO_RC4 -DHAVE_ENCRYPT_THEN_MAC
52-
-DNO_MD4 -DWOLFSSL_ENCRYPTED_KEYS -DHAVE_DH_DEFAULT_PARAMS
53-
-DNO_ERROR_QUEUE -DWOLFSSL_EITHER_SIDE -DWC_RSA_NO_PADDING
54-
-DWC_RSA_PSS -DWOLFSSL_PSS_LONG_SALT -DWOLFSSL_TICKET_HAVE_ID
55-
-DWOLFSSL_ERROR_CODE_OPENSSL -DWOLFSSL_ALWAYS_VERIFY_CB
56-
-DWOLFSSL_VERIFY_CB_ALL_CERTS -DWOLFSSL_EXTRA_ALERTS
57-
-DHAVE_EXT_CACHE -DWOLFSSL_FORCE_CACHE_ON_TICKET
58-
-DWOLFSSL_AKID_NAME -DHAVE_CTS -DNO_DES3 -DGCM_TABLE_4BIT
59-
-DTFM_TIMING_RESISTANT -DECC_TIMING_RESISTANT
60-
-DHAVE_AESGCM -DSIZEOF_LONG=4 -DSIZEOF_LONG_LONG=8
61-
62-
# Defines added for wolfCrypt test and benchmark only, may not be needed for your
63-
# own application.
64-
-DUSE_CERT_BUFFERS_2048 -DUSE_CERT_BUFFERS_256 -DNO_WRITE_TEMP_FILES
65-
-DNO_FILESYSTEM -DNO_MAIN_DRIVER
66-
67-
# Defines added for debugging. These can be removed if debug logging is not needed
68-
# and will increase performance and reduce library footprint size if removed.
69-
-DEBUG_WOLFSSL)
113+
# Enable below options for wolfSSL debug logging
114+
#-DDEBUG_WOLFSSL -DWOLFSSL_ANDROID_DEBUG
115+
116+
# Below options are added only for wolfCrypt test and benchmark applications.
117+
# These can be left off / removed when integrating into a real-world application.
118+
-DNO_FILESYSTEM -DUSE_CERT_BUFFERS_2048 -DUSE_CERT_BUFFERS_256
119+
-DNO_WRITE_TEMP_FILES -DNO_MAIN_DRIVER)
120+
endif()
70121

71122
if ("$WOLFSSL_MATH_LIB" MATCHES "fastmath")
72123
# Use fastmath library
@@ -93,6 +144,65 @@ elseif("${WOLFSSL_MATH_LIB}" MATCHES "spmath")
93144
endif()
94145
endif()
95146

147+
# --------------------------- wolfSSL and wolfCrypt Source Files -----------------------------------
148+
# Add TLS sources to TLS_SOURCES list and remove files that are included inline by other files
149+
aux_source_directory(${wolfssl_DIR}/src TLS_SOURCES)
150+
list(REMOVE_ITEM TLS_SOURCES ${wolfssl_DIR}/src/bio.c)
151+
list(REMOVE_ITEM TLS_SOURCES ${wolfssl_DIR}/src/conf.c)
152+
list(REMOVE_ITEM TLS_SOURCES ${wolfssl_DIR}/src/pk.c)
153+
list(REMOVE_ITEM TLS_SOURCES ${wolfssl_DIR}/src/ssl_misc.c)
154+
list(REMOVE_ITEM TLS_SOURCES ${wolfssl_DIR}/src/x509.c)
155+
list(REMOVE_ITEM TLS_SOURCES ${wolfssl_DIR}/src/x509_str.c)
156+
157+
if ("${WOLFSSL_PKG_TYPE}" MATCHES "normal")
158+
# Add crypto sources to CRYPTO_SOURCES, remove files that are included inline by other files
159+
aux_source_directory(${wolfssl_DIR}/wolfcrypt/src CRYPTO_SOURCES)
160+
list(REMOVE_ITEM CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/evp.c)
161+
list(REMOVE_ITEM CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/misc.c)
162+
163+
elseif("${WOLFSSL_PKG_TYPE}" MATCHES "fipsready")
164+
# FIPS Ready needs to explicitly order files for in-core integrity check to work properly.
165+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/wolfcrypt_first.c)
166+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/hmac.c)
167+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/random.c)
168+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/sha256.c)
169+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/kdf.c)
170+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/rsa.c)
171+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/ecc.c)
172+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/aes.c)
173+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/sha.c)
174+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/sha512.c)
175+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/sha3.c)
176+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/dh.c)
177+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/cmac.c)
178+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/fips.c)
179+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/fips_test.c)
180+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/wolfcrypt_last.c)
181+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/hash.c)
182+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/cpuid.c)
183+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/logging.c)
184+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/wc_port.c)
185+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/error.c)
186+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/wc_encrypt.c)
187+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/signature.c)
188+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/sp_arm32.c)
189+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/sp_arm64.c)
190+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/sp_armthumb.c)
191+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/sp_c32.c)
192+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/sp_c64.c)
193+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/sp_cortexm.c)
194+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/sp_dsp32.c)
195+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/sp_int.c)
196+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/sp_x86_64.c)
197+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/wolfmath.c)
198+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/memory.c)
199+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/asn.c)
200+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/coding.c)
201+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/pwdbased.c)
202+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/pkcs12.c)
203+
list(APPEND CRYPTO_SOURCES ${wolfssl_DIR}/wolfcrypt/src/tfm.c)
204+
endif()
205+
96206
# wolfSSL will be compiled as a SHARED library
97207
add_library(wolfssl SHARED
98208
${CRYPTO_SOURCES}

android/wolfssljni-ndk-gradle/app/src/main/cpp/NativeHelper.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ Java_com_wolfssl_wolfssljni_1ndk_1gradle_MainActivity_testWolfCrypt(JNIEnv *env,
2929
int ret;
3030

3131
ret = wolfCrypt_Init();
32+
#ifdef WC_RNG_SEED_CB
33+
wc_SetSeed_Cb(wc_GenerateSeed);
34+
#endif
3235
if (ret == 0) {
3336
ret = wolfcrypt_test(NULL);
3437
}
@@ -42,6 +45,9 @@ Java_com_wolfssl_wolfssljni_1ndk_1gradle_MainActivity_benchWolfCrypt(JNIEnv *env
4245
int ret = 0;
4346

4447
ret = wolfCrypt_Init();
48+
#ifdef WC_RNG_SEED_CB
49+
wc_SetSeed_Cb(wc_GenerateSeed);
50+
#endif
4551
if (ret == 0) {
4652
ret = benchmark_test(NULL);
4753
}

0 commit comments

Comments
 (0)