1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
use std::str::FromStr; use crate::error::Error; #[derive(Debug, Copy, Clone)] pub enum AuthPlugin { MySqlNativePassword, CachingSha2Password, Sha256Password, } impl AuthPlugin { pub(crate) fn name(self) -> &'static str { match self { AuthPlugin::MySqlNativePassword => "mysql_native_password", AuthPlugin::CachingSha2Password => "caching_sha2_password", AuthPlugin::Sha256Password => "sha256_password", } } } impl FromStr for AuthPlugin { type Err = Error; fn from_str(s: &str) -> Result<Self, Self::Err> { match s { "mysql_native_password" => Ok(AuthPlugin::MySqlNativePassword), "caching_sha2_password" => Ok(AuthPlugin::CachingSha2Password), "sha256_password" => Ok(AuthPlugin::Sha256Password), _ => Err(err_protocol!("unknown authentication plugin: {}", s)), } } }