@@ -220,23 +220,24 @@ int wolfTPM2_CryptoDevCb(int devId, wc_CryptoInfo* info, void* ctx)
220220 key -> handle .hndl == TPM_RH_NULL
221221 ) {
222222 TPMT_PUBLIC publicTemplate ;
223- XMEMSET (& publicTemplate , 0 , sizeof (publicTemplate ));
223+ TPMI_ALG_HASH hashAlg ;
224+
225+ if (curve_id == TPM_ECC_NIST_P521 )
226+ hashAlg = TPM_ALG_SHA512 ;
227+ else if (curve_id == TPM_ECC_NIST_P384 )
228+ hashAlg = TPM_ALG_SHA384 ;
229+ else
230+ hashAlg = TPM_ALG_SHA256 ;
224231
225- rc = wolfTPM2_GetKeyTemplate_ECC (& publicTemplate ,
232+ XMEMSET (& publicTemplate , 0 , sizeof (publicTemplate ));
233+ rc = wolfTPM2_GetKeyTemplate_ECC_ex (& publicTemplate , hashAlg ,
226234 TPMA_OBJECT_sensitiveDataOrigin | TPMA_OBJECT_userWithAuth |
227235 TPMA_OBJECT_sign | TPMA_OBJECT_noDA ,
228- curve_id , TPM_ALG_ECDSA );
236+ curve_id , TPM_ALG_ECDSA , hashAlg );
229237 if (rc == 0 ) {
230- if (curve_id == TPM_ECC_NIST_P521 )
231- publicTemplate .nameAlg = TPM_ALG_SHA512 ;
232- else if (curve_id == TPM_ECC_NIST_P384 )
233- publicTemplate .nameAlg = TPM_ALG_SHA384 ;
234- else
235- publicTemplate .nameAlg = TPM_ALG_SHA256 ;
236-
237238 if (tlsCtx -> ecdsaKey != NULL ) {
238239 /* Use create key and load key directly instead to make
239- * sure the private portion is populated */
240+ * sure the private portion is populated */
240241 rc = wolfTPM2_CreateKey (tlsCtx -> dev , tlsCtx -> ecdsaKey ,
241242 & tlsCtx -> storageKey -> handle , & publicTemplate ,
242243 (byte * )key -> handle .auth .buffer ,
0 commit comments