@@ -182,20 +182,15 @@ int wolfTPM2_CryptoDevCb(int devId, wc_CryptoInfo* info, void* ctx)
182182 int curve_id ;
183183 WOLFTPM2_KEY * key ;
184184
185- #ifdef WOLFTPM2_USE_SW_ECDHE
186- if (tlsCtx -> ecdhKey == NULL ) {
187- return exit_rc ;
188- }
189- #endif
190-
191185 if ( tlsCtx -> eccKey == NULL
192186 && tlsCtx -> ecdsaKey == NULL
193187 && tlsCtx -> ecdhKey == NULL
194188 ) {
195189 #ifdef DEBUG_WOLFTPM
196- printf ("No crypto callback key pointer set!\n" );
190+ printf ("No crypto callback TPM key set, "
191+ "fallback to software crypto\n" );
197192 #endif
198- return BAD_FUNC_ARG ;
193+ return exit_rc ;
199194 }
200195
201196 /* Make sure an ECDH key has been set and curve is supported */
@@ -205,6 +200,7 @@ int wolfTPM2_CryptoDevCb(int devId, wc_CryptoInfo* info, void* ctx)
205200 }
206201 rc = TPM2_GetTpmCurve (curve_id );
207202 if (rc < 0 ) {
203+ /* curve not available, so fallback to sw crypto */
208204 return exit_rc ;
209205 }
210206 curve_id = rc ;
@@ -215,9 +211,14 @@ int wolfTPM2_CryptoDevCb(int devId, wc_CryptoInfo* info, void* ctx)
215211 if (tlsCtx -> ecdhKey == NULL )
216212 #endif
217213 {
218- /* Create an ECC key for ECDSA - if one isn't already created */
219214 key = (tlsCtx -> ecdsaKey != NULL ) ?
220215 (WOLFTPM2_KEY * )tlsCtx -> ecdsaKey : tlsCtx -> eccKey ;
216+ if (key == NULL ) {
217+ /* fallback to software crypto */
218+ return exit_rc ;
219+ }
220+
221+ /* Create an ECC key for ECDSA - if one isn't already created */
221222 if (key -> handle .hndl == 0 ||
222223 key -> handle .hndl == TPM_RH_NULL
223224 ) {
@@ -261,8 +262,13 @@ int wolfTPM2_CryptoDevCb(int devId, wc_CryptoInfo* info, void* ctx)
261262 }
262263 #ifndef WOLFTPM2_USE_SW_ECDHE
263264 else {
264- /* Generate ephemeral key - if one isn't already created */
265265 key = tlsCtx -> ecdhKey ;
266+ if (key == NULL ) {
267+ /* fallback to software crypto */
268+ return exit_rc ;
269+ }
270+
271+ /* Generate ephemeral key - if one isn't already created */
266272 if (key -> handle .hndl == 0 ||
267273 key -> handle .hndl == TPM_RH_NULL ) {
268274 rc = wolfTPM2_ECDHGenKey (tlsCtx -> dev , tlsCtx -> ecdhKey ,
0 commit comments