Sample code for 30+ languages & platforms
SQL Server

Generate an RSA Key and Export to XML

See more RSA Examples

Demonstrates how to generate an RSA key and export public/private to XML.

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

    DECLARE @rsa int
    EXEC @hr = sp_OACreate 'Chilkat.Rsa', @rsa OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    -- Generate a 2048-bit key.
    DECLARE @privKey int
    EXEC @hr = sp_OACreate 'Chilkat.PrivateKey', @privKey OUT

    EXEC sp_OAMethod @rsa, 'GenKey', @success OUT, 2048, @privKey
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @rsa, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @rsa
        EXEC @hr = sp_OADestroy @privKey
        RETURN
      END

    DECLARE @pubKey int
    EXEC @hr = sp_OACreate 'Chilkat.PublicKey', @pubKey OUT

    EXEC sp_OAMethod @privKey, 'ToPublicKey', @success OUT, @pubKey

    DECLARE @privKeyXml nvarchar(4000)
    EXEC sp_OAMethod @privKey, 'GetXml', @privKeyXml OUT

    PRINT @privKeyXml

    -- Sample output:

    -- <RSAKeyValue>
    -- 	<Modulus>pvxYRzbV8Gru5/NNFQunXkLfhUW9W83/A+LtVD5jhV5oDZ5mv9R3BbfBE88UTqGjA1jZoFegprY3dGpm7Dl0PFqIYSwfE869Tx7OGzg+ocsM3klTBslxVftN4grJzovfWeUbi22JNbOEjuvI9548OmTnIHhYI9yhl54xyIHUIRWCa6nlPNfqqFD/tscmel+2AwWM5hhylse2Q3xg1Y3D3al3BckGGvrBGjKAFoN60+kmD0mnisy0zfHRAiHH8EsqSXASXjqRa6G60jj+tRrdY5AcOrtWe7tsoHE8txGI+xZQ6g3MWelyNM6Dnb324hid8rNxj33lFiqbOkQGPvE9fw==</Modulus>
    -- 	<Exponent>AQAB</Exponent>
    -- 	<D>fsydqC3+lJpOoblBrhp0VAKJwqSrXpv06pmVx+O8JJkEgFrpAP+wBZp8NbOIYxEgPLlqP/RqXE1/nJnzX6tdFTtV1hvv2VWisQLeVRMHlEogkmaxcjTjJ/w1LtEsXvgdeSCdIunhR/LyVKi8qTLx3xGh5CkeHNU7q2sHuI7Favy0ux5JluKdrx4CSu30DKPhVvIoWTp4rif5lBBMojw7TEj2Gfbrfw8ZoPZRztjpqI8D4ZyxuFKrPEVWBNBt3yTE3TLWnlH1Me/5iwLgctLv+htDNStoKmco7t+xepusgALYachRaRe7bbVahDaQF/hOxKd00CpoetuasPjBP5yMaQ==</D>
    -- 	<P>wl6TQ35VGfpR4dk1I+7JeQVXMyD9McAIKrlQ0uGc2U5Ts7MXXaq0l+QI6/VPsf0jtuzRiT4+wmDUgWjaYpNUaBn1KI+F/gRdMgZcmEOOGUDiCCsWUO0hS5tlchyY9l8LoPXFbpdfNFsLEZDtIEeNMyRzBHcZABoXWN/yFqGsaEU=</P>
    -- 	<Q>2+74GkV4+1Dkxr/KGNZKfYaKEolaRRmjxeUj8VNLU9vKpaGXEgsi7208esH8KG5He1f8fJOIJtnRfUne/cg8vrqPRQ8nYDGSaNswPNQldji2FhNN2hWmhlQ3hS+ymTS8Dm8h1dqRVn/QQNvH8+WkcztmUNXKk3vtnc2UBakPdPM=</Q>
    -- 	<DP>ar3zk9JSPBT7WNOnWldtr5eePsb0JZk3Ivdoipc6QyC/2OUWhOsViIDD4YlzveSt82x02jEj2C3DJlqF7DLK3Oy8dQz04f5Vi/5wZXJcHEREnYXEGKdRbKsneBZ6bnrd8QRn64cX0rHZD0mO3/ZLdfWjcKVTRnoNrlI2KfWZsB0=</DP>
    -- 	<DQ>TvJgAuYvQF9QT/umavX5NUfnJjJBwg4rGK1hEo5oushp3Ly9gs+WkcVvcU1S25yCckcqLfmzZObJaSTsM8L98yT6qrp+0uvYd2U+0ocAj4hZ7GCvkHo3FX8Dkv6FKLOiUbgYuDBF/XvR4IZEJ0umlWqcFqY3mmtg50VVPhbqons=</DQ>
    -- 	<InverseQ>W7bC5ZD55dv6XqmfHDVuUoI8IZQVnM1M1BtA5+tTFXxPT29ZUov7wOh+5R2nygUqkJfiNAC0s18tPiv7HoQXHxIskI2tXT3XM9yJdZOnAXCzV+xh+zeenBVTD63PvpNpC9Obrxd1rpBi2jTIFESgD0Cn5CKEIUpXIGntaNLLgDI=</InverseQ>
    -- </RSAKeyValue>

    DECLARE @pubKeyXml nvarchar(4000)
    EXEC sp_OAMethod @pubKey, 'GetXml', @pubKeyXml OUT

    PRINT @pubKeyXml

    -- Sample output:
    -- <RSAPublicKey>
    -- 	<Modulus>pvxYRzbV8Gru5/NNFQunXkLfhUW9W83/A+LtVD5jhV5oDZ5mv9R3BbfBE88UTqGjA1jZoFegprY3dGpm7Dl0PFqIYSwfE869Tx7OGzg+ocsM3klTBslxVftN4grJzovfWeUbi22JNbOEjuvI9548OmTnIHhYI9yhl54xyIHUIRWCa6nlPNfqqFD/tscmel+2AwWM5hhylse2Q3xg1Y3D3al3BckGGvrBGjKAFoN60+kmD0mnisy0zfHRAiHH8EsqSXASXjqRa6G60jj+tRrdY5AcOrtWe7tsoHE8txGI+xZQ6g3MWelyNM6Dnb324hid8rNxj33lFiqbOkQGPvE9fw==</Modulus>
    -- 	<Exponent>AQAB</Exponent>
    -- </RSAPublicKey>

    EXEC @hr = sp_OADestroy @rsa
    EXEC @hr = sp_OADestroy @privKey
    EXEC @hr = sp_OADestroy @pubKey


END
GO