Sample code for 30+ languages & platforms
SQL Server

Generate an RSA Key and Save to Encrypted PEM

See more RSA Examples

Demonstrates how to generate an RSA key and save to an encrypted PEM file.

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 @password nvarchar(4000)
    SELECT @password = 'secret'
    -- Saving to a relative path (from the current working directory of the process).
    DECLARE @path nvarchar(4000)
    SELECT @path = 'rsaKeys/myTestRsaPrivate.pem'
    -- Encrypt the PEM using 256-bit AES encryption.
    EXEC sp_OASetProperty @privKey, 'Pkcs8EncryptAlg', 'aes256'
    EXEC sp_OAMethod @privKey, 'SavePkcs8EncryptedPemFile', @success OUT, @password, @path
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @privKey, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @rsa
        EXEC @hr = sp_OADestroy @privKey
        RETURN
      END

    -- image

    -- We can also save the public key.
    -- There is no need to encrypt public keys.
    DECLARE @pubKey int
    EXEC @hr = sp_OACreate 'Chilkat.PublicKey', @pubKey OUT

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

    SELECT @path = 'rsaKeys/myTestRsaPublic.pem'
    -- Choose PKCS1 or PKCS8
    -- We'll choose PKCS8.
    DECLARE @preferPkcs1 int
    SELECT @preferPkcs1 = 0
    EXEC sp_OAMethod @pubKey, 'SavePemFile', @success OUT, @preferPkcs1, @path
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @pubKey, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @rsa
        EXEC @hr = sp_OADestroy @privKey
        EXEC @hr = sp_OADestroy @pubKey
        RETURN
      END

    -- image


    PRINT 'Success.'

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


END
GO