|
@@ -160,13 +160,13 @@ type
|
|
TShake = class abstract(TSHA3, IXOF)
|
|
TShake = class abstract(TSHA3, IXOF)
|
|
strict private
|
|
strict private
|
|
var
|
|
var
|
|
- FXOFSize: THashSize;
|
|
|
|
- function GetXOFSize: THashSize; inline;
|
|
|
|
- procedure SetXOFSize(a_xof_size: THashSize); inline;
|
|
|
|
|
|
+ FXOFSize: Int32;
|
|
|
|
+ function GetXOFSize: Int32; inline;
|
|
|
|
+ procedure SetXOFSize(a_xof_size_in_bits: Int32); inline;
|
|
strict protected
|
|
strict protected
|
|
constructor Create(a_hash_size: THashSize);
|
|
constructor Create(a_hash_size: THashSize);
|
|
- function SetXOFOutputSize(a_xof_size: THashSize): IXOF;
|
|
|
|
- property XOFSize: THashSize read GetXOFSize write SetXOFSize;
|
|
|
|
|
|
+ function SetXOFOutputSize(a_xof_size_in_bits: Int32): IXOF;
|
|
|
|
+ property XOFSize: Int32 read GetXOFSize write SetXOFSize;
|
|
|
|
|
|
public
|
|
public
|
|
function GetResult(): THashLibByteArray; override;
|
|
function GetResult(): THashLibByteArray; override;
|
|
@@ -237,7 +237,7 @@ begin
|
|
Result := Self.ClassName;
|
|
Result := Self.ClassName;
|
|
TSHA3.THashMode.hmShake:
|
|
TSHA3.THashMode.hmShake:
|
|
Result := Format('%s_%s_%u', [Self.ClassName, 'XOFSizeInBits',
|
|
Result := Format('%s_%s_%u', [Self.ClassName, 'XOFSizeInBits',
|
|
- Int32((Self as IXOF).XOFSize) * 8]);
|
|
|
|
|
|
+ (Self as IXOF).XOFSize]);
|
|
else
|
|
else
|
|
begin
|
|
begin
|
|
raise EArgumentInvalidHashLibException.CreateResFmt(@SInvalidHashMode,
|
|
raise EArgumentInvalidHashLibException.CreateResFmt(@SInvalidHashMode,
|
|
@@ -3155,7 +3155,7 @@ begin
|
|
buffer_pos := Fm_buffer.Pos;
|
|
buffer_pos := Fm_buffer.Pos;
|
|
block := Fm_buffer.GetBytesZeroPadded();
|
|
block := Fm_buffer.GetBytesZeroPadded();
|
|
|
|
|
|
- LXofSize := Int32(FXOFSize);
|
|
|
|
|
|
+ LXofSize := FXOFSize shr 3;
|
|
Idx := 0;
|
|
Idx := 0;
|
|
|
|
|
|
while Idx < LXofSize do
|
|
while Idx < LXofSize do
|
|
@@ -3175,7 +3175,7 @@ begin
|
|
|
|
|
|
end;
|
|
end;
|
|
|
|
|
|
-function TShake.GetXOFSize: THashSize;
|
|
|
|
|
|
+function TShake.GetXOFSize: Int32;
|
|
begin
|
|
begin
|
|
Result := FXOFSize;
|
|
Result := FXOFSize;
|
|
end;
|
|
end;
|
|
@@ -3190,25 +3190,25 @@ begin
|
|
{$ENDIF DEBUG}
|
|
{$ENDIF DEBUG}
|
|
tempresult := GetResult();
|
|
tempresult := GetResult();
|
|
{$IFDEF DEBUG}
|
|
{$IFDEF DEBUG}
|
|
- System.Assert(System.Length(tempresult) = Int32(XOFSize));
|
|
|
|
|
|
+ System.Assert(System.Length(tempresult) = (XOFSize shr 3));
|
|
{$ENDIF DEBUG}
|
|
{$ENDIF DEBUG}
|
|
Initialize();
|
|
Initialize();
|
|
Result := THashResult.Create(tempresult);
|
|
Result := THashResult.Create(tempresult);
|
|
end;
|
|
end;
|
|
|
|
|
|
-function TShake.SetXOFOutputSize(a_xof_size: THashSize): IXOF;
|
|
|
|
|
|
+function TShake.SetXOFOutputSize(a_xof_size_in_bits: Int32): IXOF;
|
|
begin
|
|
begin
|
|
- If ((Int32(a_xof_size) * 8) and $7) <> 0 then
|
|
|
|
|
|
+ If (a_xof_size_in_bits and $7) <> 0 then
|
|
begin
|
|
begin
|
|
raise EArgumentInvalidHashLibException.CreateRes(@SInvalidXOFSize);
|
|
raise EArgumentInvalidHashLibException.CreateRes(@SInvalidXOFSize);
|
|
end;
|
|
end;
|
|
- FXOFSize := a_xof_size;
|
|
|
|
|
|
+ FXOFSize := a_xof_size_in_bits;
|
|
Result := Self;
|
|
Result := Self;
|
|
end;
|
|
end;
|
|
|
|
|
|
-procedure TShake.SetXOFSize(a_xof_size: THashSize);
|
|
|
|
|
|
+procedure TShake.SetXOFSize(a_xof_size_in_bits: Int32);
|
|
begin
|
|
begin
|
|
- SetXOFOutputSize(a_xof_size);
|
|
|
|
|
|
+ SetXOFOutputSize(a_xof_size_in_bits);
|
|
end;
|
|
end;
|
|
|
|
|
|
{ TShake_128 }
|
|
{ TShake_128 }
|