Sample code for 30+ languages & platforms
SQL Server

Generate RSA Public/Private Key

See more RSA Examples

_LANGUAGE_ example code showing how to generate an RSA public/private key.

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

    -- This example assumes the Chilkat API to have been previously unlocked.
    -- See Global Unlock Sample for sample code.

    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.  Chilkat RSA supports
    -- key sizes ranging from 512 bits to 8192 bits.
    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

    EXEC sp_OAMethod @privKey, 'GetPkcs8Pem', @sTmp0 OUT
    PRINT @sTmp0

    EXEC sp_OAMethod @pubKey, 'GetPem', @sTmp0 OUT, 0
    PRINT @sTmp0

    -- Sample output:

    -- -----BEGIN PRIVATE KEY-----
    -- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQD0SwWmX222gCpW
    -- ue75Q3VicOSXlTW0YNVksW8oGLS8x/SI5ZUqVMLIl2gsF1drEg2b+lvfeB7l2hwo
    -- UUCK0x2L2qv8hs4zrHmrrCi5xHHG7kpQAoi2PTodWvKvr9m7+n+nFcwOMrY0+qZM
    -- oYUg85yde3tWek5ouj4v1ZC9lbsozTrl2aIm/nD+o1PXg/V7CL2owbS+UG0iRz0C
    -- IYwn8hNEEe3/Uzw2oq7Gt37jOTYB21jX9RSgt0v90ifaQeXR6uiuuaJLRVunJXrd
    -- lJ9QvJh8xYuyEhJO5cChtn2AcSSxm417O4vJzBSHKKAn+EA/YIs74UsYTZojG5x/
    -- ptA3GDzhAgMBAAECggEBAIC4Vw3HEqQq/CQebJDivqNUIN7OPDIDI+2eoJdcDT+7
    -- jFnlvqdDai8PuFAjLGi6ZnldfbNOM9mhB10nEv8TJmpemmjBDz2jD6kpWXwoylqr
    -- jHSEIU0FDe4R0fZIjk3CPCjqD08b4W4g9CdEpEUsl8VTHzX90/rSx5mkylNa5fck
    -- xOf7V4W3L0OC+J0zKFiAQtI1abf+7x5rsnoi8sJ90v4wWWaXtMxHAZRLZxY2FtV3
    -- BbydbTqU+UC8T2+4ga+J549k9QomZ8zUhxe22jTBcKcIE+cGK5CLN8fJJ1GZWiB9
    -- JYOmeTat7N6SrpqdTsjqF2+Y6s5lt+B1yI6Fg2069MECgYEA/VYd3xZgqEjM1095
    -- zEce1eNujk+QGRfQv/9ToF8/jdJAvJQStagupIAHH0+iLnQGIZKLS0AxTJqlz0be
    -- r+0+8bs2whiuCvNF6U/pfslMUdlkOlY38lhdL3IqVOcf4douGEPI1BJlJraJFxea
    -- 49SeWJLY23Yb1j3yvCWTmBP6q8UCgYEA9tyQcRCRDis4V7NGwvWi8v3BBHf/lgo0
    -- ac+676DWqHco4cbu1ZVkyM5Y3rgsgX5APeqPhaXlivvv8LLhUSydUoquhdHlBeRi
    -- XxTBj4aNNRwBfC9x9keOaBBBhughwgrDcEnGL6/B/6mpXydY0El7DmGf1G5x46NY
    -- jUoqVa54Um0CgYAI8eN4HwgmqPtiltHMHq6+Cpu6tqB14ltijBdd0D8kOMpEXk4S
    -- z+9lq4eU2XD2hu44fT4h2BBljghQu0XdnFjenCegztJGXLSZOlMaQO1K7owVaznq
    -- eqg/pp5MBSUhCl0aSjprEoMzzLomcJTtenJk2jqB9TeiZumNLx54/iuZqQKBgDjp
    -- bq9yV07B7hJh9W1a/f8xOz+Rfq4TmjPOvVUjanmaRyWOHF/HOl4FHH30TeZoudzM
    -- Z9wy+/GH1bBTPRjexUJTUJrvYfJyza8H9Pvm1EUrOLhto8NYid856DF28Nlwa9BG
    -- Ydd6mKodbjvOsW4LksAlB5kNAVquvOqN76ajO4AdAoGBAMXWdg9VFObBklLTRs81
    -- LgtLd9brWpRUHYkH8Ctw2bgyHuel26HVghWWy7JxU308uWL6ZrSXv7Qlsw7iYYwP
    -- m8BwjxUTfwTpqHfIi5sjeL6IeNiUPesqyT4B7J7ssmzYf8bedwN7TsrrY+169Ud3
    -- tC1UNW1BQbHh4RnyusT93Z71
    -- -----END PRIVATE KEY-----
    -- 
    -- -----BEGIN PUBLIC KEY-----
    -- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA9EsFpl9ttoAqVrnu+UN1
    -- YnDkl5U1tGDVZLFvKBi0vMf0iOWVKlTCyJdoLBdXaxINm/pb33ge5docKFFAitMd
    -- i9qr/IbOM6x5q6woucRxxu5KUAKItj06HVryr6/Zu/p/pxXMDjK2NPqmTKGFIPOc
    -- nXt7VnpOaLo+L9WQvZW7KM065dmiJv5w/qNT14P1ewi9qMG0vlBtIkc9AiGMJ/IT
    -- RBHt/1M8NqKuxrd+4zk2AdtY1/UUoLdL/dIn2kHl0erorrmiS0VbpyV63ZSfULyY
    -- fMWLshISTuXAobZ9gHEksZuNezuLycwUhyigJ/hAP2CLO+FLGE2aIxucf6bQNxg8
    -- 4QIDAQAB
    -- -----END PUBLIC KEY-----

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


END
GO