SQL Server
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.pdfChilkat SQL Server Downloads
-- 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