crypto/keypair: Implement from_str() for PublicKey.

This commit is contained in:
parazyd
2022-04-20 10:48:43 +02:00
parent a9f20aa1f1
commit 360ca24581

View File

@@ -76,6 +76,16 @@ impl PublicKey {
self.0.to_bytes()
}
/// Tries to create a `PublicKey` instance from a base58 encoded string.
pub fn from_str(encoded: &str) -> Result<Self> {
let decoded = bs58::decode(encoded).into_vec()?;
if decoded.len() != 32 {
return Err(Error::PublicKeyFromStr)
}
Self::from_bytes(&decoded.try_into().unwrap())
}
pub fn from_bytes(bytes: &[u8; 32]) -> Result<Self> {
match pallas::Point::from_bytes(bytes).into() {
Some(k) => Ok(Self(k)),