SQL Server
SQL Server
Verfies an RSA Signature
See more Apple Keychain Examples
Verifies an RSA signature against the original data.Chilkat 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
-- Important: Do not use nvarchar(max). See the warning about using nvarchar(max).
DECLARE @sTmp0 nvarchar(4000)
DECLARE @success int
SELECT @success = 0
-- The following data was signed by the following example:
-- RSA Sign using a Private Key on a USB Token or Smartcard
DECLARE @bd int
EXEC @hr = sp_OACreate 'Chilkat.BinData', @bd OUT
IF @hr <> 0
BEGIN
PRINT 'Failed to create ActiveX component'
RETURN
END
DECLARE @i int
SELECT @i = 0
WHILE @i <= 100
BEGIN
EXEC sp_OAMethod @bd, 'AppendEncoded', @success OUT, '000102030405060708090A0B0C0D0E0F', 'hex'
SELECT @i = @i + 1
END
-- Load the signature
DECLARE @bdSig int
EXEC @hr = sp_OACreate 'Chilkat.BinData', @bdSig OUT
EXEC sp_OAMethod @bdSig, 'LoadFile', @success OUT, 'rsaSignatures/test1.sig'
IF @success = 0
BEGIN
PRINT 'Failed to load the RSA signature'
EXEC @hr = sp_OADestroy @bd
EXEC @hr = sp_OADestroy @bdSig
RETURN
END
-- Get the public key to be used for signature verification.
DECLARE @pubKey int
EXEC @hr = sp_OACreate 'Chilkat.PublicKey', @pubKey OUT
EXEC sp_OAMethod @pubKey, 'LoadFromFile', @success OUT, 'rsaKeys/chilkat-rsa-2048.pem'
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @pubKey, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @bd
EXEC @hr = sp_OADestroy @bdSig
EXEC @hr = sp_OADestroy @pubKey
RETURN
END
DECLARE @rsa int
EXEC @hr = sp_OACreate 'Chilkat.Rsa', @rsa OUT
EXEC sp_OAMethod @rsa, 'UsePublicKey', @success OUT, @pubKey
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @rsa, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @bd
EXEC @hr = sp_OADestroy @bdSig
EXEC @hr = sp_OADestroy @pubKey
EXEC @hr = sp_OADestroy @rsa
RETURN
END
-- Verify the hash of the data against the signature.
-- We pass in the original data. Internally, the hash is generated
-- and used to validate the signature.
-- Validating the RSA signature means two things:
-- (1) the original data is exactly what was signed, and
-- (2) it was signed by the owner of the RSA private key.
EXEC sp_OAMethod @rsa, 'VerifyBd', @success OUT, @bd, 'sha256', @bdSig
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @rsa, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
PRINT 'Signature invalid.'
END
ELSE
BEGIN
PRINT 'Signature valid.'
END
EXEC @hr = sp_OADestroy @bd
EXEC @hr = sp_OADestroy @bdSig
EXEC @hr = sp_OADestroy @pubKey
EXEC @hr = sp_OADestroy @rsa
END
GO