Sample code for 30+ languages & platforms
SQL Server

Example: Crypt2.ClearEncryptCerts method

Demonstrates how to call the ClearEncryptCerts method.

Chilkat SQL Server Downloads

SQL Server
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
    DECLARE @hr int
    DECLARE @success int
    SELECT @success = 0

    DECLARE @crypt int
    EXEC @hr = sp_OACreate 'Chilkat.Crypt2', @crypt OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    -- Tell the crypt object to use 3 certificates.
    -- Do this by calling AddEncryptCert for each certificate.

    DECLARE @cert1 int
    EXEC @hr = sp_OACreate 'Chilkat.Cert', @cert1 OUT

    -- ...
    -- Load the cert from a source such as a .pfx/.p12 file, smart card, USB token, Apple keychain, Windows certificate store, etc.
    -- ...
    EXEC sp_OAMethod @crypt, 'AddEncryptCert', NULL, @cert1

    DECLARE @cert2 int
    EXEC @hr = sp_OACreate 'Chilkat.Cert', @cert2 OUT

    -- ...
    EXEC sp_OAMethod @crypt, 'AddEncryptCert', NULL, @cert2

    DECLARE @cert3 int
    EXEC @hr = sp_OACreate 'Chilkat.Cert', @cert3 OUT

    -- ...
    EXEC sp_OAMethod @crypt, 'AddEncryptCert', NULL, @cert3

    -- Params for public-key encryption to create PKCS7 enveloped-data
    EXEC sp_OASetProperty @crypt, 'CryptAlgorithm', 'pki'
    EXEC sp_OASetProperty @crypt, 'Pkcs7CryptAlg', 'aes'
    EXEC sp_OASetProperty @crypt, 'KeyLength', 256
    EXEC sp_OASetProperty @crypt, 'OaepHash', 'sha256'
    EXEC sp_OASetProperty @crypt, 'OaepPadding', 1

    DECLARE @bd int
    EXEC @hr = sp_OACreate 'Chilkat.BinData', @bd OUT

    -- ...
    EXEC sp_OAMethod @crypt, 'EncryptBd', @success OUT, @bd

    -- Let's say we now want to encrypt something else with different certs..
    -- First clear the encryption certs.
    EXEC sp_OAMethod @crypt, 'ClearEncryptCerts', NULL

    DECLARE @cert4 int
    EXEC @hr = sp_OACreate 'Chilkat.Cert', @cert4 OUT

    -- ...
    EXEC sp_OAMethod @crypt, 'AddEncryptCert', NULL, @cert4

    DECLARE @cert5 int
    EXEC @hr = sp_OACreate 'Chilkat.Cert', @cert5 OUT

    -- ...
    EXEC sp_OAMethod @crypt, 'AddEncryptCert', NULL, @cert5

    -- ...
    -- ...

    -- Encrypt using cert4 and cert5.
    EXEC sp_OAMethod @crypt, 'EncryptBd', @success OUT, @bd

    EXEC @hr = sp_OADestroy @crypt
    EXEC @hr = sp_OADestroy @cert1
    EXEC @hr = sp_OADestroy @cert2
    EXEC @hr = sp_OADestroy @cert3
    EXEC @hr = sp_OADestroy @bd
    EXEC @hr = sp_OADestroy @cert4
    EXEC @hr = sp_OADestroy @cert5


END
GO