1use super::*;
2
3#[wasm_bindgen(js_name = PublicKey)]
11#[derive(Clone, Debug)]
12pub struct JsMPublicKey {
13 inner: MPublicKey,
14}
15
16#[wasm_bindgen(js_class = PublicKey)]
17impl JsMPublicKey {
18 #[wasm_bindgen(constructor)]
20 pub fn new(pub_key_str: &str) -> Result<JsMPublicKey, JsValue> {
21 let inner: MPublicKey = pub_key_str.parse().map_err_to_js()?;
22 Ok(Self { inner })
23 }
24
25 #[wasm_bindgen(js_name = fromSecp)]
27 pub fn from_secp(pk: &JsSecpPublicKey) -> Self {
28 let inner = MPublicKey::from(pk.inner().clone());
29 Self { inner }
30 }
31
32 #[wasm_bindgen]
34 pub fn prefix() -> String {
35 MPublicKey::PREFIX.to_string()
36 }
37
38 #[wasm_bindgen(js_name = keyId)]
41 pub fn key_id(&self) -> JsMKeyId {
42 JsMKeyId::from(self.inner.key_id())
43 }
44
45 #[wasm_bindgen(js_name = validateId)]
52 pub fn validate_id(&self, key_id: &JsMKeyId) -> bool {
53 self.inner.validate_id(key_id.inner())
54 }
55
56 #[wasm_bindgen(js_name = validateEcdsa)]
61 pub fn validate_ecdsa(&self, data: &[u8], signature: &JsMSignature) -> bool {
62 self.inner.verify(data, signature.inner())
63 }
64
65 #[wasm_bindgen(js_name=toString)]
68 pub fn stringify(&self) -> String {
69 self.inner.to_string()
70 }
71}
72
73impl From<MPublicKey> for JsMPublicKey {
74 fn from(inner: MPublicKey) -> Self {
75 Self { inner }
76 }
77}
78
79impl Wraps<MPublicKey> for JsMPublicKey {
80 fn inner(&self) -> &MPublicKey {
81 &self.inner
82 }
83}
84
85#[wasm_bindgen(js_name = SecpPublicKey)]
87#[derive(Clone, Debug)]
88pub struct JsSecpPublicKey {
89 inner: SecpPublicKey,
90}
91
92#[wasm_bindgen(js_class = SecpPublicKey)]
93impl JsSecpPublicKey {
94 #[wasm_bindgen(constructor)]
96 pub fn new(key: &str) -> Result<JsSecpPublicKey, JsValue> {
97 let inner: SecpPublicKey = key.parse().map_err_to_js()?;
98 Ok(Self { inner })
99 }
100
101 #[wasm_bindgen(js_name = keyId)]
104 pub fn key_id(&self) -> JsSecpKeyId {
105 JsSecpKeyId::from(self.inner.key_id())
106 }
107
108 #[wasm_bindgen(js_name = arkKeyId)]
114 pub fn ark_key_id(&self) -> JsSecpKeyId {
115 JsSecpKeyId::from(self.inner.ark_key_id())
116 }
117
118 #[wasm_bindgen(js_name = validateId)]
120 pub fn validate_id(&self, key_id: &JsSecpKeyId) -> bool {
121 self.inner.validate_id(key_id.inner())
122 }
123
124 #[wasm_bindgen(js_name = validateArkId)]
127 pub fn validate_ark_id(&self, key_id: &JsSecpKeyId) -> bool {
128 self.inner.validate_ark_id(key_id.inner())
129 }
130
131 #[wasm_bindgen(js_name = validateEcdsa)]
134 pub fn validate_ecdsa(&self, data: &[u8], signature: &JsSecpSignature) -> bool {
135 self.inner.verify(data, signature.inner())
136 }
137
138 #[wasm_bindgen(js_name=toString)]
141 pub fn stringify(&self) -> String {
142 self.inner.to_string()
143 }
144}
145
146impl From<SecpPublicKey> for JsSecpPublicKey {
147 fn from(inner: SecpPublicKey) -> Self {
148 Self { inner }
149 }
150}
151
152impl Wraps<SecpPublicKey> for JsSecpPublicKey {
153 fn inner(&self) -> &SecpPublicKey {
154 &self.inner
155 }
156}