Sample code for 30+ languages & platforms
SQL Server

Verify and Unwrap PCKS7 Signed MIME

See more MIME Examples

Demonstrates calling the Verify method to verify and unwrap PKCS7 signed MIME. The MIME is restored to the original structure that it would have originally had prior to signing. The Verify method works with both detached signatures, as well as opaque/attached signatures.

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
    -- Important: Do not use nvarchar(max).  See the warning about using nvarchar(max).
    DECLARE @sTmp0 nvarchar(4000)
    DECLARE @success int
    SELECT @success = 0

    -- This example requires the Chilkat API to have been previously unlocked.
    -- See Global Unlock Sample for sample code.

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

    -- A PKCS7 signature usually embeds both the signing
    -- certificate with its public key.  Therefore, it is usually 
    -- possible to verify a signature without the need to 
    -- already have the certificate installed.

    -- Load the signed MIME from a file...
    EXEC sp_OAMethod @mime, 'LoadMimeFile', @success OUT, 'signedMime.txt'
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @mime, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @mime
        RETURN
      END

    -- Verify the signed MIME and restore the MIME
    -- to the structure/content it had prior to signing.
    DECLARE @verified int

    EXEC sp_OAMethod @mime, 'Verify', @verified OUT
    IF @verified = 0
      BEGIN
        EXEC sp_OAGetProperty @mime, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @mime
        RETURN
      END

    -- Examine the MIME after signature verification (i.e. "unwrapping")
    EXEC sp_OAMethod @mime, 'GetMime', @sTmp0 OUT
    PRINT @sTmp0

    EXEC @hr = sp_OADestroy @mime


END
GO