TSha3Algorithm = (s3aSha3_256, s3aSha3_384, s3aSha3_512, s3aShake256);
TSha3Digest256 = array[0..31] of Byte;
TSha3Digest384 = array[0..47] of Byte;
TSha3Digest512 = array[0..63] of Byte;
procedure Sha3_256Init(out Ctx: TSha3Context);
procedure Sha3_384Init(out Ctx: TSha3Context);
procedure Sha3_512Init(out Ctx: TSha3Context);
procedure Shake256Init(out Ctx: TSha3Context);
procedure Sha3Update(var Ctx: TSha3Context; const Data; DataLength: Integer);
procedure Sha3_256Final(var Ctx: TSha3Context; out Digest: TSha3Digest256);
procedure Sha3_384Final(var Ctx: TSha3Context; out Digest: TSha3Digest384);
procedure Sha3_512Final(var Ctx: TSha3Context; out Digest: TSha3Digest512);
procedure Shake256Final(var Ctx: TSha3Context);
procedure Shake256Squeeze(var Ctx: TSha3Context; out Output; OutputLength: Integer);
function Shake256Bytes(const Data: TBytes; OutputLength: Integer): TBytes;
FPdfSha3 implementuje rodinu SHA-3 podle FIPS 202, kterou vyžadují ISO/TS 32001 a související kryptografická rozšíření PDF 2.x, aniž by potřeboval kryptografického poskytovatele operačního systému
Hashe s pevným výstupem sdílejí jeden typ kontextu a finalizátory kontrolující algoritmus, zatímco SHAKE256 odděluje závěrečnou absorpci od výstupu, takže volající může požádat o libovolnou délku v jednom nebo více voláních Shake256Squeeze
| Function | Description |
|---|---|
Sha3_256Init, Sha3_384Init, Sha3_512Init | Inicializuje kontext SHA-3 s pevným výstupem |
Shake256Init | Inicializuje kontext SHAKE256 s rozšiřitelným výstupem |
Sha3Update | Absorbuje netypovaný vstupní buffer do libovolného inicializovaného kontextu |
Sha3_256Final, Sha3_384Final, Sha3_512Final | Dokončí odpovídající kontext a vrátí jeho otisk pevné délky |
Shake256Final | Dokončí absorpci SHAKE256 bez spotřebování výstupu |
Shake256Squeeze | Pokračuje ve výstupu SHAKE256 z aktuální pozice v opakovaných voláních |
Sha3_256Bytes, Sha3_384Bytes, Sha3_512Bytes | Zahashuje pole bajtů jedním voláním |
Shake256Bytes | Vrátí volajícím zvolený počet výstupních bajtů SHAKE256 |
Sha3_256Hex, Sha3_384Hex, Sha3_512Hex | Převede pevný otisk na hexadecimální text psaný malými písmeny |
| Type | Description |
|---|---|
TSha3Algorithm | Určuje algoritmus zvolený v kontextu |
TSha3Digest256, TSha3Digest384, TSha3Digest512 | Buffery otisků pevné velikosti |
TSha3Context | Přírůstkový stav houby, buffer rychlosti, algoritmus a pozice vymačkávání |
ESha3Error | Hlásí neplatné délky, nesprávné použití životního cyklu nebo neshodující se finalizátory |
Sha3Update zavolejte odpovídající inicializátor a použijte pouze odpovídající finalizátor s pevným výstupemShake256Final pokračují opakovaná volání Shake256Squeeze ve stejném výstupním proudu, místo aby jej znovu spouštělaESha3Error