Sample code for 30+ languages & platforms
PureBasic

Validate a JWS Signature

See more JSON Web Signatures (JWS) Examples

Demonstrates Jws.Validate, which validates exactly one signature, identified by a zero-based index, using the key configured at that same index.

Background. Validate returns 1 when the signature or MAC is cryptographically valid, 0 when it is not, or a negative value on error. The verifying key 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 key for signature 0 (here an HMAC key).
    base64Key.s = "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU="
    success = CkJws::ckSetMacKey(jws,0,base64Key,"base64")
    If success = 0
        Debug CkJws::ckLastErrorText(jws)
        CkJws::ckDispose(jws)
        ProcedureReturn
    EndIf

    ;  Validate the signature identified by the zero-based index, using the key configured at that index.
    ;  Validate returns 1 when the signature or MAC is cryptographically valid, 0 when it is not, or a
    ;  negative value on error.
    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