Skip to content

Commit 17fcfb6

Browse files
authored
Merge pull request #317 from dgarske/ecc_sign
Fix ECC sign missing hash algorithm
2 parents 88bff51 + c2d6022 commit 17fcfb6

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

src/tpm2_wrap.c

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3510,11 +3510,21 @@ int wolfTPM2_SignHash(WOLFTPM2_DEV* dev, WOLFTPM2_KEY* key,
35103510
}
35113511

35123512
if (key->pub.publicArea.type == TPM_ALG_ECC) {
3513+
/* Keys that are created with sign and decrypt require scheme to be NULL,
3514+
* but we must supply ECDSA and Hash Algorithm for signing */
35133515
sigAlg = key->pub.publicArea.parameters.eccDetail.scheme.scheme;
35143516
hashAlg = key->pub.publicArea.parameters.eccDetail.scheme.details.any.hashAlg;
3515-
if (sigAlg == TPM_ALG_NULL) {
3517+
if (sigAlg == 0 || sigAlg == TPM_ALG_NULL) {
35163518
sigAlg = TPM_ALG_ECDSA;
35173519
}
3520+
if (hashAlg == 0 || hashAlg == TPM_ALG_NULL) {
3521+
if (digestSz == 64)
3522+
hashAlg = TPM_ALG_SHA512;
3523+
else if (digestSz == 48)
3524+
hashAlg = TPM_ALG_SHA384;
3525+
else if (digestSz == 32)
3526+
hashAlg = TPM_ALG_SHA256;
3527+
}
35183528
}
35193529
else if (key->pub.publicArea.type == TPM_ALG_RSA) {
35203530
sigAlg = key->pub.publicArea.parameters.rsaDetail.scheme.scheme;

0 commit comments

Comments
 (0)