> For the complete documentation index, see [llms.txt](https://apidoc.tokenpay.me/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://apidoc.tokenpay.me/de-de/beschreibung/signaturuberprufung.md).

# Signaturüberprüfung

{% hint style="info" %}
TIPP (TIP)

Der Händler kann die Signatur der Antwort oder des Callbacks überprüfen, indem er die folgenden Schritte ausführt.

Wenn die Anfragesignatur des verifizierten Händlers korrekt ist, fügt tokenpay die Antwortsignatur in den HTTP-Header der Antwort ein. Wir empfehlen Händlern, die Antwortsignatur zu überprüfen.

Ebenso fügt tokenpay die Signatur des Callback-Pakets in den HTTP-Header des Callbacks ein. Der Händler muss die Signatur des Callbacks überprüfen, um sicherzustellen, dass der Callback von tokenpay gesendet wurde.
{% endhint %}

### Verketten (Concatenate)

Zunächst ruft der Händler die folgenden Informationen aus der Antwort ab.

* Antwort-Zeitstempel im HTTP-Header `TTPay-Timestamp`.
* Zufällige Antwort-Zeichenfolge im HTTP-Header `TTPay-Nonce`.
* Antwort-Textkörper (Response Body). Überprüfen Sie die Schnittstelle gemäß der von der Schnittstelle zurückgegebenen Reihenfolge. Eine falsche Reihenfolge führt zum Fehlschlagen der Überprüfung.

Die Signaturzeichenfolge besteht aus drei Zeilen, ein Parameter pro Zeile. Die Zeile endet mit `\n` (Zeilenumbruch, der ASCII-Codierungswert ist 0x0A). Fügen Sie in der letzten Zeile kein `\n` hinzu. Wenn der Parameter selbst auf `\n` endet, müssen Sie zusätzlich ein `\n` anhängen.

```
Reply timestamp\n
Reply random string\n
Reply message body
```

Eine HTTP-Antwortnachricht sieht beispielsweise wie folgt aus:

```
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 02 Apr 2019 12:59:40 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 2204
Connection: keep-alive
Keep-Alive: timeout=8
Content-Language: zh-CN
TTPay-Nonce: c5ac7061fccab6bf3e254dcf98995b8c
TTPay-Signature: CtcbzwtQjN8rnOXItEBJ5aQFSnIXESeV28Pr2YEmf9wsDQ8Nx25ytW6FXBCAFdrr0mgqngX3AD9gNzjnNHzSGTPBSsaEkIfhPF4b8YRRTpny88tNLyprXA0GU5ID3DkZHpjFkX1hAp/D0fva2GKjGRLtvYbtUk/OLYqFuzbjt3yOBzJSKQqJsvbXILffgAmX4pKql+Ln+6UPvSCeKwznvtPaEx+9nMBmKu7Wpbqm/+2ksc0XwjD+xlvlECkCxfD/OJ4gN3IurE0fpjxIkvHDiinQmk51BI7zQD8k1znU7r/spPqB+vZjc5ep6DC5wZUpFu5vJ8MoNKjCu8wnzyCFdA==
TTPay-Timestamp: 1554209980
Cache-Control: no-cache, must-revalidate

{"app_id":"xxxx"}
```

Dann lautet die Signaturzeichenfolge:

```
1554209980
c5ac7061fccab6bf3e254dcf98995b8c
{"app_id":"xxxx"}
```

#### Antwort (Reply)

Die tokenpay-Antwortsignatur wird über den HTTP-Header `TTPay-Signature` übertragen. (Hinweis: Dies ist ein Beispiel; da der Schriftsatz Zeilenumbrüche enthalten kann, sollten die tatsächlichen Daten in einer Zeile stehen)

```
CtcbzwtQjN8rnOXItEBJ5aQFSnIXESeV28Pr2YEmf9wsDQ8Nx25ytW6FXBCAFdrr0mgqngX3AD9gNzjnNHzSGTPBSsaEkIfhPF4b8YRRTpny88tNLyprXA0GU5ID3DkZHpjFkX1hAp/D0fva2GKjGRLtvYbtUk/OLYqFuzbjt3yOBzJSKQqJsvbXILffgAmX4pKql+Ln+6UPvSCeKwznvtPaEx+9nMBmKu7Wpbqm/+2ksc0XwjD+xlvlECkCxfD/OJ4gN3IurE0fpjxIkvHDiinQmk51BI7zQD8k1znU7r/spPqB+vZjc5ep6DC5wZUpFu5vJ8MoNKjCu8wnzyCFdA==
```

#### Beurteilung (Judgment)

Verwenden Sie die Methode `AES-256-ECB`, um Signaturen zu generieren (Sie können auf [Signaturgenerierung](/de-de/beschreibung/signaturgenerierung.md) verweisen). Die generierte Signatur wird mit der Antwortsignatur verglichen. Wenn sie nicht übereinstimmen, wurden die Daten manipuliert.
