SQL Server
SQL Server
Convert DSA PEM Private Key to DER
See more DSA Examples
Converts a DSA private key from PEM format to DER. The first part of the example will convert an unencrypted PEM to DER, then 2nd part will convert an encrypted PEM to unencrypted DER.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 requires the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.
DECLARE @dsa int
EXEC @hr = sp_OACreate 'Chilkat.Dsa', @dsa OUT
IF @hr <> 0
BEGIN
PRINT 'Failed to create ActiveX component'
RETURN
END
-- Load a PEM private key.
DECLARE @pemPrivateKey nvarchar(4000)
EXEC sp_OAMethod @dsa, 'LoadText', @pemPrivateKey OUT, 'dsa_priv.pem'
-- Import the unencrypted PEM into the DSA object.
EXEC sp_OAMethod @dsa, 'FromPem', @success OUT, @pemPrivateKey
IF @success <> 1
BEGIN
EXEC sp_OAGetProperty @dsa, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @dsa
RETURN
END
-- Write it out as a DER file:
EXEC sp_OAMethod @dsa, 'ToDerFile', @success OUT, 'dsa_priv.der'
IF @success <> 1
BEGIN
EXEC sp_OAGetProperty @dsa, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @dsa
RETURN
END
-- Load an encrypted PEM private key.
EXEC sp_OAMethod @dsa, 'LoadText', @pemPrivateKey OUT, 'dsa_privEncrypted.pem'
-- Import the encrypted PEM into the DSA object.
EXEC sp_OAMethod @dsa, 'FromEncryptedPem', @success OUT, 'myPassword', @pemPrivateKey
IF @success <> 1
BEGIN
EXEC sp_OAGetProperty @dsa, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @dsa
RETURN
END
-- Write it out as an unencrypted DER file:
EXEC sp_OAMethod @dsa, 'ToDerFile', @success OUT, 'dsa_priv2.der'
IF @success <> 1
BEGIN
EXEC sp_OAGetProperty @dsa, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @dsa
RETURN
END
PRINT 'Finished!'
EXEC @hr = sp_OADestroy @dsa
END
GO