5.2.6 Sign (Signieren)
5.2.6 Sign (Signieren)
Die Eingaben des Signaturverfahrens sind der private Schlüssel, eine 57-Oktett-Zeichenkette, ein Flag F (0 für Ed448, 1 für Ed448ph), ein Kontext C von höchstens 255 Oktetten und eine Nachricht M beliebiger Länge.
-
Den Privatschlüssel, 57 Oktette, mit SHAKE256(x, 114) hashen. Den resultierenden Digest h nennen. Den geheimen Skalar s aus der ersten Hälfte des Digests und den zugehörigen öffentlichen Schlüssel A wie im vorherigen Abschnitt beschrieben bilden. prefix bezeichne die zweite Hälfte des Hash-Digests, h[57],...,h[113].
-
SHAKE256(dom4(F, C) || prefix || PH(M), 114) berechnen, wobei M die zu signierende Nachricht ist, F für Ed448ph 1 und für Ed448 0 ist und C der verwendete Kontext ist. Den 114-Oktett-Digest als Little-Endian-Ganzzahl r interpretieren.
-
Den Punkt [r]B berechnen. Zur Effizienz r zuerst modulo L, der Gruppenordnung von B, reduzieren. Die Zeichenkette R sei die Kodierung dieses Punktes.
-
SHAKE256(dom4(F, C) || R || A || PH(M), 114) berechnen und den 114-Oktett-Digest als Little-Endian-Ganzzahl k interpretieren.
-
S = (r + k * s) mod L berechnen. Zur Effizienz k erneut zuerst modulo L reduzieren.
-
Die Signatur als Verkettung von R (57 Oktette) und der Little-Endian-Kodierung von S (57 Oktette; die zehn höchstwertigsten Bits der letzten Oktette sind stets Null) bilden.