Sample code for 30+ languages & platforms
PureBasic

Load and Validate a JWS from a String

See more JSON Web Signatures (JWS) Examples

Demonstrates Jws.LoadJws, which loads a JWS from its compact serialization string. The example then supplies the MAC key and validates the signature.

Background. Validate returns 1 when the signature or MAC is cryptographically valid, 0 when it is not, or a negative value on error. The key for the signer index must be provided before validating.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkJws.pb"

Procedure ChilkatExample()

    success.i = 0

    jws.i = CkJws::ckCreate()
    If jws.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ;  Load the JWS compact serialization.
    jwsCompact.s = "eyJhbGciOiJIUzI1NiJ9.VGhpcyBpcyB0aGUgY29udGVudCB0byBzaWduLg.<signature>"
    success = CkJws::ckLoadJws(jws,jwsCompact)
    If success = 0
        Debug CkJws::ckLastErrorText(jws)
        CkJws::ckDispose(jws)
        ProcedureReturn
    EndIf

    ;  Provide the HMAC key for signer 0, then validate the signature.  Validate returns 1 when the
    ;  signature is cryptographically valid, 0 when it is not, or a negative value on error.
    base64Key.s = "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU="
    success = CkJws::ckSetMacKey(jws,0,base64Key,"base64")
    If success = 0
        Debug CkJws::ckLastErrorText(jws)
        CkJws::ckDispose(jws)
        ProcedureReturn
    EndIf

    v.i = CkJws::ckValidate(jws,0)
    If v < 0
        Debug CkJws::ckLastErrorText(jws)
        CkJws::ckDispose(jws)
        ProcedureReturn
    EndIf

    If v <> 1
        Debug "The signature is not valid."
        CkJws::ckDispose(jws)
        ProcedureReturn
    EndIf

    Debug "The signature is valid."


    CkJws::ckDispose(jws)


    ProcedureReturn
EndProcedure