polymorph_webcrypto_guest/
hmac_sha2.rs1use crate::{bindings, Error, Mac, MacKeyOptions};
4
5pub use crate::bindings::sha2::Sha2Variant;
6
7pub async fn import_key_raw(
9 variant: Sha2Variant,
10 raw: impl Into<Vec<u8>>,
11 options: MacKeyOptions,
12) -> Result<Mac, Error> {
13 Ok(Mac::from_raw(
14 bindings::hmac_sha2::import_key_raw(variant, raw.into(), options.lower()).await?,
15 ))
16}
17
18pub async fn import_key_jwk(
22 variant: Sha2Variant,
23 jwk: impl Into<String>,
24 options: MacKeyOptions,
25) -> Result<Mac, Error> {
26 Ok(Mac::from_raw(
27 bindings::hmac_sha2::import_key_jwk(variant, jwk.into(), options.lower()).await?,
28 ))
29}
30
31pub async fn generate_key(
36 variant: Sha2Variant,
37 length: Option<u32>,
38 options: MacKeyOptions,
39) -> Result<Mac, Error> {
40 Ok(Mac::from_raw(
41 bindings::hmac_sha2::generate_key(variant, length, options.lower()).await?,
42 ))
43}
44
45pub async fn derive_key(
57 variant: Sha2Variant,
58 input: &crate::DeriveInput,
59 length: Option<u32>,
60 options: MacKeyOptions,
61) -> Result<Mac, Error> {
62 Ok(Mac::from_raw(
63 bindings::hmac_sha2::derive_key(variant, input.as_raw(), length, options.lower()).await?,
64 ))
65}
66
67pub async fn unwrap_key_raw(
71 variant: Sha2Variant,
72 input: crate::UnwrapInput,
73 options: MacKeyOptions,
74) -> Result<Mac, Error> {
75 Ok(Mac::from_raw(
76 bindings::hmac_sha2::unwrap_key_raw(variant, input.into_raw(), options.lower()).await?,
77 ))
78}
79
80pub async fn unwrap_key_jwk(
84 variant: Sha2Variant,
85 input: crate::UnwrapInput,
86 options: MacKeyOptions,
87) -> Result<Mac, Error> {
88 Ok(Mac::from_raw(
89 bindings::hmac_sha2::unwrap_key_jwk(variant, input.into_raw(), options.lower()).await?,
90 ))
91}