Sample code for 30+ languages & platforms
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

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
    -- 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