Program: 109671
Project: 109671
Buggy source:
public void testVerify() throws NoSuchAlgorithmException {
  byte[] expected_A=trim(new BigInteger("String_Node_Str",16).toByteArray());
  byte[] expected_x=new BigInteger("String_Node_Str",16).toByteArray();
  byte[] expected_M1=trim(new BigInteger("String_Node_Str",16).toByteArray());
  byte[] expected_M2=trim(new BigInteger("String_Node_Str",16).toByteArray());
  String username="String_Node_Str", password="String_Node_Str", salt="String_Node_Str", a="String_Node_Str";
  byte[] a_byte=new BigInteger(a,16).toByteArray();
  SRPParameters params=new SRPParameters(new BigInteger(ConfigHelper.NG_1024,16).toByteArray(),new BigInteger("String_Node_Str").toByteArray(),new BigInteger(salt,16).toByteArray(),"String_Node_Str");
  LeapSRPSession client=new LeapSRPSession(username,password,params,a_byte);
  byte[] x=client.calculatePasswordHash(username,password,new BigInteger(salt,16).toByteArray());
  assertTrue(Arrays.equals(x,expected_x));
  byte[] A=client.exponential();
  assertTrue(Arrays.equals(A,expected_A));
  String B="String_Node_Str";
  byte[] M1=client.response(new BigInteger(salt,16).toByteArray(),new BigInteger(B,16).toByteArray());
  assertTrue(Arrays.equals(M1,expected_M1));
  boolean verified=client.verify(expected_M2);
  assertTrue(verified);
  expected_A=trim(new BigInteger("String_Node_Str",16).toByteArray());
  expected_M1=trim(new BigInteger("String_Node_Str",16).toByteArray());
  a="String_Node_Str";
  expected_M2=trim(new BigInteger("String_Node_Str",16).toByteArray());
  a_byte=new BigInteger(a,16).toByteArray();
  params=new SRPParameters(new BigInteger(ConfigHelper.NG_1024,16).toByteArray(),new BigInteger("String_Node_Str").toByteArray(),new BigInteger(salt,16).toByteArray(),"String_Node_Str");
  client=new LeapSRPSession(username,password,params,a_byte);
  x=client.calculatePasswordHash(username,password,new BigInteger(salt,16).toByteArray());
  A=client.exponential();
  B="String_Node_Str";
  M1=client.response(new BigInteger(salt,16).toByteArray(),new BigInteger(B,16).toByteArray());
  assertTrue(Arrays.equals(M1,expected_M1));
  verified=client.verify(expected_M2);
  assertTrue(verified);
  expected_A=trim(new BigInteger("String_Node_Str",16).toByteArray());
  expected_M1=trim(new BigInteger("String_Node_Str",16).toByteArray());
  a="String_Node_Str";
  expected_M2=trim(new BigInteger("String_Node_Str",16).toByteArray());
  a_byte=new BigInteger(a,16).toByteArray();
  params=new SRPParameters(new BigInteger(ConfigHelper.NG_1024,16).toByteArray(),new BigInteger("String_Node_Str").toByteArray(),new BigInteger(salt,16).toByteArray(),"String_Node_Str");
  client=new LeapSRPSession(username,password,params,a_byte);
  x=client.calculatePasswordHash(username,password,new BigInteger(salt,16).toByteArray());
  A=client.exponential();
  B="String_Node_Str";
  M1=client.response(new BigInteger(salt,16).toByteArray(),new BigInteger(B,16).toByteArray());
  assertTrue(Arrays.equals(M1,expected_M1));
  verified=client.verify(expected_M2);
  assertTrue(verified);
  username="String_Node_Str";
  password="String_Node_Str";
  salt="String_Node_Str";
  expected_A=trim(new BigInteger("String_Node_Str",16).toByteArray());
  expected_x=trim(new BigInteger("String_Node_Str",16).toByteArray());
  a="String_Node_Str";
  B="String_Node_Str";
  expected_M1=trim(new BigInteger("String_Node_Str",16).toByteArray());
  expected_M2=trim(new BigInteger("String_Node_Str",16).toByteArray());
  a_byte=new BigInteger(a,16).toByteArray();
  params=new SRPParameters(new BigInteger(ConfigHelper.NG_1024,16).toByteArray(),new BigInteger("String_Node_Str").toByteArray(),new BigInteger(salt,16).toByteArray(),"String_Node_Str");
  client=new LeapSRPSession(username,password,params,a_byte);
  x=client.calculatePasswordHash(username,password,trim(new BigInteger(salt,16).toByteArray()));
  assertTrue(Arrays.equals(x,expected_x));
  A=client.exponential();
  assertTrue(Arrays.equals(A,expected_A));
  M1=client.response(trim(new BigInteger(salt,16).toByteArray()),new BigInteger(B,16).toByteArray());
  assertTrue(Arrays.equals(M1,expected_M1));
  verified=client.verify(expected_M2);
  assertTrue(verified);
  username="String_Node_Str";
  password="String_Node_Str";
  salt="String_Node_Str";
  expected_A=trim(new BigInteger("String_Node_Str",16).toByteArray());
  expected_x=trim(new BigInteger("String_Node_Str",16).toByteArray());
  a="String_Node_Str";
  B="String_Node_Str";
  expected_M1=trim(new BigInteger("String_Node_Str",16).toByteArray());
  expected_M2=trim(new BigInteger("String_Node_Str",16).toByteArray());
  a_byte=new BigInteger(a,16).toByteArray();
  params=new SRPParameters(new BigInteger(ConfigHelper.NG_1024,16).toByteArray(),new BigInteger("String_Node_Str").toByteArray(),new BigInteger(salt,16).toByteArray(),"String_Node_Str");
  client=new LeapSRPSession(username,password,params,a_byte);
  x=client.calculatePasswordHash(username,password,trim(new BigInteger(salt,16).toByteArray()));
  assertTrue(Arrays.equals(x,expected_x));
  A=client.exponential();
  assertTrue(Arrays.equals(A,expected_A));
  M1=client.response(trim(new BigInteger(salt,16).toByteArray()),new BigInteger(B,16).toByteArray());
  assertTrue(Arrays.equals(M1,expected_M1));
  verified=client.verify(expected_M2);
  assertTrue(verified);
  username="String_Node_Str";
  password="String_Node_Str";
  salt="String_Node_Str";
  expected_A=trim(new BigInteger("String_Node_Str",16).toByteArray());
  String x_string="String_Node_Str";
  expected_x=trim(new BigInteger(x_string,16).toByteArray());
  assertEquals(new BigInteger(1,expected_x).toString(16),x_string);
  a="String_Node_Str";
  B="String_Node_Str";
  expected_M1=trim(new BigInteger("String_Node_Str",16).toByteArray());
  expected_M2=trim(new BigInteger("String_Node_Str",16).toByteArray());
  a_byte=new BigInteger(a,16).toByteArray();
  params=new SRPParameters(new BigInteger(ConfigHelper.NG_1024,16).toByteArray(),new BigInteger("String_Node_Str").toByteArray(),new BigInteger(salt,16).toByteArray(),"String_Node_Str");
  client=new LeapSRPSession(username,password,params,a_byte);
  x=client.calculatePasswordHash(username,password,trim(new BigInteger(salt,16).toByteArray()));
  assertTrue(Arrays.equals(x,expected_x));
  assertEquals(new BigInteger(1,expected_x).toString(16),new BigInteger(1,x).toString(16));
  A=client.exponential();
  assertTrue(Arrays.equals(A,expected_A));
  M1=client.response(new BigInteger(salt,16).toByteArray(),new BigInteger(B,16).toByteArray());
  assertTrue(Arrays.equals(M1,expected_M1));
  verified=client.verify(expected_M2);
  assertTrue(verified);
  username="String_Node_Str";
  password="String_Node_Str";
  salt="String_Node_Str";
  expected_A=trim(new BigInteger("String_Node_Str",16).toByteArray());
  x_string="String_Node_Str";
  expected_x=trim(new BigInteger(x_string,16).toByteArray());
  assertEquals(new BigInteger(1,expected_x).toString(16),x_string);
  a="String_Node_Str";
  B="String_Node_Str";
  expected_M1=trim(new BigInteger("String_Node_Str",16).toByteArray());
  expected_M2=trim(new BigInteger("String_Node_Str",16).toByteArray());
  a_byte=new BigInteger(a,16).toByteArray();
  params=new SRPParameters(new BigInteger(ConfigHelper.NG_1024,16).toByteArray(),new BigInteger("String_Node_Str").toByteArray(),new BigInteger(salt,16).toByteArray(),"String_Node_Str");
  client=new LeapSRPSession(username,password,params,a_byte);
  x=client.calculatePasswordHash(username,password,trim(new BigInteger(salt,16).toByteArray()));
  assertTrue(Arrays.equals(x,expected_x));
  assertEquals(new BigInteger(1,expected_x).toString(16),new BigInteger(1,x).toString(16));
  A=client.exponential();
  assertTrue(Arrays.equals(A,expected_A));
  M1=client.response(new BigInteger(salt,16).toByteArray(),new BigInteger(B,16).toByteArray());
  assertTrue(Arrays.equals(M1,expected_M1));
  verified=client.verify(expected_M2);
  assertTrue(verified);
  username="String_Node_Str";
  password="String_Node_Str";
  a="String_Node_Str";
  salt="String_Node_Str";
  expected_A=trim(new BigInteger("String_Node_Str",16).toByteArray());
  x_string="String_Node_Str";
  expected_x=trim(new BigInteger(x_string,16).toByteArray());
  assertEquals(new BigInteger(1,expected_x).toString(16),x_string);
  B="String_Node_Str";
  expected_M1=trim(new BigInteger("String_Node_Str",16).toByteArray());
  expected_M2=trim(new BigInteger("String_Node_Str",16).toByteArray());
  a_byte=new BigInteger(a,16).toByteArray();
  params=new SRPParameters(new BigInteger(ConfigHelper.NG_1024,16).toByteArray(),new BigInteger("String_Node_Str").toByteArray(),new BigInteger(salt,16).toByteArray(),"String_Node_Str");
  client=new LeapSRPSession(username,password,params,a_byte);
  x=client.calculatePasswordHash(username,password,trim(new BigInteger(salt,16).toByteArray()));
  assertTrue(Arrays.equals(x,expected_x));
  assertEquals(new BigInteger(1,expected_x).toString(16),new BigInteger(1,x).toString(16));
  A=client.exponential();
  assertTrue(Arrays.equals(A,expected_A));
  M1=client.response(new BigInteger(salt,16).toByteArray(),new BigInteger(B,16).toByteArray());
  assertTrue(Arrays.equals(M1,expected_M1));
  verified=client.verify(expected_M2);
  assertTrue(verified);
  username="String_Node_Str";
  password="String_Node_Str";
  a="String_Node_Str";
  salt="String_Node_Str";
  expected_A=trim(new BigInteger("String_Node_Str",16).toByteArray());
  x_string="String_Node_Str";
  expected_x=trim(new BigInteger(x_string,16).toByteArray());
  assertEquals(new BigInteger(1,expected_x).toString(16),x_string);
  B="String_Node_Str";
  expected_M1=trim(new BigInteger("String_Node_Str",16).toByteArray());
  expected_M2=trim(new BigInteger("String_Node_Str",16).toByteArray());
  a_byte=new BigInteger(a,16).toByteArray();
  params=new SRPParameters(new BigInteger(ConfigHelper.NG_1024,16).toByteArray(),new BigInteger("String_Node_Str").toByteArray(),new BigInteger(salt,16).toByteArray(),"String_Node_Str");
  client=new LeapSRPSession(username,password,params,a_byte);
  x=client.calculatePasswordHash(username,password,trim(new BigInteger(salt,16).toByteArray()));
  assertTrue(Arrays.equals(x,expected_x));
  assertEquals(new BigInteger(1,expected_x).toString(16),new BigInteger(1,x).toString(16));
  A=client.exponential();
  assertTrue(Arrays.equals(A,expected_A));
  M1=client.response(new BigInteger(salt,16).toByteArray(),new BigInteger(B,16).toByteArray());
  assertTrue(Arrays.equals(M1,expected_M1));
  verified=client.verify(expected_M2);
  assertTrue(verified);
  username="String_Node_Str";
  password="String_Node_Str";
  a="String_Node_Str";
  salt="String_Node_Str";
  expected_A=trim(new BigInteger("String_Node_Str",16).toByteArray());
  x_string="String_Node_Str";
  expected_x=trim(new BigInteger(x_string,16).toByteArray());
  assertEquals(new BigInteger(1,expected_x).toString(16),x_string);
  B="String_Node_Str";
  expected_M1=trim(new BigInteger("String_Node_Str",16).toByteArray());
  expected_M2=trim(new BigInteger("String_Node_Str",16).toByteArray());
  a_byte=new BigInteger(a,16).toByteArray();
  params=new SRPParameters(new BigInteger(ConfigHelper.NG_1024,16).toByteArray(),new BigInteger("String_Node_Str").toByteArray(),new BigInteger(salt,16).toByteArray(),"String_Node_Str");
  client=new LeapSRPSession(username,password,params,a_byte);
  x=client.calculatePasswordHash(username,password,trim(new BigInteger(salt,16).toByteArray()));
  assertTrue(Arrays.equals(x,expected_x));
  assertEquals(new BigInteger(1,expected_x).toString(16),new BigInteger(1,x).toString(16));
  A=client.exponential();
  assertTrue(Arrays.equals(A,expected_A));
  M1=client.response(new BigInteger(salt,16).toByteArray(),new BigInteger(B,16).toByteArray());
  assertTrue(Arrays.equals(M1,expected_M1));
  verified=client.verify(expected_M2);
  assertTrue(verified);
  username="String_Node_Str";
  password="String_Node_Str";
  a="String_Node_Str";
  salt="String_Node_Str";
  expected_A=trim(new BigInteger("String_Node_Str",16).toByteArray());
  x_string="String_Node_Str";
  expected_x=trim(new BigInteger(x_string,16).toByteArray());
  assertEquals(new BigInteger(1,expected_x).toString(16),x_string);
  B="String_Node_Str";
  expected_M1=trim(new BigInteger("String_Node_Str",16).toByteArray());
  expected_M2=trim(new BigInteger("String_Node_Str",16).toByteArray());
  a_byte=new BigInteger(a,16).toByteArray();
  params=new SRPParameters(new BigInteger(ConfigHelper.NG_1024,16).toByteArray(),new BigInteger("String_Node_Str").toByteArray(),new BigInteger(salt,16).toByteArray(),"String_Node_Str");
  client=new LeapSRPSession(username,password,params,a_byte);
  x=client.calculatePasswordHash(username,password,trim(new BigInteger(salt,16).toByteArray()));
  assertTrue(Arrays.equals(x,expected_x));
  assertEquals(new BigInteger(1,expected_x).toString(16),new BigInteger(1,x).toString(16));
  A=client.exponential();
  assertTrue(Arrays.equals(A,expected_A));
  M1=client.response(new BigInteger(salt,16).toByteArray(),new BigInteger(B,16).toByteArray());
  assertTrue(Arrays.equals(M1,expected_M1));
  verified=client.verify(expected_M2);
  assertTrue(verified);
}

