SQL Server
SQL Server
Load RSA Public Key from Hex Modulus and Exponent
See more RSA Examples
Load an RSA public key from a hex modulus and exponent.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
-- Load a 128-byte (1024-bit) modulus + exponent into a Chilkat public key object..
DECLARE @modulus nvarchar(4000)
SELECT @modulus = 'BF5F4AF9A018B5F324A0C10448C0D3248D9BE78967FDC551A27876AC5789ADCBA8245D3D942AE3799563D895DA801E765D225A54FA15DAB2C4731DD817DCF94A9AD62197074C2349442093A206234BF3747F0E88AA6F538355684CC1FB26FCE029C9050A1DAF9F507C2BABF6EFC9FB16320C8036721BE0279FBB76122C41E429'
DECLARE @exponent nvarchar(4000)
SELECT @exponent = '00000003'
-- We'll need to re-encode from hex to base64..
DECLARE @bdModulus int
EXEC @hr = sp_OACreate 'Chilkat.BinData', @bdModulus OUT
IF @hr <> 0
BEGIN
PRINT 'Failed to create ActiveX component'
RETURN
END
EXEC sp_OAMethod @bdModulus, 'AppendEncoded', @success OUT, @modulus, 'hex'
DECLARE @bdExponent int
EXEC @hr = sp_OACreate 'Chilkat.BinData', @bdExponent OUT
EXEC sp_OAMethod @bdExponent, 'AppendEncoded', @success OUT, @exponent, 'hex'
DECLARE @xml int
EXEC @hr = sp_OACreate 'Chilkat.Xml', @xml OUT
EXEC sp_OASetProperty @xml, 'Tag', 'RsaKeyValue'
EXEC sp_OAMethod @bdModulus, 'GetEncoded', @sTmp0 OUT, 'base64'
EXEC sp_OAMethod @xml, 'NewChild2', NULL, 'Modulus', @sTmp0
EXEC sp_OAMethod @bdExponent, 'GetEncoded', @sTmp0 OUT, 'base64'
EXEC sp_OAMethod @xml, 'NewChild2', NULL, 'Exponent', @sTmp0
-- Now load into the pubkey object..
DECLARE @pubkey int
EXEC @hr = sp_OACreate 'Chilkat.PublicKey', @pubkey OUT
EXEC sp_OAMethod @xml, 'GetXml', @sTmp0 OUT
EXEC sp_OAMethod @pubkey, 'LoadFromString', @success OUT, @sTmp0
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @pubkey, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @bdModulus
EXEC @hr = sp_OADestroy @bdExponent
EXEC @hr = sp_OADestroy @xml
EXEC @hr = sp_OADestroy @pubkey
RETURN
END
PRINT 'Success.'
EXEC @hr = sp_OADestroy @bdModulus
EXEC @hr = sp_OADestroy @bdExponent
EXEC @hr = sp_OADestroy @xml
EXEC @hr = sp_OADestroy @pubkey
END
GO