ninja-labs-tech / verify-pdf

Verify pdf signatures in JS
48 stars 39 forks source link

Is there any CDN with a minified version of a single file with dependencies to be used in the browser? #127

Open insinfo opened 2 months ago

insinfo commented 2 months ago

Is there any CDN with a minified version of a single file with dependencies to be used in the browser?

insinfo commented 2 months ago

@MohammedEssehemy

I cloned the project on my machine and modified the lib/index.js file by adding window.verifyPDF = verifyPDF; and used browserify ./lib/index.js -o ./dist/bundle.js to generate the unified file, I created a simple index.html with inline script to test, it seems to work but I am receiving a return of a digitally signed and valid PDF file authenticity: false and verified: false, how to solve this ?

I'm going to use this lib in a frontend project with AgularDart so I need it to work outside of a module.

./lib/index.js

const verifyPDF = require('./verifyPDF');
const { getCertificatesInfoFromPDF } = require('./certificateDetails');

Object.assign(verifyPDF, { getCertificatesInfoFromPDF });
window.verifyPDF = verifyPDF;
module.exports = verifyPDF;

index.html

<!DOCTYPE html>
<html lang="pt-br" dir="ltr" class="custom-scrollbars">

<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <title>teste</title>
  <script defer src="assets/js/verify-pdf/verify-pdf/dist/bundle.js"></script>
  <script >  
    window.onload = function () {      
      document.querySelector('input[type="file"]').addEventListener('change', function (e) {            
        readFile(e);
      });
    }
    const readFile = (e) => {
      const file = e.target.files[0]
      let reader = new FileReader();
      reader.onload = function (e) {
        let result = verifyPDF(reader.result);
        console.log(result);
      }
      reader.readAsArrayBuffer(file);
    };
  </script>
</head>
<body>
  <input type="file">
</body>
</html>

PDF

ListagemProcessos%282%29_assinado.pdf

https://validar.iti.gov.br/relatorio.html image

