MemHMAC
Dieser Befehl bildet für eine Nachricht einen Authentifizierungs-Code. Der Code wird aus dem Inhalt des übergebenen Memory-Objekts (obj), dem Verfahren (int1) und dem Schlüssel (alpha2) errechnet. Der Schlüssel kann alternativ in einem Memory-Objekt vorliegen, welches in (alpha5) angegeben wird. Dazu muss in (int1) _MemKeyMem angegeben sein. Es werden maximal die ersten 1024 Byte des Schlüssels aus dem Memory-Objekt berücksichtigt.
Im Parameter (int1) wird auch die Kodierung des Ergebnisses angegeben. Folgende Konstanten können übergeben werden:
-
Hash-Verfahren
_MemHashMD5: MD5-Hash (Message-Digest Algorithm 5)_MemHashRMD160: RIPEMD 160-Hash (RACE Integrity Primitives Evaluation Message Digest)_MemHashSHA1: SHA-1 Hash (Secure Hash Algorithm)_MemHashSHA256: SHA-256 Hash_MemHashSHA384: SHA-384 Hash_MemHashSHA512: SHA-512 Hash
-
Kodierung des Schlüssels
_MemKeyHex: Schlüssel liegt hexadezimal vor_MemKeyBase64: Schlüssel liegt Base64-kodiert vor_MemKeyMem: Schlüssel liegt Memory-Objekt vor
-
Kodierung des Ergebnisses
_MemResultHex: Hexadezimales Ergebnis_MemResultBase64: Base64-kodiertes Ergebnis
Der Parameter (int1) setzt sich aus der Kombination je einer Konstanten aus den Bereichen Verfahren, Schlüssel-Kodierung und Ergebnis-Kodierung zusammen.
Beispiele:
tHashValue # tMem->MemHMAC(_MemHashSHA256 | _MemKeyBase64 | _MemResultHex, aKeyHMAC);
tHashValue # tMem->MemHMAC(_MemHashSHA512 | _MemKeyMem | _MemResultHex, '', 1, _MemDataLen, aMemKeyHMAC);
Der Hash-Wert kann auch aus einem Teil des Memory-Objekts gebildet werden. Dazu wird die Startposition (int3) und die zu berücksichtigende Länge (int4) angegeben. Wird eine ungültigen Startposition (int3) oder eine zu große Länge (int4) angegeben, wird ein Laufzeitfehler erzeugt.
Mögliche Laufzeitfehler:
_ErrHdlInvalid: Der übergeben Deskriptor (obj) oder (handle5) ist ungültig._ErrValueInvalid: Als Hash- und Kodierungsverfahren (int1) wurde eine ungültige/unvollständige Kombination angegeben. Aus jeder Gruppe muss eine Konstante angegeben werden._ErrValueRange: Die angegeben Startposition (int3) oder die Länge des Bereiches (int4) ist zu groß.