Sample code for 30+ languages & platforms
SQL Server

HMAC SHA-1 Matching FIPS Examples

See more Encryption Examples

Provides an example of computing an HMAC-SHA1 digest to duplicate the FIPS examples at http://csrc.nist.gov/publications/fips/fips198/fips-198a.pdf

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
    -- This example assumes the Chilkat API to have been previously unlocked.
    -- See Global Unlock Sample for sample code.

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

    DECLARE @strToSign nvarchar(4000)
    SELECT @strToSign = 'Sample #1'

    -- 64-byte key
    DECLARE @key nvarchar(4000)
    SELECT @key = '000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f'

    -- The expected result:
    -- (from Appendix A.1 at http://csrc.nist.gov/publications/fips/fips198/fips-198a.pdf )
    DECLARE @expectedResult nvarchar(4000)
    SELECT @expectedResult = '4f4ca3d5d68ba7cc0a1208c9c61e9c5da0403c0a'

    -- Here is the code to duplicate the results:
    EXEC sp_OASetProperty @crypt, 'HashAlgorithm', 'sha-1'
    EXEC sp_OASetProperty @crypt, 'EncodingMode', 'hex'
    EXEC sp_OASetProperty @crypt, 'MacAlgorithm', 'hmac'

    DECLARE @success int
    EXEC sp_OAMethod @crypt, 'SetMacKeyEncoded', @success OUT, @key, 'hex'

    DECLARE @mac nvarchar(4000)

    EXEC sp_OAMethod @crypt, 'MacStringENC', @mac OUT, @strToSign


    PRINT 'Computed: ' + @mac

    PRINT 'Expected: ' + @expectedResult

    EXEC @hr = sp_OADestroy @crypt


END
GO