Sample code for 30+ languages & platforms
SQL Server

Use an XmlCertVault for S/MIME Operations

See more MIME Examples

Loads a CMS/PKCS #7 encrypted S/MIME message and decrypts it back to the original MIME content.

UseCertVault sets an XmlCertVault as the single active source of certificates and private keys for S/MIME encryption, decryption, signing, and verification.

The file paths are relative to the application's current working directory. Absolute paths may also be used. Supply the paths appropriate to your own environment.

Background. A certificate vault is a convenient container for one or more certificates and keys. Only one vault is active at a time; assigning a new vault replaces the previous one.

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 @sTmp0 nvarchar(4000)
    DECLARE @success int
    SELECT @success = 0

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

    EXEC sp_OAMethod @mime, 'LoadMimeFile', @success OUT, 'qa_data/encrypted.eml'
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @mime, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @mime
        RETURN
      END

    --  Use an XmlCertVault as the source of certificates and private keys for S/MIME operations.  The
    --  only argument is the vault.  Only one vault is active at a time.
    DECLARE @vault int
    EXEC @hr = sp_OACreate 'Chilkat.XmlCertVault', @vault OUT

    DECLARE @pfxPassword nvarchar(4000)
    SELECT @pfxPassword = 'myPfxPassword'
    EXEC sp_OAMethod @vault, 'AddPfxFile', @success OUT, 'qa_data/recipient.pfx', @pfxPassword
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @vault, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @mime
        EXEC @hr = sp_OADestroy @vault
        RETURN
      END

    EXEC sp_OAMethod @mime, 'UseCertVault', @success OUT, @vault
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @mime, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @mime
        EXEC @hr = sp_OADestroy @vault
        RETURN
      END

    --  Decryption (and signing/verification) now draws credentials from the vault.
    EXEC sp_OAMethod @mime, 'Decrypt', @success OUT
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @mime, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @mime
        EXEC @hr = sp_OADestroy @vault
        RETURN
      END

    PRINT 'Decrypted using the certificate vault.'

    EXEC @hr = sp_OADestroy @mime
    EXEC @hr = sp_OADestroy @vault


END
GO