blob: c2a264b6289f6cbc14d2a0e52580868a99f9ff8e [file] [log] [blame]
Author: Philipp Kern <pkern@debian.org>
Subject: Fix openssl1.1 support in data_mgmt
Date: Tue, 31 Jan 2017 22:40:10 +0100
Upstream-Status: Backport
tpm-tools_1.3.9.1-0.1.debian.tar
Signed-off-by: Armin kuster <akuster808@gmail.com>
---
src/data_mgmt/data_import.c | 60 ++++++++++++++++++++++++++++----------------
1 file changed, 39 insertions(+), 21 deletions(-)
--- a/src/data_mgmt/data_import.c
+++ b/src/data_mgmt/data_import.c
@@ -372,7 +372,7 @@ readX509Cert( const char *a_pszFile,
goto out;
}
- if ( EVP_PKEY_type( pKey->type ) != EVP_PKEY_RSA ) {
+ if ( EVP_PKEY_base_id( pKey ) != EVP_PKEY_RSA ) {
logError( TOKEN_RSA_KEY_ERROR );
X509_free( pX509 );
@@ -691,8 +691,13 @@ createRsaPubKeyObject( RSA
int rc = -1;
- int nLen = BN_num_bytes( a_pRsa->n );
- int eLen = BN_num_bytes( a_pRsa->e );
+ const BIGNUM *bn;
+ const BIGNUM *be;
+
+ RSA_get0_key( a_pRsa, &bn, &be, NULL );
+
+ int nLen = BN_num_bytes( bn );
+ int eLen = BN_num_bytes( be );
CK_RV rv;
@@ -732,8 +737,8 @@ createRsaPubKeyObject( RSA
}
// Get binary representations of the RSA key information
- BN_bn2bin( a_pRsa->n, n );
- BN_bn2bin( a_pRsa->e, e );
+ BN_bn2bin( bn, n );
+ BN_bn2bin( be, e );
// Create the RSA public key object
rv = createObject( a_hSession, tAttr, ulAttrCount, a_hObject );
@@ -760,14 +765,27 @@ createRsaPrivKeyObject( RSA
int rc = -1;
- int nLen = BN_num_bytes( a_pRsa->n );
- int eLen = BN_num_bytes( a_pRsa->e );
- int dLen = BN_num_bytes( a_pRsa->d );
- int pLen = BN_num_bytes( a_pRsa->p );
- int qLen = BN_num_bytes( a_pRsa->q );
- int dmp1Len = BN_num_bytes( a_pRsa->dmp1 );
- int dmq1Len = BN_num_bytes( a_pRsa->dmq1 );
- int iqmpLen = BN_num_bytes( a_pRsa->iqmp );
+ const BIGNUM *bn;
+ const BIGNUM *be;
+ const BIGNUM *bd;
+ const BIGNUM *bp;
+ const BIGNUM *bq;
+ const BIGNUM *bdmp1;
+ const BIGNUM *bdmq1;
+ const BIGNUM *biqmp;
+
+ RSA_get0_key( a_pRsa, &bn, &be, &bd);
+ RSA_get0_factors( a_pRsa, &bp, &bq);
+ RSA_get0_crt_params( a_pRsa, &bdmp1, &bdmq1, &biqmp );
+
+ int nLen = BN_num_bytes( bn );
+ int eLen = BN_num_bytes( be );
+ int dLen = BN_num_bytes( bd );
+ int pLen = BN_num_bytes( bp );
+ int qLen = BN_num_bytes( bq );
+ int dmp1Len = BN_num_bytes( bdmp1 );
+ int dmq1Len = BN_num_bytes( bdmq1 );
+ int iqmpLen = BN_num_bytes( biqmp );
CK_RV rv;
@@ -821,14 +839,14 @@ createRsaPrivKeyObject( RSA
}
// Get binary representations of the RSA key information
- BN_bn2bin( a_pRsa->n, n );
- BN_bn2bin( a_pRsa->e, e );
- BN_bn2bin( a_pRsa->d, d );
- BN_bn2bin( a_pRsa->p, p );
- BN_bn2bin( a_pRsa->q, q );
- BN_bn2bin( a_pRsa->dmp1, dmp1 );
- BN_bn2bin( a_pRsa->dmq1, dmq1 );
- BN_bn2bin( a_pRsa->iqmp, iqmp );
+ BN_bn2bin( bn, n );
+ BN_bn2bin( be, e );
+ BN_bn2bin( bd, d );
+ BN_bn2bin( bp, p );
+ BN_bn2bin( bq, q );
+ BN_bn2bin( bdmp1, dmp1 );
+ BN_bn2bin( bdmq1, dmq1 );
+ BN_bn2bin( biqmp, iqmp );
// Create the RSA private key object
rv = createObject( a_hSession, tAttr, ulAttrCount, a_hObject );