pub trait Signer {
fn GetName(&self) -> String;
fn GetType(&self) -> String;
fn GetVersion(&self) -> String;
fn GetAccessKeyId(&self) -> Result<String, Error>;
fn GetExtraParam(&self) -> Option<HashMap<String, String>>;
fn Sign(&self, stringToSign: &str, secretSuffix: &str) -> String;
}