ic-atp 0.1.3

ATP(Account Transfer Protocol) implementation for Internet Computer
Documentation
use candid::{CandidType, Decode, Encode};
use ic_stable_structures::{storable::Bound, Storable};
use serde::{Deserialize, Serialize};
use std::borrow::Cow;

#[derive(CandidType, Clone, Serialize, Deserialize, Debug, PartialEq)]
pub enum SignatureAlgorithm {
    #[serde(rename = "ecdsa")]
    Ecdsa,
    #[serde(rename = "schnorr")]
    Schnorr,
}

impl Storable for SignatureAlgorithm {
    fn to_bytes(&self) -> Cow<[u8]> {
        Cow::Owned(Encode!(self).unwrap())
    }

    fn from_bytes(bytes: Cow<[u8]>) -> Self {
        Decode!(bytes.as_ref(), SignatureAlgorithm).unwrap()
    }

    const BOUND: Bound = Bound::Unbounded;
}