mirror of
https://github.com/JakubMelka/PDF4QT.git
synced 2025-06-05 21:59:17 +02:00
Verification tool - output text
This commit is contained in:
@@ -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;
|
||||
|
@@ -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;
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user