MySQLPacketAuthSwitchResponse.createWithNativePassword constructor
MySQLPacketAuthSwitchResponse.createWithNativePassword({})
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,
);
}