MeterPwdFile: - Validated findings on wrong password generation,
CUST: - Used MeterPwdFile instead of PasswordController for hashedPasswordFile generation including the validation checks.
This commit is contained in:
@@ -16,15 +16,33 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
|
||||
public const String StrPasswordFileName = "0\\password";
|
||||
private readonly GenesisMeter _genesisMeter;
|
||||
private readonly MeterFile _meterFile;
|
||||
private Byte[] _hashedPasswordFile;
|
||||
//seven passwords are needed for Level 1, 2, 4, 5, 6, 7, Level 3 will be generated
|
||||
//out of the ProcessorUID.
|
||||
|
||||
/// <summary>
|
||||
/// Hashed password file return
|
||||
/// </summary>
|
||||
public Byte[] HashedPasswordFile
|
||||
{
|
||||
get;
|
||||
private set;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ctor for usage of build of password file without writing it
|
||||
/// </summary>
|
||||
/// <remarks date="2023-Oct-17" author="Thomas Wiedebusch">
|
||||
/// - Initial.
|
||||
/// </remarks>
|
||||
public MeterPwdFile()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ctor
|
||||
/// </summary>
|
||||
/// <param name="genesisMeter"></param>
|
||||
/// <remarks date="2019-Mai-02" author="Thomas Wiedebusch">
|
||||
/// <remarks date="2019-May-02" author="Thomas Wiedebusch">
|
||||
/// - Initial.
|
||||
/// </remarks>
|
||||
public MeterPwdFile(GenesisMeter genesisMeter)
|
||||
@@ -48,8 +66,8 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
|
||||
private Boolean SetHashedPwdFile(Byte[] hashedPwdFile)
|
||||
{
|
||||
if (MeterPwdDb.PwdFileLength != hashedPwdFile.Length) return false;
|
||||
_hashedPasswordFile = new Byte[hashedPwdFile.Length];
|
||||
_hashedPasswordFile = hashedPwdFile;
|
||||
HashedPasswordFile = new Byte[hashedPwdFile.Length];
|
||||
HashedPasswordFile = hashedPwdFile;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -165,12 +183,12 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
|
||||
if (passwords.Any( x => x.Length != MeterPwdDb.ClearTextPwdLength))
|
||||
{
|
||||
throw new ApplicationException("Individual password length is out of range! " +
|
||||
$"Expected for each password: {MeterPwdDb.ClearTextPwdLength}");
|
||||
$"Expected length for each password: {MeterPwdDb.ClearTextPwdLength}");
|
||||
}
|
||||
// The password list has to contain 8 passwords
|
||||
if (passwords.Count != MeterPwdDb.PwdLevels)
|
||||
{
|
||||
throw new ApplicationException("List of passwords is out of range! " +
|
||||
throw new ApplicationException("Number of passwords is out of range! " +
|
||||
$"Expected: {MeterPwdDb.PwdLevels}, " +
|
||||
$"Transmitted: {passwords.Count }");
|
||||
}
|
||||
@@ -201,7 +219,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
|
||||
$"Expected: {MeterPwdDb.PwdFileLength}, " +
|
||||
$"Transmitted: {hashedPasswords.ToArray().Length }");
|
||||
}
|
||||
_hashedPasswordFile = hashedPasswords.ToArray();
|
||||
HashedPasswordFile = hashedPasswords.ToArray();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -277,10 +295,10 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
|
||||
if (!SetHashedPwdFile(hashedPwdFile)) return false;
|
||||
}
|
||||
|
||||
if (_hashedPasswordFile != null && _meterFile != null && _genesisMeter != null
|
||||
&& _genesisMeter.IsLoggedOn && _hashedPasswordFile.Length == MeterPwdDb.PwdFileLength)
|
||||
if (HashedPasswordFile != null && _meterFile != null && _genesisMeter != null
|
||||
&& _genesisMeter.IsLoggedOn && HashedPasswordFile.Length == MeterPwdDb.PwdFileLength)
|
||||
{
|
||||
return _meterFile.WriteMeterFile(StrPasswordFileName, _hashedPasswordFile);
|
||||
return _meterFile.WriteMeterFile(StrPasswordFileName, HashedPasswordFile);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -302,11 +320,11 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile
|
||||
{
|
||||
if (!SetHashedPwdFile(hashedPwdFile)) return false;
|
||||
}
|
||||
if (_hashedPasswordFile == null)
|
||||
if (HashedPasswordFile == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return _meterFile.VerifyMeterFile(StrPasswordFileName, _hashedPasswordFile);
|
||||
return _meterFile.VerifyMeterFile(StrPasswordFileName, HashedPasswordFile);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user