Bug 1984621

Summary: tssloadexternal call to d2i_RSAPrivateKey fails with move to openssl 3.0
Product: Red Hat Enterprise Linux 9 Reporter: Jerry Snitselaar <jsnitsel>
Component: tss2Assignee: Štěpán Horáček <shoracek>
Status: CLOSED ERRATA QA Contact: Eirik Fuller <efuller>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 9.0CC: bhu, core-kernel-mgr, dbohanno, efuller, rvr, shoracek, skozina
Target Milestone: betaKeywords: Triaged
Target Release: ---Flags: pm-rhel: mirror+
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: tss2-1.6.0-5.el9 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2022-05-17 16:02:46 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1870687, 1958021    

Description Jerry Snitselaar 2021-07-21 19:00:41 UTC
Description of problem:

Create RSA and ECC key pairs in PEM format using openssl
Convert key pair to plaintext DER format
Load the RSA openssl key pair in the NULL hierarchy 80000001 - sha1
 ERROR:
convertRsaDerToKeyPair: could not convert key to RSA
loadexternal: failed, rc 00000084
TPM_RC_VALUE - value is out of range or is not correct for the context Handle number unspecified
/var/str/tss /var/str
/var/str


TPM_RC convertRsaDerToKeyPair(TPM2B_PUBLIC 		*objectPublic,
			      TPM2B_SENSITIVE 		*objectSensitive,
			      int			keyType,
			      TPMI_ALG_SIG_SCHEME 	scheme,
			      TPMI_ALG_HASH 		nalg,
			      TPMI_ALG_HASH		halg,
			      const char		*derKeyFilename,
			      const char 		*password)
{
    TPM_RC		rc = 0;
    RSA 		*rsaKey = NULL;
    unsigned char	*derBuffer = NULL;
    size_t		derSize;

    /* read the DER file */
    if (rc == 0) {
	rc = TSS_File_ReadBinaryFile(&derBuffer,     	/* freed @1 */
				     &derSize,
				     derKeyFilename); 
    }
    if (rc == 0) {
	const unsigned char *tmpPtr = derBuffer;	/* because pointer moves */
>>>	rsaKey = d2i_RSAPrivateKey(NULL, &tmpPtr, (long)derSize);	/* freed @2 */
	if (rsaKey == NULL) {
	    printf("convertRsaDerToKeyPair: could not convert key to RSA\n");
	    rc = TPM_RC_VALUE;
	}
    }
    if (rc == 0) {
	rc = convertRsaKeyToPrivate(NULL,		/* TPM2B_PRIVATE */
				    objectSensitive,	/* TPM2B_SENSITIVE */
				    rsaKey,
				    password);	
    }	
    if (rc == 0) {
	rc = convertRsaKeyToPublic(objectPublic,
				   keyType,
				   scheme,
				   nalg,
				   halg,
				   rsaKey);
    }
    free(derBuffer);			/* @1 */
    TSS_RsaFree(rsaKey);		/* @2 */
    return rc;
}




Version-Release number of selected component (if applicable):


How reproducible: Reproduces every run of gating test. So 1minutetip rhel9 should trigger it. You can also look at the specific failing test in utils/regtests/testsalt.sh.


Steps to Reproduce:
1.
2.
3.

Actual results:


Expected results:


Additional info:

Comment 1 Jerry Snitselaar 2021-07-21 19:02:43 UTC
There was a fix upstream in openssl 3 involving d2i functions that went into beta1, but trying to test with beta1 I still see the failure. Ken Goldman at IBM is working on porting tss2 from using any deprecated functions.

Comment 2 Jerry Snitselaar 2021-07-21 19:04:16 UTC
openssl github issue for problem resolved in beta1: https://github.com/openssl/openssl/issues/12284

Comment 6 Eirik Fuller 2022-02-09 04:45:43 UTC
Setting Verified:Tested based on the tests described in bug 1870687 comment 27.

Comment 9 Eirik Fuller 2022-02-10 15:44:24 UTC
Moving to VERIFIED based on the tests described in bug 1870687 comment 31.

Comment 11 errata-xmlrpc 2022-05-17 16:02:46 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (new packages: tss2), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2022:4047