SQL Server
SQL Server
Verify an RSA Signature Against the Signed String
See more Apple Keychain Examples
Demonstrates how to validate an RSA Signature against the string that was signed.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
-- Create the same string we previously signed in this example:
-- RSA Sign utf-8 Bytes of String to get Base64 RSA Signature
DECLARE @sb int
EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sb OUT
IF @hr <> 0
BEGIN
PRINT 'Failed to create ActiveX component'
RETURN
END
DECLARE @crlfLineEnding int
SELECT @crlfLineEnding = 1
DECLARE @i int
SELECT @i = 0
WHILE @i <= 10
BEGIN
EXEC sp_OAMethod @sb, 'AppendLine', @success OUT, 'This is a test.', @crlfLineEnding
SELECT @i = @i + 1
END
DECLARE @base64_rsa_sig nvarchar(4000)
SELECT @base64_rsa_sig = 'gWgpEXQqvXN6wh0MuFXPiw2xCb8cnmdizBT1TD1Tpm2GlJ8gnD59DGSj35GGXk1tM+mCOvMa2uW/9gmz8p6A90JLbn918i/2wKGvcde4wXnzPO7JADSNn2UwYzf3rp4/q/JrHv1GZETRJhABSFqTxOgdmdbEJQE/zijOSctCtQAM2CTb6t2BO8uHKSSUAwPH2cbeWxqsaVRLT4ruk5nZOxhoLgLMSjupiSzbE8zSTkkFOEHD+Mbb2xwg85AI0E4DsUnp+hLwwtS0blesgSyvtBY8oJODJeFcJsR7JDOTPdzHQHgJRl/2A4ij5xT91TpXy7ok43jhT6O9j7Q3qrafIQ=='
-- 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 @sb
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 @sb
EXEC @hr = sp_OADestroy @pubKey
EXEC @hr = sp_OADestroy @rsa
RETURN
END
-- Verify the string against the signature.
-- We signed the utf-8 byte representation of the string, so we must indicate
-- to also validate against the utf-8 byte representation.
EXEC sp_OASetProperty @rsa, 'Charset', 'utf-8'
EXEC sp_OASetProperty @rsa, 'EncodingMode', 'base64'
DECLARE @signedString nvarchar(4000)
EXEC sp_OAMethod @sb, 'GetAsString', @signedString OUT
EXEC sp_OAMethod @rsa, 'VerifyStringENC', @success OUT, @signedString, 'sha256', @base64_rsa_sig
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 @sb
EXEC @hr = sp_OADestroy @pubKey
EXEC @hr = sp_OADestroy @rsa
END
GO