From 444839e053e8eebd4d8c8da72b361b63a458d8f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sl=C3=A1vek=20Banko?= Date: Fri, 5 Jun 2020 01:39:10 +0200 Subject: [PATCH] tdehwlib: Re-enable OpenSSL < 1.1 compatibility in tdecryptographiccarddevice. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Slávek Banko --- tdecore/tdehw/tdecryptographiccarddevice.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tdecore/tdehw/tdecryptographiccarddevice.cpp b/tdecore/tdehw/tdecryptographiccarddevice.cpp index 1b8f9c4a6..d20dbbb03 100644 --- a/tdecore/tdehw/tdecryptographiccarddevice.cpp +++ b/tdecore/tdehw/tdecryptographiccarddevice.cpp @@ -643,10 +643,18 @@ TQString TDECryptographicCardDevice::autoPIN() { int asn1SeqValueObjectTag; int asn1SeqValueObjectClass; int returnCode; +#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) + uint8_t* asnSeqValueString = ASN1_STRING_data(asnValue->value.sequence); +#else const uint8_t* asnSeqValueString = ASN1_STRING_get0_data(asnValue->value.sequence); +#endif index = 0; // Search for the PIN field +#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) + asnSeqValueStack = ASN1_seq_unpack_ASN1_TYPE(asnSeqValueString, ASN1_STRING_length(asnValue->value.sequence), d2i_ASN1_TYPE, ASN1_TYPE_free); +#else asnSeqValueStack = d2i_ASN1_SEQUENCE_ANY(NULL, &asnSeqValueString, ASN1_STRING_length(asnValue->value.sequence)); +#endif asnSeqValue = sk_ASN1_TYPE_value(asnSeqValueStack, index); if (asnSeqValue) { if (asnSeqValue->value.octet_string->data[0] == ((V_ASN1_CONSTRUCTED | V_ASN1_CONTEXT_SPECIFIC) + index)) { @@ -655,13 +663,19 @@ TQString TDECryptographicCardDevice::autoPIN() { if (!(returnCode & 0x80)) { if (returnCode == (V_ASN1_CONSTRUCTED + index)) { if (d2i_ASN1_GENERALSTRING(&asnGeneralString, &asn1SeqValueObjectData, asn1SeqValueObjectLength) != NULL) { +#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) + retString = TQString((const char *)ASN1_STRING_data(asnGeneralString)); +#else retString = TQString((const char *)ASN1_STRING_get0_data(asnGeneralString)); +#endif } } } } } +#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) sk_ASN1_TYPE_pop_free(asnSeqValueStack, ASN1_TYPE_free); +#endif } } }