# How to verify the callback signature > **INFO** >For a full guide with more examples, see [Verify Webhook Signatures](/webhooks/verify-webhook-signature). ## How does the callback signature work? CryptAPI signs every callback with a public-key scheme, using a 1024-bit RSA SHA256 signature. Because it signs the whole callback, you can trust that all the data came from our service. If the callback is sent with GET, we sign the full URL (with all its GET parameters). If you asked to receive the callback with POST, we sign the whole request body. You can fetch the public key that checks the signature from [https://api.cryptapi.io/pubkey/](https://api.cryptapi.io/pubkey/). We send the signature, base64-encoded, in the `x-ca-signature` header of the request. ## How do I validate the callback? The data you pass to the verification function must look like this: ``` uuid=TEST_aabf0e8e-cf58-4719-b5db-237c3e9a32c0&address_in=TEST_0x0000000000000000000000000000000000000000&address_out=TEST_0x0000000000000000000000000000000000000000&confirmations=1&txid_in=TEST_0x0000000000000000000000000000000000000000000000000000000000000000&txid_out=TEST_0x0000000000000000000000000000000000000000000000000000000000000000&fee=10000&fee_coin=0.01&value=1000000&value_coin=1&value_forwarded=990000&value_forwarded_coin=0.99&coin=test_coin&price=1&result=sent&pending=0 ``` Below are examples of how to verify the callback signature in several programming languages. ### PHP ```php