@@ -120,6 +120,14 @@ int wolfTPM2_CryptoDevCb(int devId, wc_CryptoInfo* info, void* ctx)
120120 #endif
121121 rc = exit_rc ;
122122 }
123+ else if (info -> pk .type == WC_PK_TYPE_RSA_GET_SIZE ) {
124+ if (tlsCtx -> rsaKey != NULL ) {
125+ * info -> pk .rsa_get_size .keySize =
126+ tlsCtx -> rsaKey -> pub .publicArea .parameters .rsaDetail .keyBits
127+ / 8 ;
128+ rc = 0 ;
129+ }
130+ }
123131 else if (info -> pk .type == WC_PK_TYPE_RSA ) {
124132 switch (info -> pk .rsa .type ) {
125133 case RSA_PUBLIC_ENCRYPT :
@@ -153,6 +161,11 @@ int wolfTPM2_CryptoDevCb(int devId, wc_CryptoInfo* info, void* ctx)
153161 case RSA_PRIVATE_DECRYPT :
154162 {
155163 /* private operations */
164+ if (tlsCtx -> rsaKey == NULL ) {
165+ /* TPM key not setup, fallback to software */
166+ rc = exit_rc ;
167+ break ;
168+ }
156169 rc = wolfTPM2_RsaDecrypt (tlsCtx -> dev , tlsCtx -> rsaKey ,
157170 TPM_ALG_NULL , /* no padding */
158171 info -> pk .rsa .in , info -> pk .rsa .inLen ,
@@ -237,6 +250,11 @@ int wolfTPM2_CryptoDevCb(int devId, wc_CryptoInfo* info, void* ctx)
237250 word32 rsLen = sizeof (sigRS ), keySz ;
238251 word32 inlen = info -> pk .eccsign .inlen ;
239252
253+ if (tlsCtx -> eccKey == NULL ) {
254+ /* TPM key not setup, fallback to software */
255+ return exit_rc ;
256+ }
257+
240258 /* get key size from wolf signing key */
241259 keySz = wc_ecc_size (info -> pk .eccsign .key );
242260 if (keySz == 0 ) {
0 commit comments