anchor.diff:    Result := TSHA3_512.Create();
   end;
   
  -class function THashFactory.TCrypto.CreateShake_128(a_xof_size_in_bits
  -  : UInt32): IHash;
  -var
  -  LXof: IXOF;
  -begin
  -  LXof := (TShake_128.Create() as IXOF);
  -  LXof.XOFSizeInBits := a_xof_size_in_bits;
  -  Result := LXof as IHash;
  -end;
  -
  -class function THashFactory.TCrypto.CreateShake_256(a_xof_size_in_bits
  -  : UInt32): IHash;
  -var
  -  LXof: IXOF;
  -begin
  -  LXof := (TShake_256.Create() as IXOF);
  -  LXof.XOFSizeInBits := a_xof_size_in_bits;
  -  Result := LXof as IHash;
  -end;
  -
   class function THashFactory.TCrypto.CreateKeccak_224: IHash;
   begin
     Result := TKeccak_224.Create();
  
positive.code:   Result := TTiger2_192.CreateRound5();
  end;
  
  { THashFactory.THMAC }
  
  class function THashFactory.THMAC.CreateHMAC(const a_hash: IHash;
  
negative.code:       class function CreateKeccak_384(): IHash; static;
        class function CreateKeccak_512(): IHash; static;
  
        class function CreateBlake2B(const config: IBlake2BConfig = Nil;
          const treeConfig: IBlake2BTreeConfig = Nil): IHash; static;
  
  