Zeitstempel (RFC 3161)
POST https://api.kennmarq.com/v1/tsa/{key}
Unser eigener Zeitstempelserver nach RFC 3161, für den lokalen Modus: Wenn Ihr Rechner ein C2PA-Manifest signiert, lässt er die Signatur über diese URL mit einem Zeitstempel versehen. Der Schlüssel steht in der URL, weil die C2PA-Bibliothek keine Header hinzufügen kann.
Ein Schlüssel nur für tsa
Erstellen Sie einen Schlüssel, dessen einzige Berechtigung tsa ist, und setzen Sie ihn in die URL. Jeder Schlüssel mit weiteren Berechtigungen wird hier mit 403 key_not_allowed_in_url abgelehnt: URLs landen in Logs, und ein mächtiger Schlüssel darf nie darunter sein. Ist das passiert, rotieren Sie den gesendeten Schlüssel.
https://api.kennmarq.com/v1/tsa/sk_live_…Anfrage
Content-Type: application/timestamp-query- Der Body: ein DER-codierter
TimeStampReq, höchstens 4 KB. - Message Imprints in SHA-256, SHA-384 oder SHA-512. Ein SHA-1-Imprint erhält in der Antwort einen Ablehnungsstatus.
certReqwird berücksichtigt (unsere TSA-Kette kommt in das Token), und Ihre Nonce wird unverändert zurückgegeben.
Antwort
200 mit exakt Content-Type: application/timestamp-reply und der DER-codierten TimeStampResp als Body, Byte für Byte so, wie unser Server sie erzeugt hat. Jedes Token gibt eine Genauigkeit von 1 Sekunde an, trägt eine zufällige 128-Bit-Seriennummer und unsere eigene Policy-OID und ist mit ECDSA P-256 / SHA-256 signiert, einschließlich signingCertificateV2 (RFC 5816).
Jedes Token kommt in unser öffentliches Transparenzprotokoll, bevor es zurückgegeben wird; der Header X-Log-Index gibt an, wo, und GET /v1/log/proof/{index} beweist es. Eine Ablehnung trägt kein Token und keinen Index.
Beispiel mit OpenSSL
# A query for a file's SHA-256, asking for our certificate in the reply
openssl ts -query -data artwork.png -sha256 -cert -out request.tsq
curl https://api.kennmarq.com/v1/tsa/$TSA_KEY \
-H "Content-Type: application/timestamp-query" \
--data-binary @request.tsq \
-o response.tsr
openssl ts -reply -in response.tsr -textUm ein Token zu verifizieren, rufen Sie unsere TSA-Kette über GET /v1/certificate?chain=tsa ab.
Zählung
Jeder Zeitstempel zählt einmal im monatlichen Zeitstempelkontingent, das genauso groß ist wie das Markierungskontingent Ihres Plans (bei Testschlüsseln wie Ihr Kontingent an Testmarkierungen), getrennt für Live- und Testschlüssel. Eine Anfrage, die auf unserer Seite fehlschlägt, wird nicht gezählt. Die Aufrufe pro Minute des Plans gelten für die Organisation, alle ihre Schlüssel zusammen; die IP-Allowlist des Schlüssels gilt für den Schlüssel.
timeStamp.untrusted, bis unser öffentlich vertrauenswürdiges Zertifikat eingerichtet ist; die Datei besteht die Validierung trotzdem.Fehler
| Status | Code | Wann |
|---|---|---|
| 400 | invalid_request | Ein leerer Body oder eine Zeitstempelanfrage, die unser Server nicht verarbeiten konnte. |
| 401 | missing_api_key, invalid_api_key, api_key_revoked | Kein Schlüssel, ein unbekannter oder ein widerrufener Schlüssel. |
| 402 | quota_exceeded | Die Zeitstempel des Monats sind aufgebraucht. |
| 403 | key_not_allowed_in_url | Der Schlüssel hat Berechtigungen über tsa hinaus. |
| 403 | ip_not_allowed | Die Adresse steht nicht auf der IP-Allowlist des Schlüssels. |
| 413 | payload_too_large | Die Zeitstempelanfrage ist größer als 4 KB. |
| 415 | unsupported_media_type | Der Content-Type ist nicht application/timestamp-query. |
| 429 | rate_limited | Zu viele Aufrufe in dieser Minute. |
| 503 | tsa_unavailable | Der Zeitstempelserver ist kurzzeitig nicht verfügbar. Es wird nichts berechnet; versuchen Sie es erneut. |