Download Code Signing Trust and Certificate Check component
9th October 2018 - Sorry, you now need to request a free file download password to access Delphi components.
Feb 2018 - Warning - the zip includes an ancient version of signtool which does not support SHA-256 hashes now required for program signing, nor does it support keys on USB dongles. You must instead get the latest signtool from the Windows 10 Development Kit. The component still works to check the latest signing correctly.
The Magenta Systems Code Signing Trust and Certificate Check component functions are designed for Code Signing, aka Microsoft Authenticode.
Currently just two functions that check if an EXE, DLL or CAB file has a valid code signing certificate, that the certificate is trusted and that the program is not corrupted. These functions were written to support an remote program updater tool, to ensure the new program was not corrupted, but may also be used to self test a Delphi application for image corruption.
ProgVerifyTrust - simple function to check code signing certificate exists and is valid and not expired, and the program image is not corrupted. This should work with Windows 2000 and later (which have wintrust.dll).
ProgVerifyCert - similar to ProgVerifyTrust, but also extracts the certificate information, names, dates, etc. But this function needs capicom.dll COM object to be installed (from which the CAPICOM_TLB type library is created), which is a free redistributable file, included with this code. This function only works in Win32 applications, because Microsoft has not released a 64-bit of capicom.dll, instead a class error is returned.
Microsoft claims Capicom is deprecated with Windows 7, but the DLL still works on both 32-bit and 64-bit editions, with Win32 applications. You need to register the COM object by running 'regsvr32.exe capicom.dll'.
Note the API used in CapiCom to sign a program is SignerSign but is not yet supported here since signprog.exe works fine to actually sign code.
A Windows demonstration application TRUSTCHK.EXE is supplied, with source and compiled program. A directory signed-samples includes several programs to test checking signatures, trustnone.exe is unsigned, trustbad.exe is deliberately corrupted, trustexpired.cab has an expired certificate, trustodd.exe has an untrusted self signed certificate, trustok.exe is valid.
function ProgVerifyTrust (const Fname: string ; const HashOnly, Expired:
boolean; var Response: string): integer ;
function ProgVerifyCert (const Fname: string ; var CertInfo: TCertInfo):
Compatible with Delphi7 to 10.2 Tokyo. Supports both VCL Win32
and Win64, but there is no 64-bit version of
CAPICOM and Code Sign Tools
Capicom is a COM object DLL redistributable from Microsoft that supports Code Signing and encryption. Microsoft claims Capicom is deprecated with Windows 7, but the DLL still works. Capicom does not come with Windows, but must be installed and registered as a COM object, before the ProgVerifyCert function can be used. This distribution includes two versions of Capicom, 126.96.36.199 and 188.8.131.52 in separate directories, each with numerous example source demos (none Pascal).
See https://docs.microsoft.com/en-us/dotnet/framework/tools/signtool-exe for the latest docmentation, and please ensure you have the latest signtool from Windows 10 software development kit.
If you need to buy a Code Signing certificate to sign your own applications, please look at the Microsoft Get a code signing certificate page first, which provides links to six major certificate issuers mostly with competitive prices you will be unlikely to find by visiting the sites directly.
Magenta Systems Code Signing Trust and Certificate Check component is freeware, but is still copyrighted by Magenta Systems Ltd who may change the status or withdraw it at any time, without notice.
Magenta Systems Ltd, 9 Vincent Road,
Croydon CR0 6ED, United Kingdom