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
(DataFlex) Validate a JWS Using ECDSA P-521 SHA-512Validates a JSON Web Signature (JWS) that uses ECDSA P-521 SHA-512 Note: This example requires Chilkat v9.5.0.66 or greater.
Use ChilkatAx-win32.pkg Procedure Test Handle hoSbPubKey Boolean iSuccess Variant vPubKey Handle hoPubKey Boolean iSuccess Handle hoJws Integer iSignatureIndex Variant vSbJws Handle hoSbJws Integer v Variant vJoseHeader Handle hoJoseHeader String sTemp1 Boolean bTemp1 // This requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. // Note: This example requires Chilkat v9.5.0.66 or greater. // This example takes a JSON signature in compact serialization format, // and uses an ECDSA public key to validate and recover the protected header and payload. // We only need a public key for signature validation. This is the ECDSA public key // that is used: // {"kty":"EC", // "crv":"P-521", // "x":"AekpBQ8ST8a8VcfVOTNl353vSrDCLLJXmPk06wTjxrrjcBpXp5EOnYG_NjFZ6OvLFV1jSfS9tsz4qUxcWceqwQGk", // "y":"ADSmRA43Z1DSNx_RvcLI87cdL07l6jQyyBXMoxVg_l2Th-x3S1WDhjDly79ajL4Kkd0AZMaZmh9ubmf63e3kyMj2" // } Get Create (RefClass(cComChilkatStringBuilder)) To hoSbPubKey If (Not(IsComObjectCreated(hoSbPubKey))) Begin Send CreateComObject of hoSbPubKey End Get ComAppend Of hoSbPubKey '{"kty":"EC",' To iSuccess Get ComAppend Of hoSbPubKey '"crv":"P-521",' To iSuccess Get ComAppend Of hoSbPubKey '"x":"AekpBQ8ST8a8VcfVOTNl353vSrDCLLJXmPk06wTjxrrjcBpXp5EOnYG_NjFZ6OvLFV1jSfS9tsz4qUxcWceqwQGk",' To iSuccess Get ComAppend Of hoSbPubKey '"y":"ADSmRA43Z1DSNx_RvcLI87cdL07l6jQyyBXMoxVg_l2Th-x3S1WDhjDly79ajL4Kkd0AZMaZmh9ubmf63e3kyMj2"' To iSuccess Get ComAppend Of hoSbPubKey "}" To iSuccess Get Create (RefClass(cComChilkatPublicKey)) To hoPubKey If (Not(IsComObjectCreated(hoPubKey))) Begin Send CreateComObject of hoPubKey End Get ComGetAsString Of hoSbPubKey To sTemp1 Get ComLoadFromString Of hoPubKey sTemp1 To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoPubKey To sTemp1 Showln sTemp1 Procedure_Return End Get Create (RefClass(cComChilkatJws)) To hoJws If (Not(IsComObjectCreated(hoJws))) Begin Send CreateComObject of hoJws End // Set the ECC public key: Move 0 To iSignatureIndex Get pvComObject of hoPubKey to vPubKey Get ComSetPublicKey Of hoJws iSignatureIndex vPubKey To iSuccess // Load the JWS. Get Create (RefClass(cComChilkatStringBuilder)) To hoSbJws If (Not(IsComObjectCreated(hoSbJws))) Begin Send CreateComObject of hoSbJws End Get ComAppend Of hoSbJws "eyJhbGciOiJFUzUxMiJ9" To iSuccess Get ComAppend Of hoSbJws "." To iSuccess Get ComAppend Of hoSbJws "UGF5bG9hZA" To iSuccess Get ComAppend Of hoSbJws "." To iSuccess Get ComAppend Of hoSbJws "AdwMgeerwtHoh-l192l60hp9wAHZFVJbLfD_UxMi70cwnZOYaRI1bKPWROc-mZZq" To iSuccess Get ComAppend Of hoSbJws "wqT2SI-KGDKB34XO0aw_7XdtAG8GaSwFKdCAPZgoXD2YBJZCPEX3xKpRwcdOO8Kp" To iSuccess Get ComAppend Of hoSbJws "EHwJjyqOgzDO7iKvU8vcnwNrmxYbSW9ERBXukOXolLzeO_Jn" To iSuccess Get pvComObject of hoSbJws to vSbJws Get ComLoadJwsSb Of hoJws vSbJws To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoJws To sTemp1 Showln sTemp1 Procedure_Return End // Validate the 1st (and only) signature at index 0.. Get ComValidate Of hoJws iSignatureIndex To v If (v < 0) Begin // Perhaps Chilkat was not unlocked or the trial expired.. Showln "Method call failed for some other reason." Get ComLastErrorText Of hoJws To sTemp1 Showln sTemp1 Procedure_Return End If (v = 0) Begin Showln "Invalid signature. The ECC key was incorrect, the JWS was invalid, or both." Procedure_Return End // If we get here, the signature was validated.. Showln "Signature validated." Showln "--" // Recover the original content: Showln "Recovered content:" Get ComGetPayload Of hoJws "utf-8" To sTemp1 Showln sTemp1 Showln "--" // Examine the protected header: Get ComGetProtectedHeader Of hoJws iSignatureIndex To vJoseHeader If (IsComObject(vJoseHeader)) Begin Get Create (RefClass(cComChilkatJsonObject)) To hoJoseHeader Set pvComObject Of hoJoseHeader To vJoseHeader End Get ComLastMethodSuccess Of hoJws To bTemp1 If (bTemp1 <> True) Begin Showln "No protected header found at the given index." Procedure_Return End Set ComEmitCompact Of hoJoseHeader To False Showln "Protected (JOSE) header:" Get ComEmit Of hoJoseHeader To sTemp1 Showln sTemp1 Send Destroy of hoJoseHeader // Output: // (the string "Payload" was the content that was signed.) // Signature validated. // -- // Recovered content: // Payload // -- // Protected (JOSE) header: // { // "alg": "ES512" // } End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.