2
0

Fix generation of valid random passwords for state test.

This commit is contained in:
Maarten Billemont 2017-11-06 14:14:37 -05:00
parent e30b618241
commit 11d9af3844

View File

@ -109,26 +109,37 @@ public class MPMasterKeyTest {
char[] masterPassword = testCase.getMasterPassword().toCharArray(); char[] masterPassword = testCase.getMasterPassword().toCharArray();
MPMasterKey masterKey = new MPMasterKey( testCase.getFullName(), masterPassword ); MPMasterKey masterKey = new MPMasterKey( testCase.getFullName(), masterPassword );
Random random = new Random(); String password = randomString( 8 );
StringBuilder password = new StringBuilder();
for (int p = 0; p < 8; ++p)
password.append( (char) (random.nextInt( Character.MAX_CODE_POINT - Character.MIN_CODE_POINT ) + Character.MIN_CODE_POINT) );
logger.dbg( "password: %s", CodeUtils.encodeHex( password.toString().getBytes( Charsets.UTF_8 ) ) );
for (final MPMasterKey.Version version : MPMasterKey.Version.values()) { for (final MPMasterKey.Version version : MPMasterKey.Version.values()) {
MPResultType resultType = MPResultType.StoredPersonal; MPResultType resultType = MPResultType.StoredPersonal;
// Test site state // Test site state
String state = masterKey.siteState( testCase.getSiteName(), testCase.getSiteCounter(), testCase.getKeyPurpose(), String state = masterKey.siteState( testCase.getSiteName(), testCase.getSiteCounter(), testCase.getKeyPurpose(),
testCase.getKeyContext(), resultType, password.toString(), version ); testCase.getKeyContext(), resultType, password, version );
String result = masterKey.siteResult( testCase.getSiteName(), testCase.getSiteCounter(), testCase.getKeyPurpose(), String result = masterKey.siteResult( testCase.getSiteName(), testCase.getSiteCounter(), testCase.getKeyPurpose(),
testCase.getKeyContext(), resultType, state, version ); testCase.getKeyContext(), resultType, state, version );
logger.dbg( "result: %s", CodeUtils.encodeHex( result.getBytes( Charsets.UTF_8 ) ) );
assertEquals( assertEquals(
result, result,
password.toString(), password,
"[testSiteState] state mismatch: " + testCase ); "[testSiteState] state mismatch: " + testCase );
} }
} }
public static String randomString(int length) {
Random random = new Random();
StringBuilder builder = new StringBuilder();
while (length > 0) {
int codePoint = random.nextInt( Character.MAX_CODE_POINT - Character.MIN_CODE_POINT ) + Character.MIN_CODE_POINT;
if (!Character.isDefined( codePoint ) || (Character.getType( codePoint ) == Character.PRIVATE_USE) || Character.isSurrogate(
(char) codePoint ))
continue;
builder.appendCodePoint( codePoint );
length--;
}
return builder.toString();
}
} }