fi_digital_signatures/
algorithms.rs1use serde::{Deserialize, Serialize};
2use wasm_bindgen::prelude::wasm_bindgen;
3
4#[derive(PartialEq, Eq, Serialize, Deserialize, Copy, Clone)]
6#[wasm_bindgen]
7pub enum Algorithm {
8 HS256,
10 HS384,
12 HS512,
14 RS256,
16 RS384,
18 RS512,
20 PS256,
22 PS384,
24 PS512,
26 ES256,
28 ES384,
30 ES512,
32 ES256K,
34 EdDSA,
36}
37
38impl Algorithm {
39 pub fn to_str<'a>(&self) -> &'a str {
40 match self {
41 Algorithm::HS256 => "HS256",
42 Algorithm::HS384 => "HS384",
43 Algorithm::HS512 => "HS512",
44 Algorithm::RS256 => "RS256",
45 Algorithm::RS384 => "RS384",
46 Algorithm::RS512 => "RS512",
47 Algorithm::PS256 => "PS256",
48 Algorithm::PS384 => "PS384",
49 Algorithm::PS512 => "PS512",
50 Algorithm::ES256 => "ES256",
51 Algorithm::ES384 => "ES384",
52 Algorithm::ES512 => "ES512",
53 Algorithm::ES256K => "ES256K",
54 Algorithm::EdDSA => "EdDSA",
55 }
56 }
57
58 pub fn from_str(alg: &str) -> Option<Self> {
59 match alg {
60 "HS256" => Some(Algorithm::HS256),
61 "HS384" => Some(Algorithm::HS384),
62 "HS512" => Some(Algorithm::HS512),
63 "RS256" => Some(Algorithm::RS256),
64 "RS384" => Some(Algorithm::RS384),
65 "RS512" => Some(Algorithm::RS512),
66 "PS256" => Some(Algorithm::PS256),
67 "PS384" => Some(Algorithm::PS384),
68 "PS512" => Some(Algorithm::PS512),
69 "ES256" => Some(Algorithm::ES256),
70 "ES384" => Some(Algorithm::ES384),
71 "ES512" => Some(Algorithm::ES512),
72 "ES256K" => Some(Algorithm::ES256K),
73 "EdDSA" => Some(Algorithm::EdDSA),
74 _ => None,
75 }
76 }
77
78 pub fn get_family(&self) -> AlgorithmFamily {
79 match self {
80 Algorithm::HS256 => AlgorithmFamily::HMAC,
81 Algorithm::HS384 => AlgorithmFamily::HMAC,
82 Algorithm::HS512 => AlgorithmFamily::HMAC,
83 Algorithm::RS256 => AlgorithmFamily::RSA,
84 Algorithm::RS384 => AlgorithmFamily::RSA,
85 Algorithm::RS512 => AlgorithmFamily::RSA,
86 Algorithm::PS256 => AlgorithmFamily::RSA,
87 Algorithm::PS384 => AlgorithmFamily::RSA,
88 Algorithm::PS512 => AlgorithmFamily::RSA,
89 Algorithm::ES256 => AlgorithmFamily::EC,
90 Algorithm::ES384 => AlgorithmFamily::EC,
91 Algorithm::ES512 => AlgorithmFamily::EC,
92 Algorithm::ES256K => AlgorithmFamily::EC,
93 Algorithm::EdDSA => AlgorithmFamily::OKP,
94 }
95 }
96}
97
98#[wasm_bindgen]
100pub enum AlgorithmFamily {
101 HMAC,
105 EC,
110 RSA,
117 OKP,
119 None,
120}
121
122impl AlgorithmFamily {
123 pub fn to_str(&self) -> &str {
124 match self {
125 AlgorithmFamily::HMAC => "HMAC",
126 AlgorithmFamily::EC => "EC",
127 AlgorithmFamily::RSA => "RSA",
128 AlgorithmFamily::OKP => "OKP",
129 _ => "None",
130 }
131 }
132
133 pub fn to_string(&self) -> String {
134 String::from(self.to_str())
135 }
136}