Просмотр исходного кода

crypto/keypair: Implement from_str() for PublicKey.

parazyd 4 лет назад
Родитель
Сommit
360ca24581
1 измененных файлов с 10 добавлено и 0 удалено
  1. 10 0
      src/crypto/keypair.rs

+ 10 - 0
src/crypto/keypair.rs

@@ -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)),