CAPICOM Shell Extensions

Another handy shell extension for those who deal with digital signatures. The extension adds new columns to shell explorer and also allows to put digital signature related information into informational tooltips.

The following columns are added:

  • Signature state (presence, validity), description, URL
  • Signer certificate details (subject, issuer, email etc.)
  • TimeStamper certificate details (signing time, subject, issuer, email etc.)

Some screenshots are shown below:

[Image]

[Image]

[Image]

To add digital signature information info informational tip, use regedit to update the following items:

Key: HKEY_CLASSES_ROOT\dllfile, backup “InfoTip” value and append the following string:
“;{C0399172-9505-441F-835B-C78EF8253BE9}1;{C0399172-9505-441F-835B-C78EF8253BE9}3;{C0399172-9505-441F-835B-C78EF8253BE9}15”

This will add digital signature state, description and signing time to the tip. The same modification may be applied to HKEY_CLASSES_ROOT\exefile and other keys.

Download the extension (566K, MS CAPICOM redistributable included)

Keywords: CAPICOM, Shell Extensions, Digital Signatures, Authenticode

Authenticode’s Signcode

Some of you may be annoyed by the way signcode.exe keeps popping up the password prompt when trying to sign file from command line. There’s a workaround, however.

The utility catches password prompt and autoenters the password. After a minute of inactivity it quits. For use in bacth files like this:

start /b AutomateSigncodePassword.exe my-authenticode-password
signcode %1 -spc mycredentials.spc -v myprivatekey.pvk -t http://timestamp.verisign.com/scripts/timestamp.dll

Download the utility (23K)

Resource Updater

Sometimes an automated update of the binary resource is required, to update version, product name, some custom string etc. We have an utility for this and and it found itsself being very useful.

We are unlikely to document it, I just leave a sample code illustrating how it all works.

Sample.js:

Image = new ActiveXObject(“AlaxInfoResourceTools.Image”);
Image.Initialize(“C:\\Sample.dll”);
WScript.Echo(“Product Version: ” + Image.VersionInfo.ProductVersionString);
WScript.Echo(“File Version: ” + Image.VersionInfo.FileVersionString);
var ProductName = Image.VersionInfo.GetString(0, “ProductName”);
var OemProductName = Image.VersionInfo.GetString(0, “OemProductName”);
WScript.Echo(“ProductName: ” + ProductName);
WScript.Echo(“OemProductName: ” + OemProductName);
Image.VersionInfo.SetString(0, “OemProductName”, “// ” + ProductName);
Image.VersionInfo.Update();
Image.EndUpdate(false);

Curious ones are invited to open type library to find out the syntax.

Download the COM object (265K) ResourceToolsSetup.msi (Win32, 32-bit)