@@ -118,14 +118,14 @@ THash_TestTDECPasswordHash = class(TTestCase)
118118 procedure SetUp ; override;
119119 procedure TearDown ; override;
120120 protected
121- // procedure DoTestSalt0Exception;
122121 procedure DoTestSaltTooLongException ;
122+ procedure DoTestSaltTooShortException ;
123123 procedure DoTestClassByCryptIdentityException ;
124124 published
125125 procedure TestGetSalt ;
126126 procedure TestSetSalt ;
127- // procedure TestSalt0Exception;
128127 procedure TestSaltTooLongException ;
128+ procedure TestSaltTooShortException ;
129129 procedure TestClassByCryptIdentitySuccess ;
130130 procedure TestClassByCryptIdentityException ;
131131 end ;
@@ -677,20 +677,23 @@ TBCryptBSDTestData = record
677677 procedure SetUp ; override;
678678 procedure DoTestCostFactorTooShortException ;
679679 procedure DoTestCostFactorTooLongException ;
680+ procedure DoTestNoSaltSpecified ;
680681 published
681682 procedure TestDigestSize ;
682683 procedure TestBlockSize ;
683684 procedure TestIsPasswordHash ;
684685 procedure TestClassByName ;
685686 procedure TestIdentity ;
686687 procedure TestMaximumSaltLength ;
688+ procedure TestMinimumSaltLength ;
687689 procedure TestMaximumPasswordLength ;
688690 procedure TestMinCost ;
689691 procedure TestMaxCost ;
690692 procedure TestCostFactorTooShortException ;
691693 procedure TestCostFactorTooLongException ;
692694 procedure TestSetGetCostFactor ;
693695 procedure TestCryptBSDFormat ;
696+ procedure TestNoSaltSpecified ;
694697// procedure TestTooLongPasswordException;
695698 end ;
696699
@@ -6055,6 +6058,20 @@ procedure TestTHash_BCrypt.DoTestCostFactorTooShortException;
60556058 THash_BCrypt(FHash).Cost := 3 ;
60566059end ;
60576060
6061+ procedure TestTHash_BCrypt.DoTestNoSaltSpecified ;
6062+ var
6063+ BCrypt : THash_BCrypt;
6064+ begin
6065+ BCrypt := THash_BCrypt.Create;
6066+ try
6067+ BCrypt.Init;
6068+ BCrypt.Cost := 8 ;
6069+ BCrypt.CalcString(' a' );
6070+ finally
6071+ BCrypt.Free;
6072+ end ;
6073+ end ;
6074+
60586075procedure TestTHash_BCrypt.SetUp ;
60596076var
60606077 lDataRow:IHashTestDataRowSetup;
@@ -6326,6 +6343,16 @@ procedure TestTHash_BCrypt.TestMinCost;
63266343 CheckEquals(4 , THash_BCrypt(FHash).MinCost);
63276344end ;
63286345
6346+ procedure TestTHash_BCrypt.TestMinimumSaltLength ;
6347+ begin
6348+ CheckEquals(16 , TDECPasswordHash(FHash).MinSaltLength);
6349+ end ;
6350+
6351+ procedure TestTHash_BCrypt.TestNoSaltSpecified ;
6352+ begin
6353+ CheckException(DoTestNoSaltSpecified, EDECHashException);
6354+ end ;
6355+
63296356procedure TestTHash_BCrypt.TestSetGetCostFactor ;
63306357begin
63316358 THash_BCrypt(FHash).Cost := 4 ;
@@ -6337,14 +6364,6 @@ procedure TestTHash_BCrypt.TestSetGetCostFactor;
63376364
63386365{ THash_TestTDECPasswordHash }
63396366
6340- // procedure THash_TestTDECPasswordHash.DoTestSalt0Exception;
6341- // var
6342- // EmptySalt : TBytes;
6343- // begin
6344- // SetLength(EmptySalt, 0);
6345- // FHash.Salt := EmptySalt;
6346- // end;
6347-
63486367procedure THash_TestTDECPasswordHash.DoTestClassByCryptIdentityException ;
63496368begin
63506369 TDECPasswordHash.ClassByCryptIdentity(' nwrongID' );
@@ -6359,6 +6378,14 @@ procedure THash_TestTDECPasswordHash.DoTestSaltTooLongException;
63596378 FHash.Salt := EmptySalt;
63606379end ;
63616380
6381+ procedure THash_TestTDECPasswordHash.DoTestSaltTooShortException ;
6382+ var
6383+ EmptySalt : TBytes;
6384+ begin
6385+ SetLength(EmptySalt, FHash.MinSaltLength - 1 );
6386+
6387+ FHash.Salt := EmptySalt;
6388+ end ;
63626389
63636390procedure THash_TestTDECPasswordHash.SetUp ;
63646391begin
@@ -6403,18 +6430,13 @@ procedure THash_TestTDECPasswordHash.TestGetSalt;
64036430 ActSalt := FHash.Salt;
64046431 CheckEquals(0 , Length(ActSalt));
64056432
6406- SetSalt := [1 , 2 , 3 , 4 ];
6433+ SetSalt := [1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 ];
64076434 FHash.Salt := SetSalt;
64086435
64096436 ActSalt := FHash.Salt;
64106437 CheckEquals(true, System.SysUtils.CompareMem(@SetSalt[0 ], @ActSalt[0 ], Length(ActSalt)));
64116438end ;
64126439
6413- // procedure THash_TestTDECPasswordHash.TestSalt0Exception;
6414- // begin
6415- // CheckException(DoTestSalt0Exception, EDECHashException);
6416- // end;
6417-
64186440procedure THash_TestTDECPasswordHash.TestSaltTooLongException ;
64196441var
64206442 ActSalt : TBytes;
@@ -6428,11 +6450,24 @@ procedure THash_TestTDECPasswordHash.TestSaltTooLongException;
64286450 CheckEquals(0 , Length(ActSalt));
64296451end ;
64306452
6453+ procedure THash_TestTDECPasswordHash.TestSaltTooShortException ;
6454+ var
6455+ ActSalt : TBytes;
6456+ begin
6457+ ActSalt := FHash.Salt;
6458+ CheckEquals(0 , Length(ActSalt));
6459+
6460+ CheckException(DoTestSaltTooShortException, EDECHashException);
6461+
6462+ ActSalt := FHash.Salt;
6463+ CheckEquals(0 , Length(ActSalt));
6464+ end ;
6465+
64316466procedure THash_TestTDECPasswordHash.TestSetSalt ;
64326467var
64336468 SetSalt, ActSalt : TBytes;
64346469begin
6435- SetSalt := [1 , 2 , 3 , 4 ];
6470+ SetSalt := [1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 ];
64366471 FHash.Salt := SetSalt;
64376472
64386473 ActSalt := FHash.Salt;
0 commit comments