MySQLPacketAuthSwitchResponse.createWithNativePassword constructor

MySQLPacketAuthSwitchResponse.createWithNativePassword({
  1. required String password,
  2. required Uint8List challenge,
})

Cria uma resposta de autenticação para o método nativo utilizando a senha e o desafio recebido pelo servidor.

  • password: A senha do usuário.
  • challenge: Os dados do desafio enviados pelo servidor (deve ter 20 bytes).

Se a senha estiver vazia, retorna um pacote com authData vazio.

A resposta é calculada da seguinte forma: authData = xor(sha1(password), sha1(challenge + sha1(sha1(password))))

Implementation

factory MySQLPacketAuthSwitchResponse.createWithNativePassword({
  required String password,
  required Uint8List challenge,
}) {
  // Verifica se o tamanho do desafio é o esperado.
  assert(challenge.length == 20);
  if (password == '') {
    return MySQLPacketAuthSwitchResponse(authData: Uint8List(0));
  }
  // Converte a senha para bytes UTF-8.
  final passwordBytes = utf8.encode(password);

  // Calcula a resposta de autenticação utilizando a função xor e os hashes SHA1.
  final authData =
      xor(sha1(passwordBytes), sha1(challenge + sha1(sha1(passwordBytes))));

  return MySQLPacketAuthSwitchResponse(
    authData: authData,
  );
}