KDPika Licensing Sign inStart free
API v1
Show all languages
Browse documentation

Choose a page in the navigation drawer.

KDPika Licensing · API v1 Intermediate

Check the signed decision

Stage 9: check the signed decision with a clear outcome, verification steps and one next action.

On this page
Updated 2026-10-20 UTCDownload Markdown
Complete Integration Guide

Before you start: Validate when your app starts, or bring the same completed Sandbox setup.

Stage 9 of 14 · 10 min
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14

Already completed this? Skip to the next stage →

What you will do

Ensure a fake “licensed” response cannot unlock your app.

A signature is the server's proof that a decision has not been changed. The public verification key is not a developer API key.

The four official SDKs fetch the public key, verify Ed25519 and check the signed decision against the application, environment, installation and time. The Stage 7 sample also requires the SDK's signature-valid flag. Do not replace this with a success field from raw JSON.

Python

Confirm result.valid and result.signature_valid before result.feature("pdf_export"). The sample already requires the first two flags.

JavaScript / Node.js

Confirm result.valid and result.signatureValid before result.feature('pdf_export'). The sample already requires the first two flags.

PHP

Confirm $result->valid and $result->signatureValid before $result->feature('pdf_export'). The sample already requires the first two flags.

C# / .NET

Confirm result.Valid and result.SignatureValid before result.Feature("pdf_export"). The sample already requires the first two flags.

cURL / other language

REST transport does not supply a universal verified decision. Fetch the public key, canonicalize the original JSON correctly, verify the Ed25519 signature and all signed bindings, then inspect features. Use the real language verifier and negative test vectors, not a new handwritten crypto shortcut.

Expected result

A modified payload/signature fails closed. The selected SDK/client's negative signature tests must pass for the payload shapes your product uses.

If it does not work

Known Python separator/exponent cases, JavaScript integral-float cases and C# Unicode cache cases are documented in Current integration limitations. A narrow successful example does not remove these defects. Do not ship affected cases or bypass verification; seek a compatible release/assessed verifier before Live.

Stage checklist

  • Tampering is denied.
  • Public-key retrieval and rotation policy are understood.
  • My production payloads pass the compatibility/test-vector gate.

Next steps

Continue to Stage 10: Handle errors and offline use

You are here: Stage 9 of 14.

Was this page helpful?

Choose an answer

Do not include personal data, license keys or credentials. Retained for up to 30 days. This is not a support inbox.

Search documentation

Arrow keys to move, Enter to open, Escape to close. Search stays in your browser.

Cookie settings