private boolean verifyVersion1(char[] cleartext,String hash) throws PasswordException {
  String[] parts=split(hash);
  int id=Integer.parseInt(parts[1],RADIX_HEX);
  byte[] salt=Base64.decode(parts[2]);
  HashAlgorithmConfig config=configCoder.decode(parts[3]);
  byte[] hashBytes=Base64.decode(parts[4]);
  HashAlgorithm hashAlgorithm;
  try {
    hashAlgorithm=hashAlgorithmRegistry.getAlgorithm(id);
  }
 catch (  AlgorithmException e) {
    throw new PasswordException(e);
  }
  byte[] hashedCleartext;
  try {
    hashedCleartext=hashAlgorithm.hash(cleartext,salt,config);
  }
 catch (  AlgorithmException e) {
    throw new PasswordException(e);
  }
  return slowEquals(hashedCleartext,hashBytes);
}

private boolean verifyVersion1 ( char [ ] cleartext , String hash ) throws PasswordException { String [ ] parts = split ( hash ) ; int id = Integer . parseInt ( parts [ 1 ] , RADIX_HEX ) ; byte [ ] salt = Base64 . decode ( parts [ 2 ] ) ; HashAlgorithmConfig config = configCoder . decode ( parts [ 3 ] ) ; byte [ ] hashBytes = Base64 . decode ( parts [ 4 ] ) ; HashAlgorithm hashAlgorithm ; try { hashAlgorithm = hashAlgorithmRegistry . getAlgorithm ( id ) ; } catch ( AlgorithmException e ) { throw new PasswordException ( e ) ; } byte [ ] hashedCleartext ; try { hashedCleartext = hashAlgorithm . hash ( cleartext , salt , config ) ; } catch ( AlgorithmException e ) { throw new PasswordException ( e ) ; } return slowEquals ( hashedCleartext , hashBytes ) ; }
verifies that the cleartext matches the hash generated by the version 1 of the software .
