Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(SQL Server) Get RSA Public Key in JWK Format (JSON Web Key)Demonstrates how to get an RSA public key in JWK (JSON Web Key) format. Note: This example requires Chilkat v9.5.0.66 or later.
-- 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) -- Note: This example requires Chilkat v9.5.0.66 or later. -- Load a PEM file into memory. DECLARE @sbPem int -- Use "Chilkat_9_5_0.StringBuilder" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbPem OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END DECLARE @success int EXEC sp_OAMethod @sbPem, 'LoadFile', @success OUT, 'qa_data/pem/rsa_public.pem', 'utf-8' IF @success <> 1 BEGIN PRINT 'Failed to load PEM file.' EXEC @hr = sp_OADestroy @sbPem RETURN END -- Load the PEM into a public key object. DECLARE @pubKey int -- Use "Chilkat_9_5_0.PublicKey" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.PublicKey', @pubKey OUT EXEC sp_OAMethod @sbPem, 'GetAsString', @sTmp0 OUT EXEC sp_OAMethod @pubKey, 'LoadFromString', @success OUT, @sTmp0 IF @success <> 1 BEGIN EXEC sp_OAGetProperty @pubKey, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @sbPem EXEC @hr = sp_OADestroy @pubKey RETURN END -- Get the public key in JWK format: DECLARE @jwk nvarchar(4000) EXEC sp_OAMethod @pubKey, 'GetJwk', @jwk OUT -- The GetJwk method will return the JWK in the most compact JSON format possible, -- as a single line with no extra whitespace. To get a more human-readable JWK (for this example), -- load into a Chilkat JSON object and emit non-compact: DECLARE @json int -- Use "Chilkat_9_5_0.JsonObject" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @json OUT EXEC sp_OAMethod @json, 'Load', @success OUT, @jwk EXEC sp_OASetProperty @json, 'EmitCompact', 0 PRINT 'RSA Public Key in JWK format:' EXEC sp_OAMethod @json, 'Emit', @sTmp0 OUT PRINT @sTmp0 -- Sample output: -- { -- "kty": "RSA", -- "n": "33TqqLR3eeUmDtHS89qF3p4MP7Wfqt2Zjj3lZjLjjCGDvwr9cJNlNDiuKboODgUiT4ZdPWbOiMAfDcDzlOxA04DDnEFGAf-kDQiNSe2ZtqC7bnIc8-KSG_qOGQIVaay4Ucr6ovDkykO5Hxn7OU7sJp9TP9H0JH8zMQA6YzijYH9LsupTerrY3U6zyihVEDXXOv08vBHk50BMFJbE9iwFwnxCsU5-UZUZYw87Uu0n4LPFS9BT8tUIvAfnRXIEWCha3KbFWmdZQZlyrFw0buUEf0YN3_Q0auBkdbDR_ES2PbgKTJdkjc_rEeM0TxvOUf7HuUNOhrtAVEN1D5uuxE1WSw", -- "e": "AQAB" -- } -- Additional information can be added like this: EXEC sp_OAMethod @json, 'AppendString', @success OUT, 'use', 'enc' EXEC sp_OAMethod @json, 'AppendString', @success OUT, 'kid', '123ABC' -- Now examine the JSON: EXEC sp_OAMethod @json, 'Emit', @sTmp0 OUT PRINT @sTmp0 -- { -- "kty": "RSA", -- "n": "33TqqLR3eeUmDtHS89qF3p4MP7Wfqt2Zjj3lZjLjjCGDvwr9cJNlNDiuKboODgUiT4ZdPWbOiMAfDcDzlOxA04DDnEFGAf-kDQiNSe2ZtqC7bnIc8-KSG_qOGQIVaay4Ucr6ovDkykO5Hxn7OU7sJp9TP9H0JH8zMQA6YzijYH9LsupTerrY3U6zyihVEDXXOv08vBHk50BMFJbE9iwFwnxCsU5-UZUZYw87Uu0n4LPFS9BT8tUIvAfnRXIEWCha3KbFWmdZQZlyrFw0buUEf0YN3_Q0auBkdbDR_ES2PbgKTJdkjc_rEeM0TxvOUf7HuUNOhrtAVEN1D5uuxE1WSw", -- "e": "AQAB", -- "use": "enc", -- "kid": "123ABC" -- } EXEC @hr = sp_OADestroy @sbPem EXEC @hr = sp_OADestroy @pubKey EXEC @hr = sp_OADestroy @json END GO |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.