Zum Hauptinhalt springen

7. Creating and Validating CWTs (Erstellen und Validieren)

7. Creating and Validating CWTs (Erstellen und Validieren von CWTs)

7.1. Creating a CWT (Erstellen eines CWT)

Um ein CWT zu erstellen, werden die folgenden Schritte ausgeführt. Die Reihenfolge der Schritte ist nicht maßgeblich, sofern keine Abhängigkeiten zwischen den Eingaben und Ausgaben der Schritte bestehen.

  1. Erstellen Sie ein CWT Claims Set mit den gewünschten Claims.

  2. Sei die Message die binäre Darstellung des CWT Claims Set.

  3. Erstellen Sie einen COSE Header mit der gewünschten Menge von Header Parameters. Der COSE Header MUSS gemäß der Spezifikation [RFC8152] gültig sein.

  4. Je nachdem, ob das CWT signiert, MAC-geschützt oder verschlüsselt ist, gibt es drei Fälle:

    • Wenn das CWT signiert ist, erstellen Sie ein COSE_Sign/COSE_Sign1-Objekt mit der Message als COSE_Sign/COSE_Sign1-Payload; alle in [RFC8152] zum Erstellen eines COSE_Sign/COSE_Sign1-Objekts angegebenen Schritte MÜSSEN befolgt werden.

    • Andernfalls, wenn das CWT MAC-geschützt ist, erstellen Sie ein COSE_Mac/COSE_Mac0-Objekt mit der Message als COSE_Mac/COSE_Mac0-Payload; alle in [RFC8152] zum Erstellen eines COSE_Mac/COSE_Mac0-Objekts angegebenen Schritte MÜSSEN befolgt werden.

    • Andernfalls, wenn das CWT ein COSE_Encrypt/COSE_Encrypt0-Objekt ist, erstellen Sie ein COSE_Encrypt/COSE_Encrypt0 mit der Message als Klartext für das COSE_Encrypt/COSE_Encrypt0-Objekt; alle in [RFC8152] zum Erstellen eines COSE_Encrypt/COSE_Encrypt0-Objekts angegebenen Schritte MÜSSEN befolgt werden.

  5. Wenn eine verschachtelte Signatur-, MAC- oder Verschlüsselungsoperation ausgeführt wird, sei die Message das getaggte COSE_Sign/COSE_Sign1-, COSE_Mac/COSE_Mac0- oder COSE_Encrypt/COSE_Encrypt0-Objekt, und kehren Sie zu Schritt 3 zurück.

  6. Falls die Anwendung es erfordert, stellen Sie dem COSE-Objekt den passenden COSE-CBOR-Tag voran, um den Typ des COSE-Objekts anzugeben. Falls die Anwendung es erfordert, stellen Sie dem COSE-Objekt den CWT-CBOR-Tag voran, um anzuzeigen, dass das COSE-Objekt ein CWT ist.

7.2. Validating a CWT (Validieren eines CWT)

Beim Validieren eines CWT werden die folgenden Schritte ausgeführt. Die Reihenfolge der Schritte ist nicht maßgeblich, sofern keine Abhängigkeiten zwischen den Eingaben und Ausgaben der Schritte bestehen. Schlägt einer der aufgeführten Schritte fehl, MUSS das CWT abgelehnt werden, das heißt von der Anwendung als ungültige Eingabe behandelt werden.

  1. Verifizieren Sie, dass das CWT ein gültiges CBOR-Objekt ist.

  2. Beginnt das Objekt mit dem CWT-CBOR-Tag, entfernen Sie es und verifizieren Sie, dass ihm einer der COSE-CBOR-Tags folgt.

  3. Ist das Objekt mit einem der COSE-CBOR-Tags versehen, entfernen Sie ihn und nutzen Sie ihn, um den Typ des CWT zu bestimmen: COSE_Sign/COSE_Sign1, COSE_Mac/COSE_Mac0 oder COSE_Encrypt/COSE_Encrypt0. Hat das Objekt keinen COSE-CBOR-Tag, wird der COSE-Nachrichtentyp aus dem Anwendungskontext bestimmt.

  4. Verifizieren Sie, dass der resultierende COSE Header nur Parameter und Werte enthält, deren Syntax und Semantik sowohl verstanden und unterstützt werden oder die als bei Nichtverständnis zu ignorieren spezifiziert sind.

  5. Je nachdem, ob das CWT signiert, MAC-geschützt oder verschlüsselt ist, gibt es drei Fälle:

    • Wenn das CWT ein COSE_Sign/COSE_Sign1 ist, befolgen Sie die in Abschnitt 4 von [RFC8152] („Signing Objects“) für die Validierung eines COSE_Sign/COSE_Sign1-Objekts angegebenen Schritte. Sei die Message die COSE_Sign/COSE_Sign1-Payload.

    • Andernfalls, wenn das CWT ein COSE_Mac/COSE_Mac0 ist, befolgen Sie die in Abschnitt 6 von [RFC8152] („MAC Objects“) für die Validierung eines COSE_Mac/COSE_Mac0-Objekts angegebenen Schritte. Sei die Message die COSE_Mac/COSE_Mac0-Payload.

    • Andernfalls, wenn das CWT ein COSE_Encrypt/COSE_Encrypt0-Objekt ist, befolgen Sie die in Abschnitt 5 von [RFC8152] („Encryption Objects“) für die Validierung eines COSE_Encrypt/COSE_Encrypt0-Objekts angegebenen Schritte. Sei die Message der resultierende Klartext.

  6. Beginnt die Message mit einem COSE-CBOR-Tag, handelt es sich um ein CWT, das Gegenstand verschachtelter Signatur-, MAC- oder Verschlüsselungsoperationen war. Kehren Sie in diesem Fall zu Schritt 1 zurück und verwenden Sie die Message als CWT.

  7. Verifizieren Sie, dass die Message eine gültige CBOR-Map ist; das CWT Claims Set sei diese CBOR-Map.