Make validateSignature return a SignatureValidationStatus
diff --git a/poppler/Form.cc b/poppler/Form.cc
index 178f6e6..f699201 100644
--- a/poppler/Form.cc
+++ b/poppler/Form.cc
@@ -1715,7 +1715,6 @@
return signature_info;
}
- NSSCMSVerificationStatus sig_val_state;
const int signature_len = signature->getLength();
unsigned char *signatureuchar = (unsigned char *)gmalloc(signature_len);
memcpy(signatureuchar, signature->c_str(), signature_len);
@@ -1743,8 +1742,8 @@
hashSignedDataBlock(&signature_handler, len);
}
- sig_val_state = signature_handler.validateSignature();
- signature_info->setSignatureValStatus(SignatureHandler::NSS_SigTranslate(sig_val_state));
+ const SignatureValidationStatus sig_val_state = signature_handler.validateSignature();
+ signature_info->setSignatureValStatus(sig_val_state);
signature_info->setSignerName(signature_handler.getSignerName());
signature_info->setSubjectDN(signature_handler.getSignerSubjectDN());
signature_info->setHashAlgorithm(signature_handler.getHashAlgorithm());
@@ -1754,7 +1753,7 @@
signature_info->setSigningTime(signature_handler.getSigningTime());
}
- if (sig_val_state != NSSCMSVS_GoodSignature || !doVerifyCert) {
+ if (sig_val_state != SIGNATURE_VALID || !doVerifyCert) {
return signature_info;
}
diff --git a/poppler/SignatureHandler.cc b/poppler/SignatureHandler.cc
index 55028af..f616afb 100644
--- a/poppler/SignatureHandler.cc
+++ b/poppler/SignatureHandler.cc
@@ -349,12 +349,33 @@
}
}
-NSSCMSVerificationStatus SignatureHandler::validateSignature()
+static SignatureValidationStatus NSS_SigTranslate(NSSCMSVerificationStatus nss_code)
+{
+ switch(nss_code)
+ {
+ case NSSCMSVS_GoodSignature:
+ return SIGNATURE_VALID;
+
+ case NSSCMSVS_BadSignature:
+ return SIGNATURE_INVALID;
+
+ case NSSCMSVS_DigestMismatch:
+ return SIGNATURE_DIGEST_MISMATCH;
+
+ case NSSCMSVS_ProcessingError:
+ return SIGNATURE_DECODING_ERROR;
+
+ default:
+ return SIGNATURE_GENERIC_ERROR;
+ }
+}
+
+SignatureValidationStatus SignatureHandler::validateSignature()
{
unsigned char *digest_buffer = nullptr;
if (!CMSSignedData)
- return NSSCMSVS_MalformedSignature;
+ return SIGNATURE_GENERIC_ERROR;
digest_buffer = (unsigned char *)PORT_Alloc(hash_length);
unsigned int result_len = 0;
@@ -379,12 +400,12 @@
&& digest.len == content_info_data->len)
{
PORT_Free(digest_buffer);
- return NSSCMSVS_GoodSignature;
+ return SIGNATURE_VALID;
}
else
{
PORT_Free(digest_buffer);
- return NSSCMSVS_DigestMismatch;
+ return SIGNATURE_DIGEST_MISMATCH;
}
}
@@ -392,12 +413,12 @@
{
PORT_Free(digest_buffer);
- return CMSSignerInfo->verificationStatus;
+ return NSS_SigTranslate(CMSSignerInfo->verificationStatus);
}
else
{
PORT_Free(digest_buffer);
- return NSSCMSVS_GoodSignature;
+ return SIGNATURE_VALID;
}
}
@@ -445,25 +466,3 @@
return CERTIFICATE_GENERIC_ERROR;
}
-
-
-SignatureValidationStatus SignatureHandler::NSS_SigTranslate(NSSCMSVerificationStatus nss_code)
-{
- switch(nss_code)
- {
- case NSSCMSVS_GoodSignature:
- return SIGNATURE_VALID;
-
- case NSSCMSVS_BadSignature:
- return SIGNATURE_INVALID;
-
- case NSSCMSVS_DigestMismatch:
- return SIGNATURE_DIGEST_MISMATCH;
-
- case NSSCMSVS_ProcessingError:
- return SIGNATURE_DECODING_ERROR;
-
- default:
- return SIGNATURE_GENERIC_ERROR;
- }
-}
diff --git a/poppler/SignatureHandler.h b/poppler/SignatureHandler.h
index fd7c9fb..33cc3ce 100644
--- a/poppler/SignatureHandler.h
+++ b/poppler/SignatureHandler.h
@@ -44,14 +44,11 @@
HASH_HashType getHashAlgorithm();
void setSignature(unsigned char *, int);
void updateHash(unsigned char * data_block, int data_len);
- NSSCMSVerificationStatus validateSignature();
+ SignatureValidationStatus validateSignature();
// Use -1 as validation_time for now
CertificateValidationStatus validateCertificate(time_t validation_time);
std::unique_ptr<X509CertificateInfo> getCertificateInfo() const;
- //Translate NSS error codes
- static SignatureValidationStatus NSS_SigTranslate(NSSCMSVerificationStatus nss_code);
-
private:
SignatureHandler(const SignatureHandler &);
SignatureHandler& operator=(const SignatureHandler &);