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) RSA Sign utf-8 Bytes of String to get Base64 RSA SignatureSee more Apple Keychain ExamplesDemonstrates how RSA sign the utf-8 byte representation of a string to get the signature in base64 format.
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls. -- CREATE PROCEDURE ChilkatSample AS BEGIN DECLARE @hr int DECLARE @iTmp0 int -- Important: Do not use nvarchar(max). See the warning about using nvarchar(max). DECLARE @sTmp0 nvarchar(4000) -- Assuming the smartcard/USB token is installed with the correct drivers from the manufacturer, -- this code can work on multiple platforms including Windows, MacOS, Linux, and iOS. -- Chilkat automatically detects and determines the way in which the HSM is used, -- which can be by PKCS11, Apple Keychain, Microsoft CNG / Crypto API, or ScMinidriver. DECLARE @cert int -- Use "Chilkat_9_5_0.Cert" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.Cert', @cert OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END -- Set the token/smartcard PIN prior to loading. EXEC sp_OASetProperty @cert, 'SmartCardPin', '123456' -- Specify the certificate by its common name. DECLARE @success int EXEC sp_OAMethod @cert, 'LoadFromSmartcard', @success OUT, 'cn=chilkat-rsa-2048' IF @success = 0 BEGIN EXEC sp_OAGetProperty @cert, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @cert RETURN END EXEC sp_OAGetProperty @cert, 'SubjectCN', @sTmp0 OUT PRINT 'Signing with cert: ' + @sTmp0 -- Create a string to be hashed and signed. DECLARE @sb int -- Use "Chilkat_9_5_0.StringBuilder" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sb OUT DECLARE @crlfLineEnding int SELECT @crlfLineEnding = 1 DECLARE @i int SELECT @i = 0 WHILE @i <= 10 BEGIN EXEC sp_OAMethod @sb, 'AppendLine', @success OUT, 'This is a test.', @crlfLineEnding SELECT @i = @i + 1 END DECLARE @rsa int -- Use "Chilkat_9_5_0.Rsa" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.Rsa', @rsa OUT -- Use the certificate's private key for signing. EXEC sp_OAMethod @rsa, 'SetX509Cert', @success OUT, @cert, 1 IF @success = 0 BEGIN EXEC sp_OAGetProperty @rsa, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @cert EXEC @hr = sp_OADestroy @sb EXEC @hr = sp_OADestroy @rsa RETURN END -- Sign the SHA-256 hash of the utf-8 byte representation of the contents of sb -- Return the signature in base64 format. EXEC sp_OASetProperty @rsa, 'EncodingMode', 'base64' EXEC sp_OASetProperty @rsa, 'Charset', 'utf-8' DECLARE @stringToSign nvarchar(4000) EXEC sp_OAMethod @sb, 'GetAsString', @stringToSign OUT DECLARE @sigBase64 nvarchar(4000) EXEC sp_OAMethod @rsa, 'SignStringENC', @sigBase64 OUT, @stringToSign, 'sha256' EXEC sp_OAGetProperty @rsa, 'LastMethodSuccess', @iTmp0 OUT IF @iTmp0 = 0 BEGIN EXEC sp_OAGetProperty @rsa, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @cert EXEC @hr = sp_OADestroy @sb EXEC @hr = sp_OADestroy @rsa RETURN END PRINT 'RSA signature as base64: ' + @sigBase64 EXEC @hr = sp_OADestroy @cert EXEC @hr = sp_OADestroy @sb EXEC @hr = sp_OADestroy @rsa END GO |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.