{"verified":false,"authenticity":false,"integrity":true,"expired":false,"signatures":[{"verified":false,"authenticity":false,"integrity":true,"expired":false,"meta":{"certs":[{"clientCertificate":true,"issuedBy":{"countryName":"BR","organizationName":"Gov-Br","organizationalUnitName":"AC Intermediaria do Governo Federal do Brasil v1","commonName":"AC Final do Governo Federal do Brasil v1"},"issuedTo":{"commonName":"ISAQUE NEVES SANT ANA"},"validityPeriod":{"notBefore":"2024-06-24T21:11:31.000Z","notAfter":"2025-06-24T21:11:31.000Z"},"pemCertificate":"-----BEGIN CERTIFICATE-----\r\nMIIGJDCCBAygAwIBAgIJAOgdUmg2gqgPMA0GCSqGSIb3DQEBCwUAMIGMMQswCQYD\r\nVQQGEwJCUjEPMA0GA1UECgwGR292LUJyMTkwNwYDVQQLDDBBQyBJbnRlcm1lZGlh\r\ncmlhIGRvIEdvdmVybm8gRmVkZXJhbCBkbyBCcmFzaWwgdjExMTAvBgNVBAMMKEFD\r\nIEZpbmFsIGRvIEdvdmVybm8gRmVkZXJhbCBkbyBCcmFzaWwgdjEwHhcNMjQwNjI0\r\nMjExMTMxWhcNMjUwNjI0MjExMTMxWjAgMR4wHAYDVQQDDBVJU0FRVUUgTkVWRVMg\r\nU0FOVCBBTkEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC63Asj0IHw\r\nUL6LHu6CPIwdOmSzNINJQAIpLzWq3hG0gObcss5fWt3A5wpcQ8GRBaP/0lFMziS5\r\nts/CUVN/NyQB4qXrLOQRYqdX9k6M+77MWgf/04xWalCa0HQa3PC/EsxS3bTN1uEx\r\nnDVzYpdKN7/G7aqSj1TrlJeGyqMzf0ch8ny332tTQukQfi3Hxjt8V4RMMV584Oo/\r\nYWH5Cn6arScCqof8xWdOONU4XX7iihzQDuKnvSvVR0Gf0/BeGME+ZHWB/OfIBLPx\r\nJtvalMFjvsdV/bZXBVDhX7dusXrVPb83uktu9bXxqgpsMKQb6gA/jaxThTbWrW0z\r\nIVqIiUH0DPFnAgMBAAGjggHyMIIB7jCBlQYDVR0RBIGNMIGKoDgGBWBMAQMBoC8E\r\nLTE0MDkxOTg3MTMxMjgyNTA3MzEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMKAX\r\nBgVgTAEDBqAOBAwwMDAwMDAwMDAwMDCgHgYFYEwBAwWgFQQTMDAwMDAwMDAwMDAw\r\nMDAwMDAwMIEVaW5zaW5mbzIwMDhAZ21haWwuY29tMAkGA1UdEwQCMAAwHwYDVR0j\r\nBBgwFoAUPCpoXJmEe1BQtz5BGqCtSDdhtScwTAYDVR0gBEUwQzBBBgZgTAMCAQEw\r\nNzA1BggrBgEFBQcCARYpaHR0cDovL3JlcG8uaXRpLmJyL2RvY3MvRFBDYWNmR292\r\nQnJ2MS5wZGYwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL3JlcG8uaXRpLmJyL2xj\r\nci9wdWJsaWMvYWNmL0xDUmFjZkdvdkJyLmNybDAOBgNVHQ8BAf8EBAMCB4AwHQYD\r\nVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMB0GA1UdDgQWBBTqjgGAOLD395sv\r\n3Z/AMsBEBDKH9jBIBggrBgEFBQcBAQQ8MDowOAYIKwYBBQUHMAKGLGh0dHA6Ly9y\r\nZXBvLml0aS5ici9kb2NzL0NhZGVpYV9Hb3ZCci1kZXIucDdiMA0GCSqGSIb3DQEB\r\nCwUAA4ICAQCIdZYqhtvCF7pe1lb9J0Glm5ia38z2qJmybvSn7eJ7ho8voiYyiCkq\r\n0h0qWn4KQvtjx299KWf1zB/mUD7Btf62uGwxGOFiar2QhcciGaC4wNhPHyXUZ/od\r\nun27oj7fmn12/U2stbFOVPKaE8SppuiqzfcF/MvNV/sqTpc4LrPHg+1HdgoZ4cg3\r\nPhFN4LYmwBO22YUCWBcNB0PBYEn+b1ubwq8+3GuAuxZ3cxJQTSXLpZUGdatVNRy6\r\nQ5CfQ+4oRQqH6bLul1l8s7Tdfekm1P8CtZoM7skkW2qI5usczZg/UGQg7RwBipLX\r\nTQWKxWY+pENZ8DhGGq4+E7x4AwWO5b8BX42DpgdKprqg8zTrZpxbdrZqWAYzzKk+\r\nixWUjiGnXAvRMAKB+RESdMjvtD2jU9BQXRx3yTxmwCg8A0WNcB+L/j4cXji1PJ5U\r\nJKUkCOFjDqovV50z/9KLOX2AOfKtHADGDkLNenhmee6yk86uPzkFuj+YTz15iqgh\r\n6isuYpOwcGkhZ5Cu5gpDZdl0EwEput4QXy1VbDWZW8dVpKcaH8LKbbMFPSCDnMQU\r\n77rt+EBoJjVE8YXzJYqWC/kFRyQOBheeivb48MIlUtE+JbTGHgV74+D4xvpJ8pQr\r\nKiIEJZMOJgwCR352jV0R3zZZshAqLI6jFhO7STdcNJf+tOlUApvlcA==\r\n-----END CERTIFICATE-----\r\n"}],"signatureMeta":{"reason":null,"contactInfo":null,"location":null,"name":null}}}]}