adjust verify pdf signature

pull/721/head
Pete Matsyburka 3 weeks ago
parent 1a65e7bcff
commit 66bf6af7ba

@ -16,7 +16,8 @@ module VerifyPdfSignature
next [] if signatures.blank? next [] if signatures.blank?
verified_signatures = signatures.select { |e| verified_signature?(e, io, trusted_certs) } verified_signatures = signatures.select { |e| verified_signature?(e, io, trusted_certs) }
last_signature = verified_signatures.max_by(&:signed_end) trusted_signatures = verified_signatures.select { |e| trusted_signature?(e, trusted_certs) }
last_signature = (trusted_signatures.presence || verified_signatures).max_by(&:signed_end)
has_unsigned_changes = last_signature && unsigned_changes?(document, io, last_signature.signed_end) has_unsigned_changes = last_signature && unsigned_changes?(document, io, last_signature.signed_end)
signatures.map do |signature| signatures.map do |signature|
@ -72,15 +73,25 @@ module VerifyPdfSignature
end end
def certificate_message(pkcs7, trusted_certs) def certificate_message(pkcs7, trusted_certs)
public_key = signer_certificate(pkcs7)&.public_key&.to_der if trusted_certificate?(pkcs7, trusted_certs)
if trusted_certs.any? { |e| e.public_key.to_der == public_key }
MessageStruct.new(text: I18n.t('signed_with_trusted_certificate'), status: :success) MessageStruct.new(text: I18n.t('signed_with_trusted_certificate'), status: :success)
else else
MessageStruct.new(text: I18n.t('signed_with_external_certificate'), status: :error) MessageStruct.new(text: I18n.t('signed_with_external_certificate'), status: :error)
end end
end end
def trusted_signature?(signature, trusted_certs)
trusted_certificate?(OpenSSL::PKCS7.new(signature.contents), trusted_certs)
rescue OpenSSL::PKCS7::PKCS7Error
false
end
def trusted_certificate?(pkcs7, trusted_certs)
public_key = signer_certificate(pkcs7)&.public_key&.to_der
trusted_certs.any? { |e| e.public_key.to_der == public_key }
end
def verify_contents(pkcs7, signed_data, trusted_certs) def verify_contents(pkcs7, signed_data, trusted_certs)
return false if digest_algorithms(pkcs7).blank? return false if digest_algorithms(pkcs7).blank?

Loading…
Cancel
Save