Giter VIP home page Giter VIP logo

plid-pdf-verifier's Introduction

plid-pdf-verifier

plid-pdf-verifier - PDF signature verifier for digital certificates issued by the Government of the Republic of Poland as a Docker container image

pl.ID is a Polish government PKI project for publicly available digital signing tools and certificates. A free basic e-signature that can be verified with this tool is provided by the Polish national identity card (pol. dowód osobisty) issued after February 2019.

This repository contains independently developed tooling for creating NSS database from data available at repo.e-dowod.gov.pl and performing verification with pdfsig on PDF files for signature and certificate chain validation.

Usage

docker run --rm -it -v "$PWD:/pwd" ghcr.io/burghardt/plid-pdf-verifier signed.pdf

Sample output

Digital Signature Info of: /pwd/signed.pdf
Signature #1:
  - Signer Certificate Common Name: KRZYSZTOF BURGHARDT
  - Signer full Distinguished Name: C=PL,SN=BURGHARDT,givenName=KRZYSZTOF,<REDACTED>
  - Signing Time: Mar 10 2023 <REDACTED>
  - Signing Hash Algorithm: SHA-384
  - Signature Type: ETSI.CAdES.detached
  - Signed Ranges: [0 - <REDACTED>], [<REDACTED> - <REDACTED>]
  - Total document signed
  - Signature Validation: Signature is Valid.
  - Certificate Validation: Certificate is Trusted.

The most important lines (besides the signer details) are Signature is Valid and Certificate is Trusted.

Certificate chain

The root certificate is available at http://repo.e-dowod.gov.pl/certs/PLID_Root_CA.cer and decodes as:

$ openssl x509 -noout -text -inform der -in PLID_Root_CA.cer
Certificate:
Data:
    Version: 3 (0x2)
    Serial Number:
        2e:96:f5:99:0b:4d:0b:93:e0:e6:c1:3c:82:71:cd:4b
    Signature Algorithm: ecdsa-with-SHA512
    Issuer: CN = pl.ID Root CA, serialNumber = 2019, C = PL
    Validity
        Not Before: Feb 15 11:38:03 2019 GMT
        Not After : Feb 16 11:38:03 2044 GMT
    Subject: CN = pl.ID Root CA, serialNumber = 2019, C = PL
    Subject Public Key Info:
        Public Key Algorithm: id-ecPublicKey
            Public-Key: (384 bit)
            pub:
                04:12:64:a8:61:b8:e5:70:19:89:df:9a:e0:bd:b5:
                c7:5c:80:95:cc:4b:d0:ea:e1:f4:0c:78:c6:07:27:
                15:70:cd:17:b6:e6:d7:c3:9b:ae:74:08:ee:f4:d8:
                7d:bb:5d:fc:51:64:cf:d0:72:01:cf:27:f9:8f:bb:
                1e:20:c3:fb:4f:f0:5f:31:e8:57:1a:6e:8c:f4:04:
                00:73:e8:d3:a3:ce:27:4c:ce:91:97:3e:86:0b:bd:
                53:8e:fd:23:7b:08:ba
            ASN1 OID: secp384r1
            NIST CURVE: P-384
    X509v3 extensions:
        X509v3 Basic Constraints: critical
            CA:TRUE
        X509v3 Authority Key Identifier:
            keyid:55:D1:52:32:BC:EF:CA:EC:FE:33:B0:18:E7:37:EE:E3:B8:2F:AB:47

        X509v3 Subject Key Identifier:
            55:D1:52:32:BC:EF:CA:EC:FE:33:B0:18:E7:37:EE:E3:B8:2F:AB:47
        X509v3 Key Usage: critical
            Certificate Sign, CRL Sign
Signature Algorithm: ecdsa-with-SHA512
     30:65:02:31:00:c1:55:78:df:a5:7d:ca:01:10:21:02:2e:b0:
     34:9b:75:67:55:f8:ae:be:9a:2c:1f:e5:63:60:bd:6f:22:4e:
     44:69:ed:ba:91:a1:2e:97:3a:f2:fc:69:60:4f:ff:4d:28:02:
     30:2c:c6:9d:be:71:3d:59:a4:1d:25:75:75:1b:64:53:cc:6a:
     d3:b3:dd:52:a5:e5:35:4a:bd:fd:92:de:8c:30:22:7e:eb:70:
     31:bb:2a:ef:b1:58:6f:6f:f7:d4:c2:23:1f

The certyfikaty_pl.ID.txt file lists all other (intermediate) certificates required to build the chain.

plid-pdf-verifier's People

Contributors

burghardt avatar dependabot[bot] avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.