![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(SQL Server) Authenticode Sign using Smartcard or USB TokenSee more Code Signing ExamplesDemonstrates how to Authenticode sign an EXE or DLL using a smartcard or USB token, such as a Yubikey.Note: Chilkat's code signing class was added in v9.5.0.97
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls. -- CREATE PROCEDURE ChilkatSample AS BEGIN DECLARE @hr int -- Important: Do not use nvarchar(max). See the warning about using nvarchar(max). DECLARE @sTmp0 nvarchar(4000) -- This example requires the Chilkat API to have been previously unlocked. -- See Global Unlock Sample for sample code. DECLARE @success int -- First create the following JSON to specify that SHA256 is to be used, -- and provide timestamp server information. -- { -- "hashAlg": "sha256", -- "timestampToken": { -- "enabled": true, -- "tsaUrl": "http://timestamp.digicert.com", -- "requestTsaCert": true, -- "hashAlg": "sha256" -- } -- } DECLARE @json int -- Use "Chilkat_9_5_0.JsonObject" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @json OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'hashAlg', 'sha256' EXEC sp_OAMethod @json, 'UpdateBool', @success OUT, 'timestampToken.enabled', 1 EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'timestampToken.tsaUrl', 'http://timestamp.digicert.com' EXEC sp_OAMethod @json, 'UpdateBool', @success OUT, 'timestampToken.requestTsaCert', 1 EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'timestampToken.hashAlg', 'sha256' -- The only difference in signing with a smartcard or USB token -- is that the cert is loaded from a smartcard or USB token, instead of a PFX or from elsewhere -- such as from the Windows certificate store. DECLARE @cert int -- Use "Chilkat_9_5_0.Cert" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.Cert', @cert OUT -- Yubico YubiKey OTP+FIDO+CCID 0, default PIN = 123456 EXEC sp_OASetProperty @cert, 'SmartCardPin', '123456' -- Assuming you have the Yubikey inserted into the USB on the computer... -- and there is only 1 signing certificate on the Yubikey, then just load from -- the "smartcard". (assuming you don't have additional smartcards or USB tokens plugged in) EXEC sp_OAMethod @cert, 'LoadFromSmartcard', @success OUT, '' IF @success = 0 BEGIN EXEC sp_OAGetProperty @cert, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @json EXEC @hr = sp_OADestroy @cert RETURN END -- If the smartcard/token has several possible certificates that can be used for signing, -- then see the online documentation for the LoadFromSmartcard method, -- and also see the online documentation and examples for Chilkat Pkcs11 and ScMinidriver. -- There are many possible ways to load a Chilkat certificate object with a cert (and associated private key) -- from a variety of sources. The only coding difference for any signing function in Chilkat, -- whether it be a PDF, XmlDSig, CMS, etc. is in how the cert is loaded. -- You can sign .exe or .dll files. DECLARE @exePath nvarchar(4000) SELECT @exePath = 'C:/someOtherDir/HelloWorld.exe' DECLARE @signer int -- Use "Chilkat_9_5_0.CodeSign" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.CodeSign', @signer OUT -- If successful, the following call will apply the signature to the EXE (or DLL). EXEC sp_OAMethod @signer, 'AddSignature', @success OUT, @exePath, @cert, @json IF @success = 0 BEGIN EXEC sp_OAGetProperty @signer, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @json EXEC @hr = sp_OADestroy @cert EXEC @hr = sp_OADestroy @signer RETURN END PRINT 'Successfully applied the Authenticode signature.' EXEC @hr = sp_OADestroy @json EXEC @hr = sp_OADestroy @cert EXEC @hr = sp_OADestroy @signer END GO |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.