SQL Server
SQL Server
Load JWK into PublicKey Object
See more JSON Web Signatures (JWS) Examples
Demonstrates how to load a Java Web Key (JWK) into a Chilkat public key object.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
-- Imagine we have this JWK:
-- {
-- "kty":"RSA",
-- "kid":"bilbo.baggins@hobbiton.example",
-- "use":"sig",
-- "n":"26381066103266289976070039679240841999340706859156341823971393693544846472963839705790075117105560154606562987481050889935247188300178764426769543782451174831475924241862817098997865881169498995546309260357488285676768114714548754913374731868063116787903918383610614912211576698081222844057810710088656983077876282582286966085572172471849443305250452393766960762340311496052418952315081937000716222751229644449475751932222180738210988190709824209639002026650048655399108647971010890335494074025258268035713167380057822555485524738518699437692145859633592396626258745090144803752145540471688039673495588314804430463791",
-- "e":"65537"
-- }
--
DECLARE @sbJwk int
EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbJwk OUT
IF @hr <> 0
BEGIN
PRINT 'Failed to create ActiveX component'
RETURN
END
EXEC sp_OAMethod @sbJwk, 'LoadFile', @success OUT, 'qa_data/jwk/simple_jwk_rsa.json', 'utf-8'
IF @success <> 1
BEGIN
PRINT 'Failed to load simple JWK file.'
EXEC @hr = sp_OADestroy @sbJwk
RETURN
END
-- Loading it into a Chilkat public key object is easy:
DECLARE @pubkey int
EXEC @hr = sp_OACreate 'Chilkat.PublicKey', @pubkey OUT
EXEC sp_OAMethod @sbJwk, 'GetAsString', @sTmp0 OUT
EXEC sp_OAMethod @pubkey, 'LoadFromString', @success OUT, @sTmp0
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @pubkey, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @sbJwk
EXEC @hr = sp_OADestroy @pubkey
RETURN
END
PRINT 'Simple JWK loaded into public key object.'
-- ----------------------------------------------------------------------------------------------------------
-- Demonstrate how to load a JWK that is contained within JSON into a public key object.
-- {
-- "alg":"RS256",
-- "jwk": {
-- "kty":"RSA",
-- "kid":"bilbo.baggins@hobbiton.example",
-- "use":"sig",
-- "n":"26381066103266289976070039679240841999340706859156341823971393693544846472963839705790075117105560154606562987481050889935247188300178764426769543782451174831475924241862817098997865881169498995546309260357488285676768114714548754913374731868063116787903918383610614912211576698081222844057810710088656983077876282582286966085572172471849443305250452393766960762340311496052418952315081937000716222751229644449475751932222180738210988190709824209639002026650048655399108647971010890335494074025258268035713167380057822555485524738518699437692145859633592396626258745090144803752145540471688039673495588314804430463791",
-- "e":"65537"
-- }
-- }
DECLARE @sbJwk2 int
EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbJwk2 OUT
EXEC sp_OAMethod @sbJwk2, 'LoadFile', @success OUT, 'qa_data/jwk/contained_jwk_rsa.json', 'utf-8'
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @sbJwk2, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @sbJwk
EXEC @hr = sp_OADestroy @pubkey
EXEC @hr = sp_OADestroy @sbJwk2
RETURN
END
-- Get the "jwk" part of the JSON..
DECLARE @json int
EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @json OUT
EXEC sp_OAMethod @sbJwk2, 'GetAsString', @sTmp0 OUT
EXEC sp_OAMethod @json, 'Load', @success OUT, @sTmp0
DECLARE @jsonJwk int
EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @jsonJwk OUT
EXEC sp_OAMethod @json, 'ObjectOf2', @success OUT, 'jwk', @jsonJwk
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @json, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @sbJwk
EXEC @hr = sp_OADestroy @pubkey
EXEC @hr = sp_OADestroy @sbJwk2
EXEC @hr = sp_OADestroy @json
EXEC @hr = sp_OADestroy @jsonJwk
RETURN
END
DECLARE @pubkey2 int
EXEC @hr = sp_OACreate 'Chilkat.PublicKey', @pubkey2 OUT
EXEC sp_OAMethod @jsonJwk, 'Emit', @sTmp0 OUT
EXEC sp_OAMethod @pubkey2, 'LoadFromString', @success OUT, @sTmp0
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @pubkey2, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @sbJwk
EXEC @hr = sp_OADestroy @pubkey
EXEC @hr = sp_OADestroy @sbJwk2
EXEC @hr = sp_OADestroy @json
EXEC @hr = sp_OADestroy @jsonJwk
EXEC @hr = sp_OADestroy @pubkey2
RETURN
END
PRINT 'Contained JWK loaded into public key object.'
EXEC @hr = sp_OADestroy @sbJwk
EXEC @hr = sp_OADestroy @pubkey
EXEC @hr = sp_OADestroy @sbJwk2
EXEC @hr = sp_OADestroy @json
EXEC @hr = sp_OADestroy @jsonJwk
EXEC @hr = sp_OADestroy @pubkey2
END
GO