Fixed version (ground truth):
public void testVerify() throws NoSuchAlgorithmException {
  byte[] expected_A=trim(new BigInteger("String_Node_Str",16).toByteArray());
  byte[] expected_x=new BigInteger("String_Node_Str",16).toByteArray();
  byte[] expected_M1=trim(new BigInteger("String_Node_Str",16).toByteArray());
  byte[] expected_M2=trim(new BigInteger("String_Node_Str",16).toByteArray());
  String username="String_Node_Str", password="String_Node_Str", salt="String_Node_Str", a="String_Node_Str";
  byte[] a_byte=new BigInteger(a,16).toByteArray();
  LeapSRPSession client=new LeapSRPSession(username,password,a_byte);
  byte[] x=client.calculatePasswordHash(username,password,new BigInteger(salt,16).toByteArray());
  assertTrue(Arrays.equals(x,expected_x));
  byte[] A=client.exponential();
  assertTrue(Arrays.equals(A,expected_A));
  String B="String_Node_Str";
  byte[] M1=client.response(new BigInteger(salt,16).toByteArray(),new BigInteger(B,16).toByteArray());
  assertTrue(Arrays.equals(M1,expected_M1));
  boolean verified=client.verify(expected_M2);
  assertTrue(verified);
  expected_A=trim(new BigInteger("String_Node_Str",16).toByteArray());
  expected_M1=trim(new BigInteger("String_Node_Str",16).toByteArray());
  a="String_Node_Str";
  expected_M2=trim(new BigInteger("String_Node_Str",16).toByteArray());
  a_byte=new BigInteger(a,16).toByteArray();
  client=new LeapSRPSession(username,password,a_byte);
  x=client.calculatePasswordHash(username,password,new BigInteger(salt,16).toByteArray());
  A=client.exponential();
  B="String_Node_Str";
  M1=client.response(new BigInteger(salt,16).toByteArray(),new BigInteger(B,16).toByteArray());
  assertTrue(Arrays.equals(M1,expected_M1));
  verified=client.verify(expected_M2);
  assertTrue(verified);
  expected_A=trim(new BigInteger("String_Node_Str",16).toByteArray());
  expected_M1=trim(new BigInteger("String_Node_Str",16).toByteArray());
  a="String_Node_Str";
  expected_M2=trim(new BigInteger("String_Node_Str",16).toByteArray());
  a_byte=new BigInteger(a,16).toByteArray();
  client=new LeapSRPSession(username,password,a_byte);
  x=client.calculatePasswordHash(username,password,new BigInteger(salt,16).toByteArray());
  A=client.exponential();
  B="String_Node_Str";
  M1=client.response(new BigInteger(salt,16).toByteArray(),new BigInteger(B,16).toByteArray());
  assertTrue(Arrays.equals(M1,expected_M1));
  verified=client.verify(expected_M2);
  assertTrue(verified);
  username="String_Node_Str";
  password="String_Node_Str";
  salt="String_Node_Str";
  expected_A=trim(new BigInteger("String_Node_Str",16).toByteArray());
  expected_x=trim(new BigInteger("String_Node_Str",16).toByteArray());
  a="String_Node_Str";
  B="String_Node_Str";
  expected_M1=trim(new BigInteger("String_Node_Str",16).toByteArray());
  expected_M2=trim(new BigInteger("String_Node_Str",16).toByteArray());
  a_byte=new BigInteger(a,16).toByteArray();
  client=new LeapSRPSession(username,password,a_byte);
  x=client.calculatePasswordHash(username,password,trim(new BigInteger(salt,16).toByteArray()));
  assertTrue(Arrays.equals(x,expected_x));
  A=client.exponential();
  assertTrue(Arrays.equals(A,expected_A));
  M1=client.response(trim(new BigInteger(salt,16).toByteArray()),new BigInteger(B,16).toByteArray());
  assertTrue(Arrays.equals(M1,expected_M1));
  verified=client.verify(expected_M2);
  assertTrue(verified);
  username="String_Node_Str";
  password="String_Node_Str";
  salt="String_Node_Str";
  expected_A=trim(new BigInteger("String_Node_Str",16).toByteArray());
  expected_x=trim(new BigInteger("String_Node_Str",16).toByteArray());
  a="String_Node_Str";
  B="String_Node_Str";
  expected_M1=trim(new BigInteger("String_Node_Str",16).toByteArray());
  expected_M2=trim(new BigInteger("String_Node_Str",16).toByteArray());
  a_byte=new BigInteger(a,16).toByteArray();
  client=new LeapSRPSession(username,password,a_byte);
  x=client.calculatePasswordHash(username,password,trim(new BigInteger(salt,16).toByteArray()));
  assertTrue(Arrays.equals(x,expected_x));
  A=client.exponential();
  assertTrue(Arrays.equals(A,expected_A));
  M1=client.response(trim(new BigInteger(salt,16).toByteArray()),new BigInteger(B,16).toByteArray());
  assertTrue(Arrays.equals(M1,expected_M1));
  verified=client.verify(expected_M2);
  assertTrue(verified);
  username="String_Node_Str";
  password="String_Node_Str";
  salt="String_Node_Str";
  expected_A=trim(new BigInteger("String_Node_Str",16).toByteArray());
  String x_string="String_Node_Str";
  expected_x=trim(new BigInteger(x_string,16).toByteArray());
  assertEquals(new BigInteger(1,expected_x).toString(16),x_string);
  a="String_Node_Str";
  B="String_Node_Str";
  expected_M1=trim(new BigInteger("String_Node_Str",16).toByteArray());
  expected_M2=trim(new BigInteger("String_Node_Str",16).toByteArray());
  a_byte=new BigInteger(a,16).toByteArray();
  client=new LeapSRPSession(username,password,a_byte);
  x=client.calculatePasswordHash(username,password,trim(new BigInteger(salt,16).toByteArray()));
  assertTrue(Arrays.equals(x,expected_x));
  assertEquals(new BigInteger(1,expected_x).toString(16),new BigInteger(1,x).toString(16));
  A=client.exponential();
  assertTrue(Arrays.equals(A,expected_A));
  M1=client.response(new BigInteger(salt,16).toByteArray(),new BigInteger(B,16).toByteArray());
  assertTrue(Arrays.equals(M1,expected_M1));
  verified=client.verify(expected_M2);
  assertTrue(verified);
  username="String_Node_Str";
  password="String_Node_Str";
  salt="String_Node_Str";
  expected_A=trim(new BigInteger("String_Node_Str",16).toByteArray());
  x_string="String_Node_Str";
  expected_x=trim(new BigInteger(x_string,16).toByteArray());
  assertEquals(new BigInteger(1,expected_x).toString(16),x_string);
  a="String_Node_Str";
  B="String_Node_Str";
  expected_M1=trim(new BigInteger("String_Node_Str",16).toByteArray());
  expected_M2=trim(new BigInteger("String_Node_Str",16).toByteArray());
  a_byte=new BigInteger(a,16).toByteArray();
  client=new LeapSRPSession(username,password,a_byte);
  x=client.calculatePasswordHash(username,password,trim(new BigInteger(salt,16).toByteArray()));
  assertTrue(Arrays.equals(x,expected_x));
  assertEquals(new BigInteger(1,expected_x).toString(16),new BigInteger(1,x).toString(16));
  A=client.exponential();
  assertTrue(Arrays.equals(A,expected_A));
  M1=client.response(new BigInteger(salt,16).toByteArray(),new BigInteger(B,16).toByteArray());
  assertTrue(Arrays.equals(M1,expected_M1));
  verified=client.verify(expected_M2);
  assertTrue(verified);
  username="String_Node_Str";
  password="String_Node_Str";
  a="String_Node_Str";
  salt="String_Node_Str";
  expected_A=trim(new BigInteger("String_Node_Str",16).toByteArray());
  x_string="String_Node_Str";
  expected_x=trim(new BigInteger(x_string,16).toByteArray());
  assertEquals(new BigInteger(1,expected_x).toString(16),x_string);
  B="String_Node_Str";
  expected_M1=trim(new BigInteger("String_Node_Str",16).toByteArray());
  expected_M2=trim(new BigInteger("String_Node_Str",16).toByteArray());
  a_byte=new BigInteger(a,16).toByteArray();
  client=new LeapSRPSession(username,password,a_byte);
  x=client.calculatePasswordHash(username,password,trim(new BigInteger(salt,16).toByteArray()));
  assertTrue(Arrays.equals(x,expected_x));
  assertEquals(new BigInteger(1,expected_x).toString(16),new BigInteger(1,x).toString(16));
  A=client.exponential();
  assertTrue(Arrays.equals(A,expected_A));
  M1=client.response(new BigInteger(salt,16).toByteArray(),new BigInteger(B,16).toByteArray());
  assertTrue(Arrays.equals(M1,expected_M1));
  verified=client.verify(expected_M2);
  assertTrue(verified);
  username="String_Node_Str";
  password="String_Node_Str";
  a="String_Node_Str";
  salt="String_Node_Str";
  expected_A=trim(new BigInteger("String_Node_Str",16).toByteArray());
  x_string="String_Node_Str";
  expected_x=trim(new BigInteger(x_string,16).toByteArray());
  assertEquals(new BigInteger(1,expected_x).toString(16),x_string);
  B="String_Node_Str";
  expected_M1=trim(new BigInteger("String_Node_Str",16).toByteArray());
  expected_M2=trim(new BigInteger("String_Node_Str",16).toByteArray());
  a_byte=new BigInteger(a,16).toByteArray();
  client=new LeapSRPSession(username,password,a_byte);
  x=client.calculatePasswordHash(username,password,trim(new BigInteger(salt,16).toByteArray()));
  assertTrue(Arrays.equals(x,expected_x));
  assertEquals(new BigInteger(1,expected_x).toString(16),new BigInteger(1,x).toString(16));
  A=client.exponential();
  assertTrue(Arrays.equals(A,expected_A));
  M1=client.response(new BigInteger(salt,16).toByteArray(),new BigInteger(B,16).toByteArray());
  assertTrue(Arrays.equals(M1,expected_M1));
  verified=client.verify(expected_M2);
  assertTrue(verified);
  username="String_Node_Str";
  password="String_Node_Str";
  a="String_Node_Str";
  salt="String_Node_Str";
  expected_A=trim(new BigInteger("String_Node_Str",16).toByteArray());
  x_string="String_Node_Str";
  expected_x=trim(new BigInteger(x_string,16).toByteArray());
  assertEquals(new BigInteger(1,expected_x).toString(16),x_string);
  B="String_Node_Str";
  expected_M1=trim(new BigInteger("String_Node_Str",16).toByteArray());
  expected_M2=trim(new BigInteger("String_Node_Str",16).toByteArray());
  a_byte=new BigInteger(a,16).toByteArray();
  client=new LeapSRPSession(username,password,a_byte);
  x=client.calculatePasswordHash(username,password,trim(new BigInteger(salt,16).toByteArray()));
  assertTrue(Arrays.equals(x,expected_x));
  assertEquals(new BigInteger(1,expected_x).toString(16),new BigInteger(1,x).toString(16));
  A=client.exponential();
  assertTrue(Arrays.equals(A,expected_A));
  M1=client.response(new BigInteger(salt,16).toByteArray(),new BigInteger(B,16).toByteArray());
  assertTrue(Arrays.equals(M1,expected_M1));
  verified=client.verify(expected_M2);
  assertTrue(verified);
  username="String_Node_Str";
  password="String_Node_Str";
  a="String_Node_Str";
  salt="String_Node_Str";
  expected_A=trim(new BigInteger("String_Node_Str",16).toByteArray());
  x_string="String_Node_Str";
  expected_x=trim(new BigInteger(x_string,16).toByteArray());
  assertEquals(new BigInteger(1,expected_x).toString(16),x_string);
  B="String_Node_Str";
  expected_M1=trim(new BigInteger("String_Node_Str",16).toByteArray());
  expected_M2=trim(new BigInteger("String_Node_Str",16).toByteArray());
  a_byte=new BigInteger(a,16).toByteArray();
  client=new LeapSRPSession(username,password,a_byte);
  x=client.calculatePasswordHash(username,password,trim(new BigInteger(salt,16).toByteArray()));
  assertTrue(Arrays.equals(x,expected_x));
  assertEquals(new BigInteger(1,expected_x).toString(16),new BigInteger(1,x).toString(16));
  A=client.exponential();
  assertTrue(Arrays.equals(A,expected_A));
  M1=client.response(new BigInteger(salt,16).toByteArray(),new BigInteger(B,16).toByteArray());
  assertTrue(Arrays.equals(M1,expected_M1));
  verified=client.verify(expected_M2);
  assertTrue(verified);
}