anchor.diff:  %% g: A generator modulo N
   get_generator() -> 2.
   
  -%% get key size (bytes)
  +%% get key size (bits)
   get_key_size() -> 128.
   
   %% k = H(N, g): Multiplier parameter
  
positive.code: %% server session key
  -spec server_session(list(), list(), binary(), integer(), integer(), integer()) -> binary().
  server_session(Username, Password, Salt, ClientPublic, ServerPublic, ServerPrivate) ->
      U = bin_to_int(crypto:hash(sha, [int_to_bin(ClientPublic, get_key_size()), int_to_bin(ServerPublic, get_key_size())])),
      V = get_verifier(Username, Password, Salt),
      VU = bin_to_int(crypto:mod_pow(V, U, get_prime())),
      AVU = remainder(ClientPublic * VU, get_prime()),
  
negative.code: client_session(Username, Password, Salt, ClientPublic, ServerPublic, ClientPrivate) ->
      User = list_to_binary(Username),
      Pass = list_to_binary(Password),
      U = bin_to_int(crypto:hash(sha, [int_to_bin(ClientPublic, get_key_size() div 8), int_to_bin(ServerPublic, get_key_size() div 8)])),
      X = get_user_hash(User, Pass, Salt),
      GX = bin_to_int(crypto:mod_pow(get_generator(), X, get_prime())),
      KGX = remainder(get_k() * GX, get_prime()),
  