Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(SQL Server) ClickBank Decrypt Instant NotificationDemonstrates how to decrypt a ClickBank instant notification. See Instant Notification Service for more information and alternative code snippets.
-- 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 assumes the Chilkat API to have been previously unlocked. -- See Global Unlock Sample for sample code. -- secret key from your ClickBank account DECLARE @secretKey nvarchar(4000) SELECT @secretKey = 'MY_SECRET_KEY' DECLARE @jsonStr nvarchar(4000) SELECT @jsonStr = '{"notification":"BASE64_NOTIFICATION","iv":"BASE64_IV"}' 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 DECLARE @success int EXEC sp_OAMethod @json, 'Load', @success OUT, @jsonStr -- Get the encrypted notification (binary) and IV from the JSON. DECLARE @bdNotif int -- Use "Chilkat_9_5_0.BinData" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.BinData', @bdNotif OUT DECLARE @bdIv int -- Use "Chilkat_9_5_0.BinData" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.BinData', @bdIv OUT EXEC sp_OAMethod @json, 'StringOf', @sTmp0 OUT, 'notification' EXEC sp_OAMethod @bdNotif, 'AppendEncoded', @success OUT, @sTmp0, 'base64' EXEC sp_OAMethod @json, 'StringOf', @sTmp0 OUT, 'iv' EXEC sp_OAMethod @bdIv, 'AppendEncoded', @success OUT, @sTmp0, 'base64' -- Get an SHA1 digest (as a hex string) of the secret key. -- A SHA1 digest is 20 bytes. Therefore the hex string is 40 chars. -- Treat each us-ascii char as a binary byte of the secret key. -- 256-bit AES needs a 256-bit key, which is 32-bytes. Therefore -- use the 1st 32 us-ascii chars of the hex SHA1 as the AES secret key. DECLARE @crypt int -- Use "Chilkat_9_5_0.Crypt2" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.Crypt2', @crypt OUT -- Because we're using the hex string as the actual AES key, it matters whether the hex is uppercase or lowercase. -- We want lowercase. EXEC sp_OASetProperty @crypt, 'EncodingMode', 'hex_lower' EXEC sp_OASetProperty @crypt, 'HashAlgorithm', 'sha1' DECLARE @hexSha1 nvarchar(4000) EXEC sp_OAMethod @crypt, 'HashStringENC', @hexSha1 OUT, @secretKey PRINT @hexSha1 -- Treat the hex string as binary data for the AES key.. DECLARE @bdKey int -- Use "Chilkat_9_5_0.BinData" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.BinData', @bdKey OUT EXEC sp_OAMethod @bdKey, 'AppendString', @success OUT, @hexSha1, 'us-ascii' EXEC sp_OAMethod @bdKey, 'RemoveChunk', @success OUT, 32, 8 EXEC sp_OASetProperty @crypt, 'KeyLength', 256 EXEC sp_OASetProperty @crypt, 'CryptAlgorithm', 'aes' EXEC sp_OASetProperty @crypt, 'CipherMode', 'cbc' -- We can use any encoding because were just getting the binary bytes in an encoding, and then setting from the same encoding. -- We'll just use base64.. EXEC sp_OAMethod @bdIv, 'GetEncoded', @sTmp0 OUT, 'base64' EXEC sp_OAMethod @crypt, 'SetEncodedIV', NULL, @sTmp0, 'base64' EXEC sp_OAMethod @bdKey, 'GetEncoded', @sTmp0 OUT, 'base64' EXEC sp_OAMethod @crypt, 'SetEncodedKey', NULL, @sTmp0, 'base64' EXEC sp_OAMethod @crypt, 'DecryptBd', @success OUT, @bdNotif EXEC sp_OAMethod @bdNotif, 'GetString', @sTmp0 OUT, 'utf-8' PRINT 'Decrypted: ' + @sTmp0 EXEC @hr = sp_OADestroy @json EXEC @hr = sp_OADestroy @bdNotif EXEC @hr = sp_OADestroy @bdIv EXEC @hr = sp_OADestroy @crypt EXEC @hr = sp_OADestroy @bdKey END GO |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.