Verification tool - output text

This commit is contained in:
Jakub Melka
2020-09-28 19:08:57 +02:00
parent 5eb7472473
commit 11e218ecc9
6 changed files with 221 additions and 19 deletions

View File

@@ -389,14 +389,64 @@ void PDFSignatureVerificationResult::setTimestampDate(const QDateTime& timestamp
m_timestampDate = timestampDate;
}
QByteArray PDFSignatureVerificationResult::getSignatureFilter() const
QByteArray PDFSignatureVerificationResult::getSignatureHandler() const
{
return m_signatureFilter;
return m_signatureHandler;
}
void PDFSignatureVerificationResult::setSignatureFilter(const QByteArray& signatureFilter)
void PDFSignatureVerificationResult::setSignatureHandler(const QByteArray& signatureFilter)
{
m_signatureFilter = signatureFilter;
m_signatureHandler = signatureFilter;
}
PDFSignatureVerificationResult::Status PDFSignatureVerificationResult::getCertificateStatus() const
{
if (hasCertificateError())
{
return Status::Error;
}
if (hasCertificateWarning())
{
return Status::Warning;
}
return Status::OK;
}
PDFSignatureVerificationResult::Status PDFSignatureVerificationResult::getSignatureStatus() const
{
if (hasSignatureError())
{
return Status::Error;
}
if (hasSignatureWarning())
{
return Status::Warning;
}
return Status::OK;
}
QString PDFSignatureVerificationResult::getStatusText(Status status)
{
switch (status)
{
case Status::OK:
return PDFTranslationContext::tr("OK");
case Status::Warning:
return PDFTranslationContext::tr("Warning");
case Status::Error:
return PDFTranslationContext::tr("Error");
default:
break;
}
return QString();
}
PDFSignature::Type PDFSignatureVerificationResult::getType() const
@@ -416,7 +466,7 @@ void PDFPublicKeySignatureHandler::initializeResult(PDFSignatureVerificationResu
result.setType(m_signatureField->getSignature().getType());
result.setSignatureFieldReference(signatureFieldReference);
result.setSignatureFieldQualifiedName(signatureFieldQualifiedName);
result.setSignatureFilter(m_signatureField->getSignature().getFilter());
result.setSignatureHandler(m_signatureField->getSignature().getSubfilter());
}
STACK_OF(X509)* PDFPublicKeySignatureHandler::getCertificates(PKCS7* pkcs7)
@@ -1813,16 +1863,10 @@ void PDFPublicKeySignatureHandler::addSignatureDateFromSignerInfoStack(STACK_OF(
return;
}
// Jakub Melka: We will get signed attribute from signer info. If it fails,
// then try to get unsigned attribute.
// Jakub Melka: We will get signed attribute from signer info.
PKCS7_SIGNER_INFO* signerInfo = sk_PKCS7_SIGNER_INFO_value(signerInfoStack, 0);
ASN1_TYPE* attribute = PKCS7_get_signed_attribute(signerInfo, NID_pkcs9_signingTime);
if (!attribute)
{
attribute = PKCS7_get_attribute(signerInfo, NID_pkcs9_signingTime);
}
if (!attribute)
{
return;

View File

@@ -281,6 +281,13 @@ public:
}
enum class Status
{
OK,
Warning,
Error
};
enum VerificationFlag
{
None = 0x00000000, ///< Used only for initialization
@@ -319,7 +326,10 @@ public:
Error_Signatures_Mask = Error_Signature_Invalid | Error_Signature_SourceCertificateMissing | Error_Signature_NoSignaturesFound |
Error_Signature_DigestFailure | Error_Signature_DataOther | Error_Signature_DataCoveredBySignatureMissing,
Warnings_Mask = Warning_Signature_NotCoveredBytes | Warning_Certificate_CRLValidityTimeExpired | Warning_Certificate_QualifiedStatement
Warning_Certificates_Mask = Warning_Certificate_CRLValidityTimeExpired | Warning_Certificate_QualifiedStatement,
Warning_Signatures_Mask = Warning_Signature_NotCoveredBytes,
Warnings_Mask = Warning_Certificates_Mask | Warning_Signatures_Mask
};
Q_DECLARE_FLAGS(VerificationFlags, VerificationFlag)
@@ -358,6 +368,8 @@ public:
bool hasWarning() const { return m_flags & Warnings_Mask; }
bool hasCertificateError() const { return m_flags & Error_Certificates_Mask; }
bool hasSignatureError() const { return m_flags & Error_Signatures_Mask; }
bool hasCertificateWarning() const { return m_flags & Warning_Certificates_Mask; }
bool hasSignatureWarning() const { return m_flags & Warning_Signatures_Mask; }
bool hasFlag(VerificationFlag flag) const { return m_flags.testFlag(flag); }
void setFlag(VerificationFlag flag, bool value) { m_flags.setFlag(flag, value); }
@@ -383,8 +395,16 @@ public:
QDateTime getTimestampDate() const;
void setTimestampDate(const QDateTime& timestampDate);
QByteArray getSignatureFilter() const;
void setSignatureFilter(const QByteArray& signatureFilter);
QByteArray getSignatureHandler() const;
void setSignatureHandler(const QByteArray& signatureFilter);
Status getCertificateStatus() const;
Status getSignatureStatus() const;
QString getCertificateStatusText() const { return getStatusText(getCertificateStatus()); }
QString getSignatureStatusText() const { return getStatusText(getSignatureStatus()); }
static QString getStatusText(Status status);
private:
PDFSignature::Type m_type = PDFSignature::Type::Invalid;
@@ -396,7 +416,7 @@ private:
QStringList m_errors;
QStringList m_warnings;
QStringList m_hashAlgorithms;
QByteArray m_signatureFilter;
QByteArray m_signatureHandler;
PDFCertificateInfos m_certificateInfos;
};