text: #!/usr/bin/env python
  import lief
  import sys
  import os
  
  # Parse PE file
  pe = lief.parse(sys.argv[1])
  
  sep = (":") if sys.version_info.minor > 7 else ()
  
  # Get authenticode
  print(pe.authentihash_md5.hex(*sep)) # 1c:a0:91:53:dc:9a:3a:5f:34:1d:7f:9b:b9:56:69:4d
  print(pe.authentihash(lief.PE.ALGORITHMS.SHA_1).hex(*sep)) # 1e:ad:dc:29:1e:db:41:a2:69:c2:ba:ae:4b:fb:9d:31:e7:bb:ab:59
  
  # Check signature according to PKCS #7 and Microsoft documentation
  print(pe.verify_signature()) # Return VERIFICATION_FLAGS.OK
  
  bin_ca = None
  # Look for the root CA in the PE file
  for crt in pe.signatures[0].certificates:
      if crt.issuer == "C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert Assured ID Root CA":
          bin_ca = crt
  
  # Verify CA chain
  bundle_path = os.getenv("LIEF_CA_BUNDLE", None) # Path to CA bundle (one can use those from signify:
                                                  # signify/certs/authenticode-bundle.pem)
  if bundle_path is not None:
      # Parse cert bundle and return a list of lief.PE.x509 objects
      bundle = lief.PE.x509.parse(bundle_path)
      print(bin_ca.is_trusted_by(bundle)) # VERIFICATION_FLAGS.OK
  
  
  # Get the certificate used by the signer
  cert_signer = pe.signatures[0].signers[0].cert
  print(cert_signer)
  bin_ca.verify(cert_signer) # Verify that cert_signer is signed the the CA
  
  # running with:
  # LIEF_CA_BUNDLE=signify/signify/certs/authenticode-bundle.pem python ./authenticode.py avast_free_antivirus_setup_online.exe
  #
  # 1c:a0:91:53:dc:9a:3a:5f:34:1d:7f:9b:b9:56:69:4d
  # 1e:ad:dc:29:1e:db:41:a2:69:c2:ba:ae:4b:fb:9d:31:e7:bb:ab:59
  # VERIFICATION_FLAGS.OK
  # cert. version     : 3
  # serial number     : 04:09:18:1B:5F:D5:BB:66:75:53:43:B5:6F:95:50:08
  # issuer name       : C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert Assured ID Root CA
  # subject name      : C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert SHA2 Assured ID Code Signing CA
  # issued  on        : 2013-10-22 12:00:00
  # expires on        : 2028-10-22 12:00:00
  # signed using      : RSA with SHA-256
  # RSA key size      : 2048 bits
  # basic constraints : CA=true, max_pathlen=0
  # key usage         : Digital Signature, Key Cert Sign, CRL Sign
  # ext key usage     : Code Signing
  #
  # VERIFICATION_FLAGS.OK
  