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