I'm trying to create a basic HTTP server that authorizes users with Authorization Pubkey:Sig
like what Crust explained here.
However, creating a Signature
from &str
with Signature::fromSlice()
failing. How can I convert the &str
to a Signature
?
pub type Signature = subxt::sp_core::sr25519::Signature;
pub type PublicKey = subxt::sp_core::sr25519::Public;
let pub_key = value.get(0).unwrap(); // 5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY
let sig = value.get(1).unwrap(); // f2f7211fcc2204dc3fa50cf1aca98b7c49c82510efbc84fd808b46c459069017db7a47acf4040d1cc0363eb5e3416c197e15fd2439e70a69dcdfa2eb8b520280
let public_key = PublicKey::from_str(pub_key);
let signature = Signature::from_slice(sig.as_bytes());
if public_key.is_err() {
return Err(actix_web::error::ErrorUnauthorized("Invalid Public Key"));
}
if signature.is_none() {
return Err(actix_web::error::ErrorUnauthorized("Invalid Signature"));
}