Sample code for 30+ languages & platforms
SQL Server

Write PKCS1 or PKCS8 Public Key PEM

See more PEM Examples

Demonstrates how to write either PKCS1 or PKCS8 format PEM files. PKCS1 public keys have this PEM format:
-----BEGIN RSA PUBLIC KEY-----
BASE64 ENCODED DATA
-----END RSA PUBLIC KEY-----
PKCS8 public keys have this PEM format:
-----BEGIN PUBLIC KEY-----
BASE64 ENCODED DATA
-----END PUBLIC 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.

    SELECT @success = 0

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

    -- Load a public key from a PEM file.
    -- (Assume the PEM contains at least one public key..)
    EXEC sp_OAMethod @pem, 'LoadPemFile', @success OUT, '/Users/chilkat/testData/pem/myPublicKey.pem'
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @pem, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @pem
        RETURN
      END

    DECLARE @i int

    DECLARE @numPublicKeys int
    EXEC sp_OAGetProperty @pem, 'NumPublicKeys', @numPublicKeys OUT
    IF @numPublicKeys = 0
      BEGIN

        PRINT ('Error: Expected the PEM to contain public keys.')
        EXEC @hr = sp_OADestroy @pem
        RETURN
      END

    -- Get each public key as PEM, first in PKCS1 format, then in PKCS8.
    SELECT @i = 1
    WHILE @i <= @numPublicKeys
      BEGIN

        -- First output to PKCS1 PEM format:

        PRINT 'This is PKCS1 format:'
        EXEC sp_OASetProperty @pem, 'PublicKeyFormat', 'pkcs1'
        EXEC sp_OAMethod @pem, 'ToPem', @sTmp0 OUT
        PRINT @sTmp0

        -- Now PKCS8 PEM format:

        PRINT 'This is PKCS8 format:'
        EXEC sp_OASetProperty @pem, 'PublicKeyFormat', 'pkcs8'
        EXEC sp_OAMethod @pem, 'ToPem', @sTmp0 OUT
        PRINT @sTmp0

        SELECT @i = @i + 1
      END

    EXEC @hr = sp_OADestroy @pem


END
GO